docs(docs): added more callback docs

This commit is contained in:
2025-07-31 15:41:27 -04:00
parent 24049b2658
commit b0c1daada4
30 changed files with 371 additions and 329 deletions

262
README.md
View File

@@ -2,6 +2,16 @@
<img src="https://github.com/4D-STAR/GridFire/blob/main/assets/logo/GridFire.png?raw=true" width="300" alt="OPAT Core Libraries Logo"> <img src="https://github.com/4D-STAR/GridFire/blob/main/assets/logo/GridFire.png?raw=true" width="300" alt="OPAT Core Libraries Logo">
</p> </p>
---
![PyPI - Version](https://img.shields.io/pypi/v/gridfire?style=for-the-badge)
![PyPI - Wheel](https://img.shields.io/pypi/wheel/gridfire?style=for-the-badge)
![GitHub License](https://img.shields.io/github/license/4D-STAR/GridFire?style=for-the-badge)
![ERC](https://img.shields.io/badge/Funded%20by-ERC-blue?style=for-the-badge&logo=europeancommission)
![Dynamic Regex Badge](https://img.shields.io/badge/dynamic/regex?url=https%3A%2F%2Fgithub.com%2F4D-STAR%2FGridFire%2Fblob%2Fmain%2Fmeson.build&search=version%3A%20'(%5B0-9a-zA-Z%5C.%5D%2B)'&style=for-the-badge&label=GitHub%20Main%20Branch)
![GitHub commit activity](https://img.shields.io/github/commit-activity/w/4D-STAR/GridFire?style=for-the-badge)
--- ---
@@ -49,10 +59,10 @@ By far the easiest way to install is with pip. This will install either
pre-compiled wheels or, if your system has not had a wheel compiled for it, it pre-compiled wheels or, if your system has not had a wheel compiled for it, it
will try to build locally (this may take **a long time**). The python bindings will try to build locally (this may take **a long time**). The python bindings
are just that and should maintain nearly the same speed as the C++ code. End are just that and should maintain nearly the same speed as the C++ code. End
users are strongly encorages to use the python module rather than the C++ code. users are strongly encourages to use the python module rather than the C++ code.
### pypi ### pypi
Installing from pip is as simple as Installing from pip is as simple as
```bash ```bash
pip install gridfire pip install gridfire
``` ```
@@ -60,16 +70,16 @@ pip install gridfire
These wheels have been compiled on many systems These wheels have been compiled on many systems
| Version | Platform | Architecture | CPython Versions | PyPy Versions | | Version | Platform | Architecture | CPython Versions | PyPy Versions |
| ------- | -------- | ------------ | ---------------------------------------------------------- | ------------- | |---------|----------|--------------|------------------------------------------------------------|---------------|
| 0.5.0 | macOS | arm64 | 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 (std & t), 3.14 (std & t) | 3.10, 3.11 | | 0.5.0 | macOS | arm64 | 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 (std & t), 3.14 (std & t) | 3.10, 3.11 |
| 0.5.0 | Linux | aarch64 | 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 (std & t), 3.14 (std & t) | 3.10, 3.11 | | 0.5.0 | Linux | aarch64 | 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 (std & t), 3.14 (std & t) | 3.10, 3.11 |
| 0.5.0 | Linux | x86\_64 | 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 (std & t), 3.14 (std & t) | 3.10, 3.11 | | 0.5.0 | Linux | x86\_64 | 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 (std & t), 3.14 (std & t) | 3.10, 3.11 |
> **Note**: Currently macOS x86\_64 does **not** have a precompiled wheel. Due > **Note**: Currently macOS x86\_64 does **not** have a precompiled wheel. Do
> to that platform being phased out it is likely that there will never be > to that platform being phased out it is likely that there will never be
> precompiled wheels or releases for it. > precompiled wheels or releases for it.
> **Note:** macOS wheels were targeted to MacOS 12 Monterey and should work on > **Note:** macOS wheels were targeted to macOS 12 Monterey and should work on
> any version more recent than that (at least as of August 2025). > any version more recent than that (at least as of August 2025).
> **Note:** Linux wheels were compiled using manylinux_2_28 and are expected to > **Note:** Linux wheels were compiled using manylinux_2_28 and are expected to
@@ -82,7 +92,7 @@ These wheels have been compiled on many systems
> (https://www.boost.org/) as that is the most common broken dependency. > (https://www.boost.org/) as that is the most common broken dependency.
### source ### source
The user may also build the python bindings directly from source The user may also build the python bindings directly from source
```bash ```bash
git clone https://github.com/4D-STAR/GridFire git clone https://github.com/4D-STAR/GridFire
@@ -94,7 +104,7 @@ pip install .
> fail, the steps in further sections address these in more detail. > fail, the steps in further sections address these in more detail.
### source for developers ### source for developers
If you are a developer and would like an editable and incrimental python If you are a developer and would like an editable and incremental python
install `meson-python` makes this very easy install `meson-python` makes this very easy
```bash ```bash
@@ -103,10 +113,10 @@ cd GridFire
pip install -e . --no-build-isolation -vv pip install -e . --no-build-isolation -vv
``` ```
This will generate incrimental builds whenever source code changes and you run This will generate incremental builds whenever source code changes, and you run
a python script automartically (note that since `meson setup` must run for each a python script automatically (note that since `meson setup` must run for each
of these it does still take a few seconds to recompile regardless of how small of these it does still take a few seconds to recompile regardless of how small
a source code change you have made). It is **strongly** reccomended that a source code change you have made). It is **strongly** recommended that
developers use this approach and end users *do not*. developers use this approach and end users *do not*.
@@ -130,7 +140,7 @@ Generally, both are intended to be easy to use and will prompt you
automatically to install any missing dependencies. automatically to install any missing dependencies.
### Currently known good platforms ### Currently, known good platforms
The installation script has been tested and found to work on clean The installation script has been tested and found to work on clean
installations of the following platforms: installations of the following platforms:
- MacOS 15.3.2 (Apple Silicon + brew installed) - MacOS 15.3.2 (Apple Silicon + brew installed)
@@ -157,13 +167,13 @@ These only need to be manually installed if the user is not making use of the
- ninja 1.10.0 or newer - ninja 1.10.0 or newer
- Python packages: `meson-python>=0.15.0` - Python packages: `meson-python>=0.15.0`
- Boost libraries (>= 1.83.0) installed system-wide (or at least findable by - Boost libraries (>= 1.83.0) installed system-wide (or at least findable by
meson with pkg-config) meson with pkg-config)
#### Optional #### Optional
- dialog (used by the `install.sh` script, not needed if using pip or meson - dialog (used by the `install.sh` script, not needed if using pip or meson
directly) directly)
- pip (used by the `install.sh` script or by calling pip directly, not needed - pip (used by the `install.sh` script or by calling pip directly, not needed
if using meson directly) if using meson directly)
> **Note:** Boost is the only external library dependency used by GridFire directly. > **Note:** Boost is the only external library dependency used by GridFire directly.
@@ -176,20 +186,20 @@ if using meson directly)
### Install Scripts ### Install Scripts
GridFire ships with an installer (`install.sh`) which is intended to make the GridFire ships with an installer (`install.sh`) which is intended to make the
process of installation both easier and more repetable. process of installation both easier and more repeatable.
#### Ease of Installation #### Ease of Installation
Both scripts are intended to automate installation more or less completly. This Both scripts are intended to automate installation more or less completely. This
includes dependency checking. In the event that a dependency cannot be found includes dependency checking. In the event that a dependency cannot be found
they try to install (after explicitly asking for user permission). If that does they try to install (after explicitly asking for user permission). If that does
not work they will provide a clear message as to what went wrong. not work they will provide a clear message as to what went wrong.
#### Reproducibility #### Reproducibility
The TUI mode provides easy modification of meson build system and compiler The TUI mode provides easy modification of meson build system and compiler
settings which can then be saved to a config file. This config file can then be settings which can then be saved to a config file. This config file can then be
loaded by either tui mode or cli mode (with the `--config`) flag meaning that loaded by either tui mode or cli mode (with the `--config`) flag meaning that
build configurations can be made and reused. Note that this is **not** a build configurations can be made and reused. Note that this is **not** a
deterministicly reproducible build system as it does not interact with any deterministically reproducible build system as it does not interact with any
system dependencies or settings, only meson and compiler settings. system dependencies or settings, only meson and compiler settings.
#### Examples #### Examples
@@ -204,12 +214,12 @@ system dependencies or settings, only meson and compiler settings.
[![asciicast](https://asciinema.org/a/GYaWTXZbDJRD4ohde0s3DkFMC.svg)](https://asciinema.org/a/GYaWTXZbDJRD4ohde0s3DkFMC) [![asciicast](https://asciinema.org/a/GYaWTXZbDJRD4ohde0s3DkFMC.svg)](https://asciinema.org/a/GYaWTXZbDJRD4ohde0s3DkFMC)
> **Note:** `install-tui.sh` is simply a script which calles `install.sh` with > **Note:** `install-tui.sh` is simply a script which calls `install.sh` with
> the `--tui` flag. You can get the exact same results by running `install.sh > the `--tui` flag. You can get the exact same results by running `install.sh
> --tui`. > --tui`.
> **Note:** Call `install.sh` with the `--help` or `--h` flag to see command > **Note:** Call `install.sh` with the `--help` or `--h` flag to see command
> line options > line options
> **Note:** `clang` tends to compile GridFire much faster than `gcc` thus why I > **Note:** `clang` tends to compile GridFire much faster than `gcc` thus why I
> select it in the above asciinema recording. > select it in the above asciinema recording.
@@ -224,12 +234,12 @@ sudo apt-get install -y build-essential meson python3 python3-pip libboost-all-d
> **Note:** Depending on the ubuntu version you have the libboost-all-dev > **Note:** Depending on the ubuntu version you have the libboost-all-dev
> libraries may be too old. If this is the case refer to the boost > libraries may be too old. If this is the case refer to the boost
> documentation for how to download and install a version `>=1.83.0` > documentation for how to download and install a version `>=1.83.0`
> **Note:** On recent versions of ubuntu python has switched to being > **Note:** On recent versions of ubuntu python has switched to being
> externally managed by the system. We **strongly** recomend that if you > externally managed by the system. We **strongly** recommend that if you
> install manaully all python pacakges are installed inside some kind of > install manually all python packages are installed inside some kind of
> virtual enviroment (e.g. `pyenv`, `conda`, `python-venv`, etc...). When using > virtual environment (e.g. `pyenv`, `conda`, `python-venv`, etc...). When using
> the installer script this is handled automatically using `python-venv`. > the installer script this is handled automatically using `python-venv`.
- **Fedora/CentOS/RHEL:** - **Fedora/CentOS/RHEL:**
@@ -252,7 +262,7 @@ meson compile -C build
#### Clang vs. GCC #### Clang vs. GCC
As noted above `clang` tends to compile GridFire much faster than `gcc`. If As noted above `clang` tends to compile GridFire much faster than `gcc`. If
your system has both `clang` and `gcc` installed you may force meson to use your system has both `clang` and `gcc` installed you may force meson to use
clang via enviromental variables clang via environmental variables
```bash ```bash
CC=clang CXX=clang++ meson setup build_clang CC=clang CXX=clang++ meson setup build_clang
@@ -266,8 +276,8 @@ meson install -C build
### Minimum compiler versions ### Minimum compiler versions
GridFire uses C++23 features and therefore only compilers and standard library GridFire uses C++23 features and therefore only compilers and standard library
implimentations which support C++23 are supported. Generally we have found that implementations which support C++23 are supported. Generally we have found that
`gcc >= 13.0.0` or `clang >= 16.0.0` work well. `gcc >= 13.0.0` or `clang >= 16.0.0` work well.
## Code Architecture and Logical Flow ## Code Architecture and Logical Flow
@@ -277,28 +287,28 @@ a specific aspect of nuclear reaction network modeling. The core components
include: include:
- **Engine Module:** Core interfaces and implementations (e.g., `GraphEngine`) - **Engine Module:** Core interfaces and implementations (e.g., `GraphEngine`)
that evaluate reaction network rate equations and energy generation. Also that evaluate reaction network rate equations and energy generation. Also
implimented `Views` submodule. implemented `Views` submodule.
- **Engine::Views Module:** Composable engine optimization and modification - **Engine::Views Module:** Composable engine optimization and modification
(e.g. `MultiscalePartitioningEngineView`) which can be used to make a problem (e.g. `MultiscalePartitioningEngineView`) which can be used to make a problem
more tractable or applicable. more tractable or applicable.
- **Screening Module:** Implements nuclear reaction screening corrections (e.g. - **Screening Module:** Implements nuclear reaction screening corrections (e.g.
`WeakScreening` ([Salpeter, `WeakScreening` ([Salpeter,
1954](https://adsabs.harvard.edu/full/1954AuJPh...7..373S)), `BareScreening`) 1954](https://adsabs.harvard.edu/full/1954AuJPh...7..373S)), `BareScreening`)
affecting reaction rates. affecting reaction rates.
- **Reaction Module:** Parses and manages Reaclib reaction rate data, providing - **Reaction Module:** Parses and manages Reaclib reaction rate data, providing
temperature- and density-dependent rate evaluations. temperature- and density-dependent rate evaluations.
- **Partition Module:** Implements partition functions (e.g., - **Partition Module:** Implements partition functions (e.g.,
`GroundStatePartitionFunction`, `RauscherThielemannPartitionFunction` `GroundStatePartitionFunction`, `RauscherThielemannPartitionFunction`
([Rauscher & Thielemann, ([Rauscher & Thielemann,
2000](https://www.sciencedirect.com/science/article/pii/S0092640X00908349?via%3Dihub])) 2000](https://www.sciencedirect.com/science/article/pii/S0092640X00908349?via%3Dihub]))
to weight reaction rates based on nuclear properties. to weight reaction rates based on nuclear properties.
- **Solver Module:** Defines numerical integration strategies (e.g., - **Solver Module:** Defines numerical integration strategies (e.g.,
`DirectNetworkSolver`) for solving the stiff ODE systems arising from reaction `DirectNetworkSolver`) for solving the stiff ODE systems arising from reaction
networks. networks.
- **Python Interface:** Exposes *almost* all C++ functionality to Python, - **Python Interface:** Exposes *almost* all C++ functionality to Python,
allowing users to define compositions, configure engines, and run simulations allowing users to define compositions, configure engines, and run simulations
directly from Python scripts. directly from Python scripts.
Generally a user will start by selecting a base engine (currently we only offer Generally a user will start by selecting a base engine (currently we only offer
`GraphEngine`), which constructs the full reaction network graph from a given `GraphEngine`), which constructs the full reaction network graph from a given
@@ -312,27 +322,27 @@ abundances and diagnostics.
## Engines ## Engines
GridFire is, at its core, based on a series of `Engines`. These are constructs GridFire is, at its core, based on a series of `Engines`. These are constructs
which know how to report information on series of ODEs which need to be solved which know how to report information on series of ODEs which need to be solved
to evolver abundnances. The important thing to understand about `Engines` is to evolver abundances. The important thing to understand about `Engines` is
that they contain all of the detailed physics GridFire uses. For example a that they contain all the detailed physics GridFire uses. For example a
`Solver` takes an `Engine` but does not compute physics itself. Rather, it asks `Solver` takes an `Engine` but does not compute physics itself. Rather, it asks
the `Engine` for stuff like the jacobian matrix, stoichiometry, nuclear energy the `Engine` for stuff like the jacobian matrix, stoichiometry, nuclear energy
generation rate, and change in abundance with time. generation rate, and change in abundance with time.
Refer to the API documentation for the exact interface which an `Engine` must Refer to the API documentation for the exact interface which an `Engine` must
impliment to be compatible with GridFire solvers. implement to be compatible with GridFire solvers.
Currently we only impliment `GraphEngine` which is intended to be a very general and Currently, we only implement `GraphEngine` which is intended to be a very general and
adaptable `Engine`. adaptable `Engine`.
### GraphEngine ### GraphEngine
In GridFire the `GraphEngine` will generally be the most fundamental building In GridFire the `GraphEngine` will generally be the most fundamental building
block of a nuclear network. A `GraphEngine` represents a directional hypergraph block of a nuclear network. A `GraphEngine` represents a directional hypergraph
connecting some set of atomic species through reactions listed in the [JINA connecting some set of atomic species through reactions listed in the [JINA
Reaclib database](https://reaclib.jinaweb.org/index.php). Reaclib database](https://reaclib.jinaweb.org/index.php).
`GraphEngine`s are constructed from a seed composition of species from which `GraphEngine`s are constructed from a seed composition of species from which
they recursivley expand their topology outward, following known reaction they recursively expand their topology outward, following known reaction
pathways and adding new species to the tracked list as they expand. pathways and adding new species to the tracked list as they expand.
### GraphEngine Configuration Options ### GraphEngine Configuration Options
@@ -341,38 +351,38 @@ GraphEngine exposes runtime configuration methods to tailor network
construction and rate evaluations: construction and rate evaluations:
- **Constructor Parameters:** - **Constructor Parameters:**
- `composition`: The initial seed composition to start network construction from. - `composition`: The initial seed composition to start network construction from.
- `BuildDepthType` (`Full`, `Shallow`, `SecondOrder`, etc...): controls - `BuildDepthType` (`Full`, `Shallow`, `SecondOrder`, etc...): controls
number of recursions used to construct the network topology. Can either be an number of recursions used to construct the network topology. Can either be a
member of the `NetworkBuildDepth` enum or an integerl. member of the `NetworkBuildDepth` enum or an integer.
- `partition::PartitionFunction`: Partition function used when evlauating - `partition::PartitionFunction`: Partition function used when evaluating
detailed balance for inverse rates. detailed balance for inverse rates.
- **setPrecomputation(bool precompute):** - **setPrecomputation(bool precompute):**
- Enable/disable caching of reaction rates and stoichiometric data at initialization. - Enable/disable caching of reaction rates and stoichiometric data at initialization.
- *Effect:* Reduces per-step overhead; increases memory and setup time. - *Effect:* Reduces per-step overhead; increases memory and setup time.
- **setScreeningModel(ScreeningType type):** - **setScreeningModel(ScreeningType type):**
- Choose plasma screening (models: `BARE`, `WEAK`). - Choose plasma screening (models: `BARE`, `WEAK`).
- *Effect:* Alters rate enhancement under dense/low-T conditions, impacting stiffness. - *Effect:* Alters rate enhancement under dense/low-T conditions, impacting stiffness.
- **setUseReverseReactions(bool useReverse):** - **setUseReverseReactions(bool useReverse):**
- Toggle inclusion of reverse (detailed balance) reactions. - Toggle inclusion of reverse (detailed balance) reactions.
- *Effect:* Improves equilibrium fidelity; increases network size and stiffness. - *Effect:* Improves equilibrium fidelity; increases network size and stiffness.
### Available Partition Functions ### Available Partition Functions
| Function Name | Identifier / Enum | Description | | Function Name | Identifier / Enum | Description |
|---------------------------------------|--------------------------|-----------------------------------------------------------------| |---------------------------------------|----------------------|--------------------------------------------------------------------------------------------------------------------------|
| `GroundStatePartitionFunction` | "GroundState" | Weights using nuclear ground-state spin factors. | | `GroundStatePartitionFunction` | "GroundState" | Weights using nuclear ground-state spin factors. |
| `RauscherThielemannPartitionFunction` | "RauscherThielemann" | Interpolates normalized g-factors per Rauscher & Thielemann. | | `RauscherThielemannPartitionFunction` | "RauscherThielemann" | Interpolates normalized g-factors per Rauscher & Thielemann. |
| `CompositePartitionFunction` | "Composite" | Combines multiple partition functions for situations where different partitions functions are used for different domains | | `CompositePartitionFunction` | "Composite" | Combines multiple partition functions for situations where different partitions functions are used for different domains |
### AutoDiff ### AutoDiff
One of the primary tasks any engine must accomplish is to report the jacobian One of the primary tasks any engine must accomplish is to report the jacobian
matrix of the system to the solver. `GraphEngine` uses `CppAD`, a C++ auto matrix of the system to the solver. `GraphEngine` uses `CppAD`, a C++ auto
differentiation library, to generate analytic jacobian matricies very differentiation library, to generate analytic jacobian matrices very
efficiently. efficiently.
## Reaclib in GridFire ## Reaclib in GridFire
@@ -380,14 +390,14 @@ All reactions in JINA Reaclib which only include reactants iron and lighter
were downloaded on June 17th, 2025 where the most recent documented change on were downloaded on June 17th, 2025 where the most recent documented change on
the JINA Reaclib site was on June 24th, 2021. the JINA Reaclib site was on June 24th, 2021.
All of thes reactions have been compiled into a header file which is then All of these reactions have been compiled into a header file which is then
statically compiled into the gridfire binaries (specifically into statically compiled into the gridfire binaries (specifically into
lib_reaction_reaclib.cpp.o). This does increase the binary size by a few MB; lib_reaction_reaclib.cpp.o). This does increase the binary size by a few MB;
however, the benafit is faster load times and more importantly no need for end however, the benefit is faster load times and more importantly no need for end
users to manage resource files. users to manage resource files.
If a developer wants to add new reaclib reactions we include a script at If a developer wants to add new reaclib reactions we include a script at
`utils/reaclib/format.py` which can injest a reaclib data file and produce the `utils/reaclib/format.py` which can ingest a reaclib data file and produce the
needed header file. More details on this process are included in needed header file. More details on this process are included in
`utils/reaclib/readme.md` `utils/reaclib/readme.md`
@@ -398,13 +408,13 @@ The GridFire engine supports multiple engine view strategies to adapt or
restrict network topology. Generally when extending GridFire the approach is restrict network topology. Generally when extending GridFire the approach is
likely to be one of adding new `EngineViews`. likely to be one of adding new `EngineViews`.
| View Name | Purpose | Algorithm / Reference | When to Use | | View Name | Purpose | Algorithm / Reference | When to Use |
|---------------------------------------|----------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------| |----------------------------------|-----------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------|
| AdaptiveEngineView | Dynamically culls low-flow species and reactions during runtime | Iterative flux thresholding to remove reactions below a flow threshold | Large networks to reduce computational cost | | AdaptiveEngineView | Dynamically culls low-flow species and reactions during runtime | Iterative flux thresholding to remove reactions below a flow threshold | Large networks to reduce computational cost |
| DefinedEngineView | Restricts the network to a user-specified subset of species and reactions | Static network masking based on user-provided species/reaction lists | Targeted pathway studies or code-to-code comparisons | | DefinedEngineView | Restricts the network to a user-specified subset of species and reactions | Static network masking based on user-provided species/reaction lists | Targeted pathway studies or code-to-code comparisons |
| FileDefinedEngineView | Load a defined engine view from a file using some parser | Same as DefinedEngineView but loads from a file | Same as DefinedEngineView | FileDefinedEngineView | Load a defined engine view from a file using some parser | Same as DefinedEngineView but loads from a file | Same as DefinedEngineView |
| MultiscalePartitioningEngineView | Partitions the network into fast and slow subsets based on reaction timescales | Network partitioning following Hix & Thielemann Silicon Burning I & II (DOI:10.1086/177016,10.1086/306692)| Stiff, multi-scale networks requiring tailored integration | | MultiscalePartitioningEngineView | Partitions the network into fast and slow subsets based on reaction timescales | Network partitioning following Hix & Thielemann Silicon Burning I & II (DOI:10.1086/177016,10.1086/306692) | Stiff, multi-scale networks requiring tailored integration |
| NetworkPrimingEngineView | Primes the network with an initial species or set of species for ignition studies| Single-species ignition and network priming | Investigations of ignition triggers or initial seed sensitivities| | NetworkPrimingEngineView | Primes the network with an initial species or set of species for ignition studies | Single-species ignition and network priming | Investigations of ignition triggers or initial seed sensitivities |
These engine views implement the common Engine interface and may be composed in These engine views implement the common Engine interface and may be composed in
any order to build complex network pipelines. New view types can be added by any order to build complex network pipelines. New view types can be added by
@@ -413,11 +423,11 @@ chain without modifying core engine code.
### A Note about composability ### A Note about composability
There are certain functions for which it is expected that a call to an engine There are certain functions for which it is expected that a call to an engine
view will propegate the result down the chain of engine views, eventually view will propagate the result down the chain of engine views, eventually
reaching the base engine (e.g. `DynamicEngine::update`). We do not strongly reaching the base engine (e.g. `DynamicEngine::update`). We do not strongly
enforce this as it is not hard to contrive a situation where that is not the enforce this as it is not hard to contrive a situation where that is not the
mose useful behavior; however, we do strongly encorage developers to think mose useful behavior; however, we do strongly encourage developers to think
carefully about passing along calls to base engine methods when implimenting carefully about passing along calls to base engine methods when implementing
new views. new views.
## Numerical Solver Strategies ## Numerical Solver Strategies
@@ -428,7 +438,7 @@ integration algorithms to be used interchangeably with any engine that
implements the `Engine` or `DynamicEngine` contract. implements the `Engine` or `DynamicEngine` contract.
### NetworkSolverStrategy&lt;EngineT&gt;: ### NetworkSolverStrategy&lt;EngineT&gt;:
All GridFire solvers impliment the abstract strategy templated by All GridFire solvers implement the abstract strategy templated by
`NetworkSolverStrategy` which enforces only that there is some `evaluate` `NetworkSolverStrategy` which enforces only that there is some `evaluate`
method with the following signature method with the following signature
@@ -440,7 +450,7 @@ abundances, temperature, density, and diagnostics.
### NetIn and NetOut ### NetIn and NetOut
GridFire solvers use a unified input and output type for their public interface GridFire solvers use a unified input and output type for their public interface
(though as developers will quickly learn, internally these are immediatly (though as developers will quickly learn, internally these are immediately
broken down into simpler data structures). All solvers expect a `NetIn` struct broken down into simpler data structures). All solvers expect a `NetIn` struct
for the input type to the `evaluate` method and return a `NetOut` struct. for the input type to the `evaluate` method and return a `NetOut` struct.
@@ -454,11 +464,11 @@ A `NetIn` struct contains
- The initial energy in the system in ergs (`NetIn::energy`) - The initial energy in the system in ergs (`NetIn::energy`)
>**Note:** It is often useful to set `NetIn::dt0` to something *very* small and >**Note:** It is often useful to set `NetIn::dt0` to something *very* small and
>let an iterative timestepper push the timestep up. Often for main sequence >let an iterative time stepper push the timestep up. Often for main sequence
>burning I use ~1e-12 for dt0 >burning I use ~1e-12 for dt0
>**Note:** The composition must be a `fourdst::composition::Composition` >**Note:** The composition must be a `fourdst::composition::Composition`
>object. This is made avalible through the `foursdt` library and the >object. This is made available through the `foursdt` library and the
>`fourdst/composition/Composition.h` header. `fourdst` is installed >`fourdst/composition/Composition.h` header. `fourdst` is installed
>automatically with GridFire >automatically with GridFire
@@ -471,7 +481,7 @@ A `NetOut` struct contains
- The final composition after evolving to `tMax` (`NetOut::composition`) - The final composition after evolving to `tMax` (`NetOut::composition`)
- The number of steps the solver took to evolve to `tmax` (`NetOut::num_steps`) - The number of steps the solver took to evolve to `tmax` (`NetOut::num_steps`)
- The final energy generated by the network while evolving to `tMax` - The final energy generated by the network while evolving to `tMax`
(`NetOut::energy`) (`NetOut::energy`)
>**Note:** Currently `GraphEngine` only considers energy due to nuclear mass >**Note:** Currently `GraphEngine` only considers energy due to nuclear mass
>defect and not neutrino loss. >defect and not neutrino loss.
@@ -480,18 +490,18 @@ A `NetOut` struct contains
### DirectNetworkSolver (Implicit Rosenbrock Method) ### DirectNetworkSolver (Implicit Rosenbrock Method)
- **Integrator:** Implicit Rosenbrock4 scheme (order 4) via `Boost.Odeint`s - **Integrator:** Implicit Rosenbrock4 scheme (order 4) via `Boost.Odeint`s
`rosenbrock4<double>`, optimized for stiff reaction networks with adaptive step `rosenbrock4<double>`, optimized for stiff reaction networks with adaptive step
size control using configurable absolute and relative tolerances. size control using configurable absolute and relative tolerances.
- **Jacobian Assembly:** Asks the base engine for the Jacobian Matrix - **Jacobian Assembly:** Asks the base engine for the Jacobian Matrix
- **RHS Evaluation:** Assk the base engine for RHS of the abundance evolution - **RHS Evaluation:** Asks the base engine for RHS of the abundance evolution
equations equations
- **Linear Algebra:** Utilizes `Boost.uBLAS` for state vectors and dense Jacobian - **Linear Algebra:** Utilizes `Boost.uBLAS` for state vectors and dense Jacobian
matrices, with sparse access patterns supported via coordinate lists of nonzero matrices, with sparse access patterns supported via coordinate lists of nonzero
entries. entries.
- **Error Control and Logging:** Absolute and relative tolerance parameters - **Error Control and Logging:** Absolute and relative tolerance parameters
(`absTol`, `relTol`) are read from configuration; Quill loggers, which run in a (`absTol`, `relTol`) are read from configuration; Quill loggers, which run in a
seperate non blocking thread, capture integration diagnostics and step separate non blocking thread, capture integration diagnostics and step
statistics. statistics.
### Algorithmic Workflow in DirectNetworkSolver ### Algorithmic Workflow in DirectNetworkSolver
1. **Initialization:** Convert input temperature to T9 units, retrieve 1. **Initialization:** Convert input temperature to T9 units, retrieve
@@ -499,21 +509,21 @@ statistics.
2. **Integrator Setup:** Construct the controlled Rosenbrock4 stepper and bind 2. **Integrator Setup:** Construct the controlled Rosenbrock4 stepper and bind
`RHSManager` and `JacobianFunctor`. `RHSManager` and `JacobianFunctor`.
3. **Adaptive Integration Loop:** 3. **Adaptive Integration Loop:**
- Perform `integrate_adaptive` advancing until `tMax`, catching any - Perform `integrate_adaptive` advancing until `tMax`, catching any
`StaleEngineTrigger` to repartition the network and update composition. `StaleEngineTrigger` to repartition the network and update composition.
- On each substep, observe states and log via `RHSManager::observe`. - On each substep, observe states and log via `RHSManager::observe`.
4. **Finalization:** Assemble final mass fractions, compute accumulated energy, 4. **Finalization:** Assemble final mass fractions, compute accumulated energy,
and populate `NetOut` with updated composition and diagnostics. and populate `NetOut` with updated composition and diagnostics.
### Future Solver Implementations ### Future Solver Implementations
- **Operator Splitting Solvers:** Strategies to decouple thermodynamics, - **Operator Splitting Solvers:** Strategies to decouple thermodynamics,
screening, and reaction substeps for performance on stiff, multi-scale screening, and reaction substeps for performance on stiff, multiscale
networks. networks.
- **GPU-Accelerated Solvers:** Planned use of CUDA/OpenCL backends for - **GPU-Accelerated Solvers:** Planned use of CUDA/OpenCL backends for
large-scale network integration. large-scale network integration.
- **Callback observer support:** Currently we use an observer built into our - **Callback observer support:** Currently we use an observer built into our
`RHSManager` (`RHSManager::observe`); however, we intend to inlucde support for `RHSManager` (`RHSManager::observe`); however, we intend to include support for
custom, user defined, observer method. custom, user defined, observer method.
These strategies can be developed by inheriting from `NetworkSolverStrategy` These strategies can be developed by inheriting from `NetworkSolverStrategy`
and registering against the same engine types without modifying existing engine and registering against the same engine types without modifying existing engine
@@ -629,22 +639,22 @@ int main(){
#### Workflow Components and Effects #### Workflow Components and Effects
- **GraphEngine** constructs the full reaction network, capturing all species - **GraphEngine** constructs the full reaction network, capturing all species
and reactions. and reactions.
- **MultiscalePartitioningEngineView** segregates reactions by characteristic - **MultiscalePartitioningEngineView** segregates reactions by characteristic
timescales (Hix & Thielemann), reducing the effective stiffness by treating timescales (Hix & Thielemann), reducing the effective stiffness by treating
fast processes separately. fast processes separately.
- **AdaptiveEngineView** prunes low-flux species/reactions at runtime, - **AdaptiveEngineView** prunes low-flux species/reactions at runtime,
decreasing dimensionality and improving computational efficiency. decreasing dimensionality and improving computational efficiency.
- **DirectNetworkSolver** employs an implicit Rosenbrock method to stably - **DirectNetworkSolver** employs an implicit Rosenbrock method to stably
integrate the remaining stiff system with adaptive step control. integrate the remaining stiff system with adaptive step control.
This layered approach enhances stability for stiff networks while maintaining This layered approach enhances stability for stiff networks while maintaining
accuracy and performance. accuracy and performance.
### Callback Example ### Callback Example
Custom callback functions can be registered with any solver. Because it might make sense for each solver to provide Custom callback functions can be registered with any solver. Because it might make sense for each solver to provide
different context to the callback function, you should use the struct `gridfire::solver::<SolverName>::TimestepContext` different context to the callback function, you should use the struct `gridfire::solver::<SolverName>::TimestepContext`
as the argument type for the callback function. This struct contains all of the information provided by that solver to as the argument type for the callback function. This struct contains all the information provided by that solver to
the callback function. the callback function.
```c++ ```c++
@@ -704,20 +714,32 @@ int main(){
>**Note:** A fully detailed list of all available information in the TimestepContext struct is available in the API documentation. >**Note:** A fully detailed list of all available information in the TimestepContext struct is available in the API documentation.
>**Note:** The order of species in the boost state vector (`ctx.state`) is **not guaranteed** to be any particular order run over run. Therefore, in order to reliably extract >**Note:** The order of species in the boost state vector (`ctx.state`) is **not guaranteed** to be any particular order run over run. Therefore, in order to reliably extract
> values from it, you **must** use the `getSpeciesIndex` method of the engine to get the index of the species you are interested in (these will always be in the same order). > values from it, you **must** use the `getSpeciesIndex` method of the engine to get the index of the species you are interested in (these will always be in the same order).
#### Callback Context
Since each solver may provide different context to the callback function, and it may be frustrating to refer to the
documentation every time, we also enforce that all solvers must implement a `descripe_callback_context` method which
returns a vector of tuples<string, string> where the first element is the name of the field and the second is its
datatype. It is on the developer to ensure that this information is accurate.
```c++
...
std::cout << solver.describe_callback_context() << std::endl;
```
## Python ## Python
The python bindings intentionally look **very** similar to the C++ code. The python bindings intentionally look **very** similar to the C++ code.
Generally all examples can be adapted to python by replacing includes of paths Generally all examples can be adapted to python by replacing includes of paths
with imports of modules such that with imports of modules such that
`#include "gridfire/engine/GraphEngine.h"` becomes `import gridfire.engine.GraphEngine` `#include "gridfire/engine/GraphEngine.h"` becomes `import gridfire.engine.GraphEngine`
All GridFire C++ types have been bound and can be passed around as one would expect. All GridFire C++ types have been bound and can be passed around as one would expect.
### Common Workflow Examople ### Common Workflow Example
This example impliments the same logic as the above C++ example This example implements the same logic as the above C++ example
```python ```python
from gridfire.engine import GraphEngine, MultiscalePartitioningEngineView, AdaptiveEngineView from gridfire.engine import GraphEngine, MultiscalePartitioningEngineView, AdaptiveEngineView
from gridfire.solver import DirectNetworkSolver from gridfire.solver import DirectNetworkSolver
@@ -820,11 +842,11 @@ print(f"Final H-1 mass fraction {results.composition.getMassFraction("H-1")}")
GridFire integrates with and builds upon several key 4D-STAR libraries: GridFire integrates with and builds upon several key 4D-STAR libraries:
- [fourdst](https://github.com/4D-STAR/fourdst): hub module managing versioning - [fourdst](https://github.com/4D-STAR/fourdst): hub module managing versioning
of `libcomposition`, `libconfig`, `liblogging`, and `libconstants` of `libcomposition`, `libconfig`, `liblogging`, and `libconstants`
- [libcomposition](https://github.com/4D-STAR/libcomposition) - [libcomposition](https://github.com/4D-STAR/libcomposition)
([docs](https://4d-star.github.io/libcomposition/)): Composition management ([docs](https://4d-star.github.io/libcomposition/)): Composition management
toolkit. toolkit.
- [libconfig](https://github.com/4D-STAR/libconfig): Configuration file parsing - [libconfig](https://github.com/4D-STAR/libconfig): Configuration file parsing
utilities. utilities.
- [liblogging](https://github.com/4D-STAR/liblogging): Flexible logging framework. - [liblogging](https://github.com/4D-STAR/liblogging): Flexible logging framework.
- [libconstants](https://github.com/4D-STAR/libconstants): Physical constants - [libconstants](https://github.com/4D-STAR/libconstants): Physical constants

View File

@@ -854,6 +854,7 @@
<a href="index.html#autotoc_md54"/> <a href="index.html#autotoc_md54"/>
<a href="index.html#autotoc_md55"/> <a href="index.html#autotoc_md55"/>
<a href="index.html#autotoc_md56"/> <a href="index.html#autotoc_md56"/>
<a href="index.html#autotoc_md57"/>
<a href="index.html#autotoc_md6"/> <a href="index.html#autotoc_md6"/>
<a href="index.html#autotoc_md7"/> <a href="index.html#autotoc_md7"/>
<a href="index.html#autotoc_md8"/> <a href="index.html#autotoc_md8"/>
@@ -867,13 +868,13 @@
<a href="logging_8h.html"/> <a href="logging_8h.html"/>
<a href="mainpage_8md.html"/> <a href="mainpage_8md.html"/>
<a href="md_docs_2static_2usage.html"/> <a href="md_docs_2static_2usage.html"/>
<a href="md_docs_2static_2usage.html#autotoc_md59"/>
<a href="md_docs_2static_2usage.html#autotoc_md60"/> <a href="md_docs_2static_2usage.html#autotoc_md60"/>
<a href="md_docs_2static_2usage.html#autotoc_md61"/> <a href="md_docs_2static_2usage.html#autotoc_md61"/>
<a href="md_docs_2static_2usage.html#autotoc_md63"/> <a href="md_docs_2static_2usage.html#autotoc_md62"/>
<a href="md_docs_2static_2usage.html#autotoc_md65"/> <a href="md_docs_2static_2usage.html#autotoc_md64"/>
<a href="md_docs_2static_2usage.html#autotoc_md67"/> <a href="md_docs_2static_2usage.html#autotoc_md66"/>
<a href="md_docs_2static_2usage.html#autotoc_md69"/> <a href="md_docs_2static_2usage.html#autotoc_md68"/>
<a href="md_docs_2static_2usage.html#autotoc_md70"/>
<a href="namespacegridfire.html"/> <a href="namespacegridfire.html"/>
<a href="namespacegridfire.html#a0210bd2e07538932135a56b62b8ddb57"/> <a href="namespacegridfire.html#a0210bd2e07538932135a56b62b8ddb57"/>
<a href="namespacegridfire.html#a0210bd2e07538932135a56b62b8ddb57a100e3bf0197221c19b222badf42aa964"/> <a href="namespacegridfire.html#a0210bd2e07538932135a56b62b8ddb57a100e3bf0197221c19b222badf42aa964"/>

View File

@@ -118,7 +118,7 @@ Funding</h2>
Usage</h1> Usage</h1>
<h2><a class="anchor" id="autotoc_md4"></a> <h2><a class="anchor" id="autotoc_md4"></a>
Python installation</h2> Python installation</h2>
<p>By far the easiest way to install is with pip. This will install either pre-compiled wheels or, if your system has not had a wheel compiled for it, it will try to build locally (this may take <b>a long time</b>). The python bindings are just that and should maintain nearly the same speed as the C++ code. End users are strongly encorages to use the python module rather than the C++ code.</p> <p>By far the easiest way to install is with pip. This will install either pre-compiled wheels or, if your system has not had a wheel compiled for it, it will try to build locally (this may take <b>a long time</b>). The python bindings are just that and should maintain nearly the same speed as the C++ code. End users are strongly encourages to use the python module rather than the C++ code.</p>
<h3><a class="anchor" id="autotoc_md5"></a> <h3><a class="anchor" id="autotoc_md5"></a>
pypi</h3> pypi</h3>
<p>Installing from pip is as simple as </p><div class="fragment"><div class="line">pip install gridfire</div> <p>Installing from pip is as simple as </p><div class="fragment"><div class="line">pip install gridfire</div>
@@ -134,10 +134,10 @@ pypi</h3>
<td class="markdownTableBodyNone">0.5.0 </td><td class="markdownTableBodyNone">Linux </td><td class="markdownTableBodyNone">x86_64 </td><td class="markdownTableBodyNone">3.8, 3.9, 3.10, 3.11, 3.12, 3.13 (std &amp; t), 3.14 (std &amp; t) </td><td class="markdownTableBodyNone">3.10, 3.11 </td></tr> <td class="markdownTableBodyNone">0.5.0 </td><td class="markdownTableBodyNone">Linux </td><td class="markdownTableBodyNone">x86_64 </td><td class="markdownTableBodyNone">3.8, 3.9, 3.10, 3.11, 3.12, 3.13 (std &amp; t), 3.14 (std &amp; t) </td><td class="markdownTableBodyNone">3.10, 3.11 </td></tr>
</table> </table>
<blockquote class="doxtable"> <blockquote class="doxtable">
<p><b>Note</b>: Currently macOS x86_64 does <b>not</b> have a precompiled wheel. Due to that platform being phased out it is likely that there will never be precompiled wheels or releases for it. </p> <p><b>Note</b>: Currently macOS x86_64 does <b>not</b> have a precompiled wheel. Do to that platform being phased out it is likely that there will never be precompiled wheels or releases for it. </p>
</blockquote> </blockquote>
<blockquote class="doxtable"> <blockquote class="doxtable">
<p><b>Note:</b> macOS wheels were targeted to MacOS 12 Monterey and should work on any version more recent than that (at least as of August 2025). </p> <p><b>Note:</b> macOS wheels were targeted to macOS 12 Monterey and should work on any version more recent than that (at least as of August 2025). </p>
</blockquote> </blockquote>
<blockquote class="doxtable"> <blockquote class="doxtable">
<p><b>Note:</b> Linux wheels were compiled using manylinux_2_28 and are expected to work on Debian 10+, Ubuntu 18.10+, Fedora 29+, or CentOS/RHEL 8+ </p> <p><b>Note:</b> Linux wheels were compiled using manylinux_2_28 and are expected to work on Debian 10+, Ubuntu 18.10+, Fedora 29+, or CentOS/RHEL 8+ </p>
@@ -156,11 +156,11 @@ source</h3>
</blockquote> </blockquote>
<h3><a class="anchor" id="autotoc_md7"></a> <h3><a class="anchor" id="autotoc_md7"></a>
source for developers</h3> source for developers</h3>
<p>If you are a developer and would like an editable and incrimental python install <code>meson-python</code> makes this very easy</p> <p>If you are a developer and would like an editable and incremental python install <code>meson-python</code> makes this very easy</p>
<div class="fragment"><div class="line">git clone https://github.com/4D-STAR/GridFire</div> <div class="fragment"><div class="line">git clone https://github.com/4D-STAR/GridFire</div>
<div class="line">cd GridFire</div> <div class="line">cd GridFire</div>
<div class="line">pip install -e . --no-build-isolation -vv</div> <div class="line">pip install -e . --no-build-isolation -vv</div>
</div><!-- fragment --><p>This will generate incrimental builds whenever source code changes and you run a python script automartically (note that since <code>meson setup</code> must run for each of these it does still take a few seconds to recompile regardless of how small a source code change you have made). It is <b>strongly</b> reccomended that developers use this approach and end users <em>do not</em>.</p> </div><!-- fragment --><p>This will generate incremental builds whenever source code changes, and you run a python script automatically (note that since <code>meson setup</code> must run for each of these it does still take a few seconds to recompile regardless of how small a source code change you have made). It is <b>strongly</b> recommended that developers use this approach and end users <em>do not</em>.</p>
<h2><a class="anchor" id="autotoc_md8"></a> <h2><a class="anchor" id="autotoc_md8"></a>
Automatic Build and Installation</h2> Automatic Build and Installation</h2>
<h3><a class="anchor" id="autotoc_md9"></a> <h3><a class="anchor" id="autotoc_md9"></a>
@@ -172,7 +172,7 @@ Script Build and Installation Instructions</h3>
</div><!-- fragment --><p> The regular installation script will select a standard "ideal" set of build options for you. If you want more control over the build options, you can use the <code>install-tui.sh</code> script, which will provide a text-based user interface to select the build options you want.</p> </div><!-- fragment --><p> The regular installation script will select a standard "ideal" set of build options for you. If you want more control over the build options, you can use the <code>install-tui.sh</code> script, which will provide a text-based user interface to select the build options you want.</p>
<p>Generally, both are intended to be easy to use and will prompt you automatically to install any missing dependencies.</p> <p>Generally, both are intended to be easy to use and will prompt you automatically to install any missing dependencies.</p>
<h3><a class="anchor" id="autotoc_md10"></a> <h3><a class="anchor" id="autotoc_md10"></a>
Currently known good platforms</h3> Currently, known good platforms</h3>
<p>The installation script has been tested and found to work on clean installations of the following platforms:</p><ul> <p>The installation script has been tested and found to work on clean installations of the following platforms:</p><ul>
<li>MacOS 15.3.2 (Apple Silicon + brew installed)</li> <li>MacOS 15.3.2 (Apple Silicon + brew installed)</li>
<li>Fedora 42.0 (aarch64)</li> <li>Fedora 42.0 (aarch64)</li>
@@ -215,13 +215,13 @@ Optional</h4>
</blockquote> </blockquote>
<h3><a class="anchor" id="autotoc_md15"></a> <h3><a class="anchor" id="autotoc_md15"></a>
Install Scripts</h3> Install Scripts</h3>
<p>GridFire ships with an installer (<code>install.sh</code>) which is intended to make the process of installation both easier and more repetable.</p> <p>GridFire ships with an installer (<code>install.sh</code>) which is intended to make the process of installation both easier and more repeatable.</p>
<h4><a class="anchor" id="autotoc_md16"></a> <h4><a class="anchor" id="autotoc_md16"></a>
Ease of Installation</h4> Ease of Installation</h4>
<p>Both scripts are intended to automate installation more or less completly. This includes dependency checking. In the event that a dependency cannot be found they try to install (after explicitly asking for user permission). If that does not work they will provide a clear message as to what went wrong.</p> <p>Both scripts are intended to automate installation more or less completely. This includes dependency checking. In the event that a dependency cannot be found they try to install (after explicitly asking for user permission). If that does not work they will provide a clear message as to what went wrong.</p>
<h4><a class="anchor" id="autotoc_md17"></a> <h4><a class="anchor" id="autotoc_md17"></a>
Reproducibility</h4> Reproducibility</h4>
<p>The TUI mode provides easy modification of meson build system and compiler settings which can then be saved to a config file. This config file can then be loaded by either tui mode or cli mode (with the <code>--config</code>) flag meaning that build configurations can be made and reused. Note that this is <b>not</b> a deterministicly reproducible build system as it does not interact with any system dependencies or settings, only meson and compiler settings.</p> <p>The TUI mode provides easy modification of meson build system and compiler settings which can then be saved to a config file. This config file can then be loaded by either tui mode or cli mode (with the <code>--config</code>) flag meaning that build configurations can be made and reused. Note that this is <b>not</b> a deterministically reproducible build system as it does not interact with any system dependencies or settings, only meson and compiler settings.</p>
<h4><a class="anchor" id="autotoc_md18"></a> <h4><a class="anchor" id="autotoc_md18"></a>
Examples</h4> Examples</h4>
<h5><a class="anchor" id="autotoc_md19"></a> <h5><a class="anchor" id="autotoc_md19"></a>
@@ -234,7 +234,7 @@ TUI config loading and meson setup</h5>
CLI config loading, setup, and build</h5> CLI config loading, setup, and build</h5>
<p><a href="https://asciinema.org/a/GYaWTXZbDJRD4ohde0s3DkFMC"><img src="https://asciinema.org/a/GYaWTXZbDJRD4ohde0s3DkFMC.svg" alt="asciicast" style="pointer-events: none;" class="inline"/></a></p> <p><a href="https://asciinema.org/a/GYaWTXZbDJRD4ohde0s3DkFMC"><img src="https://asciinema.org/a/GYaWTXZbDJRD4ohde0s3DkFMC.svg" alt="asciicast" style="pointer-events: none;" class="inline"/></a></p>
<blockquote class="doxtable"> <blockquote class="doxtable">
<p><b>Note:</b> <code>install-tui.sh</code> is simply a script which calles <code>install.sh</code> with the <code>--tui</code> flag. You can get the exact same results by running <code>install.sh --tui</code>. </p> <p><b>Note:</b> <code>install-tui.sh</code> is simply a script which calls <code>install.sh</code> with the <code>--tui</code> flag. You can get the exact same results by running <code>install.sh --tui</code>. </p>
</blockquote> </blockquote>
<blockquote class="doxtable"> <blockquote class="doxtable">
<p><b>Note:</b> Call <code>install.sh</code> with the <code>--help</code> or <code>--h</code> flag to see command line options </p> <p><b>Note:</b> Call <code>install.sh</code> with the <code>--help</code> or <code>--h</code> flag to see command line options </p>
@@ -253,7 +253,7 @@ Dependency Installation on Common Platforms</h3>
<p><b>Note:</b> Depending on the ubuntu version you have the libboost-all-dev libraries may be too old. If this is the case refer to the boost documentation for how to download and install a version <code>&gt;=1.83.0</code> </p> <p><b>Note:</b> Depending on the ubuntu version you have the libboost-all-dev libraries may be too old. If this is the case refer to the boost documentation for how to download and install a version <code>&gt;=1.83.0</code> </p>
</blockquote> </blockquote>
<blockquote class="doxtable"> <blockquote class="doxtable">
<p><b>Note:</b> On recent versions of ubuntu python has switched to being externally managed by the system. We <b>strongly</b> recomend that if you install manaully all python pacakges are installed inside some kind of virtual enviroment (e.g. <code>pyenv</code>, <code>conda</code>, <code>python-venv</code>, etc...). When using the installer script this is handled automatically using <code>python-venv</code>. </p> <p><b>Note:</b> On recent versions of ubuntu python has switched to being externally managed by the system. We <b>strongly</b> recommend that if you install manually all python packages are installed inside some kind of virtual environment (e.g. <code>pyenv</code>, <code>conda</code>, <code>python-venv</code>, etc...). When using the installer script this is handled automatically using <code>python-venv</code>. </p>
</blockquote> </blockquote>
<ul> <ul>
<li><b>Fedora/CentOS/RHEL:</b> <div class="fragment"><div class="line">sudo dnf install -y gcc-c++ meson python3 python3-pip boost-devel</div> <li><b>Fedora/CentOS/RHEL:</b> <div class="fragment"><div class="line">sudo dnf install -y gcc-c++ meson python3 python3-pip boost-devel</div>
@@ -268,7 +268,7 @@ Building the C++ Library</h3>
<div class="line">meson compile -C build</div> <div class="line">meson compile -C build</div>
</div><!-- fragment --><h4><a class="anchor" id="autotoc_md24"></a> </div><!-- fragment --><h4><a class="anchor" id="autotoc_md24"></a>
Clang vs. GCC</h4> Clang vs. GCC</h4>
<p>As noted above <code>clang</code> tends to compile GridFire much faster than <code>gcc</code>. If your system has both <code>clang</code> and <code>gcc</code> installed you may force meson to use clang via enviromental variables</p> <p>As noted above <code>clang</code> tends to compile GridFire much faster than <code>gcc</code>. If your system has both <code>clang</code> and <code>gcc</code> installed you may force meson to use clang via environmental variables</p>
<div class="fragment"><div class="line">CC=clang CXX=clang++ meson setup build_clang</div> <div class="fragment"><div class="line">CC=clang CXX=clang++ meson setup build_clang</div>
<div class="line">meson compile -C build_clang</div> <div class="line">meson compile -C build_clang</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md25"></a> </div><!-- fragment --><h3><a class="anchor" id="autotoc_md25"></a>
@@ -276,12 +276,12 @@ Installing the Library</h3>
<div class="fragment"><div class="line">meson install -C build</div> <div class="fragment"><div class="line">meson install -C build</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md26"></a> </div><!-- fragment --><h3><a class="anchor" id="autotoc_md26"></a>
Minimum compiler versions</h3> Minimum compiler versions</h3>
<p>GridFire uses C++23 features and therefore only compilers and standard library implimentations which support C++23 are supported. Generally we have found that <code>gcc &gt;= 13.0.0</code> or <code>clang &gt;= 16.0.0</code> work well.</p> <p>GridFire uses C++23 features and therefore only compilers and standard library implementations which support C++23 are supported. Generally we have found that <code>gcc &gt;= 13.0.0</code> or <code>clang &gt;= 16.0.0</code> work well.</p>
<h2><a class="anchor" id="autotoc_md27"></a> <h2><a class="anchor" id="autotoc_md27"></a>
Code Architecture and Logical Flow</h2> Code Architecture and Logical Flow</h2>
<p>GridFire is organized into a series of composable modules, each responsible for a specific aspect of nuclear reaction network modeling. The core components include:</p> <p>GridFire is organized into a series of composable modules, each responsible for a specific aspect of nuclear reaction network modeling. The core components include:</p>
<ul> <ul>
<li><b>Engine Module:</b> Core interfaces and implementations (e.g., <code>GraphEngine</code>) that evaluate reaction network rate equations and energy generation. Also implimented <code>Views</code> submodule.</li> <li><b>Engine Module:</b> Core interfaces and implementations (e.g., <code>GraphEngine</code>) that evaluate reaction network rate equations and energy generation. Also implemented <code>Views</code> submodule.</li>
<li><b>Engine::Views Module:</b> Composable engine optimization and modification (e.g. <code>MultiscalePartitioningEngineView</code>) which can be used to make a problem more tractable or applicable.</li> <li><b>Engine::Views Module:</b> Composable engine optimization and modification (e.g. <code>MultiscalePartitioningEngineView</code>) which can be used to make a problem more tractable or applicable.</li>
<li><b>Screening Module:</b> Implements nuclear reaction screening corrections (e.g. <code>WeakScreening</code> (<a href="https://adsabs.harvard.edu/full/1954AuJPh...7..373S">Salpeter, 1954</a>), <code>BareScreening</code>) affecting reaction rates.</li> <li><b>Screening Module:</b> Implements nuclear reaction screening corrections (e.g. <code>WeakScreening</code> (<a href="https://adsabs.harvard.edu/full/1954AuJPh...7..373S">Salpeter, 1954</a>), <code>BareScreening</code>) affecting reaction rates.</li>
<li><b>Reaction Module:</b> Parses and manages Reaclib reaction rate data, providing temperature- and density-dependent rate evaluations.</li> <li><b>Reaction Module:</b> Parses and manages Reaclib reaction rate data, providing temperature- and density-dependent rate evaluations.</li>
@@ -292,21 +292,21 @@ Code Architecture and Logical Flow</h2>
<p>Generally a user will start by selecting a base engine (currently we only offer <code>GraphEngine</code>), which constructs the full reaction network graph from a given composition. The user can then apply various engine views to adapt the network topology, such as partitioning fast and slow reactions, adaptively culling low-flow pathways, or priming the network with specific species. Finally, a numerical solver is selected to integrate the network over time, producing updated abundances and diagnostics.</p> <p>Generally a user will start by selecting a base engine (currently we only offer <code>GraphEngine</code>), which constructs the full reaction network graph from a given composition. The user can then apply various engine views to adapt the network topology, such as partitioning fast and slow reactions, adaptively culling low-flow pathways, or priming the network with specific species. Finally, a numerical solver is selected to integrate the network over time, producing updated abundances and diagnostics.</p>
<h2><a class="anchor" id="autotoc_md28"></a> <h2><a class="anchor" id="autotoc_md28"></a>
Engines</h2> Engines</h2>
<p>GridFire is, at its core, based on a series of <code>Engines</code>. These are constructs which know how to report information on series of ODEs which need to be solved to evolver abundnances. The important thing to understand about <code>Engines</code> is that they contain all of the detailed physics GridFire uses. For example a <code>Solver</code> takes an <code>Engine</code> but does not compute physics itself. Rather, it asks the <code>Engine</code> for stuff like the jacobian matrix, stoichiometry, nuclear energy generation rate, and change in abundance with time.</p> <p>GridFire is, at its core, based on a series of <code>Engines</code>. These are constructs which know how to report information on series of ODEs which need to be solved to evolver abundances. The important thing to understand about <code>Engines</code> is that they contain all the detailed physics GridFire uses. For example a <code>Solver</code> takes an <code>Engine</code> but does not compute physics itself. Rather, it asks the <code>Engine</code> for stuff like the jacobian matrix, stoichiometry, nuclear energy generation rate, and change in abundance with time.</p>
<p>Refer to the API documentation for the exact interface which an <code>Engine</code> must impliment to be compatible with GridFire solvers.</p> <p>Refer to the API documentation for the exact interface which an <code>Engine</code> must implement to be compatible with GridFire solvers.</p>
<p>Currently we only impliment <code>GraphEngine</code> which is intended to be a very general and adaptable <code>Engine</code>.</p> <p>Currently, we only implement <code>GraphEngine</code> which is intended to be a very general and adaptable <code>Engine</code>.</p>
<h3><a class="anchor" id="autotoc_md29"></a> <h3><a class="anchor" id="autotoc_md29"></a>
GraphEngine</h3> GraphEngine</h3>
<p>In GridFire the <code>GraphEngine</code> will generally be the most fundamental building block of a nuclear network. A <code>GraphEngine</code> represents a directional hypergraph connecting some set of atomic species through reactions listed in the <a href="https://reaclib.jinaweb.org/index.php">JINA Reaclib database</a>.</p> <p>In GridFire the <code>GraphEngine</code> will generally be the most fundamental building block of a nuclear network. A <code>GraphEngine</code> represents a directional hypergraph connecting some set of atomic species through reactions listed in the <a href="https://reaclib.jinaweb.org/index.php">JINA Reaclib database</a>.</p>
<p><code>GraphEngine</code>s are constructed from a seed composition of species from which they recursivley expand their topology outward, following known reaction pathways and adding new species to the tracked list as they expand.</p> <p><code>GraphEngine</code>s are constructed from a seed composition of species from which they recursively expand their topology outward, following known reaction pathways and adding new species to the tracked list as they expand.</p>
<h3><a class="anchor" id="autotoc_md30"></a> <h3><a class="anchor" id="autotoc_md30"></a>
GraphEngine Configuration Options</h3> GraphEngine Configuration Options</h3>
<p>GraphEngine exposes runtime configuration methods to tailor network construction and rate evaluations:</p> <p>GraphEngine exposes runtime configuration methods to tailor network construction and rate evaluations:</p>
<ul> <ul>
<li><b>Constructor Parameters:</b><ul> <li><b>Constructor Parameters:</b><ul>
<li><code>composition</code>: The initial seed composition to start network construction from.</li> <li><code>composition</code>: The initial seed composition to start network construction from.</li>
<li><code>BuildDepthType</code> (<code>Full</code>, <code>Shallow</code>, <code>SecondOrder</code>, etc...): controls number of recursions used to construct the network topology. Can either be an member of the <code>NetworkBuildDepth</code> enum or an integerl.</li> <li><code>BuildDepthType</code> (<code>Full</code>, <code>Shallow</code>, <code>SecondOrder</code>, etc...): controls number of recursions used to construct the network topology. Can either be a member of the <code>NetworkBuildDepth</code> enum or an integer.</li>
<li><code>partition::PartitionFunction</code>: Partition function used when evlauating detailed balance for inverse rates.</li> <li><code>partition::PartitionFunction</code>: Partition function used when evaluating detailed balance for inverse rates.</li>
</ul> </ul>
</li> </li>
<li><b>setPrecomputation(bool precompute):</b><ul> <li><b>setPrecomputation(bool precompute):</b><ul>
@@ -339,12 +339,12 @@ Available Partition Functions</h3>
</table> </table>
<h3><a class="anchor" id="autotoc_md32"></a> <h3><a class="anchor" id="autotoc_md32"></a>
AutoDiff</h3> AutoDiff</h3>
<p>One of the primary tasks any engine must accomplish is to report the jacobian matrix of the system to the solver. <code>GraphEngine</code> uses <code>CppAD</code>, a C++ auto differentiation library, to generate analytic jacobian matricies very efficiently.</p> <p>One of the primary tasks any engine must accomplish is to report the jacobian matrix of the system to the solver. <code>GraphEngine</code> uses <code>CppAD</code>, a C++ auto differentiation library, to generate analytic jacobian matrices very efficiently.</p>
<h2><a class="anchor" id="autotoc_md33"></a> <h2><a class="anchor" id="autotoc_md33"></a>
Reaclib in GridFire</h2> Reaclib in GridFire</h2>
<p>All reactions in JINA Reaclib which only include reactants iron and lighter were downloaded on June 17th, 2025 where the most recent documented change on the JINA Reaclib site was on June 24th, 2021.</p> <p>All reactions in JINA Reaclib which only include reactants iron and lighter were downloaded on June 17th, 2025 where the most recent documented change on the JINA Reaclib site was on June 24th, 2021.</p>
<p>All of thes reactions have been compiled into a header file which is then statically compiled into the gridfire binaries (specifically into lib_reaction_reaclib.cpp.o). This does increase the binary size by a few MB; however, the benafit is faster load times and more importantly no need for end users to manage resource files.</p> <p>All of these reactions have been compiled into a header file which is then statically compiled into the gridfire binaries (specifically into lib_reaction_reaclib.cpp.o). This does increase the binary size by a few MB; however, the benefit is faster load times and more importantly no need for end users to manage resource files.</p>
<p>If a developer wants to add new reaclib reactions we include a script at <code>utils/reaclib/format.py</code> which can injest a reaclib data file and produce the needed header file. More details on this process are included in <code>utils/reaclib/readme.md</code></p> <p>If a developer wants to add new reaclib reactions we include a script at <code>utils/reaclib/format.py</code> which can ingest a reaclib data file and produce the needed header file. More details on this process are included in <code>utils/reaclib/readme.md</code></p>
<h2><a class="anchor" id="autotoc_md34"></a> <h2><a class="anchor" id="autotoc_md34"></a>
Engine Views</h2> Engine Views</h2>
<p>The GridFire engine supports multiple engine view strategies to adapt or restrict network topology. Generally when extending GridFire the approach is likely to be one of adding new <code>EngineViews</code>.</p> <p>The GridFire engine supports multiple engine view strategies to adapt or restrict network topology. Generally when extending GridFire the approach is likely to be one of adding new <code>EngineViews</code>.</p>
@@ -365,18 +365,18 @@ Engine Views</h2>
<p>These engine views implement the common Engine interface and may be composed in any order to build complex network pipelines. New view types can be added by deriving from the <code>EngineView</code> base class, and linked into the composition chain without modifying core engine code.</p> <p>These engine views implement the common Engine interface and may be composed in any order to build complex network pipelines. New view types can be added by deriving from the <code>EngineView</code> base class, and linked into the composition chain without modifying core engine code.</p>
<h3><a class="anchor" id="autotoc_md35"></a> <h3><a class="anchor" id="autotoc_md35"></a>
A Note about composability</h3> A Note about composability</h3>
<p>There are certain functions for which it is expected that a call to an engine view will propegate the result down the chain of engine views, eventually reaching the base engine (e.g. <code>DynamicEngine::update</code>). We do not strongly enforce this as it is not hard to contrive a situation where that is not the mose useful behavior; however, we do strongly encorage developers to think carefully about passing along calls to base engine methods when implimenting new views.</p> <p>There are certain functions for which it is expected that a call to an engine view will propagate the result down the chain of engine views, eventually reaching the base engine (e.g. <code>DynamicEngine::update</code>). We do not strongly enforce this as it is not hard to contrive a situation where that is not the mose useful behavior; however, we do strongly encourage developers to think carefully about passing along calls to base engine methods when implementing new views.</p>
<h2><a class="anchor" id="autotoc_md36"></a> <h2><a class="anchor" id="autotoc_md36"></a>
Numerical Solver Strategies</h2> Numerical Solver Strategies</h2>
<p>GridFire defines a flexible solver architecture through the <code>networkfire::solver::NetworkSolverStrategy</code> interface, enabling multiple ODE integration algorithms to be used interchangeably with any engine that implements the <code>Engine</code> or <code>DynamicEngine</code> contract.</p> <p>GridFire defines a flexible solver architecture through the <code>networkfire::solver::NetworkSolverStrategy</code> interface, enabling multiple ODE integration algorithms to be used interchangeably with any engine that implements the <code>Engine</code> or <code>DynamicEngine</code> contract.</p>
<h3><a class="anchor" id="autotoc_md37"></a> <h3><a class="anchor" id="autotoc_md37"></a>
NetworkSolverStrategy&lt;EngineT&gt;:</h3> NetworkSolverStrategy&lt;EngineT&gt;:</h3>
<p>All GridFire solvers impliment the abstract strategy templated by <code>NetworkSolverStrategy</code> which enforces only that there is some <code>evaluate</code> method with the following signature</p> <p>All GridFire solvers implement the abstract strategy templated by <code>NetworkSolverStrategy</code> which enforces only that there is some <code>evaluate</code> method with the following signature</p>
<div class="fragment"><div class="line">NetOut evaluate(<span class="keyword">const</span> NetIn&amp; netIn);</div> <div class="fragment"><div class="line">NetOut evaluate(<span class="keyword">const</span> NetIn&amp; netIn);</div>
</div><!-- fragment --><p> Which is intended to integrate some network over some time and returns updated abundances, temperature, density, and diagnostics.</p> </div><!-- fragment --><p> Which is intended to integrate some network over some time and returns updated abundances, temperature, density, and diagnostics.</p>
<h3><a class="anchor" id="autotoc_md38"></a> <h3><a class="anchor" id="autotoc_md38"></a>
NetIn and NetOut</h3> NetIn and NetOut</h3>
<p>GridFire solvers use a unified input and output type for their public interface (though as developers will quickly learn, internally these are immediatly broken down into simpler data structures). All solvers expect a <code>NetIn</code> struct for the input type to the <code>evaluate</code> method and return a <code>NetOut</code> struct.</p> <p>GridFire solvers use a unified input and output type for their public interface (though as developers will quickly learn, internally these are immediately broken down into simpler data structures). All solvers expect a <code>NetIn</code> struct for the input type to the <code>evaluate</code> method and return a <code>NetOut</code> struct.</p>
<h4><a class="anchor" id="autotoc_md39"></a> <h4><a class="anchor" id="autotoc_md39"></a>
NetIn</h4> NetIn</h4>
<p>A <code>NetIn</code> struct contains</p><ul> <p>A <code>NetIn</code> struct contains</p><ul>
@@ -387,8 +387,8 @@ NetIn</h4>
<li>The initial timestep to use in seconds (<code>NetIn::dt0</code>)</li> <li>The initial timestep to use in seconds (<code>NetIn::dt0</code>)</li>
<li>The initial energy in the system in ergs (<code>NetIn::energy</code>)</li> <li>The initial energy in the system in ergs (<code>NetIn::energy</code>)</li>
</ul> </ul>
<p>&gt;<b>Note:</b> It is often useful to set <code>NetIn::dt0</code> to something <em>very</em> small and &gt;let an iterative timestepper push the timestep up. Often for main sequence &gt;burning I use ~1e-12 for dt0</p> <p>&gt;<b>Note:</b> It is often useful to set <code>NetIn::dt0</code> to something <em>very</em> small and &gt;let an iterative time stepper push the timestep up. Often for main sequence &gt;burning I use ~1e-12 for dt0</p>
<p>&gt;<b>Note:</b> The composition must be a <code>fourdst::composition::Composition</code> &gt;object. This is made avalible through the <code>foursdt</code> library and the &gt;<code>fourdst/composition/Composition.h</code> header. <code>fourdst</code> is installed &gt;automatically with GridFire</p> <p>&gt;<b>Note:</b> The composition must be a <code>fourdst::composition::Composition</code> &gt;object. This is made available through the <code>foursdt</code> library and the &gt;<code>fourdst/composition/Composition.h</code> header. <code>fourdst</code> is installed &gt;automatically with GridFire</p>
<p>&gt;<b>Note:</b> In Python composition comes from <code>fourdst.composition.Composition</code> &gt;and similarly is installed automatically when building GridFire python &gt;bindings.</p> <p>&gt;<b>Note:</b> In Python composition comes from <code>fourdst.composition.Composition</code> &gt;and similarly is installed automatically when building GridFire python &gt;bindings.</p>
<h4><a class="anchor" id="autotoc_md40"></a> <h4><a class="anchor" id="autotoc_md40"></a>
NetOut</h4> NetOut</h4>
@@ -403,9 +403,9 @@ DirectNetworkSolver (Implicit Rosenbrock Method)</h3>
<ul> <ul>
<li><b>Integrator:</b> Implicit Rosenbrock4 scheme (order 4) via <code>Boost.Odeint</code>s <code>rosenbrock4&lt;double&gt;</code>, optimized for stiff reaction networks with adaptive step size control using configurable absolute and relative tolerances.</li> <li><b>Integrator:</b> Implicit Rosenbrock4 scheme (order 4) via <code>Boost.Odeint</code>s <code>rosenbrock4&lt;double&gt;</code>, optimized for stiff reaction networks with adaptive step size control using configurable absolute and relative tolerances.</li>
<li><b>Jacobian Assembly:</b> Asks the base engine for the Jacobian Matrix</li> <li><b>Jacobian Assembly:</b> Asks the base engine for the Jacobian Matrix</li>
<li><b>RHS Evaluation:</b> Assk the base engine for RHS of the abundance evolution equations</li> <li><b>RHS Evaluation:</b> Asks the base engine for RHS of the abundance evolution equations</li>
<li><b>Linear Algebra:</b> Utilizes <code>Boost.uBLAS</code> for state vectors and dense Jacobian matrices, with sparse access patterns supported via coordinate lists of nonzero entries.</li> <li><b>Linear Algebra:</b> Utilizes <code>Boost.uBLAS</code> for state vectors and dense Jacobian matrices, with sparse access patterns supported via coordinate lists of nonzero entries.</li>
<li><b>Error Control and Logging:</b> Absolute and relative tolerance parameters (<code>absTol</code>, <code>relTol</code>) are read from configuration; Quill loggers, which run in a seperate non blocking thread, capture integration diagnostics and step statistics.</li> <li><b>Error Control and Logging:</b> Absolute and relative tolerance parameters (<code>absTol</code>, <code>relTol</code>) are read from configuration; Quill loggers, which run in a separate non blocking thread, capture integration diagnostics and step statistics.</li>
</ul> </ul>
<h3><a class="anchor" id="autotoc_md42"></a> <h3><a class="anchor" id="autotoc_md42"></a>
Algorithmic Workflow in DirectNetworkSolver</h3> Algorithmic Workflow in DirectNetworkSolver</h3>
@@ -422,9 +422,9 @@ Algorithmic Workflow in DirectNetworkSolver</h3>
<h3><a class="anchor" id="autotoc_md43"></a> <h3><a class="anchor" id="autotoc_md43"></a>
Future Solver Implementations</h3> Future Solver Implementations</h3>
<ul> <ul>
<li><b>Operator Splitting Solvers:</b> Strategies to decouple thermodynamics, screening, and reaction substeps for performance on stiff, multi-scale networks.</li> <li><b>Operator Splitting Solvers:</b> Strategies to decouple thermodynamics, screening, and reaction substeps for performance on stiff, multiscale networks.</li>
<li><b>GPU-Accelerated Solvers:</b> Planned use of CUDA/OpenCL backends for large-scale network integration.</li> <li><b>GPU-Accelerated Solvers:</b> Planned use of CUDA/OpenCL backends for large-scale network integration.</li>
<li><b>Callback observer support:</b> Currently we use an observer built into our <code>RHSManager</code> (<code>RHSManager::observe</code>); however, we intend to inlucde support for custom, user defined, observer method.</li> <li><b>Callback observer support:</b> Currently we use an observer built into our <code>RHSManager</code> (<code>RHSManager::observe</code>); however, we intend to include support for custom, user defined, observer method.</li>
</ul> </ul>
<p>These strategies can be developed by inheriting from <code>NetworkSolverStrategy</code> and registering against the same engine types without modifying existing engine code.</p> <p>These strategies can be developed by inheriting from <code>NetworkSolverStrategy</code> and registering against the same engine types without modifying existing engine code.</p>
<h2><a class="anchor" id="autotoc_md44"></a> <h2><a class="anchor" id="autotoc_md44"></a>
@@ -538,7 +538,7 @@ Workflow Components and Effects</h4>
<p>This layered approach enhances stability for stiff networks while maintaining accuracy and performance.</p> <p>This layered approach enhances stability for stiff networks while maintaining accuracy and performance.</p>
<h3><a class="anchor" id="autotoc_md52"></a> <h3><a class="anchor" id="autotoc_md52"></a>
Callback Example</h3> Callback Example</h3>
<p>Custom callback functions can be registered with any solver. Because it might make sense for each solver to provide different context to the callback function, you should use the struct <code><a class="el" href="namespacegridfire_1_1solver.html">gridfire::solver</a>::&lt;SolverName&gt;::TimestepContext</code> as the argument type for the callback function. This struct contains all of the information provided by that solver to the callback function.</p> <p>Custom callback functions can be registered with any solver. Because it might make sense for each solver to provide different context to the callback function, you should use the struct <code><a class="el" href="namespacegridfire_1_1solver.html">gridfire::solver</a>::&lt;SolverName&gt;::TimestepContext</code> as the argument type for the callback function. This struct contains all the information provided by that solver to the callback function.</p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="engine_8h.html">gridfire/engine/engine.h</a>&quot;</span> <span class="comment">// Unified header for real usage</span></div> <div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="engine_8h.html">gridfire/engine/engine.h</a>&quot;</span> <span class="comment">// Unified header for real usage</span></div>
<div class="line"><span class="preprocessor">#include &quot;<a class="code" href="solver_8h.html">gridfire/solver/solver.h</a>&quot;</span> <span class="comment">// Unified header for solvers</span></div> <div class="line"><span class="preprocessor">#include &quot;<a class="code" href="solver_8h.html">gridfire/solver/solver.h</a>&quot;</span> <span class="comment">// Unified header for solvers</span></div>
<div class="line"><span class="preprocessor">#include &quot;fourdst/composition/composition.h&quot;</span></div> <div class="line"><span class="preprocessor">#include &quot;fourdst/composition/composition.h&quot;</span></div>
@@ -600,14 +600,19 @@ Callback Example</h3>
<p>&gt;<b>Note:</b> The order of species in the boost state vector (<code>ctx.state</code>) is <b>not guaranteed</b> to be any particular order run over run. Therefore, in order to reliably extract </p><blockquote class="doxtable"> <p>&gt;<b>Note:</b> The order of species in the boost state vector (<code>ctx.state</code>) is <b>not guaranteed</b> to be any particular order run over run. Therefore, in order to reliably extract </p><blockquote class="doxtable">
<p>values from it, you <b>must</b> use the <code>getSpeciesIndex</code> method of the engine to get the index of the species you are interested in (these will always be in the same order). </p> <p>values from it, you <b>must</b> use the <code>getSpeciesIndex</code> method of the engine to get the index of the species you are interested in (these will always be in the same order). </p>
</blockquote> </blockquote>
<h2><a class="anchor" id="autotoc_md53"></a> <h4><a class="anchor" id="autotoc_md53"></a>
Callback Context</h4>
<p>Since each solver may provide different context to the callback function, and it may be frustrating to refer to the documentation every time, we also enforce that all solvers must implement a <code>descripe_callback_context</code> method which returns a vector of tuples&lt;string, string&gt; where the first element is the name of the field and the second is its datatype. It is on the developer to ensure that this information is accurate.</p>
<div class="fragment"><div class="line">...</div>
<div class="line">std::cout &lt;&lt; solver.describe_callback_context() &lt;&lt; std::endl;</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md54"></a>
Python</h2> Python</h2>
<p>The python bindings intentionally look <b>very</b> similar to the C++ code. Generally all examples can be adapted to python by replacing includes of paths with imports of modules such that</p> <p>The python bindings intentionally look <b>very</b> similar to the C++ code. Generally all examples can be adapted to python by replacing includes of paths with imports of modules such that</p>
<p><code>#include "gridfire/engine/GraphEngine.h"</code> becomes <code>import gridfire.engine.GraphEngine</code></p> <p><code>#include "gridfire/engine/GraphEngine.h"</code> becomes <code>import gridfire.engine.GraphEngine</code></p>
<p>All GridFire C++ types have been bound and can be passed around as one would expect.</p> <p>All GridFire C++ types have been bound and can be passed around as one would expect.</p>
<h3><a class="anchor" id="autotoc_md54"></a> <h3><a class="anchor" id="autotoc_md55"></a>
Common Workflow Examople</h3> Common Workflow Example</h3>
<p>This example impliments the same logic as the above C++ example </p><div class="fragment"><div class="line"><span class="keyword">from</span> gridfire.engine <span class="keyword">import</span> GraphEngine, MultiscalePartitioningEngineView, AdaptiveEngineView</div> <p>This example implements the same logic as the above C++ example </p><div class="fragment"><div class="line"><span class="keyword">from</span> gridfire.engine <span class="keyword">import</span> GraphEngine, MultiscalePartitioningEngineView, AdaptiveEngineView</div>
<div class="line"><span class="keyword">from</span> <a class="code hl_namespace" href="namespacegridfire_1_1solver.html">gridfire.solver</a> <span class="keyword">import</span> DirectNetworkSolver</div> <div class="line"><span class="keyword">from</span> <a class="code hl_namespace" href="namespacegridfire_1_1solver.html">gridfire.solver</a> <span class="keyword">import</span> DirectNetworkSolver</div>
<div class="line"><span class="keyword">from</span> gridfire.type <span class="keyword">import</span> NetIn</div> <div class="line"><span class="keyword">from</span> gridfire.type <span class="keyword">import</span> NetIn</div>
<div class="line"> </div> <div class="line"> </div>
@@ -644,7 +649,7 @@ Common Workflow Examople</h3>
<div class="line"> </div> <div class="line"> </div>
<div class="line">print(f<span class="stringliteral">&quot;Final H-1 mass fraction {results.composition.getMassFraction(&quot;</span>H-1<span class="stringliteral">&quot;)}&quot;</span>)</div> <div class="line">print(f<span class="stringliteral">&quot;Final H-1 mass fraction {results.composition.getMassFraction(&quot;</span>H-1<span class="stringliteral">&quot;)}&quot;</span>)</div>
<div class="ttc" id="anamespacegridfire_1_1solver_html"><div class="ttname"><a href="namespacegridfire_1_1solver.html">gridfire::solver</a></div><div class="ttdef"><b>Definition</b> solver.h:18</div></div> <div class="ttc" id="anamespacegridfire_1_1solver_html"><div class="ttname"><a href="namespacegridfire_1_1solver.html">gridfire::solver</a></div><div class="ttdef"><b>Definition</b> solver.h:18</div></div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md55"></a> </div><!-- fragment --><h3><a class="anchor" id="autotoc_md56"></a>
Python callbacks</h3> Python callbacks</h3>
<p>Just like in C++, python users can register callbacks to be called at the end of each successful timestep. Note that these may slow down code significantly as the interpreter needs to jump up into the slower python code therefore these should likely only be used for debugging purposes.</p> <p>Just like in C++, python users can register callbacks to be called at the end of each successful timestep. Note that these may slow down code significantly as the interpreter needs to jump up into the slower python code therefore these should likely only be used for debugging purposes.</p>
<p>The syntax for registration is very similar to C++ </p><div class="fragment"><div class="line"><span class="keyword">from</span> gridfire.engine <span class="keyword">import</span> GraphEngine, MultiscalePartitioningEngineView, AdaptiveEngineView</div> <p>The syntax for registration is very similar to C++ </p><div class="fragment"><div class="line"><span class="keyword">from</span> gridfire.engine <span class="keyword">import</span> GraphEngine, MultiscalePartitioningEngineView, AdaptiveEngineView</div>
@@ -694,7 +699,7 @@ Python callbacks</h3>
<div class="line"> </div> <div class="line"> </div>
<div class="line">print(f<span class="stringliteral">&quot;Final H-1 mass fraction {results.composition.getMassFraction(&quot;</span>H-1<span class="stringliteral">&quot;)}&quot;</span>)</div> <div class="line">print(f<span class="stringliteral">&quot;Final H-1 mass fraction {results.composition.getMassFraction(&quot;</span>H-1<span class="stringliteral">&quot;)}&quot;</span>)</div>
<div class="ttc" id="anamespacefourdst_1_1atomic_html"><div class="ttname"><a href="namespacefourdst_1_1atomic.html">atomic</a></div></div> <div class="ttc" id="anamespacefourdst_1_1atomic_html"><div class="ttname"><a href="namespacefourdst_1_1atomic.html">atomic</a></div></div>
</div><!-- fragment --><h1><a class="anchor" id="autotoc_md56"></a> </div><!-- fragment --><h1><a class="anchor" id="autotoc_md57"></a>
Related Projects</h1> Related Projects</h1>
<p>GridFire integrates with and builds upon several key 4D-STAR libraries:</p> <p>GridFire integrates with and builds upon several key 4D-STAR libraries:</p>
<ul> <ul>

View File

@@ -102,15 +102,15 @@ $(function(){initNavTree('md_docs_2static_2usage.html',''); initResizable(true);
<div class="headertitle"><div class="title">GridFire Python Usage Guide</div></div> <div class="headertitle"><div class="title">GridFire Python Usage Guide</div></div>
</div><!--header--> </div><!--header-->
<div class="contents"> <div class="contents">
<div class="textblock"><p><a class="anchor" id="autotoc_md57"></a></p> <div class="textblock"><p><a class="anchor" id="autotoc_md58"></a></p>
<p>This tutorial walks you through installing GridFires Python bindings, choosing engines and views thoughtfully, running a simulation, and visualizing your results.</p> <p>This tutorial walks you through installing GridFires Python bindings, choosing engines and views thoughtfully, running a simulation, and visualizing your results.</p>
<hr /> <hr />
<h1><a class="anchor" id="autotoc_md59"></a> <h1><a class="anchor" id="autotoc_md60"></a>
1. Installation</h1> 1. Installation</h1>
<h2><a class="anchor" id="autotoc_md60"></a> <h2><a class="anchor" id="autotoc_md61"></a>
1.1 PyPI Release</h2> 1.1 PyPI Release</h2>
<p>The quickest way to get started is: </p><div class="fragment"><div class="line">pip install gridfire</div> <p>The quickest way to get started is: </p><div class="fragment"><div class="line">pip install gridfire</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md61"></a> </div><!-- fragment --><h2><a class="anchor" id="autotoc_md62"></a>
1.2 Development from Source</h2> 1.2 Development from Source</h2>
<p>If you want the cutting-edge features or need to hack the C++ backend: </p><div class="fragment"><div class="line">git clone https://github.com/4DSTAR/GridFire.git</div> <p>If you want the cutting-edge features or need to hack the C++ backend: </p><div class="fragment"><div class="line">git clone https://github.com/4DSTAR/GridFire.git</div>
<div class="line">cd GridFire</div> <div class="line">cd GridFire</div>
@@ -122,7 +122,7 @@ $(function(){initNavTree('md_docs_2static_2usage.html',''); initResizable(true);
</div><!-- fragment --><p>You can also build manually with Meson (generally end users will not need to do this): </p><div class="fragment"><div class="line">meson setup build-python</div> </div><!-- fragment --><p>You can also build manually with Meson (generally end users will not need to do this): </p><div class="fragment"><div class="line">meson setup build-python</div>
<div class="line">meson compile -C build_gridfire</div> <div class="line">meson compile -C build_gridfire</div>
</div><!-- fragment --><hr /> </div><!-- fragment --><hr />
<h1><a class="anchor" id="autotoc_md63"></a> <h1><a class="anchor" id="autotoc_md64"></a>
2. Why These Engines and Views?</h1> 2. Why These Engines and Views?</h1>
<p>GridFires design balances physical fidelity and performance. Heres why we pick each component:</p> <p>GridFires design balances physical fidelity and performance. Heres why we pick each component:</p>
<ol type="1"> <ol type="1">
@@ -162,7 +162,7 @@ $(function(){initNavTree('md_docs_2static_2usage.html',''); initResizable(true);
</ol> </ol>
<p>By composing these views in sequence, you can tailor accuracy vs performance for your scientific question. Commonly one might use a flow like <b>GraphEngine → Partitioning → Adaptive</b> to capture both full-network physics and manageable stiffness.</p> <p>By composing these views in sequence, you can tailor accuracy vs performance for your scientific question. Commonly one might use a flow like <b>GraphEngine → Partitioning → Adaptive</b> to capture both full-network physics and manageable stiffness.</p>
<hr /> <hr />
<h1><a class="anchor" id="autotoc_md65"></a> <h1><a class="anchor" id="autotoc_md66"></a>
3. Step-by-Step Example</h1> 3. Step-by-Step Example</h1>
<p>Adapted from <a href="../../tests/python/test.py"><code>tests/python/test.py</code></a>. Comments explain each choice.</p> <p>Adapted from <a href="../../tests/python/test.py"><code>tests/python/test.py</code></a>. Comments explain each choice.</p>
<div class="fragment"><div class="line"><span class="keyword">import</span> matplotlib.pyplot <span class="keyword">as</span> plt</div> <div class="fragment"><div class="line"><span class="keyword">import</span> matplotlib.pyplot <span class="keyword">as</span> plt</div>
@@ -217,7 +217,7 @@ $(function(){initNavTree('md_docs_2static_2usage.html',''); initResizable(true);
<li><b>Implicit solver</b>: Rosenbrock4 handles stiff systems robustly, letting you push to longer <code>tMax</code>.</li> <li><b>Implicit solver</b>: Rosenbrock4 handles stiff systems robustly, letting you push to longer <code>tMax</code>.</li>
</ul> </ul>
<hr /> <hr />
<h1><a class="anchor" id="autotoc_md67"></a> <h1><a class="anchor" id="autotoc_md68"></a>
4. Visualizing Reaction Networks</h1> 4. Visualizing Reaction Networks</h1>
<p>GridFire engines and views provide built-in export methods for Graphviz DOT and CSV formats:</p> <p>GridFire engines and views provide built-in export methods for Graphviz DOT and CSV formats:</p>
<div class="fragment"><div class="line"><span class="comment"># Export the base network to DOT for Graphviz</span></div> <div class="fragment"><div class="line"><span class="comment"># Export the base network to DOT for Graphviz</span></div>
@@ -244,7 +244,7 @@ $(function(){initNavTree('md_docs_2static_2usage.html',''); initResizable(true);
<div class="line">df.to_csv(<span class="stringliteral">&#39;H1_evolution.csv&#39;</span>, index=<span class="keyword">False</span>)</div> <div class="line">df.to_csv(<span class="stringliteral">&#39;H1_evolution.csv&#39;</span>, index=<span class="keyword">False</span>)</div>
</div><!-- fragment --><p> Then plot in pandas or Excel for custom figures.</p> </div><!-- fragment --><p> Then plot in pandas or Excel for custom figures.</p>
<hr /> <hr />
<h1><a class="anchor" id="autotoc_md69"></a> <h1><a class="anchor" id="autotoc_md70"></a>
5. Beyond the Basics</h1> 5. Beyond the Basics</h1>
<ul> <ul>
<li><b>Custom Partition Functions</b>: In Python, subclass <code><a class="el" href="classgridfire_1_1partition_1_1_partition_function.html" title="Abstract interface for evaluating nuclear partition functions.">gridfire.partition.PartitionFunction</a></code>, override <code>evaluate</code>, <code>supports</code>, and <code>clone</code> to implement new weighting schemes. <br /> <li><b>Custom Partition Functions</b>: In Python, subclass <code><a class="el" href="classgridfire_1_1partition_1_1_partition_function.html" title="Abstract interface for evaluating nuclear partition functions.">gridfire.partition.PartitionFunction</a></code>, override <code>evaluate</code>, <code>supports</code>, and <code>clone</code> to implement new weighting schemes. <br />

View File

@@ -37,7 +37,7 @@ var NAVTREE =
] ], ] ],
[ "Automatic Build and Installation", "index.html#autotoc_md8", [ [ "Automatic Build and Installation", "index.html#autotoc_md8", [
[ "Script Build and Installation Instructions", "index.html#autotoc_md9", null ], [ "Script Build and Installation Instructions", "index.html#autotoc_md9", null ],
[ "Currently known good platforms", "index.html#autotoc_md10", null ] [ "Currently, known good platforms", "index.html#autotoc_md10", null ]
] ], ] ],
[ "Manual Build Instructions", "index.html#autotoc_md11", [ [ "Manual Build Instructions", "index.html#autotoc_md11", [
[ "Prerequisites", "index.html#autotoc_md12", [ [ "Prerequisites", "index.html#autotoc_md12", [
@@ -91,23 +91,25 @@ var NAVTREE =
[ "Common Workflow Example", "index.html#autotoc_md50", [ [ "Common Workflow Example", "index.html#autotoc_md50", [
[ "Workflow Components and Effects", "index.html#autotoc_md51", null ] [ "Workflow Components and Effects", "index.html#autotoc_md51", null ]
] ], ] ],
[ "Callback Example", "index.html#autotoc_md52", null ] [ "Callback Example", "index.html#autotoc_md52", [
[ "Callback Context", "index.html#autotoc_md53", null ]
] ]
] ], ] ],
[ "Python", "index.html#autotoc_md53", [ [ "Python", "index.html#autotoc_md54", [
[ "Common Workflow Examople", "index.html#autotoc_md54", null ], [ "Common Workflow Example", "index.html#autotoc_md55", null ],
[ "Python callbacks", "index.html#autotoc_md55", null ] [ "Python callbacks", "index.html#autotoc_md56", null ]
] ] ] ]
] ], ] ],
[ "Related Projects", "index.html#autotoc_md56", null ], [ "Related Projects", "index.html#autotoc_md57", null ],
[ "GridFire Python Usage Guide", "md_docs_2static_2usage.html", [ [ "GridFire Python Usage Guide", "md_docs_2static_2usage.html", [
[ "Installation", "md_docs_2static_2usage.html#autotoc_md59", [ [ "Installation", "md_docs_2static_2usage.html#autotoc_md60", [
[ "1.1 PyPI Release", "md_docs_2static_2usage.html#autotoc_md60", null ], [ "1.1 PyPI Release", "md_docs_2static_2usage.html#autotoc_md61", null ],
[ "1.2 Development from Source", "md_docs_2static_2usage.html#autotoc_md61", null ] [ "1.2 Development from Source", "md_docs_2static_2usage.html#autotoc_md62", null ]
] ], ] ],
[ "Why These Engines and Views?", "md_docs_2static_2usage.html#autotoc_md63", null ], [ "Why These Engines and Views?", "md_docs_2static_2usage.html#autotoc_md64", null ],
[ "Step-by-Step Example", "md_docs_2static_2usage.html#autotoc_md65", null ], [ "Step-by-Step Example", "md_docs_2static_2usage.html#autotoc_md66", null ],
[ "Visualizing Reaction Networks", "md_docs_2static_2usage.html#autotoc_md67", null ], [ "Visualizing Reaction Networks", "md_docs_2static_2usage.html#autotoc_md68", null ],
[ "Beyond the Basics", "md_docs_2static_2usage.html#autotoc_md69", null ] [ "Beyond the Basics", "md_docs_2static_2usage.html#autotoc_md70", null ]
] ], ] ],
[ "Namespaces", "namespaces.html", [ [ "Namespaces", "namespaces.html", [
[ "Namespace List", "namespaces.html", "namespaces_dup" ], [ "Namespace List", "namespaces.html", "namespaces_dup" ],
@@ -156,7 +158,7 @@ var NAVTREEINDEX =
"classgridfire_1_1io_1_1_m_e_s_a_network_file_parser.html#ab9c683289d48e58edf06bf59215b4937", "classgridfire_1_1io_1_1_m_e_s_a_network_file_parser.html#ab9c683289d48e58edf06bf59215b4937",
"classgridfire_1_1reaction_1_1_templated_reaction_set.html#a5962968fe478c79250e9d88d80a87600", "classgridfire_1_1reaction_1_1_templated_reaction_set.html#a5962968fe478c79250e9d88d80a87600",
"functions_vars_f.html", "functions_vars_f.html",
"rauscher__thielemann__partition__data_8h.html#a7b9a54e9c58848fe3205479acd770ffd", "rauscher__thielemann__partition__data_8h.html#a5240736f3bdb43cf2cd63464c5835df1",
"structgridfire_1_1approx8_1_1_approx8_net.html#a95b9a07e29285884e6de523f8132f653" "structgridfire_1_1approx8_1_1_approx8_net.html#a95b9a07e29285884e6de523f8132f653"
]; ];

View File

@@ -75,10 +75,11 @@ var NAVTREEINDEX5 =
"index.html#autotoc_md50":[2,0,3], "index.html#autotoc_md50":[2,0,3],
"index.html#autotoc_md51":[2,0,3,0], "index.html#autotoc_md51":[2,0,3,0],
"index.html#autotoc_md52":[2,0,4], "index.html#autotoc_md52":[2,0,4],
"index.html#autotoc_md53":[2,1], "index.html#autotoc_md53":[2,0,4,0],
"index.html#autotoc_md54":[2,1,0], "index.html#autotoc_md54":[2,1],
"index.html#autotoc_md55":[2,1,1], "index.html#autotoc_md55":[2,1,0],
"index.html#autotoc_md56":[3], "index.html#autotoc_md56":[2,1,1],
"index.html#autotoc_md57":[3],
"index.html#autotoc_md6":[1,0,1], "index.html#autotoc_md6":[1,0,1],
"index.html#autotoc_md7":[1,0,2], "index.html#autotoc_md7":[1,0,2],
"index.html#autotoc_md8":[1,1], "index.html#autotoc_md8":[1,1],
@@ -91,13 +92,13 @@ var NAVTREEINDEX5 =
"logging_8cpp.html":[8,0,1,1,6,0], "logging_8cpp.html":[8,0,1,1,6,0],
"logging_8h.html":[8,0,1,0,0,8,0], "logging_8h.html":[8,0,1,0,0,8,0],
"md_docs_2static_2usage.html":[4], "md_docs_2static_2usage.html":[4],
"md_docs_2static_2usage.html#autotoc_md59":[4,0], "md_docs_2static_2usage.html#autotoc_md60":[4,0],
"md_docs_2static_2usage.html#autotoc_md60":[4,0,0], "md_docs_2static_2usage.html#autotoc_md61":[4,0,0],
"md_docs_2static_2usage.html#autotoc_md61":[4,0,1], "md_docs_2static_2usage.html#autotoc_md62":[4,0,1],
"md_docs_2static_2usage.html#autotoc_md63":[4,1], "md_docs_2static_2usage.html#autotoc_md64":[4,1],
"md_docs_2static_2usage.html#autotoc_md65":[4,2], "md_docs_2static_2usage.html#autotoc_md66":[4,2],
"md_docs_2static_2usage.html#autotoc_md67":[4,3], "md_docs_2static_2usage.html#autotoc_md68":[4,3],
"md_docs_2static_2usage.html#autotoc_md69":[4,4], "md_docs_2static_2usage.html#autotoc_md70":[4,4],
"namespacegridfire.html":[5,0,0], "namespacegridfire.html":[5,0,0],
"namespacegridfire.html#a0210bd2e07538932135a56b62b8ddb57":[5,0,0,34], "namespacegridfire.html#a0210bd2e07538932135a56b62b8ddb57":[5,0,0,34],
"namespacegridfire.html#a0210bd2e07538932135a56b62b8ddb57a100e3bf0197221c19b222badf42aa964":[5,0,0,34,4], "namespacegridfire.html#a0210bd2e07538932135a56b62b8ddb57a100e3bf0197221c19b222badf42aa964":[5,0,0,34,4],
@@ -248,6 +249,5 @@ var NAVTREEINDEX5 =
"py__screening_8h.html":[8,0,1,2,6,0,1], "py__screening_8h.html":[8,0,1,2,6,0,1],
"py__solver_8cpp.html":[8,0,1,2,7,0,0], "py__solver_8cpp.html":[8,0,1,2,7,0,0],
"py__solver_8h.html":[8,0,1,2,7,0,1], "py__solver_8h.html":[8,0,1,2,7,0,1],
"rauscher__thielemann__partition__data_8h.html":[8,0,1,0,0,4,6], "rauscher__thielemann__partition__data_8h.html":[8,0,1,0,0,4,6]
"rauscher__thielemann__partition__data_8h.html#a5240736f3bdb43cf2cd63464c5835df1":[8,0,1,0,0,4,6,1]
}; };

View File

@@ -1,5 +1,6 @@
var NAVTREEINDEX6 = var NAVTREEINDEX6 =
{ {
"rauscher__thielemann__partition__data_8h.html#a5240736f3bdb43cf2cd63464c5835df1":[8,0,1,0,0,4,6,1],
"rauscher__thielemann__partition__data_8h.html#a7b9a54e9c58848fe3205479acd770ffd":[8,0,1,0,0,4,6,0], "rauscher__thielemann__partition__data_8h.html#a7b9a54e9c58848fe3205479acd770ffd":[8,0,1,0,0,4,6,0],
"rauscher__thielemann__partition__data__record_8h.html":[8,0,1,0,0,4,7], "rauscher__thielemann__partition__data__record_8h.html":[8,0,1,0,0,4,7],
"reaclib_8cpp.html":[8,0,1,1,3,0], "reaclib_8cpp.html":[8,0,1,1,3,0],
@@ -248,6 +249,5 @@ var NAVTREEINDEX6 =
"structgridfire_1_1approx8_1_1_approx8_net.html#a82977ad3df7f620e80a6235b3fe64731":[5,0,0,0,0,6], "structgridfire_1_1approx8_1_1_approx8_net.html#a82977ad3df7f620e80a6235b3fe64731":[5,0,0,0,0,6],
"structgridfire_1_1approx8_1_1_approx8_net.html#a82977ad3df7f620e80a6235b3fe64731":[7,0,0,0,0,6], "structgridfire_1_1approx8_1_1_approx8_net.html#a82977ad3df7f620e80a6235b3fe64731":[7,0,0,0,0,6],
"structgridfire_1_1approx8_1_1_approx8_net.html#a928b7810cb2993d59d40aa73c2faef18":[5,0,0,0,0,12], "structgridfire_1_1approx8_1_1_approx8_net.html#a928b7810cb2993d59d40aa73c2faef18":[5,0,0,0,0,12],
"structgridfire_1_1approx8_1_1_approx8_net.html#a928b7810cb2993d59d40aa73c2faef18":[7,0,0,0,0,12], "structgridfire_1_1approx8_1_1_approx8_net.html#a928b7810cb2993d59d40aa73c2faef18":[7,0,0,0,0,12]
"structgridfire_1_1approx8_1_1_approx8_net.html#a95b9a07e29285884e6de523f8132f653":[5,0,0,0,0,1]
}; };

View File

@@ -1,5 +1,6 @@
var NAVTREEINDEX7 = var NAVTREEINDEX7 =
{ {
"structgridfire_1_1approx8_1_1_approx8_net.html#a95b9a07e29285884e6de523f8132f653":[5,0,0,0,0,1],
"structgridfire_1_1approx8_1_1_approx8_net.html#a95b9a07e29285884e6de523f8132f653":[7,0,0,0,0,1], "structgridfire_1_1approx8_1_1_approx8_net.html#a95b9a07e29285884e6de523f8132f653":[7,0,0,0,0,1],
"structgridfire_1_1approx8_1_1_approx8_net.html#a9647205f52fb0fa21316be39c3a6d709":[5,0,0,0,0,7], "structgridfire_1_1approx8_1_1_approx8_net.html#a9647205f52fb0fa21316be39c3a6d709":[5,0,0,0,0,7],
"structgridfire_1_1approx8_1_1_approx8_net.html#a9647205f52fb0fa21316be39c3a6d709":[7,0,0,0,0,7], "structgridfire_1_1approx8_1_1_approx8_net.html#a9647205f52fb0fa21316be39c3a6d709":[7,0,0,0,0,7],

View File

@@ -1,7 +1,7 @@
var searchData= var searchData=
[ [
['1_201_20pypi_20release_0',['1.1 PyPI Release',['../md_docs_2static_2usage.html#autotoc_md60',1,'']]], ['1_201_20pypi_20release_0',['1.1 PyPI Release',['../md_docs_2static_2usage.html#autotoc_md61',1,'']]],
['1_202_20development_20from_20source_1',['1.2 Development from Source',['../md_docs_2static_2usage.html#autotoc_md61',1,'']]], ['1_202_20development_20from_20source_1',['1.2 Development from Source',['../md_docs_2static_2usage.html#autotoc_md62',1,'']]],
['1_20installation_2',['1. Installation',['../md_docs_2static_2usage.html#autotoc_md59',1,'']]], ['1_20installation_2',['1. Installation',['../md_docs_2static_2usage.html#autotoc_md60',1,'']]],
['1_20pypi_20release_3',['1.1 PyPI Release',['../md_docs_2static_2usage.html#autotoc_md60',1,'']]] ['1_20pypi_20release_3',['1.1 PyPI Release',['../md_docs_2static_2usage.html#autotoc_md61',1,'']]]
]; ];

View File

@@ -1,5 +1,5 @@
var searchData= var searchData=
[ [
['2_20development_20from_20source_0',['1.2 Development from Source',['../md_docs_2static_2usage.html#autotoc_md61',1,'']]], ['2_20development_20from_20source_0',['1.2 Development from Source',['../md_docs_2static_2usage.html#autotoc_md62',1,'']]],
['2_20why_20these_20engines_20and_20views_1',['2. Why These Engines and Views?',['../md_docs_2static_2usage.html#autotoc_md63',1,'']]] ['2_20why_20these_20engines_20and_20views_1',['2. Why These Engines and Views?',['../md_docs_2static_2usage.html#autotoc_md64',1,'']]]
]; ];

View File

@@ -1,5 +1,5 @@
var searchData= var searchData=
[ [
['kb_0',['kB',['../structgridfire_1_1_graph_engine_1_1constants.html#a29c8ae2b5c1d5fecd25c4fde2b623f7f',1,'gridfire::GraphEngine::constants']]], ['kb_0',['kB',['../structgridfire_1_1_graph_engine_1_1constants.html#a29c8ae2b5c1d5fecd25c4fde2b623f7f',1,'gridfire::GraphEngine::constants']]],
['known_20good_20platforms_1',['Currently known good platforms',['../index.html#autotoc_md10',1,'']]] ['known_20good_20platforms_1',['Currently, known good platforms',['../index.html#autotoc_md10',1,'']]]
]; ];

View File

@@ -22,7 +22,7 @@ var searchData=
['networkprimingengineview_19',['NetworkPrimingEngineView',['../classgridfire_1_1_network_priming_engine_view.html',1,'gridfire::NetworkPrimingEngineView'],['../classgridfire_1_1_network_priming_engine_view.html#ad13ec8d4974421c72cffd88558d71177',1,'gridfire::NetworkPrimingEngineView::NetworkPrimingEngineView(const std::string &amp;primingSymbol, DynamicEngine &amp;baseEngine)'],['../classgridfire_1_1_network_priming_engine_view.html#a96751b66dd11f1155d0c488f39f9f6a6',1,'gridfire::NetworkPrimingEngineView::NetworkPrimingEngineView(const fourdst::atomic::Species &amp;primingSpecies, DynamicEngine &amp;baseEngine)']]], ['networkprimingengineview_19',['NetworkPrimingEngineView',['../classgridfire_1_1_network_priming_engine_view.html',1,'gridfire::NetworkPrimingEngineView'],['../classgridfire_1_1_network_priming_engine_view.html#ad13ec8d4974421c72cffd88558d71177',1,'gridfire::NetworkPrimingEngineView::NetworkPrimingEngineView(const std::string &amp;primingSymbol, DynamicEngine &amp;baseEngine)'],['../classgridfire_1_1_network_priming_engine_view.html#a96751b66dd11f1155d0c488f39f9f6a6',1,'gridfire::NetworkPrimingEngineView::NetworkPrimingEngineView(const fourdst::atomic::Species &amp;primingSpecies, DynamicEngine &amp;baseEngine)']]],
['networkprimingengineview_20example_20',['NetworkPrimingEngineView Example',['../engine_8h.html#NetworkPrimingEngineViewExample',1,'']]], ['networkprimingengineview_20example_20',['NetworkPrimingEngineView Example',['../engine_8h.html#NetworkPrimingEngineViewExample',1,'']]],
['networkresizederror_21',['NetworkResizedError',['../classgridfire_1_1exceptions_1_1_network_resized_error.html',1,'gridfire::exceptions::NetworkResizedError'],['../classgridfire_1_1exceptions_1_1_network_resized_error.html#a80c0adb088e8083309591d24051b056b',1,'gridfire::exceptions::NetworkResizedError::NetworkResizedError()']]], ['networkresizederror_21',['NetworkResizedError',['../classgridfire_1_1exceptions_1_1_network_resized_error.html',1,'gridfire::exceptions::NetworkResizedError'],['../classgridfire_1_1exceptions_1_1_network_resized_error.html#a80c0adb088e8083309591d24051b056b',1,'gridfire::exceptions::NetworkResizedError::NetworkResizedError()']]],
['networks_22',['4. Visualizing Reaction Networks',['../md_docs_2static_2usage.html#autotoc_md67',1,'']]], ['networks_22',['4. Visualizing Reaction Networks',['../md_docs_2static_2usage.html#autotoc_md68',1,'']]],
['networksolverstrategy_23',['NetworkSolverStrategy',['../classgridfire_1_1solver_1_1_network_solver_strategy.html',1,'gridfire::solver::NetworkSolverStrategy&lt; EngineT &gt;'],['../classgridfire_1_1solver_1_1_network_solver_strategy.html#a01cbbec0eb5c3a60f50da38cdaf66505',1,'gridfire::solver::NetworkSolverStrategy::NetworkSolverStrategy()']]], ['networksolverstrategy_23',['NetworkSolverStrategy',['../classgridfire_1_1solver_1_1_network_solver_strategy.html',1,'gridfire::solver::NetworkSolverStrategy&lt; EngineT &gt;'],['../classgridfire_1_1solver_1_1_network_solver_strategy.html#a01cbbec0eb5c3a60f50da38cdaf66505',1,'gridfire::solver::NetworkSolverStrategy::NetworkSolverStrategy()']]],
['networksolverstrategy_20lt_20enginet_20gt_20_3a_24',['NetworkSolverStrategy&amp;lt;EngineT&amp;gt;:',['../index.html#autotoc_md37',1,'']]], ['networksolverstrategy_20lt_20enginet_20gt_20_3a_24',['NetworkSolverStrategy&amp;lt;EngineT&amp;gt;:',['../index.html#autotoc_md37',1,'']]],
['networksolverstrategy_3c_20dynamicengine_20_3e_25',['NetworkSolverStrategy&lt; DynamicEngine &gt;',['../classgridfire_1_1solver_1_1_network_solver_strategy.html',1,'gridfire::solver']]], ['networksolverstrategy_3c_20dynamicengine_20_3e_25',['NetworkSolverStrategy&lt; DynamicEngine &gt;',['../classgridfire_1_1solver_1_1_network_solver_strategy.html',1,'gridfire::solver']]],

View File

@@ -20,7 +20,7 @@ var searchData=
['pename_17',['peName',['../classgridfire_1_1reaction_1_1_reaction.html#a78f42664cc957e266b6cf15fda09be97',1,'gridfire::reaction::Reaction::peName()'],['../classgridfire_1_1_reaction.html#a78f42664cc957e266b6cf15fda09be97',1,'gridfire::Reaction::peName()']]], ['pename_17',['peName',['../classgridfire_1_1reaction_1_1_reaction.html#a78f42664cc957e266b6cf15fda09be97',1,'gridfire::reaction::Reaction::peName()'],['../classgridfire_1_1_reaction.html#a78f42664cc957e266b6cf15fda09be97',1,'gridfire::Reaction::peName()']]],
['philosophy_20and_20workflow_18',['Design Philosophy and Workflow',['../index.html#autotoc_md1',1,'']]], ['philosophy_20and_20workflow_18',['Design Philosophy and Workflow',['../index.html#autotoc_md1',1,'']]],
['platforms_19',['Dependency Installation on Common Platforms',['../index.html#autotoc_md22',1,'']]], ['platforms_19',['Dependency Installation on Common Platforms',['../index.html#autotoc_md22',1,'']]],
['platforms_20',['Currently known good platforms',['../index.html#autotoc_md10',1,'']]], ['platforms_20',['Currently, known good platforms',['../index.html#autotoc_md10',1,'']]],
['populatereactionidmap_21',['populateReactionIDMap',['../classgridfire_1_1_graph_engine.html#a26602e1b3c610780a47b5a6511d6d567',1,'gridfire::GraphEngine']]], ['populatereactionidmap_21',['populateReactionIDMap',['../classgridfire_1_1_graph_engine.html#a26602e1b3c610780a47b5a6511d6d567',1,'gridfire::GraphEngine']]],
['populatespeciestoindexmap_22',['populateSpeciesToIndexMap',['../classgridfire_1_1_graph_engine.html#a47202c43342b96480070874bffce1391',1,'gridfire::GraphEngine']]], ['populatespeciestoindexmap_22',['populateSpeciesToIndexMap',['../classgridfire_1_1_graph_engine.html#a47202c43342b96480070874bffce1391',1,'gridfire::GraphEngine']]],
['pp_5frate_23',['pp_rate',['../namespacegridfire_1_1approx8.html#a16739298c01e56967ce784a9a957439f',1,'gridfire::approx8']]], ['pp_5frate_23',['pp_rate',['../namespacegridfire_1_1approx8.html#a16739298c01e56967ce784a9a957439f',1,'gridfire::approx8']]],
@@ -39,7 +39,7 @@ var searchData=
['product_5fspecies_36',['product_species',['../classgridfire_1_1reaction_1_1_reaction.html#a01c67726efbaa2ff8e4d6f2c965f485c',1,'gridfire::reaction::Reaction::product_species()'],['../classgridfire_1_1_reaction.html#a01c67726efbaa2ff8e4d6f2c965f485c',1,'gridfire::Reaction::product_species()']]], ['product_5fspecies_36',['product_species',['../classgridfire_1_1reaction_1_1_reaction.html#a01c67726efbaa2ff8e4d6f2c965f485c',1,'gridfire::reaction::Reaction::product_species()'],['../classgridfire_1_1_reaction.html#a01c67726efbaa2ff8e4d6f2c965f485c',1,'gridfire::Reaction::product_species()']]],
['products_37',['products',['../classgridfire_1_1reaction_1_1_reaction.html#a6e2ff61b9e8409f2a561663628b8ce02',1,'gridfire::reaction::Reaction::products()'],['../classgridfire_1_1_reaction.html#a6e2ff61b9e8409f2a561663628b8ce02',1,'gridfire::Reaction::products()']]], ['products_37',['products',['../classgridfire_1_1reaction_1_1_reaction.html#a6e2ff61b9e8409f2a561663628b8ce02',1,'gridfire::reaction::Reaction::products()'],['../classgridfire_1_1_reaction.html#a6e2ff61b9e8409f2a561663628b8ce02',1,'gridfire::Reaction::products()']]],
['products_5fstr_38',['products_str',['../structgridfire_1_1reaclib_1_1_reaction_record.html#af1b1d3b0308d965ef0697b247fcf9082',1,'gridfire::reaclib::ReactionRecord']]], ['products_5fstr_38',['products_str',['../structgridfire_1_1reaclib_1_1_reaction_record.html#af1b1d3b0308d965ef0697b247fcf9082',1,'gridfire::reaclib::ReactionRecord']]],
['projects_39',['Related Projects',['../index.html#autotoc_md56',1,'']]], ['projects_39',['Related Projects',['../index.html#autotoc_md57',1,'']]],
['py_5fengine_2ecpp_40',['py_engine.cpp',['../py__engine_8cpp.html',1,'']]], ['py_5fengine_2ecpp_40',['py_engine.cpp',['../py__engine_8cpp.html',1,'']]],
['py_5fengine_2eh_41',['py_engine.h',['../py__engine_8h.html',1,'']]], ['py_5fengine_2eh_41',['py_engine.h',['../py__engine_8h.html',1,'']]],
['py_5fio_2ecpp_42',['py_io.cpp',['../py__io_8cpp.html',1,'']]], ['py_5fio_2ecpp_42',['py_io.cpp',['../py__io_8cpp.html',1,'']]],
@@ -59,10 +59,10 @@ var searchData=
['pynetworkfileparser_56',['PyNetworkFileParser',['../class_py_network_file_parser.html',1,'']]], ['pynetworkfileparser_56',['PyNetworkFileParser',['../class_py_network_file_parser.html',1,'']]],
['pypartitionfunction_57',['PyPartitionFunction',['../class_py_partition_function.html',1,'']]], ['pypartitionfunction_57',['PyPartitionFunction',['../class_py_partition_function.html',1,'']]],
['pypi_58',['pypi',['../index.html#autotoc_md5',1,'']]], ['pypi_58',['pypi',['../index.html#autotoc_md5',1,'']]],
['pypi_20release_59',['1.1 PyPI Release',['../md_docs_2static_2usage.html#autotoc_md60',1,'']]], ['pypi_20release_59',['1.1 PyPI Release',['../md_docs_2static_2usage.html#autotoc_md61',1,'']]],
['pyscreening_60',['PyScreening',['../class_py_screening.html',1,'']]], ['pyscreening_60',['PyScreening',['../class_py_screening.html',1,'']]],
['python_61',['Python',['../index.html#autotoc_md53',1,'']]], ['python_61',['Python',['../index.html#autotoc_md54',1,'']]],
['python_20callbacks_62',['Python callbacks',['../index.html#autotoc_md55',1,'']]], ['python_20callbacks_62',['Python callbacks',['../index.html#autotoc_md56',1,'']]],
['python_20extensibility_63',['Python Extensibility',['../index.html#autotoc_md44',1,'']]], ['python_20extensibility_63',['Python Extensibility',['../index.html#autotoc_md44',1,'']]],
['python_20installation_64',['Python installation',['../index.html#autotoc_md4',1,'']]], ['python_20installation_64',['Python installation',['../index.html#autotoc_md4',1,'']]],
['python_20usage_20guide_65',['GridFire Python Usage Guide',['../md_docs_2static_2usage.html',1,'']]] ['python_20usage_20guide_65',['GridFire Python Usage Guide',['../md_docs_2static_2usage.html',1,'']]]

View File

@@ -21,7 +21,7 @@ var searchData=
['reactants_18',['reactants',['../classgridfire_1_1reaction_1_1_reaction.html#a0b543e9b0bb4a21efe4b29780d9bdf5b',1,'gridfire::reaction::Reaction::reactants()'],['../classgridfire_1_1_reaction.html#a0b543e9b0bb4a21efe4b29780d9bdf5b',1,'gridfire::Reaction::reactants()']]], ['reactants_18',['reactants',['../classgridfire_1_1reaction_1_1_reaction.html#a0b543e9b0bb4a21efe4b29780d9bdf5b',1,'gridfire::reaction::Reaction::reactants()'],['../classgridfire_1_1_reaction.html#a0b543e9b0bb4a21efe4b29780d9bdf5b',1,'gridfire::Reaction::reactants()']]],
['reactants_5fstr_19',['reactants_str',['../structgridfire_1_1reaclib_1_1_reaction_record.html#a67afc513db8dbcc43d79733e22ca8d39',1,'gridfire::reaclib::ReactionRecord']]], ['reactants_5fstr_19',['reactants_str',['../structgridfire_1_1reaclib_1_1_reaction_record.html#a67afc513db8dbcc43d79733e22ca8d39',1,'gridfire::reaclib::ReactionRecord']]],
['reaction_20',['Reaction',['../classgridfire_1_1_reaction.html',1,'gridfire::Reaction'],['../classgridfire_1_1reaction_1_1_reaction.html',1,'gridfire::reaction::Reaction'],['../classgridfire_1_1reaction_1_1_reaction.html#a7dff19d387e771d96c26e98d75ee9d5c',1,'gridfire::reaction::Reaction::Reaction()'],['../classgridfire_1_1_reaction.html#a7dff19d387e771d96c26e98d75ee9d5c',1,'gridfire::Reaction::Reaction()']]], ['reaction_20',['Reaction',['../classgridfire_1_1_reaction.html',1,'gridfire::Reaction'],['../classgridfire_1_1reaction_1_1_reaction.html',1,'gridfire::reaction::Reaction'],['../classgridfire_1_1reaction_1_1_reaction.html#a7dff19d387e771d96c26e98d75ee9d5c',1,'gridfire::reaction::Reaction::Reaction()'],['../classgridfire_1_1_reaction.html#a7dff19d387e771d96c26e98d75ee9d5c',1,'gridfire::Reaction::Reaction()']]],
['reaction_20networks_21',['4. Visualizing Reaction Networks',['../md_docs_2static_2usage.html#autotoc_md67',1,'']]], ['reaction_20networks_21',['4. Visualizing Reaction Networks',['../md_docs_2static_2usage.html#autotoc_md68',1,'']]],
['reaction_2ecpp_22',['reaction.cpp',['../reaction_8cpp.html',1,'']]], ['reaction_2ecpp_22',['reaction.cpp',['../reaction_8cpp.html',1,'']]],
['reaction_2eh_23',['reaction.h',['../reaction_8h.html',1,'']]], ['reaction_2eh_23',['reaction.h',['../reaction_8h.html',1,'']]],
['reaction_5findex_24',['reaction_index',['../structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#a93635f6940d3534e949f402503c3d497',1,'gridfire::GraphEngine::PrecomputedReaction']]], ['reaction_5findex_24',['reaction_index',['../structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#a93635f6940d3534e949f402503c3d497',1,'gridfire::GraphEngine::PrecomputedReaction']]],
@@ -49,8 +49,8 @@ var searchData=
['register_5fsolver_5fbindings_46',['register_solver_bindings',['../solver_2bindings_8cpp.html#a722d28831d82cd075081fcf4b403479d',1,'register_solver_bindings(const py::module &amp;m):&#160;bindings.cpp'],['../solver_2bindings_8h.html#a7ff40d9e08fcb5028e914045447d46d3',1,'register_solver_bindings(const pybind11::module &amp;m):&#160;bindings.h']]], ['register_5fsolver_5fbindings_46',['register_solver_bindings',['../solver_2bindings_8cpp.html#a722d28831d82cd075081fcf4b403479d',1,'register_solver_bindings(const py::module &amp;m):&#160;bindings.cpp'],['../solver_2bindings_8h.html#a7ff40d9e08fcb5028e914045447d46d3',1,'register_solver_bindings(const pybind11::module &amp;m):&#160;bindings.h']]],
['register_5ftype_5fbindings_47',['register_type_bindings',['../types_2bindings_8cpp.html#a37d2e0b6a2605d063eec5e2a64e9bcc5',1,'register_type_bindings(pybind11::module &amp;m):&#160;bindings.cpp'],['../types_2bindings_8h.html#a37d2e0b6a2605d063eec5e2a64e9bcc5',1,'register_type_bindings(pybind11::module &amp;m):&#160;bindings.cpp']]], ['register_5ftype_5fbindings_47',['register_type_bindings',['../types_2bindings_8cpp.html#a37d2e0b6a2605d063eec5e2a64e9bcc5',1,'register_type_bindings(pybind11::module &amp;m):&#160;bindings.cpp'],['../types_2bindings_8h.html#a37d2e0b6a2605d063eec5e2a64e9bcc5',1,'register_type_bindings(pybind11::module &amp;m):&#160;bindings.cpp']]],
['register_5futils_5fbindings_48',['register_utils_bindings',['../utils_2bindings_8cpp.html#a7af842f50ca4a721518e716d0229697c',1,'register_utils_bindings(py::module &amp;m):&#160;bindings.cpp'],['../utils_2bindings_8h.html#a9eefca377142320755a869fafc6311c7',1,'register_utils_bindings(pybind11::module &amp;m):&#160;bindings.h']]], ['register_5futils_5fbindings_48',['register_utils_bindings',['../utils_2bindings_8cpp.html#a7af842f50ca4a721518e716d0229697c',1,'register_utils_bindings(py::module &amp;m):&#160;bindings.cpp'],['../utils_2bindings_8h.html#a9eefca377142320755a869fafc6311c7',1,'register_utils_bindings(pybind11::module &amp;m):&#160;bindings.h']]],
['related_20projects_49',['Related Projects',['../index.html#autotoc_md56',1,'']]], ['related_20projects_49',['Related Projects',['../index.html#autotoc_md57',1,'']]],
['release_50',['1.1 PyPI Release',['../md_docs_2static_2usage.html#autotoc_md60',1,'']]], ['release_50',['1.1 PyPI Release',['../md_docs_2static_2usage.html#autotoc_md61',1,'']]],
['remove_5freaction_51',['remove_reaction',['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#a89c4c5af12aef7fbfc24316c88237e22',1,'gridfire::reaction::TemplatedReactionSet']]], ['remove_5freaction_51',['remove_reaction',['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#a89c4c5af12aef7fbfc24316c88237e22',1,'gridfire::reaction::TemplatedReactionSet']]],
['reporting_2eh_52',['reporting.h',['../reporting_8h.html',1,'']]], ['reporting_2eh_52',['reporting.h',['../reporting_8h.html',1,'']]],
['reproducibility_53',['Reproducibility',['../index.html#autotoc_md17',1,'']]], ['reproducibility_53',['Reproducibility',['../index.html#autotoc_md17',1,'']]],

View File

@@ -38,7 +38,7 @@ var searchData=
['solver_2ecpp_35',['solver.cpp',['../solver_8cpp.html',1,'']]], ['solver_2ecpp_35',['solver.cpp',['../solver_8cpp.html',1,'']]],
['solver_2eh_36',['solver.h',['../solver_8h.html',1,'']]], ['solver_2eh_36',['solver.h',['../solver_8h.html',1,'']]],
['solvercontextbase_37',['SolverContextBase',['../structgridfire_1_1solver_1_1_solver_context_base.html',1,'gridfire::solver']]], ['solvercontextbase_37',['SolverContextBase',['../structgridfire_1_1solver_1_1_solver_context_base.html',1,'gridfire::solver']]],
['source_38',['1.2 Development from Source',['../md_docs_2static_2usage.html#autotoc_md61',1,'']]], ['source_38',['1.2 Development from Source',['../md_docs_2static_2usage.html#autotoc_md62',1,'']]],
['source_39',['source',['../index.html#autotoc_md6',1,'']]], ['source_39',['source',['../index.html#autotoc_md6',1,'']]],
['source_20for_20developers_40',['source for developers',['../index.html#autotoc_md7',1,'']]], ['source_20for_20developers_40',['source for developers',['../index.html#autotoc_md7',1,'']]],
['sourcelabel_41',['sourceLabel',['../classgridfire_1_1reaction_1_1_reaction.html#a410e2ab0784ad751f82bbe55be603db0',1,'gridfire::reaction::Reaction::sourceLabel()'],['../classgridfire_1_1_reaction.html#a410e2ab0784ad751f82bbe55be603db0',1,'gridfire::Reaction::sourceLabel()']]], ['sourcelabel_41',['sourceLabel',['../classgridfire_1_1reaction_1_1_reaction.html#a410e2ab0784ad751f82bbe55be603db0',1,'gridfire::reaction::Reaction::sourceLabel()'],['../classgridfire_1_1_reaction.html#a410e2ab0784ad751f82bbe55be603db0',1,'gridfire::Reaction::sourceLabel()']]],
@@ -53,8 +53,8 @@ var searchData=
['state_50',['state',['../structgridfire_1_1exceptions_1_1_stale_engine_trigger_1_1state.html',1,'gridfire::exceptions::StaleEngineTrigger::state'],['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_timestep_context.html#adab4b53a94b935f89f799bd5a67847a2',1,'gridfire::solver::DirectNetworkSolver::TimestepContext::state']]], ['state_50',['state',['../structgridfire_1_1exceptions_1_1_stale_engine_trigger_1_1state.html',1,'gridfire::exceptions::StaleEngineTrigger::state'],['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_timestep_context.html#adab4b53a94b935f89f799bd5a67847a2',1,'gridfire::solver::DirectNetworkSolver::TimestepContext::state']]],
['status_51',['status',['../structgridfire_1_1_priming_report.html#a5fec4b465afb4f2d9bc30cd1cab1b50d',1,'gridfire::PrimingReport']]], ['status_51',['status',['../structgridfire_1_1_priming_report.html#a5fec4b465afb4f2d9bc30cd1cab1b50d',1,'gridfire::PrimingReport']]],
['std_52',['std',['../namespacestd.html',1,'']]], ['std_52',['std',['../namespacestd.html',1,'']]],
['step_20by_20step_20example_53',['3. Step-by-Step Example',['../md_docs_2static_2usage.html#autotoc_md65',1,'']]], ['step_20by_20step_20example_53',['3. Step-by-Step Example',['../md_docs_2static_2usage.html#autotoc_md66',1,'']]],
['step_20example_54',['3. Step-by-Step Example',['../md_docs_2static_2usage.html#autotoc_md65',1,'']]], ['step_20example_54',['3. Step-by-Step Example',['../md_docs_2static_2usage.html#autotoc_md66',1,'']]],
['stepderivatives_55',['StepDerivatives',['../structgridfire_1_1_step_derivatives.html',1,'gridfire']]], ['stepderivatives_55',['StepDerivatives',['../structgridfire_1_1_step_derivatives.html',1,'gridfire']]],
['stoichiometric_5fcoefficients_56',['stoichiometric_coefficients',['../structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#a7a7e9167b19e339e0d69544b9c00e79c',1,'gridfire::GraphEngine::PrecomputedReaction']]], ['stoichiometric_5fcoefficients_56',['stoichiometric_coefficients',['../structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#a7a7e9167b19e339e0d69544b9c00e79c',1,'gridfire::GraphEngine::PrecomputedReaction']]],
['stoichiometry_57',['stoichiometry',['../classgridfire_1_1reaction_1_1_reaction.html#aaf0c94db6536b4a9ac1ec08a5c8f01ac',1,'gridfire::reaction::Reaction::stoichiometry(const fourdst::atomic::Species &amp;species) const'],['../classgridfire_1_1reaction_1_1_reaction.html#ad359c06d7196c1a7a955a7b66a51dbe3',1,'gridfire::reaction::Reaction::stoichiometry() const'],['../classgridfire_1_1_reaction.html#aaf0c94db6536b4a9ac1ec08a5c8f01ac',1,'gridfire::Reaction::stoichiometry(const fourdst::atomic::Species &amp;species) const'],['../classgridfire_1_1_reaction.html#ad359c06d7196c1a7a955a7b66a51dbe3',1,'gridfire::Reaction::stoichiometry() const']]], ['stoichiometry_57',['stoichiometry',['../classgridfire_1_1reaction_1_1_reaction.html#aaf0c94db6536b4a9ac1ec08a5c8f01ac',1,'gridfire::reaction::Reaction::stoichiometry(const fourdst::atomic::Species &amp;species) const'],['../classgridfire_1_1reaction_1_1_reaction.html#ad359c06d7196c1a7a955a7b66a51dbe3',1,'gridfire::reaction::Reaction::stoichiometry() const'],['../classgridfire_1_1_reaction.html#aaf0c94db6536b4a9ac1ec08a5c8f01ac',1,'gridfire::Reaction::stoichiometry(const fourdst::atomic::Species &amp;species) const'],['../classgridfire_1_1_reaction.html#ad359c06d7196c1a7a955a7b66a51dbe3',1,'gridfire::Reaction::stoichiometry() const']]],

View File

@@ -9,10 +9,10 @@ var searchData=
['templatedreactionset_6',['TemplatedReactionSet',['../classgridfire_1_1reaction_1_1_templated_reaction_set.html',1,'gridfire::reaction::TemplatedReactionSet&lt; ReactionT &gt;'],['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#a54c8cd7c34564277fe28eefc623f666e',1,'gridfire::reaction::TemplatedReactionSet::TemplatedReactionSet(std::vector&lt; ReactionT &gt; reactions)'],['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#a9def4c9a3a7a03625b7c467fe7440428',1,'gridfire::reaction::TemplatedReactionSet::TemplatedReactionSet()'],['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#ada1d1880be53b81a9ed7b966fd6ade5a',1,'gridfire::reaction::TemplatedReactionSet::TemplatedReactionSet(const TemplatedReactionSet&lt; ReactionT &gt; &amp;other)']]], ['templatedreactionset_6',['TemplatedReactionSet',['../classgridfire_1_1reaction_1_1_templated_reaction_set.html',1,'gridfire::reaction::TemplatedReactionSet&lt; ReactionT &gt;'],['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#a54c8cd7c34564277fe28eefc623f666e',1,'gridfire::reaction::TemplatedReactionSet::TemplatedReactionSet(std::vector&lt; ReactionT &gt; reactions)'],['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#a9def4c9a3a7a03625b7c467fe7440428',1,'gridfire::reaction::TemplatedReactionSet::TemplatedReactionSet()'],['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#ada1d1880be53b81a9ed7b966fd6ade5a',1,'gridfire::reaction::TemplatedReactionSet::TemplatedReactionSet(const TemplatedReactionSet&lt; ReactionT &gt; &amp;other)']]],
['templatedreactionset_3c_20logicalreaction_20_3e_7',['TemplatedReactionSet&lt; LogicalReaction &gt;',['../classgridfire_1_1reaction_1_1_templated_reaction_set.html',1,'gridfire::reaction']]], ['templatedreactionset_3c_20logicalreaction_20_3e_7',['TemplatedReactionSet&lt; LogicalReaction &gt;',['../classgridfire_1_1reaction_1_1_templated_reaction_set.html',1,'gridfire::reaction']]],
['templatedreactionset_3c_20reaction_20_3e_8',['TemplatedReactionSet&lt; Reaction &gt;',['../classgridfire_1_1reaction_1_1_templated_reaction_set.html',1,'gridfire::reaction']]], ['templatedreactionset_3c_20reaction_20_3e_8',['TemplatedReactionSet&lt; Reaction &gt;',['../classgridfire_1_1reaction_1_1_templated_reaction_set.html',1,'gridfire::reaction']]],
['the_20basics_9',['5. Beyond the Basics',['../md_docs_2static_2usage.html#autotoc_md69',1,'']]], ['the_20basics_9',['5. Beyond the Basics',['../md_docs_2static_2usage.html#autotoc_md70',1,'']]],
['the_20c_20library_10',['Building the C++ Library',['../index.html#autotoc_md23',1,'']]], ['the_20c_20library_10',['Building the C++ Library',['../index.html#autotoc_md23',1,'']]],
['the_20library_11',['Installing the Library',['../index.html#autotoc_md25',1,'']]], ['the_20library_11',['Installing the Library',['../index.html#autotoc_md25',1,'']]],
['these_20engines_20and_20views_12',['2. Why These Engines and Views?',['../md_docs_2static_2usage.html#autotoc_md63',1,'']]], ['these_20engines_20and_20views_12',['2. Why These Engines and Views?',['../md_docs_2static_2usage.html#autotoc_md64',1,'']]],
['thirdorder_13',['ThirdOrder',['../namespacegridfire.html#a0210bd2e07538932135a56b62b8ddb57a3fc719e07f9f63e7f11a3d4fb74b476f',1,'gridfire']]], ['thirdorder_13',['ThirdOrder',['../namespacegridfire.html#a0210bd2e07538932135a56b62b8ddb57a3fc719e07f9f63e7f11a3d4fb74b476f',1,'gridfire']]],
['timestepcallback_14',['TimestepCallback',['../classgridfire_1_1solver_1_1_direct_network_solver.html#a171bd0c8c292da79ed41f6653fdd47df',1,'gridfire::solver::DirectNetworkSolver']]], ['timestepcallback_14',['TimestepCallback',['../classgridfire_1_1solver_1_1_direct_network_solver.html#a171bd0c8c292da79ed41f6653fdd47df',1,'gridfire::solver::DirectNetworkSolver']]],
['timestepcontext_15',['TimestepContext',['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_timestep_context.html',1,'gridfire::solver::DirectNetworkSolver::TimestepContext'],['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_timestep_context.html#aea1385260976dff133404db5b453ba98',1,'gridfire::solver::DirectNetworkSolver::TimestepContext::TimestepContext()']]], ['timestepcontext_15',['TimestepContext',['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_timestep_context.html',1,'gridfire::solver::DirectNetworkSolver::TimestepContext'],['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_timestep_context.html#aea1385260976dff133404db5b453ba98',1,'gridfire::solver::DirectNetworkSolver::TimestepContext::TimestepContext()']]],

View File

@@ -10,7 +10,7 @@ var searchData=
['vector_5ftype_7',['vector_type',['../namespacegridfire_1_1approx8.html#aa04f907d4ef6a1b6b2a9a28d4bb53882',1,'gridfire::approx8']]], ['vector_5ftype_7',['vector_type',['../namespacegridfire_1_1approx8.html#aa04f907d4ef6a1b6b2a9a28d4bb53882',1,'gridfire::approx8']]],
['versions_8',['Minimum compiler versions',['../index.html#autotoc_md26',1,'']]], ['versions_8',['Minimum compiler versions',['../index.html#autotoc_md26',1,'']]],
['view_9',['Adaptive Network View',['../index.html#autotoc_md48',1,'']]], ['view_9',['Adaptive Network View',['../index.html#autotoc_md48',1,'']]],
['views_10',['Views',['../md_docs_2static_2usage.html#autotoc_md63',1,'2. Why These Engines and Views?'],['../engine_8h.html#AvailableViews',1,'Available Views'],['../index.html#autotoc_md34',1,'Engine Views']]], ['views_10',['Views',['../md_docs_2static_2usage.html#autotoc_md64',1,'2. Why These Engines and Views?'],['../engine_8h.html#AvailableViews',1,'Available Views'],['../index.html#autotoc_md34',1,'Engine Views']]],
['visualizing_20reaction_20networks_11',['4. Visualizing Reaction Networks',['../md_docs_2static_2usage.html#autotoc_md67',1,'']]], ['visualizing_20reaction_20networks_11',['4. Visualizing Reaction Networks',['../md_docs_2static_2usage.html#autotoc_md68',1,'']]],
['vs_20gcc_12',['Clang vs. GCC',['../index.html#autotoc_md24',1,'']]] ['vs_20gcc_12',['Clang vs. GCC',['../index.html#autotoc_md24',1,'']]]
]; ];

View File

@@ -3,10 +3,9 @@ var searchData=
['weak_0',['WEAK',['../namespacegridfire_1_1screening.html#aa82aafbc4f8c28d0a75b60798e3a7d25a32c7d8943bec86a6d7d5e03598670ca8',1,'gridfire::screening']]], ['weak_0',['WEAK',['../namespacegridfire_1_1screening.html#aa82aafbc4f8c28d0a75b60798e3a7d25a32c7d8943bec86a6d7d5e03598670ca8',1,'gridfire::screening']]],
['weakscreeningmodel_1',['WeakScreeningModel',['../classgridfire_1_1screening_1_1_weak_screening_model.html',1,'gridfire::screening']]], ['weakscreeningmodel_1',['WeakScreeningModel',['../classgridfire_1_1screening_1_1_weak_screening_model.html',1,'gridfire::screening']]],
['what_2',['what',['../classgridfire_1_1exceptions_1_1_stale_engine_trigger.html#aac4899d001338688def2b809b55bb2ba',1,'gridfire::exceptions::StaleEngineTrigger::what()'],['../classgridfire_1_1exceptions_1_1_stale_engine_error.html#a15c1b625e8e58a457e7bc5dbb464eff4',1,'gridfire::exceptions::StaleEngineError::what()'],['../classgridfire_1_1exceptions_1_1_failed_to_partition_engine_error.html#afe87ef508f5b20ca99ec70510747caff',1,'gridfire::exceptions::FailedToPartitionEngineError::what()'],['../classgridfire_1_1exceptions_1_1_network_resized_error.html#a80f09d037fff3c55a9b937b37d101cc1',1,'gridfire::exceptions::NetworkResizedError::what()'],['../classgridfire_1_1exceptions_1_1_unable_to_set_network_reactions_error.html#a1619c3c96b1d89ce387705bbc1f36c69',1,'gridfire::exceptions::UnableToSetNetworkReactionsError::what()']]], ['what_2',['what',['../classgridfire_1_1exceptions_1_1_stale_engine_trigger.html#aac4899d001338688def2b809b55bb2ba',1,'gridfire::exceptions::StaleEngineTrigger::what()'],['../classgridfire_1_1exceptions_1_1_stale_engine_error.html#a15c1b625e8e58a457e7bc5dbb464eff4',1,'gridfire::exceptions::StaleEngineError::what()'],['../classgridfire_1_1exceptions_1_1_failed_to_partition_engine_error.html#afe87ef508f5b20ca99ec70510747caff',1,'gridfire::exceptions::FailedToPartitionEngineError::what()'],['../classgridfire_1_1exceptions_1_1_network_resized_error.html#a80f09d037fff3c55a9b937b37d101cc1',1,'gridfire::exceptions::NetworkResizedError::what()'],['../classgridfire_1_1exceptions_1_1_unable_to_set_network_reactions_error.html#a1619c3c96b1d89ce387705bbc1f36c69',1,'gridfire::exceptions::UnableToSetNetworkReactionsError::what()']]],
['why_20these_20engines_20and_20views_3',['2. Why These Engines and Views?',['../md_docs_2static_2usage.html#autotoc_md63',1,'']]], ['why_20these_20engines_20and_20views_3',['2. Why These Engines and Views?',['../md_docs_2static_2usage.html#autotoc_md64',1,'']]],
['workflow_4',['Design Philosophy and Workflow',['../index.html#autotoc_md1',1,'']]], ['workflow_4',['Design Philosophy and Workflow',['../index.html#autotoc_md1',1,'']]],
['workflow_20components_20and_20effects_5',['Workflow Components and Effects',['../index.html#autotoc_md51',1,'']]], ['workflow_20components_20and_20effects_5',['Workflow Components and Effects',['../index.html#autotoc_md51',1,'']]],
['workflow_20examople_6',['Common Workflow Examople',['../index.html#autotoc_md54',1,'']]], ['workflow_20example_6',['Workflow Example',['../index.html#autotoc_md50',1,'Common Workflow Example'],['../index.html#autotoc_md55',1,'Common Workflow Example']]],
['workflow_20example_7',['Common Workflow Example',['../index.html#autotoc_md50',1,'']]], ['workflow_20in_20directnetworksolver_7',['Algorithmic Workflow in DirectNetworkSolver',['../index.html#autotoc_md42',1,'']]]
['workflow_20in_20directnetworksolver_8',['Algorithmic Workflow in DirectNetworkSolver',['../index.html#autotoc_md42',1,'']]]
]; ];

View File

@@ -1,4 +1,4 @@
var searchData= var searchData=
[ [
['3_20step_20by_20step_20example_0',['3. Step-by-Step Example',['../md_docs_2static_2usage.html#autotoc_md65',1,'']]] ['3_20step_20by_20step_20example_0',['3. Step-by-Step Example',['../md_docs_2static_2usage.html#autotoc_md66',1,'']]]
]; ];

View File

@@ -1,4 +1,4 @@
var searchData= var searchData=
[ [
['4_20visualizing_20reaction_20networks_0',['4. Visualizing Reaction Networks',['../md_docs_2static_2usage.html#autotoc_md67',1,'']]] ['4_20visualizing_20reaction_20networks_0',['4. Visualizing Reaction Networks',['../md_docs_2static_2usage.html#autotoc_md68',1,'']]]
]; ];

View File

@@ -1,4 +1,4 @@
var searchData= var searchData=
[ [
['5_20beyond_20the_20basics_0',['5. Beyond the Basics',['../md_docs_2static_2usage.html#autotoc_md69',1,'']]] ['5_20beyond_20the_20basics_0',['5. Beyond the Basics',['../md_docs_2static_2usage.html#autotoc_md70',1,'']]]
]; ];

View File

@@ -32,7 +32,7 @@ var searchData=
['and_20meson_20setup_29',['TUI config loading and meson setup',['../index.html#autotoc_md20',1,'']]], ['and_20meson_20setup_29',['TUI config loading and meson setup',['../index.html#autotoc_md20',1,'']]],
['and_20netout_30',['NetIn and NetOut',['../index.html#autotoc_md38',1,'']]], ['and_20netout_30',['NetIn and NetOut',['../index.html#autotoc_md38',1,'']]],
['and_20saving_31',['TUI config and saving',['../index.html#autotoc_md19',1,'']]], ['and_20saving_31',['TUI config and saving',['../index.html#autotoc_md19',1,'']]],
['and_20views_32',['2. Why These Engines and Views?',['../md_docs_2static_2usage.html#autotoc_md63',1,'']]], ['and_20views_32',['2. Why These Engines and Views?',['../md_docs_2static_2usage.html#autotoc_md64',1,'']]],
['and_20workflow_33',['Design Philosophy and Workflow',['../index.html#autotoc_md1',1,'']]], ['and_20workflow_33',['Design Philosophy and Workflow',['../index.html#autotoc_md1',1,'']]],
['approx8_34',['APPROX8',['../namespacegridfire.html#a3f3d6b3f9742b70e62049ccefbb60f37a1fc7adf719c40457abfdb8334675faea',1,'gridfire']]], ['approx8_34',['APPROX8',['../namespacegridfire.html#a3f3d6b3f9742b70e62049ccefbb60f37a1fc7adf719c40457abfdb8334675faea',1,'gridfire']]],
['approx8net_35',['Approx8Net',['../structgridfire_1_1approx8_1_1_approx8_net.html',1,'gridfire::approx8']]], ['approx8net_35',['Approx8Net',['../structgridfire_1_1approx8_1_1_approx8_net.html',1,'gridfire::approx8']]],

View File

@@ -6,9 +6,9 @@ var searchData=
['base_5fnetwork_5ftoo_5fshallow_3',['BASE_NETWORK_TOO_SHALLOW',['../namespacegridfire.html#a8bea3d74f35d640e693fa398e9b3e154ab837953f2841baabbae6bb5f2e43e71e',1,'gridfire']]], ['base_5fnetwork_5ftoo_5fshallow_3',['BASE_NETWORK_TOO_SHALLOW',['../namespacegridfire.html#a8bea3d74f35d640e693fa398e9b3e154ab837953f2841baabbae6bb5f2e43e71e',1,'gridfire']]],
['basepartitiontype_4',['BasePartitionType',['../namespacegridfire_1_1partition.html#ae931a76ba5efada4ca45ac93333e728c',1,'gridfire::partition']]], ['basepartitiontype_4',['BasePartitionType',['../namespacegridfire_1_1partition.html#ae931a76ba5efada4ca45ac93333e728c',1,'gridfire::partition']]],
['basepartitiontypetostring_5',['basePartitionTypeToString',['../namespacegridfire_1_1partition.html#a97237521bc760f7521346f8db472dc8e',1,'gridfire::partition']]], ['basepartitiontypetostring_5',['basePartitionTypeToString',['../namespacegridfire_1_1partition.html#a97237521bc760f7521346f8db472dc8e',1,'gridfire::partition']]],
['basics_6',['5. Beyond the Basics',['../md_docs_2static_2usage.html#autotoc_md69',1,'']]], ['basics_6',['5. Beyond the Basics',['../md_docs_2static_2usage.html#autotoc_md70',1,'']]],
['begin_7',['begin',['../classgridfire_1_1reaction_1_1_logical_reaction.html#a4ae3806e5e1a802b86a6de292d043476',1,'gridfire::reaction::LogicalReaction::begin()'],['../classgridfire_1_1reaction_1_1_logical_reaction.html#a5d410de1053f8028faed1f0d0a6083f5',1,'gridfire::reaction::LogicalReaction::begin() const'],['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#a87257704009fcd57b553f86cdaacb597',1,'gridfire::reaction::TemplatedReactionSet::begin()'],['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#aee42bb25973dadc6629bdb5cb1db6369',1,'gridfire::reaction::TemplatedReactionSet::begin() const']]], ['begin_7',['begin',['../classgridfire_1_1reaction_1_1_logical_reaction.html#a4ae3806e5e1a802b86a6de292d043476',1,'gridfire::reaction::LogicalReaction::begin()'],['../classgridfire_1_1reaction_1_1_logical_reaction.html#a5d410de1053f8028faed1f0d0a6083f5',1,'gridfire::reaction::LogicalReaction::begin() const'],['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#a87257704009fcd57b553f86cdaacb597',1,'gridfire::reaction::TemplatedReactionSet::begin()'],['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#aee42bb25973dadc6629bdb5cb1db6369',1,'gridfire::reaction::TemplatedReactionSet::begin() const']]],
['beyond_20the_20basics_8',['5. Beyond the Basics',['../md_docs_2static_2usage.html#autotoc_md69',1,'']]], ['beyond_20the_20basics_8',['5. Beyond the Basics',['../md_docs_2static_2usage.html#autotoc_md70',1,'']]],
['bin_9',['bin',['../structgridfire_1_1_q_s_e_cache_key.html#ac7e043ac0254936602c37a7e6a1391b3',1,'gridfire::QSECacheKey']]], ['bin_9',['bin',['../structgridfire_1_1_q_s_e_cache_key.html#ac7e043ac0254936602c37a7e6a1391b3',1,'gridfire::QSECacheKey']]],
['bindings_2ecpp_10',['bindings.cpp',['../bindings_8cpp.html',1,'(Global Namespace)'],['../engine_2bindings_8cpp.html',1,'(Global Namespace)'],['../exceptions_2bindings_8cpp.html',1,'(Global Namespace)'],['../expectations_2bindings_8cpp.html',1,'(Global Namespace)'],['../io_2bindings_8cpp.html',1,'(Global Namespace)'],['../partition_2bindings_8cpp.html',1,'(Global Namespace)'],['../reaction_2bindings_8cpp.html',1,'(Global Namespace)'],['../screening_2bindings_8cpp.html',1,'(Global Namespace)'],['../solver_2bindings_8cpp.html',1,'(Global Namespace)'],['../types_2bindings_8cpp.html',1,'(Global Namespace)'],['../utils_2bindings_8cpp.html',1,'(Global Namespace)']]], ['bindings_2ecpp_10',['bindings.cpp',['../bindings_8cpp.html',1,'(Global Namespace)'],['../engine_2bindings_8cpp.html',1,'(Global Namespace)'],['../exceptions_2bindings_8cpp.html',1,'(Global Namespace)'],['../expectations_2bindings_8cpp.html',1,'(Global Namespace)'],['../io_2bindings_8cpp.html',1,'(Global Namespace)'],['../partition_2bindings_8cpp.html',1,'(Global Namespace)'],['../reaction_2bindings_8cpp.html',1,'(Global Namespace)'],['../screening_2bindings_8cpp.html',1,'(Global Namespace)'],['../solver_2bindings_8cpp.html',1,'(Global Namespace)'],['../types_2bindings_8cpp.html',1,'(Global Namespace)'],['../utils_2bindings_8cpp.html',1,'(Global Namespace)']]],
['bindings_2eh_11',['bindings.h',['../engine_2bindings_8h.html',1,'(Global Namespace)'],['../exceptions_2bindings_8h.html',1,'(Global Namespace)'],['../expectations_2bindings_8h.html',1,'(Global Namespace)'],['../io_2bindings_8h.html',1,'(Global Namespace)'],['../partition_2bindings_8h.html',1,'(Global Namespace)'],['../reaction_2bindings_8h.html',1,'(Global Namespace)'],['../screening_2bindings_8h.html',1,'(Global Namespace)'],['../solver_2bindings_8h.html',1,'(Global Namespace)'],['../types_2bindings_8h.html',1,'(Global Namespace)'],['../utils_2bindings_8h.html',1,'(Global Namespace)']]], ['bindings_2eh_11',['bindings.h',['../engine_2bindings_8h.html',1,'(Global Namespace)'],['../exceptions_2bindings_8h.html',1,'(Global Namespace)'],['../expectations_2bindings_8h.html',1,'(Global Namespace)'],['../io_2bindings_8h.html',1,'(Global Namespace)'],['../partition_2bindings_8h.html',1,'(Global Namespace)'],['../reaction_2bindings_8h.html',1,'(Global Namespace)'],['../screening_2bindings_8h.html',1,'(Global Namespace)'],['../solver_2bindings_8h.html',1,'(Global Namespace)'],['../types_2bindings_8h.html',1,'(Global Namespace)'],['../utils_2bindings_8h.html',1,'(Global Namespace)']]],
@@ -23,5 +23,5 @@ var searchData=
['builddepthtype_20',['BuildDepthType',['../namespacegridfire.html#a3b1f70dc7ff5b501809330a97079e4f6',1,'gridfire']]], ['builddepthtype_20',['BuildDepthType',['../namespacegridfire.html#a3b1f70dc7ff5b501809330a97079e4f6',1,'gridfire']]],
['building_20the_20c_20library_21',['Building the C++ Library',['../index.html#autotoc_md23',1,'']]], ['building_20the_20c_20library_21',['Building the C++ Library',['../index.html#autotoc_md23',1,'']]],
['building_2eh_22',['building.h',['../building_8h.html',1,'']]], ['building_2eh_22',['building.h',['../building_8h.html',1,'']]],
['by_20step_20example_23',['3. Step-by-Step Example',['../md_docs_2static_2usage.html#autotoc_md65',1,'']]] ['by_20step_20example_23',['3. Step-by-Step Example',['../md_docs_2static_2usage.html#autotoc_md66',1,'']]]
]; ];

View File

@@ -27,21 +27,21 @@ var searchData=
['calculaterhsandenergy_24',['CalculateRHSAndEnergy',['../structgridfire_1_1_multiscale_partitioning_engine_view_1_1_cache_stats.html#ac558e59f790508a5e8522c412be5b505aafefea58639f78d7c750970bbad28420',1,'gridfire::MultiscalePartitioningEngineView::CacheStats']]], ['calculaterhsandenergy_24',['CalculateRHSAndEnergy',['../structgridfire_1_1_multiscale_partitioning_engine_view_1_1_cache_stats.html#ac558e59f790508a5e8522c412be5b505aafefea58639f78d7c750970bbad28420',1,'gridfire::MultiscalePartitioningEngineView::CacheStats']]],
['calculaterhsandenergy_25',['calculateRHSAndEnergy',['../classgridfire_1_1_engine.html#a89f714d19b84a93a004a7afbb487a6cb',1,'gridfire::Engine::calculateRHSAndEnergy()'],['../classgridfire_1_1_graph_engine.html#aaed3743a52246b0f7bf03995e1c12081',1,'gridfire::GraphEngine::calculateRHSAndEnergy()'],['../classgridfire_1_1_adaptive_engine_view.html#af703ad17ea65ffff4b75bf8ccc00e5d5',1,'gridfire::AdaptiveEngineView::calculateRHSAndEnergy()'],['../classgridfire_1_1_defined_engine_view.html#a4b0d71367cb1d4c06bcd01251bbeb60d',1,'gridfire::DefinedEngineView::calculateRHSAndEnergy()'],['../classgridfire_1_1_multiscale_partitioning_engine_view.html#a716d7357e944e8394d8b8e0b5e7625eb',1,'gridfire::MultiscalePartitioningEngineView::calculateRHSAndEnergy()'],['../class_py_engine.html#a2f92602ecf210414b46838fc0a9ae26d',1,'PyEngine::calculateRHSAndEnergy()'],['../class_py_dynamic_engine.html#a5b7f0cfe327c634ec125303256de8b9a',1,'PyDynamicEngine::calculateRHSAndEnergy()']]], ['calculaterhsandenergy_25',['calculateRHSAndEnergy',['../classgridfire_1_1_engine.html#a89f714d19b84a93a004a7afbb487a6cb',1,'gridfire::Engine::calculateRHSAndEnergy()'],['../classgridfire_1_1_graph_engine.html#aaed3743a52246b0f7bf03995e1c12081',1,'gridfire::GraphEngine::calculateRHSAndEnergy()'],['../classgridfire_1_1_adaptive_engine_view.html#af703ad17ea65ffff4b75bf8ccc00e5d5',1,'gridfire::AdaptiveEngineView::calculateRHSAndEnergy()'],['../classgridfire_1_1_defined_engine_view.html#a4b0d71367cb1d4c06bcd01251bbeb60d',1,'gridfire::DefinedEngineView::calculateRHSAndEnergy()'],['../classgridfire_1_1_multiscale_partitioning_engine_view.html#a716d7357e944e8394d8b8e0b5e7625eb',1,'gridfire::MultiscalePartitioningEngineView::calculateRHSAndEnergy()'],['../class_py_engine.html#a2f92602ecf210414b46838fc0a9ae26d',1,'PyEngine::calculateRHSAndEnergy()'],['../class_py_dynamic_engine.html#a5b7f0cfe327c634ec125303256de8b9a',1,'PyDynamicEngine::calculateRHSAndEnergy()']]],
['calculatescreeningfactors_26',['calculateScreeningFactors',['../classgridfire_1_1screening_1_1_screening_model.html#aaec9184d80c86a2d8674e395dad81bde',1,'gridfire::screening::ScreeningModel::calculateScreeningFactors(const reaction::LogicalReactionSet &amp;reactions, const std::vector&lt; fourdst::atomic::Species &gt; &amp;species, const std::vector&lt; double &gt; &amp;Y, const double T9, const double rho) const =0'],['../classgridfire_1_1screening_1_1_screening_model.html#a6c381a823cb9c1680d3e9c846da4ae22',1,'gridfire::screening::ScreeningModel::calculateScreeningFactors(const reaction::LogicalReactionSet &amp;reactions, const std::vector&lt; fourdst::atomic::Species &gt; &amp;species, const std::vector&lt; ADDouble &gt; &amp;Y, const ADDouble T9, const ADDouble rho) const =0'],['../classgridfire_1_1screening_1_1_bare_screening_model.html#ac35ad34c5da7e1b5087552aa5c83fe60',1,'gridfire::screening::BareScreeningModel::calculateScreeningFactors(const reaction::LogicalReactionSet &amp;reactions, const std::vector&lt; fourdst::atomic::Species &gt; &amp;species, const std::vector&lt; double &gt; &amp;Y, const double T9, const double rho) const override'],['../classgridfire_1_1screening_1_1_bare_screening_model.html#ac5647d633cd5bbd7cb5136b7fa4cad99',1,'gridfire::screening::BareScreeningModel::calculateScreeningFactors(const reaction::LogicalReactionSet &amp;reactions, const std::vector&lt; fourdst::atomic::Species &gt; &amp;species, const std::vector&lt; ADDouble &gt; &amp;Y, const ADDouble T9, const ADDouble rho) const override'],['../classgridfire_1_1screening_1_1_weak_screening_model.html#afbaeaefe6b3ab3ecf81889ddc1cff76c',1,'gridfire::screening::WeakScreeningModel::calculateScreeningFactors(const reaction::LogicalReactionSet &amp;reactions, const std::vector&lt; fourdst::atomic::Species &gt; &amp;species, const std::vector&lt; double &gt; &amp;Y, const double T9, const double rho) const override'],['../classgridfire_1_1screening_1_1_weak_screening_model.html#ac6bc78769670a460af1ff88284cb8ad4',1,'gridfire::screening::WeakScreeningModel::calculateScreeningFactors(const reaction::LogicalReactionSet &amp;reactions, const std::vector&lt; fourdst::atomic::Species &gt; &amp;species, const std::vector&lt; CppAD::AD&lt; double &gt; &gt; &amp;Y, const CppAD::AD&lt; double &gt; T9, const CppAD::AD&lt; double &gt; rho) const override'],['../class_py_screening.html#a2b8756c197eb89e77cb6dd231c979315',1,'PyScreening::calculateScreeningFactors(const gridfire::reaction::LogicalReactionSet &amp;reactions, const std::vector&lt; fourdst::atomic::Species &gt; &amp;species, const std::vector&lt; double &gt; &amp;Y, const double T9, const double rho) const override'],['../class_py_screening.html#a5539d59311c778cf7f0006acc8f84ade',1,'PyScreening::calculateScreeningFactors(const gridfire::reaction::LogicalReactionSet &amp;reactions, const std::vector&lt; fourdst::atomic::Species &gt; &amp;species, const std::vector&lt; ADDouble &gt; &amp;Y, const ADDouble T9, const ADDouble rho) const override']]], ['calculatescreeningfactors_26',['calculateScreeningFactors',['../classgridfire_1_1screening_1_1_screening_model.html#aaec9184d80c86a2d8674e395dad81bde',1,'gridfire::screening::ScreeningModel::calculateScreeningFactors(const reaction::LogicalReactionSet &amp;reactions, const std::vector&lt; fourdst::atomic::Species &gt; &amp;species, const std::vector&lt; double &gt; &amp;Y, const double T9, const double rho) const =0'],['../classgridfire_1_1screening_1_1_screening_model.html#a6c381a823cb9c1680d3e9c846da4ae22',1,'gridfire::screening::ScreeningModel::calculateScreeningFactors(const reaction::LogicalReactionSet &amp;reactions, const std::vector&lt; fourdst::atomic::Species &gt; &amp;species, const std::vector&lt; ADDouble &gt; &amp;Y, const ADDouble T9, const ADDouble rho) const =0'],['../classgridfire_1_1screening_1_1_bare_screening_model.html#ac35ad34c5da7e1b5087552aa5c83fe60',1,'gridfire::screening::BareScreeningModel::calculateScreeningFactors(const reaction::LogicalReactionSet &amp;reactions, const std::vector&lt; fourdst::atomic::Species &gt; &amp;species, const std::vector&lt; double &gt; &amp;Y, const double T9, const double rho) const override'],['../classgridfire_1_1screening_1_1_bare_screening_model.html#ac5647d633cd5bbd7cb5136b7fa4cad99',1,'gridfire::screening::BareScreeningModel::calculateScreeningFactors(const reaction::LogicalReactionSet &amp;reactions, const std::vector&lt; fourdst::atomic::Species &gt; &amp;species, const std::vector&lt; ADDouble &gt; &amp;Y, const ADDouble T9, const ADDouble rho) const override'],['../classgridfire_1_1screening_1_1_weak_screening_model.html#afbaeaefe6b3ab3ecf81889ddc1cff76c',1,'gridfire::screening::WeakScreeningModel::calculateScreeningFactors(const reaction::LogicalReactionSet &amp;reactions, const std::vector&lt; fourdst::atomic::Species &gt; &amp;species, const std::vector&lt; double &gt; &amp;Y, const double T9, const double rho) const override'],['../classgridfire_1_1screening_1_1_weak_screening_model.html#ac6bc78769670a460af1ff88284cb8ad4',1,'gridfire::screening::WeakScreeningModel::calculateScreeningFactors(const reaction::LogicalReactionSet &amp;reactions, const std::vector&lt; fourdst::atomic::Species &gt; &amp;species, const std::vector&lt; CppAD::AD&lt; double &gt; &gt; &amp;Y, const CppAD::AD&lt; double &gt; T9, const CppAD::AD&lt; double &gt; rho) const override'],['../class_py_screening.html#a2b8756c197eb89e77cb6dd231c979315',1,'PyScreening::calculateScreeningFactors(const gridfire::reaction::LogicalReactionSet &amp;reactions, const std::vector&lt; fourdst::atomic::Species &gt; &amp;species, const std::vector&lt; double &gt; &amp;Y, const double T9, const double rho) const override'],['../class_py_screening.html#a5539d59311c778cf7f0006acc8f84ade',1,'PyScreening::calculateScreeningFactors(const gridfire::reaction::LogicalReactionSet &amp;reactions, const std::vector&lt; fourdst::atomic::Species &gt; &amp;species, const std::vector&lt; ADDouble &gt; &amp;Y, const ADDouble T9, const ADDouble rho) const override']]],
['callback_20example_27',['Callback Example',['../index.html#autotoc_md52',1,'']]], ['callback_20context_27',['Callback Context',['../index.html#autotoc_md53',1,'']]],
['callbacks_28',['Python callbacks',['../index.html#autotoc_md55',1,'']]], ['callback_20example_28',['Callback Example',['../index.html#autotoc_md52',1,'']]],
['chapter_29',['chapter',['../structgridfire_1_1reaclib_1_1_reaction_record.html#a5c853b69a23b0a8c39ab4b55ac3fe3cc',1,'gridfire::reaclib::ReactionRecord::chapter'],['../classgridfire_1_1reaction_1_1_reaction.html#a5cb438adfefb640e4bc58e09053bd629',1,'gridfire::reaction::Reaction::chapter()'],['../classgridfire_1_1_reaction.html#a5cb438adfefb640e4bc58e09053bd629',1,'gridfire::Reaction::chapter()']]], ['callbacks_29',['Python callbacks',['../index.html#autotoc_md56',1,'']]],
['clang_20vs_20gcc_30',['Clang vs. GCC',['../index.html#autotoc_md24',1,'']]], ['chapter_30',['chapter',['../structgridfire_1_1reaclib_1_1_reaction_record.html#a5c853b69a23b0a8c39ab4b55ac3fe3cc',1,'gridfire::reaclib::ReactionRecord::chapter'],['../classgridfire_1_1reaction_1_1_reaction.html#a5cb438adfefb640e4bc58e09053bd629',1,'gridfire::reaction::Reaction::chapter()'],['../classgridfire_1_1_reaction.html#a5cb438adfefb640e4bc58e09053bd629',1,'gridfire::Reaction::chapter()']]],
['clear_31',['clear',['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#a05f71d318564d880079fd6c96d59ae21',1,'gridfire::reaction::TemplatedReactionSet']]], ['clang_20vs_20gcc_31',['Clang vs. GCC',['../index.html#autotoc_md24',1,'']]],
['cli_20config_20loading_20setup_20and_20build_32',['CLI config loading, setup, and build',['../index.html#autotoc_md21',1,'']]], ['clear_32',['clear',['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#a05f71d318564d880079fd6c96d59ae21',1,'gridfire::reaction::TemplatedReactionSet']]],
['clone_33',['clone',['../classgridfire_1_1partition_1_1_composite_partition_function.html#a7b000d55c7d1f489e54a57f7f4e3808a',1,'gridfire::partition::CompositePartitionFunction::clone()'],['../classgridfire_1_1partition_1_1_partition_function.html#a677a90f992fd56b8718e36655c33ce6d',1,'gridfire::partition::PartitionFunction::clone()'],['../classgridfire_1_1partition_1_1_ground_state_partition_function.html#ade2b0f92a3d9b74968166793466a11e4',1,'gridfire::partition::GroundStatePartitionFunction::clone()'],['../classgridfire_1_1partition_1_1_rauscher_thielemann_partition_function.html#ad229cac0a84df5ebbcaf0550f83debf6',1,'gridfire::partition::RauscherThielemannPartitionFunction::clone()'],['../class_py_partition_function.html#af918b357e38fb82499ad53584557c43d',1,'PyPartitionFunction::clone()']]], ['cli_20config_20loading_20setup_20and_20build_33',['CLI config loading, setup, and build',['../index.html#autotoc_md21',1,'']]],
['code_20architecture_20and_20logical_20flow_34',['Code Architecture and Logical Flow',['../index.html#autotoc_md27',1,'']]], ['clone_34',['clone',['../classgridfire_1_1partition_1_1_composite_partition_function.html#a7b000d55c7d1f489e54a57f7f4e3808a',1,'gridfire::partition::CompositePartitionFunction::clone()'],['../classgridfire_1_1partition_1_1_partition_function.html#a677a90f992fd56b8718e36655c33ce6d',1,'gridfire::partition::PartitionFunction::clone()'],['../classgridfire_1_1partition_1_1_ground_state_partition_function.html#ade2b0f92a3d9b74968166793466a11e4',1,'gridfire::partition::GroundStatePartitionFunction::clone()'],['../classgridfire_1_1partition_1_1_rauscher_thielemann_partition_function.html#ad229cac0a84df5ebbcaf0550f83debf6',1,'gridfire::partition::RauscherThielemannPartitionFunction::clone()'],['../class_py_partition_function.html#af918b357e38fb82499ad53584557c43d',1,'PyPartitionFunction::clone()']]],
['coeffs_35',['coeffs',['../structgridfire_1_1reaclib_1_1_reaction_record.html#a80803f612e574859fde0a163bca84bc0',1,'gridfire::reaclib::ReactionRecord']]], ['code_20architecture_20and_20logical_20flow_35',['Code Architecture and Logical Flow',['../index.html#autotoc_md27',1,'']]],
['collect_36',['collect',['../classgridfire_1_1_defined_engine_view.html#adbc64284b5f5a3256867be46fa87c69e',1,'gridfire::DefinedEngineView']]], ['coeffs_36',['coeffs',['../structgridfire_1_1reaclib_1_1_reaction_record.html#a80803f612e574859fde0a163bca84bc0',1,'gridfire::reaclib::ReactionRecord']]],
['collectatomicreverserateatomicbases_37',['collectAtomicReverseRateAtomicBases',['../classgridfire_1_1_graph_engine.html#a29b338630c959449c15881935ac30746',1,'gridfire::GraphEngine']]], ['collect_37',['collect',['../classgridfire_1_1_defined_engine_view.html#adbc64284b5f5a3256867be46fa87c69e',1,'gridfire::DefinedEngineView']]],
['collectnetworkspecies_38',['collectNetworkSpecies',['../classgridfire_1_1_graph_engine.html#aedf42d83bfcc28313b6b6454034d2efa',1,'gridfire::GraphEngine']]], ['collectatomicreverserateatomicbases_38',['collectAtomicReverseRateAtomicBases',['../classgridfire_1_1_graph_engine.html#a29b338630c959449c15881935ac30746',1,'gridfire::GraphEngine']]],
['common_20platforms_39',['Dependency Installation on Common Platforms',['../index.html#autotoc_md22',1,'']]], ['collectnetworkspecies_39',['collectNetworkSpecies',['../classgridfire_1_1_graph_engine.html#aedf42d83bfcc28313b6b6454034d2efa',1,'gridfire::GraphEngine']]],
['common_20workflow_20examople_40',['Common Workflow Examople',['../index.html#autotoc_md54',1,'']]], ['common_20platforms_40',['Dependency Installation on Common Platforms',['../index.html#autotoc_md22',1,'']]],
['common_20workflow_20example_41',['Common Workflow Example',['../index.html#autotoc_md50',1,'']]], ['common_20workflow_20example_41',['Common Workflow Example',['../index.html#autotoc_md50',1,'Common Workflow Example'],['../index.html#autotoc_md55',1,'Common Workflow Example']]],
['compiler_20versions_42',['Minimum compiler versions',['../index.html#autotoc_md26',1,'']]], ['compiler_20versions_42',['Minimum compiler versions',['../index.html#autotoc_md26',1,'']]],
['components_20and_20effects_43',['Workflow Components and Effects',['../index.html#autotoc_md51',1,'']]], ['components_20and_20effects_43',['Workflow Components and Effects',['../index.html#autotoc_md51',1,'']]],
['composability_44',['A Note about composability',['../index.html#autotoc_md35',1,'']]], ['composability_44',['A Note about composability',['../index.html#autotoc_md35',1,'']]],
@@ -67,8 +67,9 @@ var searchData=
['contains_5fproduct_64',['contains_product',['../classgridfire_1_1reaction_1_1_reaction.html#a074d3cd2421fd5d0133e47f0522403e2',1,'gridfire::reaction::Reaction::contains_product()'],['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#a443ec5d7138764b32975232e13071ccf',1,'gridfire::reaction::TemplatedReactionSet::contains_product()'],['../classgridfire_1_1_reaction.html#a074d3cd2421fd5d0133e47f0522403e2',1,'gridfire::Reaction::contains_product()']]], ['contains_5fproduct_64',['contains_product',['../classgridfire_1_1reaction_1_1_reaction.html#a074d3cd2421fd5d0133e47f0522403e2',1,'gridfire::reaction::Reaction::contains_product()'],['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#a443ec5d7138764b32975232e13071ccf',1,'gridfire::reaction::TemplatedReactionSet::contains_product()'],['../classgridfire_1_1_reaction.html#a074d3cd2421fd5d0133e47f0522403e2',1,'gridfire::Reaction::contains_product()']]],
['contains_5freactant_65',['contains_reactant',['../classgridfire_1_1reaction_1_1_reaction.html#abbe243affa61ba9b2cd2a7b905cd5e45',1,'gridfire::reaction::Reaction::contains_reactant()'],['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#ac42606350d7557106f7954b1f114c128',1,'gridfire::reaction::TemplatedReactionSet::contains_reactant()'],['../classgridfire_1_1_reaction.html#abbe243affa61ba9b2cd2a7b905cd5e45',1,'gridfire::Reaction::contains_reactant()']]], ['contains_5freactant_65',['contains_reactant',['../classgridfire_1_1reaction_1_1_reaction.html#abbe243affa61ba9b2cd2a7b905cd5e45',1,'gridfire::reaction::Reaction::contains_reactant()'],['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#ac42606350d7557106f7954b1f114c128',1,'gridfire::reaction::TemplatedReactionSet::contains_reactant()'],['../classgridfire_1_1_reaction.html#abbe243affa61ba9b2cd2a7b905cd5e45',1,'gridfire::Reaction::contains_reactant()']]],
['contains_5fspecies_66',['contains_species',['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#ad870856d206d93f27125c88d44ff9e34',1,'gridfire::reaction::TemplatedReactionSet']]], ['contains_5fspecies_66',['contains_species',['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#ad870856d206d93f27125c88d44ff9e34',1,'gridfire::reaction::TemplatedReactionSet']]],
['convert_5fnetin_67',['convert_netIn',['../classgridfire_1_1approx8_1_1_approx8_network.html#a56426da6f1af7eb8a6d1cc70bc8e742a',1,'gridfire::approx8::Approx8Network']]], ['context_67',['Callback Context',['../index.html#autotoc_md53',1,'']]],
['culling_68',['culling',['../structgridfire_1_1_net_in.html#a6a5e909b46094ffa20da9a3da906e43f',1,'gridfire::NetIn']]], ['convert_5fnetin_68',['convert_netIn',['../classgridfire_1_1approx8_1_1_approx8_network.html#a56426da6f1af7eb8a6d1cc70bc8e742a',1,'gridfire::approx8::Approx8Network']]],
['cullreactionsbyflow_69',['cullReactionsByFlow',['../classgridfire_1_1_adaptive_engine_view.html#a42417e96fe9fd623458af109401daf08',1,'gridfire::AdaptiveEngineView']]], ['culling_69',['culling',['../structgridfire_1_1_net_in.html#a6a5e909b46094ffa20da9a3da906e43f',1,'gridfire::NetIn']]],
['currently_20known_20good_20platforms_70',['Currently known good platforms',['../index.html#autotoc_md10',1,'']]] ['cullreactionsbyflow_70',['cullReactionsByFlow',['../classgridfire_1_1_adaptive_engine_view.html#a42417e96fe9fd623458af109401daf08',1,'gridfire::AdaptiveEngineView']]],
['currently_20known_20good_20platforms_71',['Currently, known good platforms',['../index.html#autotoc_md10',1,'']]]
]; ];

View File

@@ -10,7 +10,7 @@ var searchData=
['design_7',['Engine Design',['../engine_8h.html#EngineDesign',1,'']]], ['design_7',['Engine Design',['../engine_8h.html#EngineDesign',1,'']]],
['design_20philosophy_20and_20workflow_8',['Design Philosophy and Workflow',['../index.html#autotoc_md1',1,'']]], ['design_20philosophy_20and_20workflow_8',['Design Philosophy and Workflow',['../index.html#autotoc_md1',1,'']]],
['developers_9',['source for developers',['../index.html#autotoc_md7',1,'']]], ['developers_9',['source for developers',['../index.html#autotoc_md7',1,'']]],
['development_20from_20source_10',['1.2 Development from Source',['../md_docs_2static_2usage.html#autotoc_md61',1,'']]], ['development_20from_20source_10',['1.2 Development from Source',['../md_docs_2static_2usage.html#autotoc_md62',1,'']]],
['df_11',['df',['../structgridfire_1_1_multiscale_partitioning_engine_view_1_1_eigen_functor.html#aa65aec7175a56a31887b8b8fca5434bc',1,'gridfire::MultiscalePartitioningEngineView::EigenFunctor']]], ['df_11',['df',['../structgridfire_1_1_multiscale_partitioning_engine_view_1_1_eigen_functor.html#aa65aec7175a56a31887b8b8fca5434bc',1,'gridfire::MultiscalePartitioningEngineView::EigenFunctor']]],
['directnetworksolver_12',['DirectNetworkSolver',['../index.html#autotoc_md42',1,'Algorithmic Workflow in DirectNetworkSolver'],['../classgridfire_1_1solver_1_1_direct_network_solver.html',1,'gridfire::solver::DirectNetworkSolver']]], ['directnetworksolver_12',['DirectNetworkSolver',['../index.html#autotoc_md42',1,'Algorithmic Workflow in DirectNetworkSolver'],['../classgridfire_1_1solver_1_1_direct_network_solver.html',1,'gridfire::solver::DirectNetworkSolver']]],
['directnetworksolver_20implicit_20rosenbrock_20method_13',['DirectNetworkSolver (Implicit Rosenbrock Method)',['../index.html#autotoc_md41',1,'']]], ['directnetworksolver_20implicit_20rosenbrock_20method_13',['DirectNetworkSolver (Implicit Rosenbrock Method)',['../index.html#autotoc_md41',1,'']]],

View File

@@ -32,7 +32,7 @@ var searchData=
['engineerrortypes_29',['EngineErrorTypes',['../namespacegridfire_1_1expectations.html#a926cb0409b1f38770eb028bcac70a87c',1,'gridfire::expectations']]], ['engineerrortypes_29',['EngineErrorTypes',['../namespacegridfire_1_1expectations.html#a926cb0409b1f38770eb028bcac70a87c',1,'gridfire::expectations']]],
['engineindexerror_30',['EngineIndexError',['../structgridfire_1_1expectations_1_1_engine_index_error.html',1,'gridfire::expectations::EngineIndexError'],['../structgridfire_1_1expectations_1_1_engine_index_error.html#ab44bba2a197d43319e65cd200cd347b0',1,'gridfire::expectations::EngineIndexError::EngineIndexError()']]], ['engineindexerror_30',['EngineIndexError',['../structgridfire_1_1expectations_1_1_engine_index_error.html',1,'gridfire::expectations::EngineIndexError'],['../structgridfire_1_1expectations_1_1_engine_index_error.html#ab44bba2a197d43319e65cd200cd347b0',1,'gridfire::expectations::EngineIndexError::EngineIndexError()']]],
['engines_31',['Engines',['../engine_8h.html#AvailableEngines',1,'Available Engines'],['../index.html#autotoc_md28',1,'Engines']]], ['engines_31',['Engines',['../engine_8h.html#AvailableEngines',1,'Available Engines'],['../index.html#autotoc_md28',1,'Engines']]],
['engines_20and_20views_32',['2. Why These Engines and Views?',['../md_docs_2static_2usage.html#autotoc_md63',1,'']]], ['engines_20and_20views_32',['2. Why These Engines and Views?',['../md_docs_2static_2usage.html#autotoc_md64',1,'']]],
['enginet_20gt_20_3a_33',['NetworkSolverStrategy&amp;lt;EngineT&amp;gt;:',['../index.html#autotoc_md37',1,'']]], ['enginet_20gt_20_3a_33',['NetworkSolverStrategy&amp;lt;EngineT&amp;gt;:',['../index.html#autotoc_md37',1,'']]],
['enginetype_34',['EngineType',['../conceptgridfire_1_1_engine_type.html',1,'gridfire']]], ['enginetype_34',['EngineType',['../conceptgridfire_1_1_engine_type.html',1,'gridfire']]],
['engineview_35',['EngineView',['../classgridfire_1_1_engine_view.html',1,'gridfire']]], ['engineview_35',['EngineView',['../classgridfire_1_1_engine_view.html',1,'gridfire']]],
@@ -43,14 +43,13 @@ var searchData=
['error_5fengine_2eh_40',['error_engine.h',['../error__engine_8h.html',1,'']]], ['error_5fengine_2eh_40',['error_engine.h',['../error__engine_8h.html',1,'']]],
['evaluate_41',['evaluate',['../classgridfire_1_1approx8_1_1_approx8_network.html#a888734a3cdde4259e921e2efece411ee',1,'gridfire::approx8::Approx8Network::evaluate()'],['../classgridfire_1_1_network.html#afc8d5172dd0e2295248b42dcb52b655c',1,'gridfire::Network::evaluate()'],['../classgridfire_1_1partition_1_1_composite_partition_function.html#a8d6d278fcb5b8478b0e27535f877ee2b',1,'gridfire::partition::CompositePartitionFunction::evaluate()'],['../classgridfire_1_1partition_1_1_partition_function.html#a08ee79b7d8723b4e00ee1fc9cdfbe817',1,'gridfire::partition::PartitionFunction::evaluate()'],['../classgridfire_1_1partition_1_1_ground_state_partition_function.html#af16da0015489307eb64639efbafbbdd5',1,'gridfire::partition::GroundStatePartitionFunction::evaluate()'],['../classgridfire_1_1partition_1_1_rauscher_thielemann_partition_function.html#aebe49d06b50a18ea4484ff15cb301681',1,'gridfire::partition::RauscherThielemannPartitionFunction::evaluate()'],['../classgridfire_1_1solver_1_1_network_solver_strategy.html#ace539b0482db171845ff1bd38d76b70f',1,'gridfire::solver::NetworkSolverStrategy::evaluate()'],['../classgridfire_1_1solver_1_1_direct_network_solver.html#a0e8a4b8ef656e0b084d11bea982e412a',1,'gridfire::solver::DirectNetworkSolver::evaluate()'],['../class_py_partition_function.html#a83aca0bc261734b7d3df8269f730c69b',1,'PyPartitionFunction::evaluate()'],['../class_py_dynamic_network_solver_strategy.html#a2095abb83ed6229ebb27b4883cec51c4',1,'PyDynamicNetworkSolverStrategy::evaluate()']]], ['evaluate_41',['evaluate',['../classgridfire_1_1approx8_1_1_approx8_network.html#a888734a3cdde4259e921e2efece411ee',1,'gridfire::approx8::Approx8Network::evaluate()'],['../classgridfire_1_1_network.html#afc8d5172dd0e2295248b42dcb52b655c',1,'gridfire::Network::evaluate()'],['../classgridfire_1_1partition_1_1_composite_partition_function.html#a8d6d278fcb5b8478b0e27535f877ee2b',1,'gridfire::partition::CompositePartitionFunction::evaluate()'],['../classgridfire_1_1partition_1_1_partition_function.html#a08ee79b7d8723b4e00ee1fc9cdfbe817',1,'gridfire::partition::PartitionFunction::evaluate()'],['../classgridfire_1_1partition_1_1_ground_state_partition_function.html#af16da0015489307eb64639efbafbbdd5',1,'gridfire::partition::GroundStatePartitionFunction::evaluate()'],['../classgridfire_1_1partition_1_1_rauscher_thielemann_partition_function.html#aebe49d06b50a18ea4484ff15cb301681',1,'gridfire::partition::RauscherThielemannPartitionFunction::evaluate()'],['../classgridfire_1_1solver_1_1_network_solver_strategy.html#ace539b0482db171845ff1bd38d76b70f',1,'gridfire::solver::NetworkSolverStrategy::evaluate()'],['../classgridfire_1_1solver_1_1_direct_network_solver.html#a0e8a4b8ef656e0b084d11bea982e412a',1,'gridfire::solver::DirectNetworkSolver::evaluate()'],['../class_py_partition_function.html#a83aca0bc261734b7d3df8269f730c69b',1,'PyPartitionFunction::evaluate()'],['../class_py_dynamic_network_solver_strategy.html#a2095abb83ed6229ebb27b4883cec51c4',1,'PyDynamicNetworkSolverStrategy::evaluate()']]],
['evaluatederivative_42',['evaluateDerivative',['../classgridfire_1_1partition_1_1_composite_partition_function.html#ac8900afaa5edd24fcb8eaf19e7379183',1,'gridfire::partition::CompositePartitionFunction::evaluateDerivative()'],['../classgridfire_1_1partition_1_1_partition_function.html#a14009bdaca47f3eddf2c6c023845db5a',1,'gridfire::partition::PartitionFunction::evaluateDerivative()'],['../classgridfire_1_1partition_1_1_ground_state_partition_function.html#a0eff10c7b134d9d4081ad72bbc785c5b',1,'gridfire::partition::GroundStatePartitionFunction::evaluateDerivative()'],['../classgridfire_1_1partition_1_1_rauscher_thielemann_partition_function.html#aaa1e11579b44a88c5f18943cc303c4b4',1,'gridfire::partition::RauscherThielemannPartitionFunction::evaluateDerivative()'],['../class_py_partition_function.html#a260df9689bf698970ebf5104977a3dcf',1,'PyPartitionFunction::evaluateDerivative()']]], ['evaluatederivative_42',['evaluateDerivative',['../classgridfire_1_1partition_1_1_composite_partition_function.html#ac8900afaa5edd24fcb8eaf19e7379183',1,'gridfire::partition::CompositePartitionFunction::evaluateDerivative()'],['../classgridfire_1_1partition_1_1_partition_function.html#a14009bdaca47f3eddf2c6c023845db5a',1,'gridfire::partition::PartitionFunction::evaluateDerivative()'],['../classgridfire_1_1partition_1_1_ground_state_partition_function.html#a0eff10c7b134d9d4081ad72bbc785c5b',1,'gridfire::partition::GroundStatePartitionFunction::evaluateDerivative()'],['../classgridfire_1_1partition_1_1_rauscher_thielemann_partition_function.html#aaa1e11579b44a88c5f18943cc303c4b4',1,'gridfire::partition::RauscherThielemannPartitionFunction::evaluateDerivative()'],['../class_py_partition_function.html#a260df9689bf698970ebf5104977a3dcf',1,'PyPartitionFunction::evaluateDerivative()']]],
['examople_43',['Common Workflow Examople',['../index.html#autotoc_md54',1,'']]], ['example_43',['Example',['../md_docs_2static_2usage.html#autotoc_md66',1,'3. Step-by-Step Example'],['../engine_8h.html#AdaptiveEngineViewExample',1,'AdaptiveEngineView Example'],['../index.html#autotoc_md52',1,'Callback Example'],['../index.html#autotoc_md50',1,'Common Workflow Example'],['../index.html#autotoc_md55',1,'Common Workflow Example'],['../engine_8h.html#DefinedEngineViewExample',1,'DefinedEngineView Example'],['../engine_8h.html#GraphEngineExample',1,'GraphEngine Example'],['../engine_8h.html#MultiscalePartitioningEngineViewExample',1,'MultiscalePartitioningEngineView Example'],['../engine_8h.html#NetworkPrimingEngineViewExample',1,'NetworkPrimingEngineView Example']]],
['example_44',['Example',['../md_docs_2static_2usage.html#autotoc_md65',1,'3. Step-by-Step Example'],['../engine_8h.html#AdaptiveEngineViewExample',1,'AdaptiveEngineView Example'],['../index.html#autotoc_md52',1,'Callback Example'],['../index.html#autotoc_md50',1,'Common Workflow Example'],['../engine_8h.html#DefinedEngineViewExample',1,'DefinedEngineView Example'],['../engine_8h.html#GraphEngineExample',1,'GraphEngine Example'],['../engine_8h.html#MultiscalePartitioningEngineViewExample',1,'MultiscalePartitioningEngineView Example'],['../engine_8h.html#NetworkPrimingEngineViewExample',1,'NetworkPrimingEngineView Example']]], ['examples_44',['Examples',['../index.html#autotoc_md18',1,'Examples'],['../engine_8h.html#UsageExamples',1,'Usage Examples'],['../index.html#autotoc_md45',1,'Usage Examples']]],
['examples_45',['Examples',['../index.html#autotoc_md18',1,'Examples'],['../engine_8h.html#UsageExamples',1,'Usage Examples'],['../index.html#autotoc_md45',1,'Usage Examples']]], ['exceptions_2eh_45',['exceptions.h',['../exceptions_8h.html',1,'']]],
['exceptions_2eh_46',['exceptions.h',['../exceptions_8h.html',1,'']]], ['excess_5fenergy_46',['excess_energy',['../classgridfire_1_1reaction_1_1_reaction.html#aa1d71e38fc55ae691dbb9ec459a612a5',1,'gridfire::reaction::Reaction::excess_energy()'],['../classgridfire_1_1_reaction.html#aa1d71e38fc55ae691dbb9ec459a612a5',1,'gridfire::Reaction::excess_energy()']]],
['excess_5fenergy_47',['excess_energy',['../classgridfire_1_1reaction_1_1_reaction.html#aa1d71e38fc55ae691dbb9ec459a612a5',1,'gridfire::reaction::Reaction::excess_energy()'],['../classgridfire_1_1_reaction.html#aa1d71e38fc55ae691dbb9ec459a612a5',1,'gridfire::Reaction::excess_energy()']]], ['expectations_2eh_47',['expectations.h',['../expectations_8h.html',1,'']]],
['expectations_2eh_48',['expectations.h',['../expectations_8h.html',1,'']]], ['expected_5fengine_2eh_48',['expected_engine.h',['../expected__engine_8h.html',1,'']]],
['expected_5fengine_2eh_49',['expected_engine.h',['../expected__engine_8h.html',1,'']]], ['exporttocsv_49',['exportToCSV',['../classgridfire_1_1_graph_engine.html#a832e2fe066381811a3e0464806ff5e95',1,'gridfire::GraphEngine']]],
['exporttocsv_50',['exportToCSV',['../classgridfire_1_1_graph_engine.html#a832e2fe066381811a3e0464806ff5e95',1,'gridfire::GraphEngine']]], ['exporttodot_50',['exportToDot',['../classgridfire_1_1_graph_engine.html#adac8c7d62bae76e17fc060e86dadd929',1,'gridfire::GraphEngine::exportToDot()'],['../classgridfire_1_1_multiscale_partitioning_engine_view.html#acff59a15abac30eee16e9fa7b355fb18',1,'gridfire::MultiscalePartitioningEngineView::exportToDot()']]],
['exporttodot_51',['exportToDot',['../classgridfire_1_1_graph_engine.html#adac8c7d62bae76e17fc060e86dadd929',1,'gridfire::GraphEngine::exportToDot()'],['../classgridfire_1_1_multiscale_partitioning_engine_view.html#acff59a15abac30eee16e9fa7b355fb18',1,'gridfire::MultiscalePartitioningEngineView::exportToDot()']]], ['extensibility_51',['Python Extensibility',['../index.html#autotoc_md44',1,'']]]
['extensibility_52',['Python Extensibility',['../index.html#autotoc_md44',1,'']]]
]; ];

View File

@@ -19,7 +19,7 @@ var searchData=
['formatstringlookup_16',['FormatStringLookup',['../namespacegridfire.html#a4e9cabad30b57d636c2f0d73d8cc6bb4',1,'gridfire']]], ['formatstringlookup_16',['FormatStringLookup',['../namespacegridfire.html#a4e9cabad30b57d636c2f0d73d8cc6bb4',1,'gridfire']]],
['forward_17',['forward',['../classgridfire_1_1_graph_engine_1_1_atomic_reverse_rate.html#ad9b8dd0e8ba9c7745e33acc9a649d2e0',1,'gridfire::GraphEngine::AtomicReverseRate']]], ['forward_17',['forward',['../classgridfire_1_1_graph_engine_1_1_atomic_reverse_rate.html#ad9b8dd0e8ba9c7745e33acc9a649d2e0',1,'gridfire::GraphEngine::AtomicReverseRate']]],
['fourthorder_18',['FourthOrder',['../namespacegridfire.html#a0210bd2e07538932135a56b62b8ddb57a100e3bf0197221c19b222badf42aa964',1,'gridfire']]], ['fourthorder_18',['FourthOrder',['../namespacegridfire.html#a0210bd2e07538932135a56b62b8ddb57a100e3bf0197221c19b222badf42aa964',1,'gridfire']]],
['from_20source_19',['1.2 Development from Source',['../md_docs_2static_2usage.html#autotoc_md61',1,'']]], ['from_20source_19',['1.2 Development from Source',['../md_docs_2static_2usage.html#autotoc_md62',1,'']]],
['front_20',['FRONT',['../classgridfire_1_1partition_1_1_rauscher_thielemann_partition_function.html#a7002ebbef966f89b2426f5ea0df33329aa692ae3131928d57ddcd2408d6b44d71',1,'gridfire::partition::RauscherThielemannPartitionFunction']]], ['front_20',['FRONT',['../classgridfire_1_1partition_1_1_rauscher_thielemann_partition_function.html#a7002ebbef966f89b2426f5ea0df33329aa692ae3131928d57ddcd2408d6b44d71',1,'gridfire::partition::RauscherThielemannPartitionFunction']]],
['full_21',['Full',['../namespacegridfire.html#a0210bd2e07538932135a56b62b8ddb57abbd47109890259c0127154db1af26c75',1,'gridfire']]], ['full_21',['Full',['../namespacegridfire.html#a0210bd2e07538932135a56b62b8ddb57abbd47109890259c0127154db1af26c75',1,'gridfire']]],
['full_5fsuccess_22',['FULL_SUCCESS',['../namespacegridfire.html#a8bea3d74f35d640e693fa398e9b3e154a64d98633bac1de0eb2a539cbfd2a5c2a',1,'gridfire']]], ['full_5fsuccess_22',['FULL_SUCCESS',['../namespacegridfire.html#a8bea3d74f35d640e693fa398e9b3e154a64d98633bac1de0eb2a539cbfd2a5c2a',1,'gridfire']]],

View File

@@ -31,7 +31,7 @@ var searchData=
['getspeciestimescales_28',['getSpeciesTimescales',['../classgridfire_1_1_dynamic_engine.html#a6772ac384b4c3d3e91712041e4aaa813',1,'gridfire::DynamicEngine::getSpeciesTimescales()'],['../classgridfire_1_1_graph_engine.html#a65f9f33cddb0bbd1da7c9d0cff23d581',1,'gridfire::GraphEngine::getSpeciesTimescales()'],['../classgridfire_1_1_adaptive_engine_view.html#a4e856d6d4d2fc220952bbb7e6b2f85d9',1,'gridfire::AdaptiveEngineView::getSpeciesTimescales()'],['../classgridfire_1_1_defined_engine_view.html#ac8daafabbc76f4b6811bede241a03d72',1,'gridfire::DefinedEngineView::getSpeciesTimescales()'],['../classgridfire_1_1_multiscale_partitioning_engine_view.html#a560612347bbd5b7b380e990624d01105',1,'gridfire::MultiscalePartitioningEngineView::getSpeciesTimescales()'],['../class_py_dynamic_engine.html#a02a4c86c9637a3c9c9ca8ddd82ecff22',1,'PyDynamicEngine::getSpeciesTimescales()']]], ['getspeciestimescales_28',['getSpeciesTimescales',['../classgridfire_1_1_dynamic_engine.html#a6772ac384b4c3d3e91712041e4aaa813',1,'gridfire::DynamicEngine::getSpeciesTimescales()'],['../classgridfire_1_1_graph_engine.html#a65f9f33cddb0bbd1da7c9d0cff23d581',1,'gridfire::GraphEngine::getSpeciesTimescales()'],['../classgridfire_1_1_adaptive_engine_view.html#a4e856d6d4d2fc220952bbb7e6b2f85d9',1,'gridfire::AdaptiveEngineView::getSpeciesTimescales()'],['../classgridfire_1_1_defined_engine_view.html#ac8daafabbc76f4b6811bede241a03d72',1,'gridfire::DefinedEngineView::getSpeciesTimescales()'],['../classgridfire_1_1_multiscale_partitioning_engine_view.html#a560612347bbd5b7b380e990624d01105',1,'gridfire::MultiscalePartitioningEngineView::getSpeciesTimescales()'],['../class_py_dynamic_engine.html#a02a4c86c9637a3c9c9ca8ddd82ecff22',1,'PyDynamicEngine::getSpeciesTimescales()']]],
['getstate_29',['getState',['../classgridfire_1_1exceptions_1_1_stale_engine_trigger.html#a06eb9eb03750038c193c23c7f53668f5',1,'gridfire::exceptions::StaleEngineTrigger']]], ['getstate_29',['getState',['../classgridfire_1_1exceptions_1_1_stale_engine_trigger.html#a06eb9eb03750038c193c23c7f53668f5',1,'gridfire::exceptions::StaleEngineTrigger']]],
['getstoichiometrymatrixentry_30',['getStoichiometryMatrixEntry',['../classgridfire_1_1_dynamic_engine.html#afa108dd5227dbb1045e90d7b3bd8b84f',1,'gridfire::DynamicEngine::getStoichiometryMatrixEntry()'],['../classgridfire_1_1_graph_engine.html#a6b5feaf788bade212b7c8df7ac8c8152',1,'gridfire::GraphEngine::getStoichiometryMatrixEntry()'],['../classgridfire_1_1_adaptive_engine_view.html#a67b4ea8cad115394bb4a42cc39d696f9',1,'gridfire::AdaptiveEngineView::getStoichiometryMatrixEntry()'],['../classgridfire_1_1_defined_engine_view.html#afa2820971397114d788730cc33feefe2',1,'gridfire::DefinedEngineView::getStoichiometryMatrixEntry()'],['../classgridfire_1_1_multiscale_partitioning_engine_view.html#a510b920dea726aef859ac1f6d051807e',1,'gridfire::MultiscalePartitioningEngineView::getStoichiometryMatrixEntry()'],['../class_py_dynamic_engine.html#ab48ef6db18da20024aa563a91fa16f83',1,'PyDynamicEngine::getStoichiometryMatrixEntry()']]], ['getstoichiometrymatrixentry_30',['getStoichiometryMatrixEntry',['../classgridfire_1_1_dynamic_engine.html#afa108dd5227dbb1045e90d7b3bd8b84f',1,'gridfire::DynamicEngine::getStoichiometryMatrixEntry()'],['../classgridfire_1_1_graph_engine.html#a6b5feaf788bade212b7c8df7ac8c8152',1,'gridfire::GraphEngine::getStoichiometryMatrixEntry()'],['../classgridfire_1_1_adaptive_engine_view.html#a67b4ea8cad115394bb4a42cc39d696f9',1,'gridfire::AdaptiveEngineView::getStoichiometryMatrixEntry()'],['../classgridfire_1_1_defined_engine_view.html#afa2820971397114d788730cc33feefe2',1,'gridfire::DefinedEngineView::getStoichiometryMatrixEntry()'],['../classgridfire_1_1_multiscale_partitioning_engine_view.html#a510b920dea726aef859ac1f6d051807e',1,'gridfire::MultiscalePartitioningEngineView::getStoichiometryMatrixEntry()'],['../class_py_dynamic_engine.html#ab48ef6db18da20024aa563a91fa16f83',1,'PyDynamicEngine::getStoichiometryMatrixEntry()']]],
['good_20platforms_31',['Currently known good platforms',['../index.html#autotoc_md10',1,'']]], ['good_20platforms_31',['Currently, known good platforms',['../index.html#autotoc_md10',1,'']]],
['graphengine_32',['GraphEngine',['../classgridfire_1_1_graph_engine.html',1,'gridfire::GraphEngine'],['../classgridfire_1_1_graph_engine.html#afad967546b611d9c005268760feb75d5',1,'gridfire::GraphEngine::GraphEngine(const fourdst::composition::Composition &amp;composition, const BuildDepthType=NetworkBuildDepth::Full)'],['../classgridfire_1_1_graph_engine.html#a39d9838ed40bea71ee6c552bb5969026',1,'gridfire::GraphEngine::GraphEngine(const fourdst::composition::Composition &amp;composition, const partition::PartitionFunction &amp;partitionFunction, const BuildDepthType buildDepth=NetworkBuildDepth::Full)'],['../classgridfire_1_1_graph_engine.html#a1e7e851dfa21d41c2dc533ba56fc4c7b',1,'gridfire::GraphEngine::GraphEngine(const reaction::LogicalReactionSet &amp;reactions)'],['../index.html#autotoc_md29',1,'GraphEngine']]], ['graphengine_32',['GraphEngine',['../classgridfire_1_1_graph_engine.html',1,'gridfire::GraphEngine'],['../classgridfire_1_1_graph_engine.html#afad967546b611d9c005268760feb75d5',1,'gridfire::GraphEngine::GraphEngine(const fourdst::composition::Composition &amp;composition, const BuildDepthType=NetworkBuildDepth::Full)'],['../classgridfire_1_1_graph_engine.html#a39d9838ed40bea71ee6c552bb5969026',1,'gridfire::GraphEngine::GraphEngine(const fourdst::composition::Composition &amp;composition, const partition::PartitionFunction &amp;partitionFunction, const BuildDepthType buildDepth=NetworkBuildDepth::Full)'],['../classgridfire_1_1_graph_engine.html#a1e7e851dfa21d41c2dc533ba56fc4c7b',1,'gridfire::GraphEngine::GraphEngine(const reaction::LogicalReactionSet &amp;reactions)'],['../index.html#autotoc_md29',1,'GraphEngine']]],
['graphengine_20configuration_20options_33',['GraphEngine Configuration Options',['../index.html#autotoc_md30',1,'']]], ['graphengine_20configuration_20options_33',['GraphEngine Configuration Options',['../index.html#autotoc_md30',1,'']]],
['graphengine_20example_34',['GraphEngine Example',['../engine_8h.html#GraphEngineExample',1,'']]], ['graphengine_20example_34',['GraphEngine Example',['../engine_8h.html#GraphEngineExample',1,'']]],

View File

@@ -23,7 +23,7 @@ var searchData=
['inputsatcompiletime_20',['InputsAtCompileTime',['../structgridfire_1_1_multiscale_partitioning_engine_view_1_1_eigen_functor.html#a5a2ecfa4d17720d1da14e53f4c261a81a753b594931f9ee122e2079986ad572c9',1,'gridfire::MultiscalePartitioningEngineView::EigenFunctor']]], ['inputsatcompiletime_20',['InputsAtCompileTime',['../structgridfire_1_1_multiscale_partitioning_engine_view_1_1_eigen_functor.html#a5a2ecfa4d17720d1da14e53f4c261a81a753b594931f9ee122e2079986ad572c9',1,'gridfire::MultiscalePartitioningEngineView::EigenFunctor']]],
['inputtype_21',['InputType',['../structgridfire_1_1_multiscale_partitioning_engine_view_1_1_eigen_functor.html#a3ebf684b36e98da38d8ee6f0be4f91e2',1,'gridfire::MultiscalePartitioningEngineView::EigenFunctor']]], ['inputtype_21',['InputType',['../structgridfire_1_1_multiscale_partitioning_engine_view_1_1_eigen_functor.html#a3ebf684b36e98da38d8ee6f0be4f91e2',1,'gridfire::MultiscalePartitioningEngineView::EigenFunctor']]],
['install_20scripts_22',['Install Scripts',['../index.html#autotoc_md15',1,'']]], ['install_20scripts_22',['Install Scripts',['../index.html#autotoc_md15',1,'']]],
['installation_23',['Installation',['../md_docs_2static_2usage.html#autotoc_md59',1,'1. Installation'],['../index.html#autotoc_md8',1,'Automatic Build and Installation'],['../index.html#autotoc_md16',1,'Ease of Installation']]], ['installation_23',['Installation',['../md_docs_2static_2usage.html#autotoc_md60',1,'1. Installation'],['../index.html#autotoc_md8',1,'Automatic Build and Installation'],['../index.html#autotoc_md16',1,'Ease of Installation']]],
['installation_24',['Python installation',['../index.html#autotoc_md4',1,'']]], ['installation_24',['Python installation',['../index.html#autotoc_md4',1,'']]],
['installation_20instructions_25',['Script Build and Installation Instructions',['../index.html#autotoc_md9',1,'']]], ['installation_20instructions_25',['Script Build and Installation Instructions',['../index.html#autotoc_md9',1,'']]],
['installation_20on_20common_20platforms_26',['Dependency Installation on Common Platforms',['../index.html#autotoc_md22',1,'']]], ['installation_20on_20common_20platforms_26',['Dependency Installation on Common Platforms',['../index.html#autotoc_md22',1,'']]],

View File

@@ -45,7 +45,7 @@ By far the easiest way to install is with pip. This will install either
pre-compiled wheels or, if your system has not had a wheel compiled for it, it pre-compiled wheels or, if your system has not had a wheel compiled for it, it
will try to build locally (this may take **a long time**). The python bindings will try to build locally (this may take **a long time**). The python bindings
are just that and should maintain nearly the same speed as the C++ code. End are just that and should maintain nearly the same speed as the C++ code. End
users are strongly encorages to use the python module rather than the C++ code. users are strongly encourages to use the python module rather than the C++ code.
### pypi ### pypi
Installing from pip is as simple as Installing from pip is as simple as
@@ -56,16 +56,16 @@ pip install gridfire
These wheels have been compiled on many systems These wheels have been compiled on many systems
| Version | Platform | Architecture | CPython Versions | PyPy Versions | | Version | Platform | Architecture | CPython Versions | PyPy Versions |
| ------- | -------- | ------------ | ---------------------------------------------------------- | ------------- | |---------|----------|--------------|------------------------------------------------------------|---------------|
| 0.5.0 | macOS | arm64 | 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 (std & t), 3.14 (std & t) | 3.10, 3.11 | | 0.5.0 | macOS | arm64 | 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 (std & t), 3.14 (std & t) | 3.10, 3.11 |
| 0.5.0 | Linux | aarch64 | 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 (std & t), 3.14 (std & t) | 3.10, 3.11 | | 0.5.0 | Linux | aarch64 | 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 (std & t), 3.14 (std & t) | 3.10, 3.11 |
| 0.5.0 | Linux | x86\_64 | 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 (std & t), 3.14 (std & t) | 3.10, 3.11 | | 0.5.0 | Linux | x86\_64 | 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 (std & t), 3.14 (std & t) | 3.10, 3.11 |
> **Note**: Currently macOS x86\_64 does **not** have a precompiled wheel. Due > **Note**: Currently macOS x86\_64 does **not** have a precompiled wheel. Do
> to that platform being phased out it is likely that there will never be > to that platform being phased out it is likely that there will never be
> precompiled wheels or releases for it. > precompiled wheels or releases for it.
> **Note:** macOS wheels were targeted to MacOS 12 Monterey and should work on > **Note:** macOS wheels were targeted to macOS 12 Monterey and should work on
> any version more recent than that (at least as of August 2025). > any version more recent than that (at least as of August 2025).
> **Note:** Linux wheels were compiled using manylinux_2_28 and are expected to > **Note:** Linux wheels were compiled using manylinux_2_28 and are expected to
@@ -90,7 +90,7 @@ pip install .
> fail, the steps in further sections address these in more detail. > fail, the steps in further sections address these in more detail.
### source for developers ### source for developers
If you are a developer and would like an editable and incrimental python If you are a developer and would like an editable and incremental python
install `meson-python` makes this very easy install `meson-python` makes this very easy
```bash ```bash
@@ -99,10 +99,10 @@ cd GridFire
pip install -e . --no-build-isolation -vv pip install -e . --no-build-isolation -vv
``` ```
This will generate incrimental builds whenever source code changes and you run This will generate incremental builds whenever source code changes, and you run
a python script automartically (note that since `meson setup` must run for each a python script automatically (note that since `meson setup` must run for each
of these it does still take a few seconds to recompile regardless of how small of these it does still take a few seconds to recompile regardless of how small
a source code change you have made). It is **strongly** reccomended that a source code change you have made). It is **strongly** recommended that
developers use this approach and end users *do not*. developers use this approach and end users *do not*.
@@ -126,7 +126,7 @@ Generally, both are intended to be easy to use and will prompt you
automatically to install any missing dependencies. automatically to install any missing dependencies.
### Currently known good platforms ### Currently, known good platforms
The installation script has been tested and found to work on clean The installation script has been tested and found to work on clean
installations of the following platforms: installations of the following platforms:
- MacOS 15.3.2 (Apple Silicon + brew installed) - MacOS 15.3.2 (Apple Silicon + brew installed)
@@ -172,10 +172,10 @@ These only need to be manually installed if the user is not making use of the
### Install Scripts ### Install Scripts
GridFire ships with an installer (`install.sh`) which is intended to make the GridFire ships with an installer (`install.sh`) which is intended to make the
process of installation both easier and more repetable. process of installation both easier and more repeatable.
#### Ease of Installation #### Ease of Installation
Both scripts are intended to automate installation more or less completly. This Both scripts are intended to automate installation more or less completely. This
includes dependency checking. In the event that a dependency cannot be found includes dependency checking. In the event that a dependency cannot be found
they try to install (after explicitly asking for user permission). If that does they try to install (after explicitly asking for user permission). If that does
not work they will provide a clear message as to what went wrong. not work they will provide a clear message as to what went wrong.
@@ -185,7 +185,7 @@ The TUI mode provides easy modification of meson build system and compiler
settings which can then be saved to a config file. This config file can then be settings which can then be saved to a config file. This config file can then be
loaded by either tui mode or cli mode (with the `--config`) flag meaning that loaded by either tui mode or cli mode (with the `--config`) flag meaning that
build configurations can be made and reused. Note that this is **not** a build configurations can be made and reused. Note that this is **not** a
deterministicly reproducible build system as it does not interact with any deterministically reproducible build system as it does not interact with any
system dependencies or settings, only meson and compiler settings. system dependencies or settings, only meson and compiler settings.
#### Examples #### Examples
@@ -200,7 +200,7 @@ system dependencies or settings, only meson and compiler settings.
[![asciicast](https://asciinema.org/a/GYaWTXZbDJRD4ohde0s3DkFMC.svg)](https://asciinema.org/a/GYaWTXZbDJRD4ohde0s3DkFMC) [![asciicast](https://asciinema.org/a/GYaWTXZbDJRD4ohde0s3DkFMC.svg)](https://asciinema.org/a/GYaWTXZbDJRD4ohde0s3DkFMC)
> **Note:** `install-tui.sh` is simply a script which calles `install.sh` with > **Note:** `install-tui.sh` is simply a script which calls `install.sh` with
> the `--tui` flag. You can get the exact same results by running `install.sh > the `--tui` flag. You can get the exact same results by running `install.sh
> --tui`. > --tui`.
@@ -223,9 +223,9 @@ sudo apt-get install -y build-essential meson python3 python3-pip libboost-all-d
> documentation for how to download and install a version `>=1.83.0` > documentation for how to download and install a version `>=1.83.0`
> **Note:** On recent versions of ubuntu python has switched to being > **Note:** On recent versions of ubuntu python has switched to being
> externally managed by the system. We **strongly** recomend that if you > externally managed by the system. We **strongly** recommend that if you
> install manaully all python pacakges are installed inside some kind of > install manually all python packages are installed inside some kind of
> virtual enviroment (e.g. `pyenv`, `conda`, `python-venv`, etc...). When using > virtual environment (e.g. `pyenv`, `conda`, `python-venv`, etc...). When using
> the installer script this is handled automatically using `python-venv`. > the installer script this is handled automatically using `python-venv`.
- **Fedora/CentOS/RHEL:** - **Fedora/CentOS/RHEL:**
@@ -248,7 +248,7 @@ meson compile -C build
#### Clang vs. GCC #### Clang vs. GCC
As noted above `clang` tends to compile GridFire much faster than `gcc`. If As noted above `clang` tends to compile GridFire much faster than `gcc`. If
your system has both `clang` and `gcc` installed you may force meson to use your system has both `clang` and `gcc` installed you may force meson to use
clang via enviromental variables clang via environmental variables
```bash ```bash
CC=clang CXX=clang++ meson setup build_clang CC=clang CXX=clang++ meson setup build_clang
@@ -262,7 +262,7 @@ meson install -C build
### Minimum compiler versions ### Minimum compiler versions
GridFire uses C++23 features and therefore only compilers and standard library GridFire uses C++23 features and therefore only compilers and standard library
implimentations which support C++23 are supported. Generally we have found that implementations which support C++23 are supported. Generally we have found that
`gcc >= 13.0.0` or `clang >= 16.0.0` work well. `gcc >= 13.0.0` or `clang >= 16.0.0` work well.
@@ -274,7 +274,7 @@ include:
- **Engine Module:** Core interfaces and implementations (e.g., `GraphEngine`) - **Engine Module:** Core interfaces and implementations (e.g., `GraphEngine`)
that evaluate reaction network rate equations and energy generation. Also that evaluate reaction network rate equations and energy generation. Also
implimented `Views` submodule. implemented `Views` submodule.
- **Engine::Views Module:** Composable engine optimization and modification - **Engine::Views Module:** Composable engine optimization and modification
(e.g. `MultiscalePartitioningEngineView`) which can be used to make a problem (e.g. `MultiscalePartitioningEngineView`) which can be used to make a problem
more tractable or applicable. more tractable or applicable.
@@ -308,16 +308,16 @@ abundances and diagnostics.
## Engines ## Engines
GridFire is, at its core, based on a series of `Engines`. These are constructs GridFire is, at its core, based on a series of `Engines`. These are constructs
which know how to report information on series of ODEs which need to be solved which know how to report information on series of ODEs which need to be solved
to evolver abundnances. The important thing to understand about `Engines` is to evolver abundances. The important thing to understand about `Engines` is
that they contain all of the detailed physics GridFire uses. For example a that they contain all the detailed physics GridFire uses. For example a
`Solver` takes an `Engine` but does not compute physics itself. Rather, it asks `Solver` takes an `Engine` but does not compute physics itself. Rather, it asks
the `Engine` for stuff like the jacobian matrix, stoichiometry, nuclear energy the `Engine` for stuff like the jacobian matrix, stoichiometry, nuclear energy
generation rate, and change in abundance with time. generation rate, and change in abundance with time.
Refer to the API documentation for the exact interface which an `Engine` must Refer to the API documentation for the exact interface which an `Engine` must
impliment to be compatible with GridFire solvers. implement to be compatible with GridFire solvers.
Currently we only impliment `GraphEngine` which is intended to be a very general and Currently, we only implement `GraphEngine` which is intended to be a very general and
adaptable `Engine`. adaptable `Engine`.
### GraphEngine ### GraphEngine
@@ -327,7 +327,7 @@ connecting some set of atomic species through reactions listed in the [JINA
Reaclib database](https://reaclib.jinaweb.org/index.php). Reaclib database](https://reaclib.jinaweb.org/index.php).
`GraphEngine`s are constructed from a seed composition of species from which `GraphEngine`s are constructed from a seed composition of species from which
they recursivley expand their topology outward, following known reaction they recursively expand their topology outward, following known reaction
pathways and adding new species to the tracked list as they expand. pathways and adding new species to the tracked list as they expand.
@@ -339,9 +339,9 @@ construction and rate evaluations:
- **Constructor Parameters:** - **Constructor Parameters:**
- `composition`: The initial seed composition to start network construction from. - `composition`: The initial seed composition to start network construction from.
- `BuildDepthType` (`Full`, `Shallow`, `SecondOrder`, etc...): controls - `BuildDepthType` (`Full`, `Shallow`, `SecondOrder`, etc...): controls
number of recursions used to construct the network topology. Can either be an number of recursions used to construct the network topology. Can either be a
member of the `NetworkBuildDepth` enum or an integerl. member of the `NetworkBuildDepth` enum or an integer.
- `partition::PartitionFunction`: Partition function used when evlauating - `partition::PartitionFunction`: Partition function used when evaluating
detailed balance for inverse rates. detailed balance for inverse rates.
- **setPrecomputation(bool precompute):** - **setPrecomputation(bool precompute):**
@@ -358,16 +358,16 @@ construction and rate evaluations:
### Available Partition Functions ### Available Partition Functions
| Function Name | Identifier / Enum | Description | | Function Name | Identifier / Enum | Description |
|---------------------------------------|--------------------------|-----------------------------------------------------------------| |---------------------------------------|----------------------|--------------------------------------------------------------------------------------------------------------------------|
| `GroundStatePartitionFunction` | "GroundState" | Weights using nuclear ground-state spin factors. | | `GroundStatePartitionFunction` | "GroundState" | Weights using nuclear ground-state spin factors. |
| `RauscherThielemannPartitionFunction` | "RauscherThielemann" | Interpolates normalized g-factors per Rauscher & Thielemann. | | `RauscherThielemannPartitionFunction` | "RauscherThielemann" | Interpolates normalized g-factors per Rauscher & Thielemann. |
| `CompositePartitionFunction` | "Composite" | Combines multiple partition functions for situations where different partitions functions are used for different domains | | `CompositePartitionFunction` | "Composite" | Combines multiple partition functions for situations where different partitions functions are used for different domains |
### AutoDiff ### AutoDiff
One of the primary tasks any engine must accomplish is to report the jacobian One of the primary tasks any engine must accomplish is to report the jacobian
matrix of the system to the solver. `GraphEngine` uses `CppAD`, a C++ auto matrix of the system to the solver. `GraphEngine` uses `CppAD`, a C++ auto
differentiation library, to generate analytic jacobian matricies very differentiation library, to generate analytic jacobian matrices very
efficiently. efficiently.
@@ -376,14 +376,14 @@ All reactions in JINA Reaclib which only include reactants iron and lighter
were downloaded on June 17th, 2025 where the most recent documented change on were downloaded on June 17th, 2025 where the most recent documented change on
the JINA Reaclib site was on June 24th, 2021. the JINA Reaclib site was on June 24th, 2021.
All of thes reactions have been compiled into a header file which is then All of these reactions have been compiled into a header file which is then
statically compiled into the gridfire binaries (specifically into statically compiled into the gridfire binaries (specifically into
lib_reaction_reaclib.cpp.o). This does increase the binary size by a few MB; lib_reaction_reaclib.cpp.o). This does increase the binary size by a few MB;
however, the benafit is faster load times and more importantly no need for end however, the benefit is faster load times and more importantly no need for end
users to manage resource files. users to manage resource files.
If a developer wants to add new reaclib reactions we include a script at If a developer wants to add new reaclib reactions we include a script at
`utils/reaclib/format.py` which can injest a reaclib data file and produce the `utils/reaclib/format.py` which can ingest a reaclib data file and produce the
needed header file. More details on this process are included in needed header file. More details on this process are included in
`utils/reaclib/readme.md` `utils/reaclib/readme.md`
@@ -394,13 +394,13 @@ The GridFire engine supports multiple engine view strategies to adapt or
restrict network topology. Generally when extending GridFire the approach is restrict network topology. Generally when extending GridFire the approach is
likely to be one of adding new `EngineViews`. likely to be one of adding new `EngineViews`.
| View Name | Purpose | Algorithm / Reference | When to Use | | View Name | Purpose | Algorithm / Reference | When to Use |
|---------------------------------------|----------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------| |----------------------------------|-----------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------|
| AdaptiveEngineView | Dynamically culls low-flow species and reactions during runtime | Iterative flux thresholding to remove reactions below a flow threshold | Large networks to reduce computational cost | | AdaptiveEngineView | Dynamically culls low-flow species and reactions during runtime | Iterative flux thresholding to remove reactions below a flow threshold | Large networks to reduce computational cost |
| DefinedEngineView | Restricts the network to a user-specified subset of species and reactions | Static network masking based on user-provided species/reaction lists | Targeted pathway studies or code-to-code comparisons | | DefinedEngineView | Restricts the network to a user-specified subset of species and reactions | Static network masking based on user-provided species/reaction lists | Targeted pathway studies or code-to-code comparisons |
| FileDefinedEngineView | Load a defined engine view from a file using some parser | Same as DefinedEngineView but loads from a file | Same as DefinedEngineView | FileDefinedEngineView | Load a defined engine view from a file using some parser | Same as DefinedEngineView but loads from a file | Same as DefinedEngineView |
| MultiscalePartitioningEngineView | Partitions the network into fast and slow subsets based on reaction timescales | Network partitioning following Hix & Thielemann Silicon Burning I & II (DOI:10.1086/177016,10.1086/306692)| Stiff, multi-scale networks requiring tailored integration | | MultiscalePartitioningEngineView | Partitions the network into fast and slow subsets based on reaction timescales | Network partitioning following Hix & Thielemann Silicon Burning I & II (DOI:10.1086/177016,10.1086/306692) | Stiff, multi-scale networks requiring tailored integration |
| NetworkPrimingEngineView | Primes the network with an initial species or set of species for ignition studies| Single-species ignition and network priming | Investigations of ignition triggers or initial seed sensitivities| | NetworkPrimingEngineView | Primes the network with an initial species or set of species for ignition studies | Single-species ignition and network priming | Investigations of ignition triggers or initial seed sensitivities |
These engine views implement the common Engine interface and may be composed in These engine views implement the common Engine interface and may be composed in
any order to build complex network pipelines. New view types can be added by any order to build complex network pipelines. New view types can be added by
@@ -409,11 +409,11 @@ chain without modifying core engine code.
### A Note about composability ### A Note about composability
There are certain functions for which it is expected that a call to an engine There are certain functions for which it is expected that a call to an engine
view will propegate the result down the chain of engine views, eventually view will propagate the result down the chain of engine views, eventually
reaching the base engine (e.g. `DynamicEngine::update`). We do not strongly reaching the base engine (e.g. `DynamicEngine::update`). We do not strongly
enforce this as it is not hard to contrive a situation where that is not the enforce this as it is not hard to contrive a situation where that is not the
mose useful behavior; however, we do strongly encorage developers to think mose useful behavior; however, we do strongly encourage developers to think
carefully about passing along calls to base engine methods when implimenting carefully about passing along calls to base engine methods when implementing
new views. new views.
## Numerical Solver Strategies ## Numerical Solver Strategies
@@ -424,7 +424,7 @@ integration algorithms to be used interchangeably with any engine that
implements the `Engine` or `DynamicEngine` contract. implements the `Engine` or `DynamicEngine` contract.
### NetworkSolverStrategy&lt;EngineT&gt;: ### NetworkSolverStrategy&lt;EngineT&gt;:
All GridFire solvers impliment the abstract strategy templated by All GridFire solvers implement the abstract strategy templated by
`NetworkSolverStrategy` which enforces only that there is some `evaluate` `NetworkSolverStrategy` which enforces only that there is some `evaluate`
method with the following signature method with the following signature
@@ -436,7 +436,7 @@ abundances, temperature, density, and diagnostics.
### NetIn and NetOut ### NetIn and NetOut
GridFire solvers use a unified input and output type for their public interface GridFire solvers use a unified input and output type for their public interface
(though as developers will quickly learn, internally these are immediatly (though as developers will quickly learn, internally these are immediately
broken down into simpler data structures). All solvers expect a `NetIn` struct broken down into simpler data structures). All solvers expect a `NetIn` struct
for the input type to the `evaluate` method and return a `NetOut` struct. for the input type to the `evaluate` method and return a `NetOut` struct.
@@ -450,11 +450,11 @@ A `NetIn` struct contains
- The initial energy in the system in ergs (`NetIn::energy`) - The initial energy in the system in ergs (`NetIn::energy`)
>**Note:** It is often useful to set `NetIn::dt0` to something *very* small and >**Note:** It is often useful to set `NetIn::dt0` to something *very* small and
>let an iterative timestepper push the timestep up. Often for main sequence >let an iterative time stepper push the timestep up. Often for main sequence
>burning I use ~1e-12 for dt0 >burning I use ~1e-12 for dt0
>**Note:** The composition must be a `fourdst::composition::Composition` >**Note:** The composition must be a `fourdst::composition::Composition`
>object. This is made avalible through the `foursdt` library and the >object. This is made available through the `foursdt` library and the
>`fourdst/composition/Composition.h` header. `fourdst` is installed >`fourdst/composition/Composition.h` header. `fourdst` is installed
>automatically with GridFire >automatically with GridFire
@@ -479,14 +479,14 @@ A `NetOut` struct contains
`rosenbrock4<double>`, optimized for stiff reaction networks with adaptive step `rosenbrock4<double>`, optimized for stiff reaction networks with adaptive step
size control using configurable absolute and relative tolerances. size control using configurable absolute and relative tolerances.
- **Jacobian Assembly:** Asks the base engine for the Jacobian Matrix - **Jacobian Assembly:** Asks the base engine for the Jacobian Matrix
- **RHS Evaluation:** Assk the base engine for RHS of the abundance evolution - **RHS Evaluation:** Asks the base engine for RHS of the abundance evolution
equations equations
- **Linear Algebra:** Utilizes `Boost.uBLAS` for state vectors and dense Jacobian - **Linear Algebra:** Utilizes `Boost.uBLAS` for state vectors and dense Jacobian
matrices, with sparse access patterns supported via coordinate lists of nonzero matrices, with sparse access patterns supported via coordinate lists of nonzero
entries. entries.
- **Error Control and Logging:** Absolute and relative tolerance parameters - **Error Control and Logging:** Absolute and relative tolerance parameters
(`absTol`, `relTol`) are read from configuration; Quill loggers, which run in a (`absTol`, `relTol`) are read from configuration; Quill loggers, which run in a
seperate non blocking thread, capture integration diagnostics and step separate non blocking thread, capture integration diagnostics and step
statistics. statistics.
### Algorithmic Workflow in DirectNetworkSolver ### Algorithmic Workflow in DirectNetworkSolver
@@ -495,20 +495,20 @@ A `NetOut` struct contains
2. **Integrator Setup:** Construct the controlled Rosenbrock4 stepper and bind 2. **Integrator Setup:** Construct the controlled Rosenbrock4 stepper and bind
`RHSManager` and `JacobianFunctor`. `RHSManager` and `JacobianFunctor`.
3. **Adaptive Integration Loop:** 3. **Adaptive Integration Loop:**
- Perform `integrate_adaptive` advancing until `tMax`, catching any - Perform `integrate_adaptive` advancing until `tMax`, catching any
`StaleEngineTrigger` to repartition the network and update composition. `StaleEngineTrigger` to repartition the network and update composition.
- On each substep, observe states and log via `RHSManager::observe`. - On each substep, observe states and log via `RHSManager::observe`.
4. **Finalization:** Assemble final mass fractions, compute accumulated energy, 4. **Finalization:** Assemble final mass fractions, compute accumulated energy,
and populate `NetOut` with updated composition and diagnostics. and populate `NetOut` with updated composition and diagnostics.
### Future Solver Implementations ### Future Solver Implementations
- **Operator Splitting Solvers:** Strategies to decouple thermodynamics, - **Operator Splitting Solvers:** Strategies to decouple thermodynamics,
screening, and reaction substeps for performance on stiff, multi-scale screening, and reaction substeps for performance on stiff, multiscale
networks. networks.
- **GPU-Accelerated Solvers:** Planned use of CUDA/OpenCL backends for - **GPU-Accelerated Solvers:** Planned use of CUDA/OpenCL backends for
large-scale network integration. large-scale network integration.
- **Callback observer support:** Currently we use an observer built into our - **Callback observer support:** Currently we use an observer built into our
`RHSManager` (`RHSManager::observe`); however, we intend to inlucde support for `RHSManager` (`RHSManager::observe`); however, we intend to include support for
custom, user defined, observer method. custom, user defined, observer method.
These strategies can be developed by inheriting from `NetworkSolverStrategy` These strategies can be developed by inheriting from `NetworkSolverStrategy`
@@ -640,7 +640,7 @@ accuracy and performance.
### Callback Example ### Callback Example
Custom callback functions can be registered with any solver. Because it might make sense for each solver to provide Custom callback functions can be registered with any solver. Because it might make sense for each solver to provide
different context to the callback function, you should use the struct `gridfire::solver::<SolverName>::TimestepContext` different context to the callback function, you should use the struct `gridfire::solver::<SolverName>::TimestepContext`
as the argument type for the callback function. This struct contains all of the information provided by that solver to as the argument type for the callback function. This struct contains all the information provided by that solver to
the callback function. the callback function.
```c++ ```c++
@@ -703,6 +703,18 @@ int main(){
>**Note:** The order of species in the boost state vector (`ctx.state`) is **not guaranteed** to be any particular order run over run. Therefore, in order to reliably extract >**Note:** The order of species in the boost state vector (`ctx.state`) is **not guaranteed** to be any particular order run over run. Therefore, in order to reliably extract
> values from it, you **must** use the `getSpeciesIndex` method of the engine to get the index of the species you are interested in (these will always be in the same order). > values from it, you **must** use the `getSpeciesIndex` method of the engine to get the index of the species you are interested in (these will always be in the same order).
#### Callback Context
Since each solver may provide different context to the callback function, and it may be frustrating to refer to the
documentation every time, we also enforce that all solvers must implement a `descripe_callback_context` method which
returns a vector of tuples<string, string> where the first element is the name of the field and the second is its
datatype. It is on the developer to ensure that this information is accurate.
```c++
...
std::cout << solver.describe_callback_context() << std::endl;
```
## Python ## Python
The python bindings intentionally look **very** similar to the C++ code. The python bindings intentionally look **very** similar to the C++ code.
Generally all examples can be adapted to python by replacing includes of paths Generally all examples can be adapted to python by replacing includes of paths
@@ -712,8 +724,8 @@ with imports of modules such that
All GridFire C++ types have been bound and can be passed around as one would expect. All GridFire C++ types have been bound and can be passed around as one would expect.
### Common Workflow Examople ### Common Workflow Example
This example impliments the same logic as the above C++ example This example implements the same logic as the above C++ example
```python ```python
from gridfire.engine import GraphEngine, MultiscalePartitioningEngineView, AdaptiveEngineView from gridfire.engine import GraphEngine, MultiscalePartitioningEngineView, AdaptiveEngineView
from gridfire.solver import DirectNetworkSolver from gridfire.solver import DirectNetworkSolver