GridFire v0.7.6rc4.0
General Purpose Nuclear Network
Loading...
Searching...
No Matches
PyDynamicEngine Class Referencefinal

#include <py_engine.h>

Inheritance diagram for PyDynamicEngine:
[legend]
Collaboration diagram for PyDynamicEngine:
[legend]

Public Member Functions

const std::vector< fourdst::atomic::Species > & getNetworkSpecies (gridfire::engine::scratch::StateBlob &ctx) const override
 PyDynamicEngine Implementation ///.
 
std::expected< gridfire::engine::StepDerivatives< double >, gridfire::engine::EngineStatuscalculateRHSAndEnergy (gridfire::engine::scratch::StateBlob &ctx, const fourdst::composition::CompositionAbstract &comp, double T9, double rho, bool trust) const override
 Calculate the right-hand side (dY/dt) and energy generation.
 
gridfire::engine::NetworkJacobian generateJacobianMatrix (gridfire::engine::scratch::StateBlob &ctx, const fourdst::composition::CompositionAbstract &comp, double T9, double rho) const override
 Generate the Jacobian matrix for the current state.
 
gridfire::engine::NetworkJacobian generateJacobianMatrix (gridfire::engine::scratch::StateBlob &ctx, const fourdst::composition::CompositionAbstract &comp, double T9, double rho, const std::vector< fourdst::atomic::Species > &activeSpecies) const override
 Generate the Jacobian matrix for the current state using a subset of active species.
 
gridfire::engine::NetworkJacobian generateJacobianMatrix (gridfire::engine::scratch::StateBlob &ctx, const fourdst::composition::CompositionAbstract &comp, double T9, double rho, const gridfire::engine::SparsityPattern &sparsityPattern) const override
 Generate the Jacobian matrix for the current state with a specified sparsity pattern.
 
double calculateMolarReactionFlow (gridfire::engine::scratch::StateBlob &ctx, const gridfire::reaction::Reaction &reaction, const fourdst::composition::CompositionAbstract &comp, double T9, double rho) const override
 Calculate the molar reaction flow for a given reaction.
 
const gridfire::reaction::ReactionSetgetNetworkReactions (gridfire::engine::scratch::StateBlob &ctx) const override
 Get the set of logical reactions in the network.
 
std::expected< std::unordered_map< fourdst::atomic::Species, double >, gridfire::engine::EngineStatusgetSpeciesTimescales (gridfire::engine::scratch::StateBlob &ctx, const fourdst::composition::CompositionAbstract &comp, double T9, double rho) const override
 Compute timescales for all species in the network.
 
std::expected< std::unordered_map< fourdst::atomic::Species, double >, gridfire::engine::EngineStatusgetSpeciesDestructionTimescales (gridfire::engine::scratch::StateBlob &ctx, const fourdst::composition::CompositionAbstract &comp, double T9, double rho) const override
 Compute destruction timescales for all species in the network.
 
fourdst::composition::Composition project (gridfire::engine::scratch::StateBlob &ctx, const gridfire::NetIn &netIn) const override
 Update the thread local scratch pad state of a network.
 
gridfire::screening::ScreeningType getScreeningModel (gridfire::engine::scratch::StateBlob &ctx) const override
 Get the current electron screening model.
 
size_t getSpeciesIndex (gridfire::engine::scratch::StateBlob &ctx, const fourdst::atomic::Species &species) const override
 Get the index of a species in the network.
 
gridfire::engine::PrimingReport primeEngine (gridfire::engine::scratch::StateBlob &ctx, const gridfire::NetIn &netIn) const override
 Prime the engine with initial conditions.
 
gridfire::engine::EnergyDerivatives calculateEpsDerivatives (gridfire::engine::scratch::StateBlob &ctx, const fourdst::composition::CompositionAbstract &comp, double T9, double rho) const override
 Calculate the derivatives of the energy generation rate with respect to T and rho.
 
fourdst::composition::Composition collectComposition (gridfire::engine::scratch::StateBlob &ctx, const fourdst::composition::CompositionAbstract &comp, double T9, double rho) const override
 Recursively collect composition from current engine and any sub engines if they exist.
 
gridfire::engine::SpeciesStatus getSpeciesStatus (gridfire::engine::scratch::StateBlob &ctx, const fourdst::atomic::Species &species) const override
 Get the status of a species in the network.
 
