Loading...
Searching...
No Matches
gridfire::DefinedEngineView Class Reference

`#include <engine_defined.h>`

Inheritance diagram for gridfire::DefinedEngineView:
[legend]
Collaboration diagram for gridfire::DefinedEngineView:
[legend]

## Public Member Functions

| DefinedEngineView (const std::vector< std::string > &peNames, GraphEngine &baseEngine)
const DynamicEngine & | getBaseEngine () const override
| Get the base engine associated with this defined engine view.
const std::vector< fourdst::atomic::Species > & | getNetworkSpecies () const override
| Gets the list of active species in the network defined by the file.
std::expected< StepDerivatives< double >, expectations::StaleEngineError > | calculateRHSAndEnergy (const fourdst::composition::Composition &comp, double T9, double rho) const override
| Calculates the right-hand side (dY/dt) and energy generation for the active species.
EnergyDerivatives | calculateEpsDerivatives (const fourdst::composition::Composition &comp, double T9, double rho) const override
| Calculate the derivatives of the energy generation rate with respect to T and rho.
void | generateJacobianMatrix (const fourdst::composition::Composition &comp, double T9, double rho) const override
| Generates the Jacobian matrix for the active species.
void | generateJacobianMatrix (const fourdst::composition::Composition &comp, double T9, double rho, const std::vector< fourdst::atomic::Species > &activeSpecies) const override
| Generates the Jacobian matrix for the active species.
void | generateJacobianMatrix (const fourdst::composition::Composition &comp, double T9, double rho, const SparsityPattern &sparsityPattern) const override
| Generates the Jacobian matrix for a given sparsity pattern.
double | getJacobianMatrixEntry (const fourdst::atomic::Species &rowSpecies, const fourdst::atomic::Species &colSpecies) const override
| Gets an entry from the Jacobian matrix for the active species.
void | generateStoichiometryMatrix () override
| Generates the stoichiometry matrix for the active reactions and species.
int | getStoichiometryMatrixEntry (const fourdst::atomic::Species &species, const reaction::Reaction &reaction) const override
| Gets an entry from the stoichiometry matrix for the active species and reactions.
double | calculateMolarReactionFlow (const reaction::Reaction &reaction, const fourdst::composition::Composition &comp, double T9, double rho) const override
| Calculates the molar reaction flow for a given reaction in the active network.
const reaction::ReactionSet & | getNetworkReactions () const override
| Gets the set of active logical reactions in the network.
void | setNetworkReactions (const reaction::ReactionSet &reactions) override
std::expected< std::unordered_map< fourdst::atomic::Species, double >, expectations::StaleEngineError > | getSpeciesTimescales (const fourdst::composition::Composition &comp, double T9, double rho) const override
| Computes timescales for all active species in the network.
std::expected< std::unordered_map< fourdst::atomic::Species, double >, expectations::StaleEngineError > | getSpeciesDestructionTimescales (const fourdst::composition::Composition &comp, double T9, double rho) const override
fourdst::composition::Composition | update (const NetIn &netIn) override
| Updates the engine view if it is marked as stale.
bool | isStale (const NetIn &netIn) override
void | setScreeningModel (screening::ScreeningType model) override
| Sets the screening model for the base engine.
screening::ScreeningType | getScreeningModel () const override
| Gets the screening model from the base engine.
size_t | getSpeciesIndex (const fourdst::atomic::Species &species) const override
| Get the index of a species in the network.
std::vector< double > | mapNetInToMolarAbundanceVector (const NetIn &netIn) const override
| Map a NetIn object to a vector of molar abundances.
PrimingReport | primeEngine (const NetIn &netIn) override
| Prime the engine with initial conditions.
fourdst::composition::Composition | collectComposition (fourdst::composition::Composition &comp) const override
| Recursively collect composition from current engine and any sub engines if they exist.
Public Member Functions inherited from gridfire::DynamicEngine
virtual BuildDepthType | getDepth () const
| Get the depth of the network.
virtual void | rebuild (const fourdst::composition::Composition &comp, BuildDepthType depth)
| Rebuild the network with a specified depth.
Public Member Functions inherited from gridfire::Engine
virtual | ~Engine ()=default
| Virtual destructor.
Public Member Functions inherited from gridfire::EngineView< DynamicEngine >
virtual | ~EngineView ()=default
| Virtual destructor.

