C++ implementations of numerical methods for solving differential-algebraic equations: design and optimization considerations

  • Authors:
  • Christopher E. Kees;Cass T. Miller

  • Affiliations:
  • Univ. of North Carolina, Chapel Hill;Univ. of North Carolina, Chapel Hill

  • Venue:
  • ACM Transactions on Mathematical Software (TOMS)
  • Year:
  • 1999

Quantified Score

Hi-index 0.00

Visualization

Abstract

Object-oriented programming can produce improved implementations of complex numerical methods, but it can also introduce a performance penalty. Since computational simulation often requires intricate and highly efficient codes, the performance penalty of high-level techniques must always be weighed against the improvements they enable. These issues are addressed in a general object-oriented (OO) toolkit for the numerical solution of differential-algebraic equations (DAEs). The toolkit can be configured in several different ways to solve DAE initial-value problems with an adaptive multistep method. It contains a wrapped version of the Fortran 77 code DASPK and a translation of this to C++. Two C++ constructs for assembling the tools are provided, as are two implementations an important DAE test problem. Multiple configurations of the toolkit for DAE test problems are compared in order to assess the performance penalties of C++. The mathematical methods and implementation techniques are discussed in detail in order to provide heuristics for efficient OO scientific programming and to demonstrate the effectiveness of OO techniques in managing complexity and producing better code. The codes were tested on a variety of problems using publicly available Fortran 77 and C++ compilers. Extensive effficiency comparisons are presented in order to isolate computationally inefficient OO techniques. Techniques that caused difficulty in implementation and maintenance are also highlighted. The comparisons demonstrate that the majority of C++'s built-in support for OO programming has a negligible effect on performance, when used at sufficiently high levels, and provides flexible and extensible software for numerical methods.