GridFire 0.0.1a General Purpose Nuclear Network

Loading...
Searching...
No Matches
py_engine.h
Go to the documentation of this file.
1#pragma once
2
3#include "gridfire/engine/engine.h"
4#include "gridfire/expectations/expected_engine.h"
5
6#include "fourdst/composition/atomicSpecies.h"
7
8#include <vector>
9#include <expected>
10
11
12 class PyEngine final : public gridfire::Engine {
13 public:
14 const std::vector<fourdst::atomic::Species>& getNetworkSpecies() const override;
15 std::expected<gridfire::StepDerivatives<double>,gridfire::expectations::StaleEngineError> calculateRHSAndEnergy(const std::vector<double> &Y, double T9, double rho) const override;
16 private:
17 mutable std::vector<fourdst::atomic::Species> m_species_cache;
18};
19
20 class PyDynamicEngine final : public gridfire::DynamicEngine {
21 public:
22 const std::vector<fourdst::atomic::Species>& getNetworkSpecies() const override;
23 std::expected<gridfire::StepDerivatives<double>,gridfire::expectations::StaleEngineError> calculateRHSAndEnergy(const std::vector<double> &Y, double T9, double rho) const override;
24 void generateJacobianMatrix(const std::vector<double> &Y_dynamic, double T9, double rho) const override;
25 void generateJacobianMatrix(const std::vector<double> &Y_dynamic, double T9, double rho, const gridfire::SparsityPattern &sparsityPattern) const override;
26 double getJacobianMatrixEntry(int i, int j) const override;
27 void generateStoichiometryMatrix() override;
28 int getStoichiometryMatrixEntry(int speciesIndex, int reactionIndex) const override;
29 double calculateMolarReactionFlow(const gridfire::reaction::Reaction &reaction, const std::vector<double> &Y, double T9, double rho) const override;
30 const gridfire::reaction::LogicalReactionSet& getNetworkReactions() const override;
31 void setNetworkReactions(const gridfire::reaction::LogicalReactionSet& reactions) override;
32 std::expected<std::unordered_map<fourdst::atomic::Species, double>, gridfire::expectations::StaleEngineError> getSpeciesTimescales(const std::vector<double> &Y, double T9, double rho) const override;
33 std::expected<std::unordered_map<fourdst::atomic::Species, double>, gridfire::expectations::StaleEngineError> getSpeciesDestructionTimescales(const std::vector<double> &Y, double T9, double rho) const override;
34 fourdst::composition::Composition update(const gridfire::NetIn &netIn) override;
35 bool isStale(const gridfire::NetIn &netIn) override;
36 void setScreeningModel(gridfire::screening::ScreeningType model) override;
37 gridfire::screening::ScreeningType getScreeningModel() const override;
38 int getSpeciesIndex(const fourdst::atomic::Species &species) const override;
39 std::vector<double> mapNetInToMolarAbundanceVector(const gridfire::NetIn &netIn) const override;
40 gridfire::PrimingReport primeEngine(const gridfire::NetIn &netIn) override;
41 gridfire::BuildDepthType getDepth() const override {
42 throw std::logic_error("Network depth not supported by this engine.");
43 }
44 void rebuild(const fourdst::composition::Composition& comp, gridfire::BuildDepthType depth) override {
45 throw std::logic_error("Setting network depth not supported by this engine.");
46 }
47 private:
48 mutable std::vector<fourdst::atomic::Species> m_species_cache;
49
50
51};
52
53 class PyEngineView final : public gridfire::EngineView<gridfire::Engine> {
54 const gridfire::Engine& getBaseEngine() const override;
55};
56
57 class PyDynamicEngineView final : public gridfire::EngineView<gridfire::DynamicEngine> {
58 const gridfire::DynamicEngine& getBaseEngine() const override;
59};
PyDynamicEngine
Definition py_engine.h:20
PyDynamicEngine::getSpeciesDestructionTimescales
std::expected< std::unordered_map< fourdst::atomic::Species, double >, gridfire::expectations::StaleEngineError > getSpeciesDestructionTimescales(const std::vector< double > &Y, double T9, double rho) const override
Definition py_engine.cpp:158
PyDynamicEngine::getSpeciesTimescales
std::expected< std::unordered_map< fourdst::atomic::Species, double >, gridfire::expectations::StaleEngineError > getSpeciesTimescales(const std::vector< double > &Y, double T9, double rho) const override
Compute timescales for all species in the network.
Definition py_engine.cpp:149
PyDynamicEngine::getJacobianMatrixEntry
double getJacobianMatrixEntry(int i, int j) const override
Get an entry from the previously generated Jacobian matrix.
Definition py_engine.cpp:97
PyDynamicEngine::generateStoichiometryMatrix
void generateStoichiometryMatrix() override
Generate the stoichiometry matrix for the network.
Definition py_engine.cpp:106
PyDynamicEngine::m_species_cache
std::vector< fourdst::atomic::Species > m_species_cache
Definition py_engine.h:48
PyDynamicEngine::getSpeciesIndex
int getSpeciesIndex(const fourdst::atomic::Species &species) const override
Definition py_engine.cpp:202
PyDynamicEngine::rebuild
void rebuild(const fourdst::composition::Composition &comp, gridfire::BuildDepthType depth) override
Definition py_engine.h:44
PyDynamicEngine::isStale
bool isStale(const gridfire::NetIn &netIn) override
Definition py_engine.cpp:176
PyDynamicEngine::getNetworkReactions
const gridfire::reaction::LogicalReactionSet & getNetworkReactions() const override
Get the set of logical reactions in the network.
Definition py_engine.cpp:132
PyDynamicEngine::calculateRHSAndEnergy
std::expected< gridfire::StepDerivatives< double >, gridfire::expectations::StaleEngineError > calculateRHSAndEnergy(const std::vector< double > &Y, double T9, double rho) const override
Calculate the right-hand side (dY/dt) and energy generation.
Definition py_engine.cpp:70
PyDynamicEngine::generateJacobianMatrix
void generateJacobianMatrix(const std::vector< double > &Y_dynamic, double T9, double rho) const override
Generate the Jacobian matrix for the current state.
Definition py_engine.cpp:79
PyDynamicEngine::mapNetInToMolarAbundanceVector
std::vector< double > mapNetInToMolarAbundanceVector(const gridfire::NetIn &netIn) const override
Definition py_engine.cpp:211
PyDynamicEngine::calculateMolarReactionFlow
double calculateMolarReactionFlow(const gridfire::reaction::Reaction &reaction, const std::vector< double > &Y, double T9, double rho) const override
Calculate the molar reaction flow for a given reaction.
Definition py_engine.cpp:123
PyDynamicEngine::getStoichiometryMatrixEntry
int getStoichiometryMatrixEntry(int speciesIndex, int reactionIndex) const override
Get an entry from the stoichiometry matrix.
Definition py_engine.cpp:114
PyDynamicEngine::getScreeningModel
gridfire::screening::ScreeningType getScreeningModel() const override
Get the current electron screening model.
Definition py_engine.cpp:194
PyDynamicEngine::primeEngine
gridfire::PrimingReport primeEngine(const gridfire::NetIn &netIn) override
Definition py_engine.cpp:220
PyDynamicEngine::getDepth
gridfire::BuildDepthType getDepth() const override
Definition py_engine.h:41
PyDynamicEngine::update
fourdst::composition::Composition update(const gridfire::NetIn &netIn) override
Update the internal state of the engine.
Definition py_engine.cpp:167
PyDynamicEngine::setScreeningModel
void setScreeningModel(gridfire::screening::ScreeningType model) override
Set the electron screening model.
Definition py_engine.cpp:185
PyDynamicEngine::getNetworkSpecies
const std::vector< fourdst::atomic::Species > & getNetworkSpecies() const override
PyDynamicEngine Implementation ///.
Definition py_engine.cpp:50
PyDynamicEngine::setNetworkReactions
void setNetworkReactions(const gridfire::reaction::LogicalReactionSet &reactions) override
Definition py_engine.cpp:140
PyDynamicEngineView
Definition py_engine.h:57
PyDynamicEngineView::getBaseEngine
const gridfire::DynamicEngine & getBaseEngine() const override
Access the underlying engine instance.
Definition py_engine.cpp:237
PyEngine
Definition py_engine.h:12
PyEngine::getNetworkSpecies
const std::vector< fourdst::atomic::Species > & getNetworkSpecies() const override
Get the list of species in the network.
Definition py_engine.cpp:16
PyEngine::calculateRHSAndEnergy
std::expected< gridfire::StepDerivatives< double >, gridfire::expectations::StaleEngineError > calculateRHSAndEnergy(const std::vector< double > &Y, double T9, double rho) const override
Calculate the right-hand side (dY/dt) and energy generation.
Definition py_engine.cpp:37
PyEngine::m_species_cache
std::vector< fourdst::atomic::Species > m_species_cache
Definition py_engine.h:17
PyEngineView
Definition py_engine.h:53
PyEngineView::getBaseEngine
const gridfire::Engine & getBaseEngine() const override
Access the underlying engine instance.
Definition py_engine.cpp:229
gridfire::DynamicEngine
Abstract class for engines supporting Jacobian and stoichiometry operations.
Definition engine_abstract.h:130
gridfire::Engine
Abstract base class for a reaction network engine.
Definition engine_abstract.h:84
gridfire::EngineView
Abstract base class for a "view" of a reaction network engine.
Definition engine_view_abstract.h:74
gridfire::reaction::Reaction
Represents a single nuclear reaction from a specific data source.
Definition reaction.h:72
engine.h
Core header for the GridFire reaction network engine module.
expected_engine.h
gridfire::reaction::LogicalReactionSet
TemplatedReactionSet< LogicalReaction > LogicalReactionSet
A set of logical reactions.
Definition reaction.h:563
gridfire::screening::ScreeningType
ScreeningType
Enumerates the available plasma screening models.
Definition screening_types.h:15
gridfire::BuildDepthType
std::variant< NetworkBuildDepth, int > BuildDepthType
Variant specifying either a predefined NetworkBuildDepth or a custom integer depth.
Definition building.h:37
gridfire::SparsityPattern
std::vector< std::pair< size_t, size_t > > SparsityPattern
Definition engine_abstract.h:65
gridfire::NetIn
Definition network.h:53
gridfire::PrimingReport
Captures the result of a network priming operation.
Definition reporting.h:67
gridfire::expectations::StaleEngineError
Definition expected_engine.h:44