Object Oriented Numerics

OON = OOP for Numerics

Object-Oriented Programming (OOP) paradigms give you access to well-defined mechanisms for modular design, re-use of code, code extensions and code specialization. OOP supports the way you think and encourages computer implementation of your abstractions. It prepares the ground for safer codes, shorter development cycles and reduced man costs - it provides more power and elegance, and more fun!

So what about Object-Oriented Numerics (OON)? We consider OON to be the art of adapting the paradigms of OOP to numerical applications. The real challenge of OON is to offer the full flexibility of OOP in a way that gives as efficient computations as you are used to, e.g. from tailored FORTRAN programs.


 

Human and Computational Efficiency

Some people say that this is not possible - you can't get the flexibility of object-oriented software and have computationally efficient codes at the same time.

We say: Yes, you can!

The quest for efficiency can be met by compromising some of the design issues advocated by the OO purists. These compromises are driven by a single and sacred design goal: The CPU-intensive numerics at low level computations must be implemented with a highly tuned FORTRAN- or C-like style. This approach will pervade the total design. However, the top level interfaces of the code can still be constructed to provide the typical flexibility of OOP.

For us, this is the core of OON and underpins all our development.


 

OON References

Read more about OON! The following books and papers gives you more information about OON and related issues:

Computational Partial Differential Equations - Numerical Methods and Diffpack Programming
H. P. Langtangen,
Lecture Notes in Computational Science and Engineering,
Springer-Verlag, 1999
Numerical Methods and Software Tools in Industrial Mathematics
M. Dæhlen and A. Tveito (eds.).
Birkhäuser, 1997 (ISBN 0-8176-3973-X).

In particular:

  • "Object-Oriented Numerics", pp. 7-26.
  • "Basic Tools for Linear Algebra", pp. 27-44.
  • "Software Tools for Modelling Scattered Data", pp. 45-60.
  • "A Comprehensive Set of Tools for Solving Partial Differential Equations", pp. 61-90.
  • "On the Numerical Study of C++ in Scientific Computing", pp. 91-118.
Modern Software Tools for Scientific Computing
E. Arge, A. M. Bruaset and H. P. Langtangen (eds.).
Birkhäuser, 1997 (ISBN 0-8176-3974-8).

In particular:

  • "The SCIRun Computational Steering System", pp. 3-44.
  • "Object-Oriented Solvers for Initial Value Problems", pp. 45-62.
  • "On the Efficient Implementation of Multilevel Adaptive Methods", pp. 125-142.
  • "Efficient Management of Parallelism in Object-Oriented Numerical Software Libraries", pp. 163-202.
  • "Increasing the Efficiency and Reliability of Software Development for Systems of PDEs", pp. 247-268.
  • "Object Oriented Surface Design", pp. 271-288.
  • "Object-Oriented Scattered Data Modelling with Siscat", pp. 289-308.
Scientific and Engineering C++
J. J. Barton and L. R. Nackman.
Addison Wesley, 1994 (ISBN 0-201-53393-6).
For further resources on OON and advanced C++ programming, check out our documentation.