std::optional< gridfire::engine::StepDerivatives< double > > getMostRecentRHSCalculation (gridfire::engine::scratch::StateBlob &ctx) const override
 
std::unique_ptr< gridfire::engine::scratch::StateBlobconstructStateBlob (const gridfire::engine::scratch::StateBlob *blob) const override
 
- Public Member Functions inherited from gridfire::engine::DynamicEngine
virtual reaction::ReactionSet getInactiveNetworkReactions (scratch::StateBlob &ctx) const
 Get the set of inactive reactions in the network.
 
virtual double getInactiveReactionMolarReactionFlow (scratch::StateBlob &ctx, const reaction::Reaction &reaction, const fourdst::composition::CompositionAbstract &comp, const double T9, const double rho) const
 
- Public Member Functions inherited from gridfire::engine::Engine
virtual ~Engine ()=default
 Virtual destructor.
 

Private Attributes

std::vector< fourdst::atomic::Species > m_species_cache
 

Member Function Documentation

◆ calculateEpsDerivatives()

gridfire::engine::EnergyDerivatives PyDynamicEngine::calculateEpsDerivatives ( gridfire::engine::scratch::StateBlob & ctx,
const fourdst::composition::CompositionAbstract & comp,
double T9,
double rho ) const
nodiscardoverridevirtual

Calculate the derivatives of the energy generation rate with respect to T and rho.

Parameters
compComposition object containing current abundances.
T9Temperature in units of 10^9 K.
rhoDensity in g/cm^3.
Returns
EnergyDerivatives containing dEps/dT and dEps/dRho.

This method computes the partial derivatives of the specific nuclear energy generation rate with respect to temperature and density for the current state.

Implements gridfire::engine::DynamicEngine.

◆ calculateMolarReactionFlow()

double PyDynamicEngine::calculateMolarReactionFlow ( gridfire::engine::scratch::StateBlob & ctx,
const gridfire::reaction::Reaction & reaction,
const fourdst::composition::CompositionAbstract & comp,
double T9,
double rho ) const
overridevirtual

Calculate the molar reaction flow for a given reaction.

Parameters
ctxThe scratchpad context for the current state.
reactionThe reaction for which to calculate the flow.
compComposition object containing current abundances.
T9Temperature in units of 10^9 K.
rhoDensity in g/cm^3.
Returns
Molar flow rate for the reaction (e.g., mol/g/s).

This method computes the net rate at which the given reaction proceeds under the current state.

Implements gridfire::engine::DynamicEngine.

◆ calculateRHSAndEnergy()

std::expected< gridfire::engine::StepDerivatives< double >, gridfire::engine::EngineStatus > PyDynamicEngine::calculateRHSAndEnergy ( gridfire::engine::scratch::StateBlob & ,
const fourdst::composition::CompositionAbstract & comp,
double T9,
double rho,
bool trust ) const
overridevirtual

Calculate the right-hand side (dY/dt) and energy generation.

Parameters
compComposition object containing current abundances.
T9Temperature in units of 10^9 K.
rhoDensity in g/cm^3.
trustIf true, indicates that the engine should trust the passed composition has already been collected.
Returns
expected<StepDerivatives<double>> containing either dY/dt and energy generation rate or a stale engine error indicating that the engine must be updated

This function must be implemented by derived classes to compute the time derivatives of all species and the specific nuclear energy generation rate for the current state.

Implements gridfire::engine::Engine.

◆ collectComposition()

fourdst::composition::Composition PyDynamicEngine::collectComposition ( gridfire::engine::scratch::StateBlob & ctx,
const fourdst::composition::CompositionAbstract & comp,
double T9,
double rho ) const
overridevirtual

Recursively collect composition from current engine and any sub engines if they exist.

If species i is defined in comp and in any sub engine or self composition then the molar abundance of species i in the returned composition will be that defined in comp. If there are species defined in sub engine compositions which are not defined in comp then their molar abundances will be based on the reported values from each sub engine.

Note
It is up to each engine to decide how to handle filling in the return composition.
These methods return an unfinalized composition which must then be finalized by the caller
Parameters
ctxThe scratchpad context for the current state.
compInput composition to "normalize".
T9
rho
Returns
An updated composition which is a superset of comp. This may contain species which were culled, for example, by either QSE partitioning or reaction flow rate culling

