AXOM
Axom provides a robust, flexible software infrastructure for the development of multi-physics applications and computational tools.
|
Axom's Slam component provides a collection of high performance, thoroughly tested, reusable components that can be combined to define distributed mesh data structures for multiphysics simulation codes. Slam's classes and functions provide context to a mesh's entities and associated data stored as raw data. Slam models meshes in terms of three set-theoretic concepts:
The concepts in this component are not new. In fact, since they lie at the foundation of computational meshes, they are implemented (to some degree) in every simulation code. However, the underlying abstractions are typically latent in the design, and developers are often wary of making changes to working code. Explicitly modeling these underlying abstractions improves the comprehensibility and maintainability of the code and presents opportunities for optimization.
Our template-based implementation helps reduce the abstraction cost (or at least moves it to compile time).
[Upcoming] We intend to shield our users from these details through a generative model which describes the required pieces and a separate for a configurator to generate.
We model the basic entities of a distributed mesh, such as its vertices and cells, as sets, collections of entities. For performance, we implement these as ordered sets where we can associate an index with each element.
Each element of such a set can be described in terms of an offset, a stride and an indirection. That is, for a set theSet
, the element at position p
is:
someSet[p] = indirection( stride*pos + offset)
A relation is a subset of the Cartesian product of two sets. For simulation meshes, we are often interested in a relation operator – a function from Set A to Set B which returns the elements from the second set that are associated with the given element x in the first set. We can denote this as \( R_A(x) = \{ y \in B | x ~_R y \} \)
A taxonomy of relations
Maps associate a value with a set member, storing field data.