## Protected Attributes

bool | m_isStale = true
GraphEngine & | m_baseEngine

## Private Member Functions

std::vector< size_t > | constructSpeciesIndexMap () const
| Constructs the species index map.
std::vector< size_t > | constructReactionIndexMap () const
| Constructs the reaction index map.
std::vector< double > | mapViewToFull (const std::vector< double > &defined) const
| Maps a vector of culled abundances to a vector of full abundances.
std::vector< double > | mapFullToView (const std::vector< double > &full) const
| Maps a vector of full abundances to a vector of culled abundances.
size_t | mapViewToFullSpeciesIndex (size_t definedSpeciesIndex) const
| Maps a culled species index to a full species index.
size_t | mapViewToFullReactionIndex (size_t definedReactionIndex) const
| Maps a culled reaction index to a full reaction index.
void | validateNetworkState () const
void | collect (const std::vector< std::string > &peNames)

## Private Attributes

quill::Logger * | m_logger = fourdst::logging::LogManager::getInstance().getLogger("log")
| Active species in the defined engine.
std::set< fourdst::atomic::Species > | m_activeSpecies
| Cache for the active species vector to avoid dangling references.
std::optional< std::vector< fourdst::atomic::Species > > | m_activeSpeciesVectorCache = std::nullopt
| Active reactions in the defined engine.
reaction::ReactionSet | m_activeReactions
| Maps indices of active species to indices in the full network.
std::vector< size_t > | m_speciesIndexMap
| Maps indices of active reactions to indices in the full network.
std::vector< size_t > | m_reactionIndexMap

## Constructor & Destructor Documentation

## DefinedEngineView()

gridfire::DefinedEngineView::DefinedEngineView | ( | const std::vector< std::string > & | peNames,
|  | GraphEngine & | baseEngine )

## Member Function Documentation

## calculateEpsDerivatives()

EnergyDerivatives gridfire::DefinedEngineView::calculateEpsDerivatives | ( | const fourdst::composition::Composition & | comp,
|  | double | T9,
|  | double | rho ) const

nodiscardoverridevirtual

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

Parameters

  comp | Composition object containing current abundances.
  T9 | Temperature in units of 10^9 K.
  rho | Density 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::DynamicEngine.

## calculateMolarReactionFlow()

double gridfire::DefinedEngineView::calculateMolarReactionFlow | ( | const reaction::Reaction & | reaction,
|  | const fourdst::composition::Composition & | comp,
|  | double | T9,
|  | double | rho ) const

nodiscardoverridevirtual

Calculates the molar reaction flow for a given reaction in the active network.

Parameters

  reaction | The reaction for which to calculate the flow.
  comp | A Composition object containing the current composition of the system
  T9 | Temperature in units of 10^9 K.
  rho | Density in g/cm^3.

Returns
  Molar flow rate for the reaction (e.g., mol/g/s).

Exceptions

  std::runtime_error | If the view is stale or if the reaction is not in the active set.

Implements gridfire::DynamicEngine.

## calculateRHSAndEnergy()

std::expected< StepDerivatives< double >, expectations::StaleEngineError > gridfire::DefinedEngineView::calculateRHSAndEnergy | ( | const fourdst::composition::Composition & | comp,
|  | double | T9,
|  | double | rho ) const

nodiscardoverridevirtual

Calculates the right-hand side (dY/dt) and energy generation for the active species.

Parameters

  comp | A Composition object containing the current composition of the system
  T9 | The temperature in units of 10^9 K.
  rho | The density in g/cm^3.

Returns
  A StepDerivatives struct containing the derivatives of the active species and the nuclear energy generation rate.

Exceptions

  std::runtime_error | If the view is stale (i.e., `update()` has not been called after `setNetworkFile()`).

Implements gridfire::Engine.

## collect()

void gridfire::DefinedEngineView::collect | ( | const std::vector< std::string > & | peNames | ) |

