Mint User Guide¶
Mint provides a comprehensive mesh data model and a mesh-aware, fine-grain, parallel execution model that underpins the development of computational tools and numerical discretization methods. Thereby, enable implementations that are born parallel and portable to new and emerging architectures.
Doxygen generated API documentation can be found here: API documentation
- Support for 1D/2D/3D mesh geometry.
- Efficient data structures to represent Particle Mesh, Structured Mesh and Unstructured Mesh types, including unstructured meshes with Mixed Cell Type Topology.
- Native support for a variety of commonly employed Cell Types.
- A flexible Mesh Storage Management system, which can optionally inter-operate with Sidre as the underlying, in-memory, hierarchical datastore, facilitating the integration across packages.
- Basic support for Finite Elements, consisting of commonly employed shape functions and quadratures.
- A Mesh-Aware Execution Model, based on the RAJA programming model abstraction layer that supports on-node parallelism for mesh-traversals, enabling the implementation of computational kernels that are born parallel and portable across different processor architectures.
Mint is designed to be light-weight and self-contained. The only requirement for using Mint is a C++11 compliant compiler. However, to realize the full spectrum of capabilities, support for the following third-party libraries is provided:
- RAJA, used for the parallel execution and portability layer.
- Conduit , for using Sidre as the Mesh Storage Management system.
- Umpire, for memory management on next-generation architectures.
For further information on how to build the Axom Toolkit using these third-party libraries, consult the Axom Quick Start Guide.
About this Guide¶
This guide discusses the basic concepts and architecture of Mint.
- The Getting Started with Mint section provides a quick introduction to Mint, designed to illustrate high-level concepts and key capabilities, in the context of a small working example.
- The Tutorial section provides code snippets that demonstrate specific topics in a structured and simple format.
- For complete documentation of the interfaces of the various classes and functions in Mint consult the Mint Doxygen API Documentation.
- Complete examples and code walk-throughs of mini-apps using Mint are provided in the Examples section.
Additional questions, feature requests or bug reports on Mint can be submitted by creating a new issue on Github or by sending e-mail to the Axom Developers mailing list at email@example.com.
- Getting Started with Mint
- Preliminary Concepts
- Mesh Representation
- Mesh Types
- Component Architecture
- Execution Model
- Finite Elements
- Create a Uniform Mesh
- Create a Rectilinear Mesh
- Create a Curvilinear Mesh
- Create an Unstructured Mesh
- Create a Mixed Unstructured Mesh
- Working with Fields
- Using External Storage
- Using Sidre
- Node Traversal Functions
- Cell Traversal Functions
- Face Traversal Functions
- Finite Elements
- Output to VTK