Skip to content

Commit

Permalink
document the util/ directory
Browse files Browse the repository at this point in the history
  • Loading branch information
zingale committed Jan 6, 2025
1 parent bc1ccfa commit 8638acc
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 0 deletions.
7 changes: 7 additions & 0 deletions sphinx_docs/source/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,13 @@ of state routines.
nse
sdc

.. toctree::
:maxdepth: 1
:caption: Util / external libraries
:hidden:

util

.. toctree::
:maxdepth: 1
:caption: Unit tests
Expand Down
46 changes: 46 additions & 0 deletions sphinx_docs/source/util.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
******************************
Helper Functions and Libraries
******************************

The ``util/`` directory contains a number of external libraries and simple
utilities that are used by the different components of Microphysics.

* ``approx_math/`` : these are a set of headers that implement
approximations to ``atan()``, ``exp()``, ``log()``, and ``pow()``.
These can be much faster than the C++ library versions, especially
on GPUs.

* ``autodiff/`` : this is a clone of the C++ autodiff library from
https://github.com/autodiff/autodiff

The header ``microphysics_autodiff.H`` provides a set of interfaces
for working with the AMReX datatypes and interfacing with the
autodiff library.

* ``build_scripts/`` : a set of python scripts used during the build
process to parse the runtime parameters.

* ``cj_detonation/`` : a simple routine to compute the Chapman-Jouguet
detonation speed for one of our networks.

* ``esum.H`` : an implementation of the exact sum algorithm based on the
msum algorithm by Raymond Hettinger. It is generated automatically
by the ``esum_cxx.py`` script and creates implementations for exact
numbers of terms (``esum3()``, ``esum4()``, ...)

* ``gcem/`` : a templated math library that provides implementations of
the standard library math functions that can be used in ``constexpr``
expressions. This is from https://github.com/kthohr/gcem

Some of the constants are redefined in 64-bit floating point in
``microphysics_math.H`` to avoid ``long double`` issues on some
architectures.

* ``hybrj/`` : a C++ port of the MINPACK hybrid Powell minimization function
to zero a set of functions.

* ``linpack.H`` : a C++ port of the LINPACK ``dgesl`` and ``dgefa`` LU
decomposition Gaussian elimination routines.

* ``microphysics_sort.H`` : a set of sorting routines for
``amrex::Array1D`` data.

0 comments on commit 8638acc

Please sign in to comment.