5. Software and Implementation

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.