Design and usability of a PDE solver framework for curvilinear coordinates

Abstract An object-oriented PDE solver framework is a library of software components for numerical solution of partial differential equations, where each component is an object or a group of objects. Given such a framework, the construction of a particular PDE solver consists in selecting and combining suitable components. The present paper is focused on tengo [Ahlander K, Otto K. Software design for finite difference schemes based on index notation. Future Generation Comput Syst 2006;22:102–9], an object-oriented PDE solver framework for finite difference methods on structured grids, using tensor abstractions for convenient representation of numerical operators. Here, the design of tengo is extended to address curvilinear coordinates. These extensions to the tengo object model are the result of applying object-oriented analysis and design combined with feature modeling. The framework was implemented in Fortran 90/95, using standard techniques for emulating object-oriented constructs in that language. The new parts of the framework were assessed with respect to programming effort and execution time. It is shown that the programming effort required for construction and modification of PDE solvers on curvilinear grids is significantly reduced through the introduction of the new framework components. Moreover, for the test case of an underwater acoustics computation, there was no significant difference in execution time between the framework based code and a special purpose Fortran 90 code for the same application.

[1]  M.L. Griss,et al.  Software reuse architecture, process, and organization for business success , 1997, Proceedings of the Eighth Israeli Conference on Computer Systems and Software Engineering.

[2]  Anne Greenbaum,et al.  Iterative methods for solving linear systems , 1997, Frontiers in applied mathematics.

[3]  Boleslaw K. Szymanski,et al.  Expressing object-oriented concepts in Fortran 90 , 1997, FORF.

[4]  Elisabeth Larsson,et al.  Iterative solution of the Helmholtz equation , 1996 .

[5]  Denis Caromel,et al.  Computing in Object-Oriented Parallel Environments , 2002, Lecture Notes in Computer Science.

[6]  Michael Thuné,et al.  Object-Oriented Software Tools for the Construction of Preconditioners , 1997, Sci. Program..

[7]  P. Colella,et al.  Local adaptive mesh refinement for shock hydrodynamics , 1989 .

[8]  Kurt Otto,et al.  A unifying framework for preconditioners based on fast transforms , 1999 .

[9]  Elisabeth Larsson,et al.  Iterative Solution of the Helmholtz Equation by a Second-Order Method , 1999, SIAM J. Matrix Anal. Appl..

[10]  Christoph Pflaum,et al.  Efficient Implementation of Operators on Semi-unstructured Grids , 2002, International Conference on Computational Science.

[11]  Todd L. Veldhuizen,et al.  Arrays in Blitz++ , 1998, ISCOPE.

[12]  Daniel J. Quinlan,et al.  Overture: An Object-Oriented Framework for Solving Partial Differential Equations , 1997, ISCOPE.

[13]  Krister Åhlander,et al.  Software design for finite difference schemes based on index notation , 2006, Future Gener. Comput. Syst..

[14]  Magne Haveraaen,et al.  Coordinate free programming of computational fluid dynamics problems , 2000, Sci. Program..

[15]  Hans Petter Langtangen,et al.  Object-oriented design of preconditioned iterative methods in diffpack , 1997, TOMS.

[16]  Malin Ljungberg Handling of curvilinear coordinates in a PDE solver framework , 2003 .

[17]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[18]  Patrick M. Knupp,et al.  Fundamentals of Grid Generation , 2020 .

[19]  W. Kuperman,et al.  Computational Ocean Acoustics , 1994 .

[20]  Michael Thuné,et al.  Portability and data structures in scientific computing : Object-oriented design of utility routines in Fortran , 1992 .

[21]  J.V.W. Reynders Parallel object-oriented methods and applications , 1995 .

[22]  강문설 [서평]「The Unified Modeling Language User Guide」 , 1999 .

[23]  Leif Abrahamsson,et al.  Orthogonal grid generation for two-dimensional ducts , 1991 .

[24]  Bernd Oestereich,et al.  Developing Software with UML: Object-Oriented Analysis and Design in Practice , 2002 .

[25]  Ronald F. Boisvert,et al.  The Architecture of Scientific Software , 2001, IFIP — The International Federation for Information Processing.

[26]  Peter Olsson,et al.  Software tools for parallel CFD on composite grids , 1996 .

[27]  Scott R. Kohn,et al.  Managing application complexity in the SAMRAI object‐oriented framework , 2002, Concurr. Comput. Pract. Exp..

[28]  Jarmo Rantakokko,et al.  Object-oriented Modeling of Parallel PDE Solvers , 2000, The Architecture of Scientific Software.