Implements gridfire::engine::DynamicEngine.

◆ constructStateBlob()

std::unique_ptr< gridfire::engine::scratch::StateBlob > PyDynamicEngine::constructStateBlob ( const gridfire::engine::scratch::StateBlob * blob) const
overridevirtual

◆ generateJacobianMatrix() [1/3]

gridfire::engine::NetworkJacobian PyDynamicEngine::generateJacobianMatrix ( gridfire::engine::scratch::StateBlob & ctx,
const fourdst::composition::CompositionAbstract & comp,
double T9,
double rho ) const
overridevirtual

Generate the Jacobian matrix for the current state.

Parameters
ctxThe scratchpad context for the current state.
compComposition object containing current abundances.
T9Temperature in units of 10^9 K.
rhoDensity in g/cm^3.

This method must compute and store the Jacobian matrix (∂(dY/dt)_i/∂Y_j) for the current state. The matrix can then be accessed via getJacobianMatrixEntry().

Implements gridfire::engine::DynamicEngine.

◆ generateJacobianMatrix() [2/3]

gridfire::engine::NetworkJacobian PyDynamicEngine::generateJacobianMatrix ( gridfire::engine::scratch::StateBlob & ctx,
const fourdst::composition::CompositionAbstract & comp,
double T9,
double rho,
const gridfire::engine::SparsityPattern & sparsityPattern ) const
overridevirtual

Generate the Jacobian matrix for the current state with a specified sparsity pattern.

Parameters
ctxGet the scratchpad context for the current state.
compComposition object containing current abundances.
T9Temperature in units of 10^9 K.
rhoDensity in g/cm^3.
sparsityPatternThe sparsity pattern to use for the Jacobian matrix.

This method must compute and store the Jacobian matrix (∂(dY/dt)_i/∂Y_j) for the current state using automatic differentiation, taking into account the provided sparsity pattern. The matrix can then be accessed via getJacobianMatrixEntry().

See also
getJacobianMatrixEntry()

Implements gridfire::engine::DynamicEngine.

◆ generateJacobianMatrix() [3/3]

gridfire::engine::NetworkJacobian PyDynamicEngine::generateJacobianMatrix ( gridfire::engine::scratch::StateBlob & ctx,
const fourdst::composition::CompositionAbstract & comp,
double T9,
double rho,
const std::vector< fourdst::atomic::Species > & activeSpecies ) const
overridevirtual

Generate the Jacobian matrix for the current state using a subset of active species.

Parameters
ctxThe scratchpad context for the current state.
compComposition object containing current abundances.
T9Temperature in units of 10^9 K.
rhoDensity in g/cm^3.
activeSpeciesThe set of species to include in the Jacobian calculation.

This method must compute and store the Jacobian matrix (∂(dY/dt)_i/∂Y_j) for the current state, considering only the specified subset of active species. The matrix can then be accessed via getJacobianMatrixEntry().

Implements gridfire::engine::DynamicEngine.

◆ getMostRecentRHSCalculation()

std::optional< gridfire::engine::StepDerivatives< double > > PyDynamicEngine::getMostRecentRHSCalculation ( gridfire::engine::scratch::StateBlob & ctx) const
overridevirtual

◆ getNetworkReactions()

const gridfire::reaction::ReactionSet & PyDynamicEngine::getNetworkReactions ( gridfire::engine::scratch::StateBlob & ctx) const
overridevirtual

Get the set of logical reactions in the network.

Returns
Reference to the LogicalReactionSet containing all reactions.

Implements gridfire::engine::DynamicEngine.

◆ getNetworkSpecies()

const std::vector< fourdst::atomic::Species > & PyDynamicEngine::getNetworkSpecies ( gridfire::engine::scratch::StateBlob & ctx) const
overridevirtual

PyDynamicEngine Implementation ///.

Implements gridfire::engine::Engine.

◆ getScreeningModel()

gridfire::screening::ScreeningType PyDynamicEngine::getScreeningModel ( gridfire::engine::scratch::StateBlob & ctx) const
overridevirtual

Get the current electron screening model.

