5. Application Concepts

The data model which has been introduced (Section 4.1) as well as the corresponding programming paradigms (Section 4.2), are of utmost importance to develop application concepts where the theoretical concepts state what has to be implemented and the practical concepts given here guide the translation of how these concepts can be implemented efficiently revealing and conserving the theoretical character.

The related work presented in Section 4.4 reviewed the developed and implemented concepts, where two fundamental elements surfaced. The first part is related to a common classification of data structures suitable for scientific computing. In order to allow an arbitrary number of nested traversal operations, which is often required in applications, it is necessary to have appropriate data structures for traversal. This has the added benefit of keeping the program code as concise as possible. The traversal mechanism is derived from the given boundary (coboundary) operator. Therefore, the first part deals with a formal interface to several data structures based on cell complex properties and topological attributes.

The second part deals with the implementation of the concept of fiber bundles suggesting the separation of topological base space properties and quantity-related structure information. The base space properties are thereby identified by the generic data structure and traversal capabilities (chain concept), whereas the quantity properties are related to -forms and their cochain counterpart. An identification with well-known C++ concepts is given. The concept of a DSEL as a missing part from the given related work section is used to enable highly expressive implementations. Finally, the library-centric software design approach is introduced and a catalog of essential requirements is assembled.

- 5.1 Generic Data Structures
- 5.2 Boundary Operation
- 5.3 Data Structure Storage Mechanism
- 5.4 Separation of Base and Fiber Space
- 5.5 Library-Centric Software Design

R. Heinzl: Concepts for Scientific Computing