private

## collectComposition()

fourdst::composition::Composition gridfire::DefinedEngineView::collectComposition | ( | fourdst::composition::Composition & | comp | ) | 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

  comp | Input composition to "normalize".

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::DynamicEngine.

## constructReactionIndexMap()

std::vector< size_t > gridfire::DefinedEngineView::constructReactionIndexMap | ( |  | ) | const

nodiscardprivate

Constructs the reaction index map.

Returns
  A vector mapping defined reaction indices to full reaction indices.

This method creates a map from the indices of the active reactions to the indices of the corresponding reactions in the full network.

Exceptions

  std::runtime_error | If an active reaction is not found in the base engine's reaction list.

## constructSpeciesIndexMap()

std::vector< size_t > gridfire::DefinedEngineView::constructSpeciesIndexMap | ( |  | ) | const

nodiscardprivate

Constructs the species index map.

Returns
  A vector mapping defined species indices to full species indices.

This method creates a map from the indices of the active species to the indices of the corresponding species in the full network.

Exceptions

  std::runtime_error | If an active species is not found in the base engine's species list.

## generateJacobianMatrix() [1/3]

void gridfire::DefinedEngineView::generateJacobianMatrix | ( | const fourdst::composition::Composition & | comp,
|  | double | T9,
|  | double | rho ) const

overridevirtual

Generates the Jacobian matrix for the active species.

Parameters

  comp | A Composition object containing the current composition of the system
  T9 | The temperature in units of 10^9 K.
  rho | The density in g/cm^3.

Exceptions

  std::runtime_error | If the view is stale.

Implements gridfire::DynamicEngine.

## generateJacobianMatrix() [2/3]

void gridfire::DefinedEngineView::generateJacobianMatrix | ( | const fourdst::composition::Composition & | comp,
|  | double | T9,
|  | double | rho,
|  | const SparsityPattern & | sparsityPattern ) const

overridevirtual

Generates the Jacobian matrix for a given sparsity pattern.

Parameters

  comp | A Composition object containing the current composition of the system
  T9 | The temperature in units of 10^9 K.
  rho | The density in g/cm^3.
  sparsityPattern | The sparsity pattern to use for the Jacobian matrix.

Exceptions

  std::runtime_error | If the view is stale.

Implements gridfire::DynamicEngine.

## generateJacobianMatrix() [3/3]

void gridfire::DefinedEngineView::generateJacobianMatrix | ( | const fourdst::composition::Composition & | comp,
|  | double | T9,
|  | double | rho,
|  | const std::vector< fourdst::atomic::Species > & | activeSpecies ) const

overridevirtual

Generates the Jacobian matrix for the active species.

Parameters

  comp | A Composition object containing the current composition of the system
  T9 | The temperature in units of 10^9 K.
  rho | The density in g/cm^3.
  activeSpecies | The vector of active species to include in the Jacobian.

Exceptions

  std::runtime_error | If the view is stale.

Implements gridfire::DynamicEngine.

## generateStoichiometryMatrix()

void gridfire::DefinedEngineView::generateStoichiometryMatrix | ( |  | ) |

overridevirtual

Generates the stoichiometry matrix for the active reactions and species.

Exceptions

  std::runtime_error | If the view is stale.

Implements gridfire::DynamicEngine.

## getBaseEngine()

const DynamicEngine & gridfire::DefinedEngineView::getBaseEngine | ( |  | ) | const

nodiscardoverridevirtual

Get the base engine associated with this defined engine view.

Returns
  A const reference to the base DynamicEngine.

Implements gridfire::EngineView< DynamicEngine >.

## getJacobianMatrixEntry()

double gridfire::DefinedEngineView::getJacobianMatrixEntry | ( | const fourdst::atomic::Species & | rowSpecies,
|  | const fourdst::atomic::Species & | colSpecies ) const

nodiscardoverridevirtual

Gets an entry from the Jacobian matrix for the active species.

Parameters

  rowSpecies | The species corresponding to the row index.
  colSpecies | The species corresponding to the column index.

Returns
  The value of the Jacobian matrix at (row species index, col species index).

