5. Software and Implementation

The framework of discretized expressions which have been established in Chapter 2 and applied to differential equations is mainly intended for a simple and concise way of implementation, which is of course required in order to implement such a scheme on a computer. Furthermore, the discrete formulation scheme is also designed to be implementable using the high level programming language C++ [23].

As topological basis of this framework the Generic Scientific Simulation Environment (GSSE) [40,21,22] is taken which implements the required topological functionality for the functional structures. It is required for the implementation of the topological functions shown in Section 2.4 as well as for quantity handling. The implementation is based on the cursor/property map concept as shown in [87], where for more complex data structures different iteration mechanisms are provided.

The functional layer introduces a functional programming implementation based on the Phoenix 2 library [29]. This library provides overloading of operators and gives the opportunity to implement higher order functions as shown in Section 2.2. One major advantage of the Phoenix 2 library is the use of explicitly named variables which is required for naming accumulation variables according to Section 2.5. Consequently, the Phoenix 2 library provides appropriate means for the creation of a domain specific embedded language [88] (DSEL) within C++ as shown in Section 5.1. A possible implementation of linearized expressions is shown in Section 5.2.

Michael 2008-01-16