Axom¶
Axom is an open source project that provides robust and flexible software components that serve as building blocks for high performance scientific computing applications. A key goal of the project is to have different application teams co-develop and share general core infrastructure software across their projects instead of individually developing and maintaining capabilities that are similar in functionality but are not easily shared.
An important objective of Axom is to facilitate integration of novel, forward-looking computer science capabilities into simulation codes. A pillar of Axom design is to enable and simplify the exchange of simulation data between applications and tools. Axom developers emphasize the following principles in software design and implementation:
Start design and implementation based on concrete application use cases and maintain flexibility to meet the needs of a diverse set of applications
Develop high-quality, robust, high performance software that has well-designed APIs, good documentation, and solid testing
Apply consistent software engineering practices across all Axom components so developers can easily work on them
Ensure that components integrate well together and are easy for applications to adopt
The main drivers of Axom capabilities originate in the needs of multiphysics applications in the Advanced Simulation and Computing (ASC) Program at Lawrence Livermore National Laboratory (LLNL) . However, Axom can be employed in a wide range of applications beyond that scope, including research codes, proxy application, etc. Often, developing these types of applications using Axom can facilitate technology transfer from research efforts into production applications.
Axom Software¶
Axom software components are maintained and developed on the Axom GitHub Project.
Note
While Axom is developed in C++, its components have native interfaces in C and Fortran for straightforward usage in applications developed in those languages. Python interfaces are in development.
Our current collection of components is listed here. The number of components and their capabilities will expand over time as new needs are identified.
Inlet: Input file parsing and information storage/retrieval
Klee: Shaping specification and implementation
Lumberjack: Scalable parallel message logging and filtering
Mint: Mesh data model
Multimat: Managing multimaterial field data
Primal: Computational geometry primitives
Quest: Querying on surface tool
Sidre: Simulation data repository
Slam: Set-theoretic lightweight API for meshes
Slic: Simple Logging Interface Code
Spin: Spatial index structures for managing and accelerating spatial searches
Documentation¶
User guides and source code documentation are always linked on this site.
Core |
||
Inlet |
||
Klee |
||
Lumberjack |
||
Mint |
||
Multimat |
||
Primal |
||
Quest |
||
Sidre |
||
Slam |
||
Slic |
||
Spin |
Component Level Dependencies¶
Axom has the following inter-component dependencies:
Core has no dependencies and the other components depend on Core
Slic optionally depends on Lumberjack
Slam, Spin, Primal, Mint, Quest, and Sidre depend on Slic
Mint depends on Slam, and optionally Sidre
Multimat depends on Slic, and Slam
Inlet depends on Sidre, Slic, and Primal
Klee depends on Sidre, Slic, Inlet and Primal
Quest depends on Slam, Spin, Primal, Mint, and, optionally, Klee
The figure below summarizes these dependencies. Solid links indicate hard dependencies; dashed links indicate optional dependencies.
Other Tools Application Developers May Find Useful¶
The Axom team develops and supports other software tools that are useful for software projects independent of the Axom. These include:
BLT CMake-based build system developed by the Axom team to simplify CMake usage and development tool integration
Shroud Generator for C, Fortran, and Python interfaces to C++ libraries, and Fortran and Python interfaces to C libraries
Conduit Library for describing and managing in-memory simulation data
Developer Resources¶
Folks interested in contributing to Axom may be interested in our developer resource guides.
Communicating with the Axom Team¶
Mailing Lists¶
The most effective way to communicate with the Axom team is by using one of our email lists:
‘axom-users@llnl.gov’ is for Axom users to contact developers to ask questions, report issues, etc.
‘axom-dev@llnl.gov’ is mainly for communication among Axom team members
Chat Room¶
We also have the ‘Axom Users’ chat room on the LLNL Microsoft Teams server. This is open to anyone with access to the LLNL network. Just log onto Teams and join the room.
Axom Copyright and License Information¶
Please see the Axom License.
Copyright (c) 2017-2024, Lawrence Livermore National Security, LLC. Produced at the Lawrence Livermore National Laboratory.
LLNL-CODE-741217