Exceptions

  std::runtime_error | If the view is stale.
  std::out_of_range | If an index is out of bounds.

Implements gridfire::DynamicEngine.

## getNetworkReactions()

const reaction::ReactionSet & gridfire::DefinedEngineView::getNetworkReactions | ( |  | ) | const

nodiscardoverridevirtual

Gets the set of active logical reactions in the network.

Returns
  Reference to the LogicalReactionSet containing all active reactions.

Exceptions

  std::runtime_error | If the view is stale.

Implements gridfire::DynamicEngine.

## getNetworkSpecies()

const std::vector< Species > & gridfire::DefinedEngineView::getNetworkSpecies | ( |  | ) | const

nodiscardoverridevirtual

Gets the list of active species in the network defined by the file.

Returns
  A const reference to the vector of active species.

Implements gridfire::Engine.

## getScreeningModel()

screening::ScreeningType gridfire::DefinedEngineView::getScreeningModel | ( |  | ) | const

nodiscardoverridevirtual

Gets the screening model from the base engine.

Returns
  The current screening model type.

Implements gridfire::DynamicEngine.

## getSpeciesDestructionTimescales()

std::expected< std::unordered_map< Species, double >, expectations::StaleEngineError > gridfire::DefinedEngineView::getSpeciesDestructionTimescales | ( | const fourdst::composition::Composition & | comp,
|  | double | T9,
|  | double | rho ) const

nodiscardoverridevirtual

Implements gridfire::DynamicEngine.

## getSpeciesIndex()

size_t gridfire::DefinedEngineView::getSpeciesIndex | ( | const fourdst::atomic::Species & | species | ) | const

nodiscardoverridevirtual

Get the index of a species in the network.

Parameters

  species | The 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::DynamicEngine.

## getSpeciesTimescales()

std::expected< std::unordered_map< Species, double >, expectations::StaleEngineError > gridfire::DefinedEngineView::getSpeciesTimescales | ( | const fourdst::composition::Composition & | comp,
|  | double | T9,
|  | double | rho ) const

nodiscardoverridevirtual

Computes timescales for all active species in the network.

Parameters

  comp | A Composition object containing the current composition of the system
  T9 | Temperature in units of 10^9 K.
  rho | Density in g/cm^3.

Returns
  Map from Species to their characteristic timescales (s).

Exceptions

  std::runtime_error | If the view is stale.

Implements gridfire::DynamicEngine.

## getStoichiometryMatrixEntry()

int gridfire::DefinedEngineView::getStoichiometryMatrixEntry | ( | const fourdst::atomic::Species & | species,
|  | const reaction::Reaction & | reaction ) const

nodiscardoverridevirtual

Gets an entry from the stoichiometry matrix for the active species and reactions.

Parameters

  species | The species for which to get the stoichiometric coefficient.
  reaction | The reaction for which to get the stoichiometric coefficient.

Returns
  The stoichiometric coefficient for the given species and reaction.

Exceptions

  std::runtime_error | If the view is stale.
  std::out_of_range | If an index is out of bounds.

Implements gridfire::DynamicEngine.

## isStale()

bool gridfire::DefinedEngineView::isStale | ( | const NetIn & | netIn | ) |

overridevirtual

Implements gridfire::DynamicEngine.

## mapFullToView()

std::vector< double > gridfire::DefinedEngineView::mapFullToView | ( | const std::vector< double > & | full | ) | const

nodiscardprivate

Maps a vector of full abundances to a vector of culled abundances.

Parameters

  full | A vector of abundances for the full network.

Returns
  A vector of abundances for the active species, with the abundances of the active species copied from the full vector.

## mapNetInToMolarAbundanceVector()

std::vector< double > gridfire::DefinedEngineView::mapNetInToMolarAbundanceVector | ( | const NetIn & | netIn | ) | const

nodiscardoverridevirtual

Map a NetIn object to a vector of molar abundances.

Parameters

  netIn | The input conditions for the network.

Returns
  A vector of molar abundances corresponding to the species in the network.

This method converts the input conditions into a vector of molar abundances, which can be used for further calculations or diagnostics.

