.. ## Copyright (c) Lawrence Livermore National Security, LLC and other .. ## Axom Project Contributors. See top-level LICENSE and COPYRIGHT .. ## files for dates and other details. .. ## .. ## SPDX-License-Identifier: (BSD-3-Clause) **** 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. * Bump: Blueprint Utilities for Mesh Processing * Inlet: Input file parsing and information storage/retrieval * Klee: Shaping specification and implementation * Lumberjack: Scalable parallel message logging and filtering * Mint: Mesh data model * Mir: (Material interface reconstruction) * Multimat: Managing multimaterial field data * Primal: Computational geometry primitives * Quest: Querying on surface tool * Sidre: Simulation data repository * Sina: Simulation insight and analysis * 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. * :doc:`Quickstart Guide ` * `Source documentation `__ .. list-table:: :align: center * - Core - :doc:`User Guide ` - `Source documentation `__ * - Bump - :doc:`User Guide ` - `Source documentation `__ * - Inlet - :doc:`User Guide ` - `Source documentation `__ * - Klee - :doc:`User Guide ` - `Source documentation `__ * - Lumberjack - :doc:`User Guide ` - `Source documentation `__ * - Mint - :doc:`User Guide ` - `Source documentation `__ * - Mir - :doc:`User Guide ` - `Source documentation `__ * - Multimat - :doc:`User Guide ` - `Source documentation `__ * - Primal - :doc:`User Guide ` - `Source documentation `__ * - Quest - :doc:`User Guide ` - `Source documentation `__ * - Sidre - :doc:`User Guide ` - `Source documentation `__ * - Sina - :doc:`User Guide ` - `Source documentation `__ * - Slam - :doc:`User Guide ` - `Source documentation `__ * - Slic - :doc:`User Guide ` - `Source documentation `__ * - Spin - :doc:`User Guide ` - `Source documentation `__ ============================ Component Level Dependencies ============================ Axom has the following inter-component dependencies: - Core has no dependencies and the other components depend on Core - Bump depends on Sidre, Slic, Spin, and Primal. - Slic optionally depends on Lumberjack - Slam, Spin, Primal, Mint, Quest, and Sidre depend on Slic - Mint depends on Slam, and optionally Sidre - Mir depends on Bump, Slic, Slam, and Primal. - 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, Bump and Sidre The figure below summarizes these dependencies. Solid links indicate hard dependencies; dashed links indicate optional dependencies. .. graphviz:: docs/dependencies.dot ====================================================== 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. * :doc:`Developer Guide ` * :doc:`Coding Guide ` ================================ 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 :ref:`axom-license`. Copyright (c) 2017-2026, Lawrence Livermore National Security, LLC. Produced at the Lawrence Livermore National Laboratory. LLNL-CODE-741217 .. toctree:: :hidden: docs/sphinx/quickstart_guide/index .. toctree:: :hidden: :titlesonly: :caption: Component User Guides Core (Widely useful utilities) Bump (Blueprint mesh utilities) Inlet (Input files) Klee (Shaping specification and implementation) Lumberjack (Scalable parallel message logging and filtering) Mint (Mesh data model) Mir (Material Interface Reconstruction) Multimat (Multimaterial fields) Primal (Computational geometry primitives) Quest (Querying on surface tool) Sidre (Simulation data repository) Sina (Write data in a common format) Slam (Set-theoretic lightweight API for meshes) Slic (Simple Logging Interface Code) Spin (Spatial indexes) .. toctree:: :hidden: :caption: Developer Resources docs/sphinx/dev_guide/index docs/sphinx/coding_guide/index docs/licenses