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.
- 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.
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.
- 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