Implements gridfire::DynamicEngine.

## mapViewToFull()

std::vector< double > gridfire::DefinedEngineView::mapViewToFull | ( | const std::vector< double > & | defined | ) | const

nodiscardprivate

Maps a vector of culled abundances to a vector of full abundances.

Parameters

  defined | A vector of abundances for the active species.

Returns
  A vector of abundances for the full network, with the abundances of the active species copied from the defined vector.

## mapViewToFullReactionIndex()

size_t gridfire::DefinedEngineView::mapViewToFullReactionIndex | ( | size_t | definedReactionIndex | ) | const

nodiscardprivate

Maps a culled reaction index to a full reaction index.

Parameters

  definedReactionIndex | The index of the reaction in the defined reaction list.

Returns
  The index of the corresponding reaction in the full network.

Exceptions

  std::out_of_range | If the defined index is out of bounds for the reaction index map.

## mapViewToFullSpeciesIndex()

size_t gridfire::DefinedEngineView::mapViewToFullSpeciesIndex | ( | size_t | definedSpeciesIndex | ) | const

nodiscardprivate

Maps a culled species index to a full species index.

Parameters

  definedSpeciesIndex | The index of the species in the defined species list.

Returns
  The index of the corresponding species in the full network.

Exceptions

  std::out_of_range | If the defined index is out of bounds for the species index map.

## primeEngine()

PrimingReport gridfire::DefinedEngineView::primeEngine | ( | const NetIn & | netIn | ) |

nodiscardoverridevirtual

Prime the engine with initial conditions.

Parameters

  netIn | The 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::DynamicEngine.

## setNetworkReactions()

void gridfire::DefinedEngineView::setNetworkReactions | ( | const reaction::ReactionSet & | reactions | ) |

overridevirtual

Implements gridfire::DynamicEngine.

## setScreeningModel()

void gridfire::DefinedEngineView::setScreeningModel | ( | screening::ScreeningType | model | ) |

overridevirtual

Sets the screening model for the base engine.

Parameters

  model | The screening model to set.

Implements gridfire::DynamicEngine.

## update()

fourdst::composition::Composition gridfire::DefinedEngineView::update | ( | const NetIn & | netIn | ) |

overridevirtual

Updates the engine view if it is marked as stale.

This method checks if the view is stale (e.g., after `setNetworkFile` was called). If it is, it rebuilds the active network from the currently set file. The `netIn` parameter is not used by this implementation but is required by the interface.

Parameters

  netIn | The current network input (unused).

Postcondition
  If the view was stale, it is rebuilt and is no longer stale.

Implements gridfire::DynamicEngine.

## validateNetworkState()

void gridfire::DefinedEngineView::validateNetworkState | ( |  | ) | const

private

## Member Data Documentation

## m_activeReactions

reaction::ReactionSet gridfire::DefinedEngineView::m_activeReactions

private

Maps indices of active species to indices in the full network.

## m_activeSpecies

std::set<fourdst::atomic::Species> gridfire::DefinedEngineView::m_activeSpecies

private

Cache for the active species vector to avoid dangling references.

## m_activeSpeciesVectorCache

std::optional<std::vector<fourdst::atomic::Species> > gridfire::DefinedEngineView::m_activeSpeciesVectorCache = std::nullopt

mutableprivate

Active reactions in the defined engine.

## m_baseEngine

GraphEngine& gridfire::DefinedEngineView::m_baseEngine

protected

## m_isStale

bool gridfire::DefinedEngineView::m_isStale = true

protected

## m_logger

quill::Logger* gridfire::DefinedEngineView::m_logger = fourdst::logging::LogManager::getInstance().getLogger("log")

private

Active species in the defined engine.

Logger instance for trace and debug information.

## m_reactionIndexMap

std::vector<size_t> gridfire::DefinedEngineView::m_reactionIndexMap

private

## m_speciesIndexMap

std::vector<size_t> gridfire::DefinedEngineView::m_speciesIndexMap

private

Maps indices of active reactions to indices in the full network.

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

- src/include/gridfire/engine/views/engine_defined.h
- src/lib/engine/views/engine_defined.cpp