It is a known fact that application frameworks’ main objective is to dramatically reduce the time and effort needed in developing complete applications within a family of applications domain. We present an OO analysis and design for an Object-Oriented framework in physics modeling and it’s essentially a collection of C++ classes organized in libraries. This framework implemented within first-version software still undergoing development, contains basic building blocks for the numerical solution, corresponding to the explicit finite difference scheme. Using this approach to organize and design numerical software, we can derive flexible simulators that can be easily constructed in a flexible way. We have put special effort into making the framework flexible and extendible, which means that it is possible to program new algorithms with little coding and is not intended to certain ODE problems or special numerical methods.
We want this system to be flexible, especially with regard to the following features:
It shall be possible to change the numerical method we use
We may have several different reasons for wanting to change the numerical method. Maybe, the numerical method yields wrong answers for the particular problem. This includes unstable solutions, solutions that are mathematically correct but physically incorrect, or solutions that are not accurate enough. Another reason for changing the method is efficiency.
It shall be easy to construct a program that solves the Dam-Break Problem
We stress the ability to build a physical algorithm quickly by using already developed components, by writing a new algorithm and add it to the simulation. Moreover, we require that the system shall be easily extendible. It is not enough if we can solve a predefined set of problems with a predefined set of solution methods. A user shall be able to describe new problems, or new solution methods, and add these to the system. This is particularly useful if, for instance, the user develops a new numerical method and wants to compare this method against other methods.
The system shall be flexible. Components shall be changeable
All pieces of the physical algorithm (solve numerically the PDE) shall easily exchangeable. Particularly, it easy to switch between different implementation of the explicit integrator, or to switch between a flux algorithm (or numerical scheme). When validating numerical schemes, it would be nice to mix different alternative and compare.
It shall be easy to extend the system with new components
The flux algorithm could be implemented with a Godunov-type scheme or with an ENO flux extrapolation. We need a set a high-level abstractions which identify (represent) the key concepts of the application and let the specific (detail) to subclass;