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 toatan(),exp(),log(), andpow(). 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/autodiffThe header
microphysics_autodiff.Hprovides 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 theesum_cxx.pyscript 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 inconstexprexpressions. This is from https://github.com/kthohr/gcemSome of the constants are redefined in 64-bit floating point in
microphysics_math.Hto avoidlong doubleissues 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 LINPACKdgeslanddgefaLU decomposition Gaussian elimination routines.microphysics_sort.H: a set of sorting routines foramrex::Array1Ddata.