Parameters
ctxThe scratchpad context for the current state.
Returns
The currently active screening model type.
Usage Example:
screening::ScreeningType currentModel = myEngine.getScreeningModel();

Implements gridfire::engine::DynamicEngine.

◆ getSpeciesDestructionTimescales()

std::expected< std::unordered_map< fourdst::atomic::Species, double >, gridfire::engine::EngineStatus > PyDynamicEngine::getSpeciesDestructionTimescales ( gridfire::engine::scratch::StateBlob & ctx,
const fourdst::composition::CompositionAbstract & comp,
double T9,
double rho ) const
overridevirtual

Compute destruction timescales for all species in the network.

Parameters
ctxThe scratchpad context for the current state.
compComposition object containing current abundances.
T9Temperature in units of 10^9 K.
rhoDensity in g/cm^3.
Returns
Map from Species to their destruction timescales (s).

This method estimates the destruction timescale for each species, which can be useful for understanding reaction flows and equilibrium states.

Implements gridfire::engine::DynamicEngine.

◆ getSpeciesIndex()

size_t PyDynamicEngine::getSpeciesIndex ( gridfire::engine::scratch::StateBlob & ctx,
const fourdst::atomic::Species & species ) const
overridevirtual

Get the index of a species in the network.

Parameters
ctxThe scratchpad context for the current state.
speciesThe species to look up.

This method allows querying the index of a specific species in the engine's internal representation. It is useful for accessing species data efficiently.

Implements gridfire::engine::DynamicEngine.

◆ getSpeciesStatus()

gridfire::engine::SpeciesStatus PyDynamicEngine::getSpeciesStatus ( gridfire::engine::scratch::StateBlob & ctx,
const fourdst::atomic::Species & species ) const
overridevirtual

Get the status of a species in the network.

Parameters
speciesThe species to check.
Returns
SpeciesStatus indicating whether the species is active, inactive, or culled.

This method allows querying the current status of a specific species within the engine's network.

Implements gridfire::engine::DynamicEngine.

◆ getSpeciesTimescales()

std::expected< std::unordered_map< fourdst::atomic::Species, double >, gridfire::engine::EngineStatus > PyDynamicEngine::getSpeciesTimescales ( gridfire::engine::scratch::StateBlob & ctx,
const fourdst::composition::CompositionAbstract & comp,
double T9,
double rho ) const
overridevirtual

Compute timescales for all species in the network.

Parameters
compComposition object containing current abundances.
T9Temperature in units of 10^9 K.
rhoDensity in g/cm^3.
Returns
Map from Species to their characteristic timescales (s).

This method estimates the timescale for abundance change of each species, which can be used for timestep control, diagnostics, and reaction network culling.

Implements gridfire::engine::DynamicEngine.

◆ primeEngine()

gridfire::engine::PrimingReport PyDynamicEngine::primeEngine ( gridfire::engine::scratch::StateBlob & ctx,
const gridfire::NetIn & netIn ) const
overridevirtual

Prime the engine with initial conditions.

Parameters
ctxThe scratchpad context for the current state.
netInThe input conditions for the network.
Returns
PrimingReport containing information about the priming process.

This method is used to prepare the engine for calculations by setting up initial conditions, reactions, and species. It may involve compiling reaction rates, initializing internal data structures, and performing any necessary pre-computation.

Implements gridfire::engine::DynamicEngine.

◆ project()

fourdst::composition::Composition PyDynamicEngine::project ( gridfire::engine::scratch::StateBlob & ctx,
const gridfire::NetIn & netIn ) const
overridevirtual

Update the thread local scratch pad state of a network.

Parameters
ctxThe scratchpad context for the current state.
netInA struct containing the current network input, such as temperature, density, and composition.

This method is intended to be implemented by derived classes to update their internal state based on the provided network conditions. For example, an adaptive engine might use this to re-evaluate which reactions and species are active. For other engines that do not support manually updating, this method might do nothing.

Usage Example:
NetIn input = { ... };
myEngine.update(input);
Postcondition
The internal state of the engine is updated to reflect the new conditions.

Implements gridfire::engine::DynamicEngine.

Member Data Documentation

◆ m_species_cache

std::vector<fourdst::atomic::Species> PyDynamicEngine::m_species_cache
mutableprivate

The documentation for this class was generated from the following files: