From 131f61c9e7f03f7a5e02317ad2723eaef93fe88e Mon Sep 17 00:00:00 2001 From: Emily Boudreaux Date: Tue, 1 Jul 2025 15:06:22 -0400 Subject: [PATCH] docs(docs): added extensive docs --- docs/html/annotated.html | 20 +- docs/html/classes.html | 37 +- ...lassgridfire_1_1_adaptive_engine_view.html | 148 +- .../classgridfire_1_1_dynamic_engine.html | 38 +- docs/html/classgridfire_1_1_engine.html | 2 +- ..._1_1_file_defined_engine_view-members.html | 6 +- ...gridfire_1_1_file_defined_engine_view.html | 384 +++-- ...ssgridfire_1_1_file_defined_engine_view.js | 6 +- ...lassgridfire_1_1_graph_engine-members.html | 62 +- docs/html/classgridfire_1_1_graph_engine.html | 343 ++++- docs/html/classgridfire_1_1_graph_engine.js | 14 +- ...1_1io_1_1_m_e_s_a_network_file_parser.html | 49 +- ...ridfire_1_1io_1_1_network_file_parser.html | 44 +- ..._1_1_simple_reaction_list_file_parser.html | 54 +- ...1_1screening_1_1_bare_screening_model.html | 99 +- ...fire_1_1screening_1_1_screening_model.html | 70 +- ...1_1screening_1_1_weak_screening_model.html | 110 +- docs/html/doxygen_crawl.html | 29 +- docs/html/engine__abstract_8h_source.html | 24 +- docs/html/engine__adaptive_8cpp_source.html | 30 +- docs/html/engine__adaptive_8h_source.html | 158 +-- docs/html/engine__defined_8cpp_source.html | 84 +- docs/html/engine__defined_8h.html | 1 + docs/html/engine__defined_8h_source.html | 250 ++-- docs/html/engine__graph_8cpp_source.html | 1243 ++++++++++------- docs/html/engine__graph_8h.html | 4 + docs/html/engine__graph_8h.js | 2 + docs/html/engine__graph_8h_source.html | 673 +++++---- docs/html/functions.html | 1 + docs/html/functions_c.html | 2 + docs/html/functions_func_c.html | 1 + docs/html/functions_func_i.html | 1 + docs/html/functions_func_m.html | 6 +- docs/html/functions_func_p.html | 1 + docs/html/functions_func_s.html | 1 + docs/html/functions_i.html | 1 + docs/html/functions_m.html | 10 +- docs/html/functions_n.html | 1 + docs/html/functions_p.html | 1 + docs/html/functions_r.html | 2 + docs/html/functions_s.html | 3 + docs/html/functions_u.html | 2 + docs/html/functions_vars.html | 21 +- docs/html/hierarchy.html | 86 +- docs/html/hierarchy.js | 2 + docs/html/index.html | 2 +- docs/html/logging_8cpp_source.html | 2 +- docs/html/logging_8h.html | 1 + docs/html/logging_8h_source.html | 16 +- docs/html/menudata.js | 4 +- docs/html/namespacegridfire.html | 1 + docs/html/namespacegridfire_1_1io.html | 4 + docs/html/namespacegridfire_1_1screening.html | 45 +- docs/html/namespacegridfire_1_1utils.html | 41 + docs/html/navtreedata.js | 8 +- docs/html/navtreeindex0.js | 142 +- docs/html/navtreeindex1.js | 68 +- docs/html/navtreeindex2.js | 26 +- docs/html/navtreeindex3.js | 70 +- docs/html/navtreeindex4.js | 34 + docs/html/network__file_8cpp_source.html | 10 +- docs/html/network__file_8h.html | 4 + docs/html/network__file_8h_source.html | 118 +- docs/html/screening__abstract_8h.html | 1 + docs/html/screening__abstract_8h_source.html | 56 +- docs/html/screening__bare_8cpp_source.html | 6 +- docs/html/screening__bare_8h.html | 1 + docs/html/screening__bare_8h_source.html | 94 +- docs/html/screening__types_8cpp.html | 1 + docs/html/screening__types_8cpp_source.html | 8 +- docs/html/screening__types_8h.html | 2 + docs/html/screening__types_8h_source.html | 24 +- docs/html/screening__weak_8cpp_source.html | 6 +- docs/html/screening__weak_8h.html | 1 + docs/html/screening__weak_8h_source.html | 224 +-- docs/html/search/all_0.js | 11 +- docs/html/search/all_10.js | 42 +- docs/html/search/all_11.js | 37 +- docs/html/search/all_13.js | 8 +- docs/html/search/all_2.js | 61 +- docs/html/search/all_6.js | 2 +- docs/html/search/all_8.js | 5 +- docs/html/search/all_b.js | 88 +- docs/html/search/all_c.js | 43 +- docs/html/search/all_e.js | 10 +- docs/html/search/classes_10.js | 6 +- docs/html/search/classes_11.js | 4 +- docs/html/search/classes_12.js | 4 + docs/html/search/classes_2.js | 4 +- docs/html/search/classes_3.js | 7 +- docs/html/search/classes_4.js | 5 +- docs/html/search/classes_5.js | 2 +- docs/html/search/classes_6.js | 4 +- docs/html/search/classes_7.js | 5 +- docs/html/search/classes_8.js | 3 +- docs/html/search/classes_9.js | 2 +- docs/html/search/classes_a.js | 9 +- docs/html/search/classes_b.js | 9 +- docs/html/search/classes_c.js | 2 +- docs/html/search/classes_d.js | 3 +- docs/html/search/classes_e.js | 6 +- docs/html/search/classes_f.js | 8 +- docs/html/search/functions_11.js | 21 +- docs/html/search/functions_2.js | 35 +- docs/html/search/functions_6.js | 2 +- docs/html/search/functions_8.js | 3 +- docs/html/search/functions_b.js | 6 +- docs/html/search/functions_e.js | 5 +- docs/html/search/searchdata.js | 4 +- docs/html/search/variables_0.js | 3 +- docs/html/search/variables_1.js | 9 +- docs/html/search/variables_7.js | 64 +- docs/html/search/variables_8.js | 9 +- docs/html/search/variables_b.js | 12 +- docs/html/search/variables_c.js | 4 +- docs/html/search/variables_e.js | 5 + docs/html/solver_8cpp_source.html | 2 +- ...daptive_engine_view_1_1_reaction_flow.html | 6 +- ...gine_1_1_precomputed_reaction-members.html | 123 ++ ...graph_engine_1_1_precomputed_reaction.html | 237 ++++ ...1_graph_engine_1_1_precomputed_reaction.js | 9 + ...1_1_graph_engine_1_1constants-members.html | 120 ++ ...ridfire_1_1_graph_engine_1_1constants.html | 192 +++ ...tgridfire_1_1_graph_engine_1_1constants.js | 6 + ...ridfire_1_1io_1_1_parsed_network_data.html | 15 +- .../include/gridfire/engine/engine_abstract.h | 46 + .../gridfire/engine/views/engine_adaptive.h | 109 ++ .../gridfire/engine/views/engine_defined.h | 222 ++- .../include/gridfire/io/network_file.h | 119 ++ .../gridfire/screening/screening_abstract.h | 75 + .../gridfire/screening/screening_bare.h | 87 ++ .../gridfire/screening/screening_types.h | 60 +- .../gridfire/screening/screening_weak.h | 96 ++ src/network/include/gridfire/utils/logging.h | 50 + 134 files changed, 5101 insertions(+), 2191 deletions(-) create mode 100644 docs/html/search/classes_12.js create mode 100644 docs/html/search/variables_e.js create mode 100644 docs/html/structgridfire_1_1_graph_engine_1_1_precomputed_reaction-members.html create mode 100644 docs/html/structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html create mode 100644 docs/html/structgridfire_1_1_graph_engine_1_1_precomputed_reaction.js create mode 100644 docs/html/structgridfire_1_1_graph_engine_1_1constants-members.html create mode 100644 docs/html/structgridfire_1_1_graph_engine_1_1constants.html create mode 100644 docs/html/structgridfire_1_1_graph_engine_1_1constants.js diff --git a/docs/html/annotated.html b/docs/html/annotated.html index c831d6ce..cd1b2c4d 100644 --- a/docs/html/annotated.html +++ b/docs/html/annotated.html @@ -111,10 +111,10 @@ $(function(){initNavTree('annotated.html',''); initResizable(true); });  CJacobianFunctor to calculate the Jacobian matrix for implicit solvers  CODEFunctor to calculate the derivatives for the ODE solver  Nio - CMESANetworkFileParser - CNetworkFileParser - CParsedNetworkData - CSimpleReactionListFileParser + CMESANetworkFileParserA parser for MESA-format network files + CNetworkFileParserAn abstract base class for network file parsers + CParsedNetworkDataHolds the data parsed from a network file + CSimpleReactionListFileParserA parser for simple text files containing a list of reactions  Nreaclib  CReactionRecord  Nreaction @@ -123,9 +123,9 @@ $(function(){initNavTree('annotated.html',''); initResizable(true); });  CReactionRepresents a single nuclear reaction from a specific data source  CTemplatedReactionSet  Nscreening - CBareScreeningModel - CScreeningModel - CWeakScreeningModel + CBareScreeningModelA screening model that applies no screening effect + CScreeningModelAn abstract base class for plasma screening models + CWeakScreeningModelImplements the weak screening model based on the Debye-Hückel approximation  Nsolver  CDirectNetworkSolverA network solver that directly integrates the reaction network ODEs  CJacobianFunctorFunctor for calculating the Jacobian matrix @@ -141,8 +141,10 @@ $(function(){initNavTree('annotated.html',''); initResizable(true); });  CDynamicEngineAbstract class for engines supporting Jacobian and stoichiometry operations  CEngineAbstract base class for a reaction network engine  CEngineViewAbstract base class for a "view" of a reaction network engine - CFileDefinedEngineView - CGraphEngineA reaction network engine that uses a graph-based representation + CFileDefinedEngineViewAn engine view that uses a user-defined reaction network from a file + CGraphEngineA reaction network engine that uses a graph-based representation + Cconstants + CPrecomputedReaction  CNetIn  CNetOut  CNetwork diff --git a/docs/html/classes.html b/docs/html/classes.html index 2758ec18..51a27651 100644 --- a/docs/html/classes.html +++ b/docs/html/classes.html @@ -102,7 +102,7 @@ $(function(){initNavTree('classes.html',''); initResizable(true); });
Class Index
-
A | B | D | E | F | G | H | J | L | M | N | O | P | Q | R | S | T | W
+
A | B | C | D | E | F | G | H | J | L | M | N | O | P | Q | R | S | T | W
A
@@ -111,51 +111,54 @@ $(function(){initNavTree('classes.html',''); initResizable(true); });
B
BareScreeningModel (gridfire::screening)
+
C
+
GraphEngine::constants (gridfire)
+
D
DirectNetworkSolver (gridfire::solver)
DynamicEngine (gridfire)
dynamicQSESpeciesIndices (gridfire::solver)
-
+
E
QSENetworkSolver::EigenFunctor (gridfire::solver)
Engine (gridfire)
EngineView (gridfire)
-
+
F
FileDefinedEngineView (gridfire)
-
+
G
GraphEngine (gridfire)
-
+
H
hash< gridfire::reaction::LogicalReactionSet > (std)
hash< gridfire::reaction::Reaction > (std)
hash< gridfire::reaction::ReactionSet > (std)
-
+
J
Jacobian (gridfire::approx8)
DirectNetworkSolver::JacobianFunctor (gridfire::solver)
QSENetworkSolver::JacobianFunctor (gridfire::solver)
-
+
L
LogicalReaction (gridfire::reaction)
-
+
M
MESANetworkFileParser (gridfire::io)
-
+
N
NetIn (gridfire)
NetOut (gridfire)
Network (gridfire)
NetworkFileParser (gridfire::io)
NetworkSolverStrategy (gridfire::solver)
-
+
O
ODE (gridfire::approx8)
-
-
P
-
ParsedNetworkData (gridfire::io)
+
P
+
ParsedNetworkData (gridfire::io)
GraphEngine::PrecomputedReaction (gridfire)
+
Q
QSENetworkSolver (gridfire::solver)
-
+
R
RateCoefficientSet (gridfire::reaction)
Reaction (gridfire::reaction)
AdaptiveEngineView::ReactionFlow (gridfire)
ReactionRecord (gridfire::reaclib)
DirectNetworkSolver::RHSFunctor (gridfire::solver)
QSENetworkSolver::RHSFunctor (gridfire::solver)
-
+
S
ScreeningModel (gridfire::screening)
SimpleReactionListFileParser (gridfire::io)
StepDerivatives (gridfire)
-
+
T
TemplatedReactionSet (gridfire::reaction)
-
+
W
WeakScreeningModel (gridfire::screening)
diff --git a/docs/html/classgridfire_1_1_adaptive_engine_view.html b/docs/html/classgridfire_1_1_adaptive_engine_view.html index 8fa5ce2e..16a5a2e9 100644 --- a/docs/html/classgridfire_1_1_adaptive_engine_view.html +++ b/docs/html/classgridfire_1_1_adaptive_engine_view.html @@ -171,8 +171,10 @@ Public Member Functions  Gets the base engine.
  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.
  - Public Member Functions inherited from gridfire::Engine virtual ~Engine ()=default @@ -214,31 +216,43 @@ Private Member Functions  Validates that the AdaptiveEngineView is not stale.
  std::vector< ReactionFlowcalculateAllReactionFlows (const NetIn &netIn, std::vector< double > &out_Y_Full) const + Calculates the molar reaction flow rate for all reactions in the full network.
  std::unordered_set< fourdst::atomic::Species > findReachableSpecies (const NetIn &netIn) const + Finds all species that are reachable from the initial fuel through the reaction network.
  std::vector< const reaction::LogicalReaction * > cullReactionsByFlow (const std::vector< ReactionFlow > &allFlows, const std::unordered_set< fourdst::atomic::Species > &reachableSpecies, const std::vector< double > &Y_full, double maxFlow) const + Culls reactions from the network based on their flow rates.
  void finalizeActiveSet (const std::vector< const reaction::LogicalReaction * > &finalReactions) + Finalizes the set of active species and reactions.
  + + + + + + + +

Private Attributes

Configm_config = Config::getInstance()
 A reference to the singleton Config instance, used for retrieving configuration parameters.
 
quill::Logger * m_logger = LogManager::getInstance().getLogger("log")
 A pointer to the logger instance, used for logging messages.
 
DynamicEnginem_baseEngine
 The underlying engine to which this view delegates calculations.
 
std::vector< fourdst::atomic::Species > m_activeSpecies
 The set of species that are currently active in the network.
 
reaction::LogicalReactionSet m_activeReactions
 The set of reactions that are currently active in the network.
 
std::vector< size_t > m_speciesIndexMap
 A map from the indices of the active species to the indices of the corresponding species in the full network.
 
std::vector< size_t > m_reactionIndexMap
 A map from the indices of the active reactions to the indices of the corresponding reactions in the full network.
 
bool m_isStale = true
 A flag indicating whether the view is stale and needs to be updated.
 

Detailed Description

@@ -281,7 +295,7 @@ Private Attributes
-

Definition at line 232 of file engine_adaptive.h.

+

Definition at line 260 of file engine_adaptive.h.

@@ -305,7 +319,7 @@ Private Attributes
-

Definition at line 233 of file engine_adaptive.h.

+

Definition at line 261 of file engine_adaptive.h.

@@ -374,6 +388,27 @@ Private Attributes
+

Calculates the molar reaction flow rate for all reactions in the full network.

+

This method iterates through all reactions in the base engine's network and calculates their molar flow rates based on the provided network input conditions (temperature, density, and composition). It also constructs a vector of molar abundances for all species in the full network.

+
Parameters
+ + + +
netInThe current network input, containing temperature, density, and composition.
out_Y_FullA vector that will be populated with the molar abundances of all species in the full network.
+
+
+
Returns
A vector of ReactionFlow structs, each containing a pointer to a reaction and its calculated flow rate.
+
Algorithm:
    +
  1. Clears and reserves space in out_Y_Full.
  2. +
  3. Iterates through all species in the base engine's network.
  4. +
  5. For each species, it retrieves the molar abundance from netIn.composition. If the species is not found, its abundance is set to 0.0.
  6. +
  7. Converts the temperature from Kelvin to T9.
  8. +
  9. Iterates through all reactions in the base engine's network.
  10. +
  11. For each reaction, it calls the base engine's calculateMolarReactionFlow to get the flow rate.
  12. +
  13. Stores the reaction pointer and its flow rate in a ReactionFlow struct and adds it to the returned vector.
  14. +
+
+

Definition at line 268 of file engine_adaptive.cpp.

@@ -599,6 +634,27 @@ Private Attributes
+

Culls reactions from the network based on their flow rates.

+

This method filters the list of all reactions, keeping only those with a flow rate above an absolute culling threshold. The threshold is calculated by multiplying the maximum flow rate by a relative culling threshold read from the configuration.

+
Parameters
+ + + + + +
allFlowsA vector of all reactions and their flow rates.
reachableSpeciesA set of all species reachable from the initial fuel.
Y_fullA vector of molar abundances for all species in the full network.
maxFlowThe maximum reaction flow rate in the network.
+
+
+
Returns
A vector of pointers to the reactions that have been kept after culling.
+
Algorithm:
    +
  1. Retrieves the RelativeCullingThreshold from the configuration.
  2. +
  3. Calculates the absoluteCullingThreshold by multiplying maxFlow with the relative threshold.
  4. +
  5. Iterates through allFlows.
  6. +
  7. A reaction is kept if its flowRate is greater than the absoluteCullingThreshold.
  8. +
  9. The pointers to the kept reactions are stored in a vector and returned.
  10. +
+
+

Definition at line 342 of file engine_adaptive.cpp.

@@ -626,6 +682,21 @@ Private Attributes
+

Finalizes the set of active species and reactions.

+

This method takes the final list of culled reactions and populates the m_activeReactions and m_activeSpecies members. The active species are determined by collecting all reactants and products from the final reactions. The active species list is then sorted by mass.

+
Parameters
+ + +
finalReactionsA vector of pointers to the reactions to be included in the active set.
+
+
+
Postcondition
    +
  • m_activeReactions is cleared and populated with the reactions from finalReactions.
  • +
  • m_activeSpecies is cleared and populated with all unique species present in finalReactions.
  • +
  • m_activeSpecies is sorted by atomic mass.
  • +
+
+

Definition at line 385 of file engine_adaptive.cpp.

@@ -653,6 +724,24 @@ Private Attributes
+

Finds all species that are reachable from the initial fuel through the reaction network.

+

This method performs a connectivity analysis to identify all species that can be produced starting from the initial fuel species. A species is considered part of the initial fuel if its mass fraction is above a certain threshold (ABUNDANCE_FLOOR).

+
Parameters
+ + +
netInThe current network input, containing the initial composition.
+
+
+
Returns
An unordered set of all reachable species.
+
Algorithm:
    +
  1. Initializes a set reachable and a queue to_visit with the initial fuel species.
  2. +
  3. Iteratively processes the reaction network until no new species can be reached.
  4. +
  5. In each pass, it iterates through all reactions in the base engine's network.
  6. +
  7. If all reactants of a reaction are in the reachable set, all products of that reaction are added to the reachable set.
  8. +
  9. The process continues until a full pass over all reactions does not add any new species to the reachable set.
  10. +
+
+

Definition at line 299 of file engine_adaptive.cpp.

@@ -923,6 +1012,15 @@ Private Attributes
+

Gets the screening model from the base engine.

+

This method delegates the call to the base engine to get the screening model.

+
Returns
The current screening model type.
+
Usage Example:
AdaptiveEngineView engineView(...);
+
screening::ScreeningType model = engineView.getScreeningModel();
+
AdaptiveEngineView(DynamicEngine &baseEngine)
Constructs an AdaptiveEngineView.
+
ScreeningType
Enumerates the available plasma screening models.
+
+

Implements gridfire::DynamicEngine.

Definition at line 220 of file engine_adaptive.cpp.

@@ -1216,6 +1314,20 @@ Private Attributes
+

Sets the screening model for the base engine.

+

This method delegates the call to the base engine to set the electron screening model.

+
Parameters
+ + +
modelThe electron screening model to set.
+
+
+
Usage Example:
AdaptiveEngineView engineView(...);
+
engineView.setScreeningModel(screening::ScreeningType::WEAK);
+
@ WEAK
Weak screening model (Salpeter, 1954).
+
+
Postcondition
The screening model of the base engine is updated.
+

Implements gridfire::DynamicEngine.

Definition at line 216 of file engine_adaptive.cpp.

@@ -1331,7 +1443,9 @@ Private Attributes
-

Definition at line 240 of file engine_adaptive.h.

+

The set of reactions that are currently active in the network.

+ +

Definition at line 273 of file engine_adaptive.h.

@@ -1355,7 +1469,9 @@ Private Attributes
-

Definition at line 239 of file engine_adaptive.h.

+

The set of species that are currently active in the network.

+ +

Definition at line 271 of file engine_adaptive.h.

@@ -1379,7 +1495,9 @@ Private Attributes
-

Definition at line 237 of file engine_adaptive.h.

+

The underlying engine to which this view delegates calculations.

+ +

Definition at line 268 of file engine_adaptive.h.

@@ -1403,7 +1521,9 @@ Private Attributes
-

Definition at line 234 of file engine_adaptive.h.

+

A reference to the singleton Config instance, used for retrieving configuration parameters.

+ +

Definition at line 263 of file engine_adaptive.h.

@@ -1427,7 +1547,9 @@ Private Attributes
-

Definition at line 245 of file engine_adaptive.h.

+

A flag indicating whether the view is stale and needs to be updated.

+ +

Definition at line 281 of file engine_adaptive.h.

@@ -1451,7 +1573,9 @@ Private Attributes
-

Definition at line 235 of file engine_adaptive.h.

+

A pointer to the logger instance, used for logging messages.

+ +

Definition at line 265 of file engine_adaptive.h.

@@ -1475,7 +1599,9 @@ Private Attributes
-

Definition at line 243 of file engine_adaptive.h.

+

A map from the indices of the active reactions to the indices of the corresponding reactions in the full network.

+ +

Definition at line 278 of file engine_adaptive.h.

@@ -1499,7 +1625,9 @@ Private Attributes
-

Definition at line 242 of file engine_adaptive.h.

+

A map from the indices of the active species to the indices of the corresponding species in the full network.

+ +

Definition at line 276 of file engine_adaptive.h.

diff --git a/docs/html/classgridfire_1_1_dynamic_engine.html b/docs/html/classgridfire_1_1_dynamic_engine.html index 7735e60f..71c7cacb 100644 --- a/docs/html/classgridfire_1_1_dynamic_engine.html +++ b/docs/html/classgridfire_1_1_dynamic_engine.html @@ -118,7 +118,7 @@ Inheritance diagram for gridfire::DynamicEngine: gridfire::Engine gridfire::AdaptiveEngineView -gridfire::FileDefinedEngineView +gridfire::FileDefinedEngineView gridfire::GraphEngine @@ -147,10 +147,13 @@ Public Member Functions  Compute timescales for all species in the network.
  virtual void update (const NetIn &netIn)=0 + Update the internal state of the engine.
  virtual void setScreeningModel (screening::ScreeningType model)=0 + Set the electron screening model.
  virtual screening::ScreeningType getScreeningModel () const =0 + Get the current electron screening model.
  - Public Member Functions inherited from gridfire::Engine virtual ~Engine ()=default @@ -402,6 +405,12 @@ Public Member Functions
+

Get the current electron screening model.

+
Returns
The currently active screening model type.
+
Usage Example:
screening::ScreeningType currentModel = myEngine.getScreeningModel();
+
ScreeningType
Enumerates the available plasma screening models.
+
+

Implemented in gridfire::AdaptiveEngineView, gridfire::FileDefinedEngineView, and gridfire::GraphEngine.

@@ -519,6 +528,19 @@ Public Member Functions
+

Set the electron screening model.

+
Parameters
+ + +
modelThe type of screening model to use for reaction rate calculations.
+
+
+

This method allows changing the screening model at runtime. Screening corrections account for the electrostatic shielding of nuclei by electrons, which affects reaction rates in dense stellar plasmas.

+
Usage Example:
myEngine.setScreeningModel(screening::ScreeningType::WEAK);
+
@ WEAK
Weak screening model (Salpeter, 1954).
+
+
Postcondition
The engine will use the specified screening model for subsequent rate calculations.
+

Implemented in gridfire::AdaptiveEngineView, gridfire::FileDefinedEngineView, and gridfire::GraphEngine.

@@ -546,6 +568,20 @@ Public Member Functions
+

Update the internal state of the engine.

+
Parameters
+ + +
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.
+

Implemented in gridfire::AdaptiveEngineView, gridfire::FileDefinedEngineView, and gridfire::GraphEngine.

diff --git a/docs/html/classgridfire_1_1_engine.html b/docs/html/classgridfire_1_1_engine.html index 7ccdc6c3..795f7083 100644 --- a/docs/html/classgridfire_1_1_engine.html +++ b/docs/html/classgridfire_1_1_engine.html @@ -118,7 +118,7 @@ Inheritance diagram for gridfire::Engine: gridfire::DynamicEngine gridfire::AdaptiveEngineView -gridfire::FileDefinedEngineView +gridfire::FileDefinedEngineView gridfire::GraphEngine diff --git a/docs/html/classgridfire_1_1_file_defined_engine_view-members.html b/docs/html/classgridfire_1_1_file_defined_engine_view-members.html index 4ccde99e..3f4e11c6 100644 --- a/docs/html/classgridfire_1_1_file_defined_engine_view-members.html +++ b/docs/html/classgridfire_1_1_file_defined_engine_view-members.html @@ -133,9 +133,9 @@ $(function(){initNavTree('classgridfire_1_1_file_defined_engine_view.html',''); m_reactionIndexMapgridfire::FileDefinedEngineViewprivate m_speciesIndexMapgridfire::FileDefinedEngineViewprivate mapFullToView(const std::vector< double > &full) constgridfire::FileDefinedEngineViewprivate - mapViewToFull(const std::vector< double > &culled) constgridfire::FileDefinedEngineViewprivate - mapViewToFullReactionIndex(size_t culledReactionIndex) constgridfire::FileDefinedEngineViewprivate - mapViewToFullSpeciesIndex(size_t culledSpeciesIndex) constgridfire::FileDefinedEngineViewprivate + mapViewToFull(const std::vector< double > &defined) constgridfire::FileDefinedEngineViewprivate + mapViewToFullReactionIndex(size_t definedReactionIndex) constgridfire::FileDefinedEngineViewprivate + mapViewToFullSpeciesIndex(size_t definedSpeciesIndex) constgridfire::FileDefinedEngineViewprivate setNetworkFile(const std::string &fileName)gridfire::FileDefinedEngineView setScreeningModel(screening::ScreeningType model) overridegridfire::FileDefinedEngineViewvirtual update(const NetIn &netIn) overridegridfire::FileDefinedEngineViewvirtual diff --git a/docs/html/classgridfire_1_1_file_defined_engine_view.html b/docs/html/classgridfire_1_1_file_defined_engine_view.html index 35420302..e0d94525 100644 --- a/docs/html/classgridfire_1_1_file_defined_engine_view.html +++ b/docs/html/classgridfire_1_1_file_defined_engine_view.html @@ -109,6 +109,9 @@ $(function(){initNavTree('classgridfire_1_1_file_defined_engine_view.html','');
+

An engine view that uses a user-defined reaction network from a file. + More...

+

#include <engine_defined.h>

Inheritance diagram for gridfire::FileDefinedEngineView:
@@ -125,44 +128,49 @@ Inheritance diagram for gridfire::FileDefinedEngineView:

Public Member Functions

 FileDefinedEngineView (DynamicEngine &baseEngine, const std::string &fileName, const io::NetworkFileParser &parser) + Constructs a FileDefinedEngineView.
  const DynamicEnginegetBaseEngine () const override - Access the underlying engine instance.
+ Gets the base engine.
  const std::vector< fourdst::atomic::Species > & getNetworkSpecies () const override - Get the list of species in the network.
+ Gets the list of active species in the network defined by the file.
  StepDerivatives< double > calculateRHSAndEnergy (const std::vector< double > &Y_defined, const double T9, const double rho) const override - Calculate the right-hand side (dY/dt) and energy generation.
+ Calculates the right-hand side (dY/dt) and energy generation for the active species.
  void generateJacobianMatrix (const std::vector< double > &Y_defined, const double T9, const double rho) override - Generate the Jacobian matrix for the current state.
+ Generates the Jacobian matrix for the active species.
  double getJacobianMatrixEntry (const int i_defined, const int j_defined) const override - Get an entry from the previously generated Jacobian matrix.
+ Gets an entry from the Jacobian matrix for the active species.
  void generateStoichiometryMatrix () override - Generate the stoichiometry matrix for the network.
+ Generates the stoichiometry matrix for the active reactions and species.
  int getStoichiometryMatrixEntry (const int speciesIndex_defined, const int reactionIndex_defined) const override - Get an entry from the stoichiometry matrix.
+ Gets an entry from the stoichiometry matrix for the active species and reactions.
  double calculateMolarReactionFlow (const reaction::Reaction &reaction, const std::vector< double > &Y_defined, const double T9, const double rho) const override - Calculate the molar reaction flow for a given reaction.
+ Calculates the molar reaction flow for a given reaction in the active network.
  const reaction::LogicalReactionSetgetNetworkReactions () const override - Get the set of logical reactions in the network.
+ Gets the set of active logical reactions in the network.
  std::unordered_map< fourdst::atomic::Species, double > getSpeciesTimescales (const std::vector< double > &Y_defined, const double T9, const double rho) const override - Compute timescales for all species in the network.
+ Computes timescales for all active species in the network.
  void update (const NetIn &netIn) override + Updates the engine view if it is marked as stale.
  void setNetworkFile (const std::string &fileName) + Sets a new network file to define the active reactions.
  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.
  - Public Member Functions inherited from gridfire::Engine virtual ~Engine ()=default @@ -183,6 +191,7 @@ Private Types

Private Member Functions

void buildFromFile (const std::string &fileName) + Builds the active species and reaction sets from a file.
  std::vector< size_t > constructSpeciesIndexMap () const  Constructs the species index map.
@@ -190,53 +199,62 @@ Private Member Functions std::vector< size_t > constructReactionIndexMap () const  Constructs the reaction index map.
  -std::vector< double > mapViewToFull (const std::vector< double > &culled) const - Maps a vector of culled abundances to a vector of full abundances.
-  +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 culledSpeciesIndex) const - Maps a culled species index to a full species index.
-  -size_t mapViewToFullReactionIndex (size_t culledReactionIndex) const - Maps a culled reaction index to a full reaction index.
-  +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 + Validates that the FileDefinedEngineView is not stale.
  + + + - + - + - + - + - + - +

Private Attributes

Configm_config = Config::getInstance()
 A reference to the singleton Config instance.
 
quill::Logger * m_logger = LogManager::getInstance().getLogger("log")
 A pointer to the logger instance.
 
DynamicEnginem_baseEngine
 The underlying engine to which this view delegates calculations.
 
std::string m_fileName
 Name of the file defining the reaction set considered by the engine view.
 Parser for the network file.
 
const io::NetworkFileParserm_parser
 Parser for the network file.
 Active species in the defined engine.
 
std::vector< fourdst::atomic::Species > m_activeSpecies
 Active species in the defined engine.
 Active reactions in the defined engine.
 
reaction::LogicalReactionSet m_activeReactions
 Active reactions in the defined engine.
 Maps indices of active species to indices in the full network.
 
std::vector< size_t > m_speciesIndexMap
 Maps indices of active species to indices in the full network.
 Maps indices of active reactions to indices in the full network.
 
std::vector< size_t > m_reactionIndexMap
 Maps indices of active reactions to indices in the full network.
 
bool m_isStale = true
 A flag indicating whether the view is stale and needs to be updated.
 

Detailed Description

-
-

Definition at line 16 of file engine_defined.h.

+

An engine view that uses a user-defined reaction network from a file.

+

This class implements an EngineView that restricts the reaction network to a specific set of reactions defined in an external file. It acts as a filter or a view on a larger, more comprehensive base engine. The file provides a list of reaction identifiers, and this view will only consider those reactions and the species involved in them.

+

This is useful for focusing on a specific sub-network for analysis, debugging, or performance reasons, without modifying the underlying full network.

+

The view maintains mappings between the indices of its active (defined) species and reactions and the corresponding indices in the full network of the base engine. All calculations are delegated to the base engine after mapping the inputs from the view's context to the full network context, and the results are mapped back.

+

<DynamicEngine>

+ +

Definition at line 36 of file engine_defined.h.

Member Typedef Documentation

◆ Config

@@ -258,7 +276,7 @@ Private Attributes
-

Definition at line 71 of file engine_defined.h.

+

Definition at line 223 of file engine_defined.h.

@@ -282,7 +300,7 @@ Private Attributes
-

Definition at line 72 of file engine_defined.h.

+

Definition at line 224 of file engine_defined.h.

@@ -319,6 +337,29 @@ Private Attributes
+

Constructs a FileDefinedEngineView.

+
Parameters
+ + + + +
baseEngineThe underlying DynamicEngine to which this view delegates calculations.
fileNameThe path to the file that defines the reaction network for this view.
parserA reference to a parser object capable of parsing the network file.
+
+
+
Usage Example:
MyParser parser;
+
DynamicEngine baseEngine(...);
+
FileDefinedEngineView view(baseEngine, "my_network.net", parser);
+
Abstract class for engines supporting Jacobian and stoichiometry operations.
+
FileDefinedEngineView(DynamicEngine &baseEngine, const std::string &fileName, const io::NetworkFileParser &parser)
Constructs a FileDefinedEngineView.
+
+
Postcondition
The view is initialized with the reactions and species from the specified file.
+
Exceptions
+ + +
std::runtime_errorIf a reaction from the file is not found in the base engine.
+
+
+

Definition at line 8 of file engine_defined.cpp.

@@ -347,6 +388,27 @@ Private Attributes
+

Builds the active species and reaction sets from a file.

+

This method uses the provided parser to read reaction names from the given file. It then finds these reactions in the base engine's full network and populates the m_activeReactions and m_activeSpecies members. Finally, it constructs the index maps for the active sets.

+
Parameters
+ + +
fileNameThe path to the network definition file.
+
+
+
Postcondition
    +
  • m_activeReactions and m_activeSpecies are populated.
  • +
  • m_speciesIndexMap and m_reactionIndexMap are constructed.
  • +
  • m_isStale is set to false.
  • +
+
+
Exceptions
+ + +
std::runtime_errorIf a reaction from the file is not found in the base engine.
+
+
+

Definition at line 208 of file engine_defined.cpp.

@@ -368,7 +430,7 @@ Private Attributes - const std::vector< double > & Y, + const std::vector< double > & Y_defined, @@ -388,18 +450,23 @@ Private Attributes
-

Calculate the molar reaction flow for a given reaction.

+

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

Parameters
- +
reactionThe reaction for which to calculate the flow.
YVector of current abundances.
Y_definedVector of current abundances for the active species.
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.

+
Exceptions
+ + +
std::runtime_errorIf the view is stale or if the reaction is not in the active set.
+
+

Implements gridfire::DynamicEngine.

@@ -419,7 +486,7 @@ Private Attributes StepDerivatives< double > gridfire::FileDefinedEngineView::calculateRHSAndEnergy ( - const std::vector< double > & Y, + const std::vector< double > & Y_defined, @@ -439,17 +506,22 @@ Private Attributes
-

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

+

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

Parameters
- - - + + + +
YVector of current abundances for all species.
T9Temperature in units of 10^9 K.
rhoDensity in g/cm^3.
Y_definedA vector of abundances for the active species.
T9The temperature in units of 10^9 K.
rhoThe 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_errorIf the view is stale (i.e., update() has not been called after setNetworkFile()).
-
Returns
StepDerivatives<double> containing dY/dt and energy generation rate.
-

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.

@@ -481,9 +553,14 @@ Private Attributes

Constructs the reaction index map.

-
Returns
A vector mapping culled reaction indices to full reaction indices.
+
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.

-
See also
AdaptiveEngineView::update()
+
Exceptions
+ + +
std::runtime_errorIf an active reaction is not found in the base engine's reaction list.
+
+

Definition at line 176 of file engine_defined.cpp.

@@ -513,9 +590,14 @@ Private Attributes

Constructs the species index map.

-
Returns
A vector mapping culled species indices to full species indices.
+
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.

-
See also
AdaptiveEngineView::update()
+
Exceptions
+ + +
std::runtime_errorIf an active species is not found in the base engine's species list.
+
+

Definition at line 147 of file engine_defined.cpp.

@@ -533,7 +615,7 @@ Private Attributes void gridfire::FileDefinedEngineView::generateJacobianMatrix ( - const std::vector< double > & Y, + const std::vector< double > & Y_defined, @@ -553,16 +635,21 @@ Private Attributes
-

Generate the Jacobian matrix for the current state.

+

Generates the Jacobian matrix for the active species.

Parameters
- - - + + + +
YVector of current abundances.
T9Temperature in units of 10^9 K.
rhoDensity in g/cm^3.
Y_definedA vector of abundances for the active species.
T9The temperature in units of 10^9 K.
rhoThe density in g/cm^3.
+
+
+
Exceptions
+ +
std::runtime_errorIf the view is stale.
-

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

@@ -593,8 +680,13 @@ Private Attributes
-

Generate the stoichiometry matrix for the network.

-

This method must compute and store the stoichiometry matrix, which encodes the net change of each species in each reaction.

+

Generates the stoichiometry matrix for the active reactions and species.

+
Exceptions
+ + +
std::runtime_errorIf the view is stale.
+
+

Implements gridfire::DynamicEngine.

@@ -625,12 +717,9 @@ Private Attributes
-

Access the underlying engine instance.

-
Returns
Const reference to the underlying engine.
-

This method must be implemented by derived classes to provide access to the base engine. The returned reference should remain valid for the lifetime of the EngineView.

-

Example:

const DynamicEngine& engine = myView.getBaseEngine();
-
Abstract class for engines supporting Jacobian and stoichiometry operations.
-
+

Gets the base engine.

+
Returns
A const reference to the base engine.
+

Implements gridfire::EngineView< DynamicEngine >.

Definition at line 21 of file engine_defined.cpp.

@@ -649,12 +738,12 @@ Private Attributes double gridfire::FileDefinedEngineView::getJacobianMatrixEntry ( - const int i, + const int i_defined, - const int j ) const + const int j_defined ) const @@ -664,16 +753,22 @@ Private Attributes
-

Get an entry from the previously generated Jacobian matrix.

+

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

Parameters
- - + + +
iRow index (species index).
jColumn index (species index).
i_definedThe row index (species index) in the defined matrix.
j_definedThe column index (species index) in the defined matrix.
+
+
+
Returns
The value of the Jacobian matrix at (i_defined, j_defined).
+
Exceptions
+ + +
std::runtime_errorIf the view is stale.
std::out_of_rangeIf an index is out of bounds.
-
Returns
Value of the Jacobian matrix at (i, j).
-

The Jacobian must have been generated by generateJacobianMatrix() before calling this.

Implements gridfire::DynamicEngine.

@@ -704,8 +799,14 @@ Private Attributes
-

Get the set of logical reactions in the network.

-
Returns
Reference to the LogicalReactionSet containing all reactions.
+

Gets the set of active logical reactions in the network.

+
Returns
Reference to the LogicalReactionSet containing all active reactions.
+
Exceptions
+ + +
std::runtime_errorIf the view is stale.
+
+

Implements gridfire::DynamicEngine.

@@ -736,8 +837,8 @@ Private Attributes
-

Get the list of species in the network.

-
Returns
Vector of Species objects representing all network species.
+

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.

@@ -768,6 +869,9 @@ Private Attributes
+

Gets the screening model from the base engine.

+
Returns
The current screening model type.
+

Implements gridfire::DynamicEngine.

Definition at line 143 of file engine_defined.cpp.

@@ -786,7 +890,7 @@ Private Attributes std::unordered_map< Species, double > gridfire::FileDefinedEngineView::getSpeciesTimescales ( - const std::vector< double > & Y, + const std::vector< double > & Y_defined, @@ -806,17 +910,22 @@ Private Attributes
-

Compute timescales for all species in the network.

+

Computes timescales for all active species in the network.

Parameters
- +
YVector of current abundances.
Y_definedVector of current abundances for the active species.
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.

+
Exceptions
+ + +
std::runtime_errorIf the view is stale.
+
+

Implements gridfire::DynamicEngine.

@@ -836,12 +945,12 @@ Private Attributes int gridfire::FileDefinedEngineView::getStoichiometryMatrixEntry ( - const int speciesIndex, + const int speciesIndex_defined, - const int reactionIndex ) const + const int reactionIndex_defined ) const @@ -851,16 +960,22 @@ Private Attributes
-

Get an entry from the stoichiometry matrix.

+

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

Parameters
- - + + +
speciesIndexIndex of the species.
reactionIndexIndex of the reaction.
speciesIndex_definedThe index of the species in the defined species list.
reactionIndex_definedThe index of the reaction in the defined reaction list.
+
+
+
Returns
The stoichiometric coefficient for the given species and reaction.
+
Exceptions
+ + +
std::runtime_errorIf the view is stale.
std::out_of_rangeIf an index is out of bounds.
-
Returns
Stoichiometric coefficient for the species in the reaction.
-

The stoichiometry matrix must have been generated by generateStoichiometryMatrix().

Implements gridfire::DynamicEngine.

@@ -904,8 +1019,8 @@ Private Attributes
- -

◆ mapViewToFull()

+ +

◆ mapViewToFull()

@@ -916,7 +1031,7 @@ Private Attributes std::vector< double > gridfire::FileDefinedEngineView::mapViewToFull ( - const std::vector< double > & culled) + const std::vector< double > & defined) const @@ -930,18 +1045,18 @@ Private Attributes

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

Parameters
- +
culledA vector of abundances for the active species.
definedA 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 culled vector.
+
Returns
A vector of abundances for the full network, with the abundances of the active species copied from the defined vector.

Definition at line 267 of file engine_defined.cpp.

- -

◆ mapViewToFullReactionIndex()

+ +

◆ mapViewToFullReactionIndex()

@@ -952,7 +1067,7 @@ Private Attributes size_t gridfire::FileDefinedEngineView::mapViewToFullReactionIndex ( - size_t culledReactionIndex) + size_t definedReactionIndex) const @@ -966,14 +1081,14 @@ Private Attributes

Maps a culled reaction index to a full reaction index.

Parameters
- +
culledReactionIndexThe index of the reaction in the culled reaction list.
definedReactionIndexThe index of the reaction in the defined reaction list.
Returns
The index of the corresponding reaction in the full network.
Exceptions
- +
std::out_of_rangeIf the culled index is out of bounds for the reaction index map.
std::out_of_rangeIf the defined index is out of bounds for the reaction index map.
@@ -982,8 +1097,8 @@ Private Attributes
- -

◆ mapViewToFullSpeciesIndex()

+ +

◆ mapViewToFullSpeciesIndex()

@@ -994,7 +1109,7 @@ Private Attributes size_t gridfire::FileDefinedEngineView::mapViewToFullSpeciesIndex ( - size_t culledSpeciesIndex) + size_t definedSpeciesIndex) const @@ -1008,14 +1123,14 @@ Private Attributes

Maps a culled species index to a full species index.

Parameters
- +
culledSpeciesIndexThe index of the species in the culled species list.
definedSpeciesIndexThe index of the species in the defined species list.
Returns
The index of the corresponding species in the full network.
Exceptions
- +
std::out_of_rangeIf the culled index is out of bounds for the species index map.
std::out_of_rangeIf the defined index is out of bounds for the species index map.
@@ -1039,6 +1154,18 @@ Private Attributes
+

Sets a new network file to define the active reactions.

+
Parameters
+ + +
fileNameThe path to the new network definition file.
+
+
+
Usage Example:
view.setNetworkFile("another_network.net");
+
view.update(netIn); // Must be called before using the view again
+
+
Postcondition
The view is marked as stale. update() must be called before further use.
+

Definition at line 133 of file engine_defined.cpp.

@@ -1066,6 +1193,14 @@ Private Attributes
+

Sets the screening model for the base engine.

+
Parameters
+ + +
modelThe screening model to set.
+
+
+

Implements gridfire::DynamicEngine.

Definition at line 139 of file engine_defined.cpp.

@@ -1095,6 +1230,16 @@ Private Attributes
+

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
+ + +
netInThe current network input (unused).
+
+
+
Postcondition
If the view was stale, it is rebuilt and is no longer stale.
+

Implements gridfire::DynamicEngine.

Definition at line 127 of file engine_defined.cpp.

@@ -1124,6 +1269,14 @@ Private Attributes
+

Validates that the FileDefinedEngineView is not stale.

+
Exceptions
+ + +
std::runtime_errorIf the view is stale (i.e., update() has not been called after the view was made stale).
+
+
+

Definition at line 303 of file engine_defined.cpp.

@@ -1149,9 +1302,9 @@ Private Attributes
-

Active reactions in the defined engine.

+

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

-

Definition at line 81 of file engine_defined.h.

+

Definition at line 240 of file engine_defined.h.

@@ -1175,9 +1328,9 @@ Private Attributes
-

Active species in the defined engine.

+

Active reactions in the defined engine.

-

Definition at line 80 of file engine_defined.h.

+

Definition at line 238 of file engine_defined.h.

@@ -1201,7 +1354,10 @@ Private Attributes
-

Definition at line 76 of file engine_defined.h.

+

The underlying engine to which this view delegates calculations.

+

Name of the file defining the reaction set considered by the engine view.

+ +

Definition at line 231 of file engine_defined.h.

@@ -1225,7 +1381,9 @@ Private Attributes
-

Definition at line 73 of file engine_defined.h.

+

A reference to the singleton Config instance.

+ +

Definition at line 226 of file engine_defined.h.

@@ -1249,9 +1407,9 @@ Private Attributes
-

Name of the file defining the reaction set considered by the engine view.

+

Parser for the network file.

-

Definition at line 77 of file engine_defined.h.

+

Definition at line 233 of file engine_defined.h.

@@ -1275,7 +1433,9 @@ Private Attributes
-

Definition at line 86 of file engine_defined.h.

+

A flag indicating whether the view is stale and needs to be updated.

+ +

Definition at line 248 of file engine_defined.h.

@@ -1299,7 +1459,9 @@ Private Attributes
-

Definition at line 74 of file engine_defined.h.

+

A pointer to the logger instance.

+ +

Definition at line 228 of file engine_defined.h.

@@ -1323,9 +1485,9 @@ Private Attributes
-

Parser for the network file.

+

Active species in the defined engine.

-

Definition at line 78 of file engine_defined.h.

+

Definition at line 235 of file engine_defined.h.

@@ -1349,9 +1511,7 @@ Private Attributes
-

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

- -

Definition at line 84 of file engine_defined.h.

+

Definition at line 245 of file engine_defined.h.

@@ -1375,9 +1535,9 @@ Private Attributes
-

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

+

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

-

Definition at line 83 of file engine_defined.h.

+

Definition at line 243 of file engine_defined.h.

diff --git a/docs/html/classgridfire_1_1_file_defined_engine_view.js b/docs/html/classgridfire_1_1_file_defined_engine_view.js index 1717df4a..a63e04ab 100644 --- a/docs/html/classgridfire_1_1_file_defined_engine_view.js +++ b/docs/html/classgridfire_1_1_file_defined_engine_view.js @@ -18,9 +18,9 @@ var classgridfire_1_1_file_defined_engine_view = [ "getSpeciesTimescales", "classgridfire_1_1_file_defined_engine_view.html#ace3c6ea4841318c08695973ab3dcddc6", null ], [ "getStoichiometryMatrixEntry", "classgridfire_1_1_file_defined_engine_view.html#a9da9224f5c99a5068f3d8cbf066e4693", null ], [ "mapFullToView", "classgridfire_1_1_file_defined_engine_view.html#a97e5ee4651dbe6754678fe96e4702fee", null ], - [ "mapViewToFull", "classgridfire_1_1_file_defined_engine_view.html#ac231044e37e0962f664f8465e1ccb022", null ], - [ "mapViewToFullReactionIndex", "classgridfire_1_1_file_defined_engine_view.html#ae7d6f0ff9076d59d1245c047bbd1bdb9", null ], - [ "mapViewToFullSpeciesIndex", "classgridfire_1_1_file_defined_engine_view.html#a8d2c6b9a33b9c8c172bbd2c2e2e9ffaf", null ], + [ "mapViewToFull", "classgridfire_1_1_file_defined_engine_view.html#adba3c11b11a04b2907c1635210d73dee", null ], + [ "mapViewToFullReactionIndex", "classgridfire_1_1_file_defined_engine_view.html#a74217a1f8fd8e6daff969cb17885315c", null ], + [ "mapViewToFullSpeciesIndex", "classgridfire_1_1_file_defined_engine_view.html#aa2373955ef5b0eabf7a57c7208e38bb1", null ], [ "setNetworkFile", "classgridfire_1_1_file_defined_engine_view.html#a92f14da849e99d07c1ff1347addb9263", null ], [ "setScreeningModel", "classgridfire_1_1_file_defined_engine_view.html#ad96bbee6d3d37b50d9236a975ef704c0", null ], [ "update", "classgridfire_1_1_file_defined_engine_view.html#ace3568eadaba69e7357b4386c5ca3eb0", null ], diff --git a/docs/html/classgridfire_1_1_graph_engine-members.html b/docs/html/classgridfire_1_1_graph_engine-members.html index 06acbadd..3c367765 100644 --- a/docs/html/classgridfire_1_1_graph_engine-members.html +++ b/docs/html/classgridfire_1_1_graph_engine-members.html @@ -108,41 +108,47 @@ $(function(){initNavTree('classgridfire_1_1_graph_engine.html',''); initResizabl calculateAllDerivatives(const std::vector< T > &Y_in, T T9, T rho) constgridfire::GraphEngineprivate calculateAllDerivatives(const std::vector< double > &Y_in, const double T9, const double rho) constgridfire::GraphEngineprivate calculateAllDerivatives(const std::vector< ADDouble > &Y_in, const ADDouble &T9, const ADDouble &rho) constgridfire::GraphEngineprivate - calculateMolarReactionFlow(const reaction::Reaction &reaction, const std::vector< double > &Y, const double T9, const double rho) const overridegridfire::GraphEnginevirtual - calculateMolarReactionFlow(const reaction::Reaction &reaction, const std::vector< T > &Y, const T T9, const T rho) constgridfire::GraphEngineprivate - calculateRHSAndEnergy(const std::vector< double > &Y, const double T9, const double rho) const overridegridfire::GraphEnginevirtual - collectNetworkSpecies()gridfire::GraphEngineprivate - exportToCSV(const std::string &filename) constgridfire::GraphEngine - exportToDot(const std::string &filename) constgridfire::GraphEngine - generateJacobianMatrix(const std::vector< double > &Y, const double T9, const double rho) overridegridfire::GraphEnginevirtual - generateStoichiometryMatrix() overridegridfire::GraphEnginevirtual - getJacobianMatrixEntry(const int i, const int j) const overridegridfire::GraphEnginevirtual - getNetReactionStoichiometry(const reaction::Reaction &reaction)gridfire::GraphEnginestatic - getNetworkReactions() const overridegridfire::GraphEnginevirtual - getNetworkSpecies() const overridegridfire::GraphEnginevirtual - getScreeningModel() const overridegridfire::GraphEnginevirtual - getSpeciesTimescales(const std::vector< double > &Y, double T9, double rho) const overridegridfire::GraphEnginevirtual - getStoichiometryMatrixEntry(const int speciesIndex, const int reactionIndex) const overridegridfire::GraphEnginevirtual - GraphEngine(const fourdst::composition::Composition &composition)gridfire::GraphEngineexplicit - GraphEngine(reaction::LogicalReactionSet reactions)gridfire::GraphEngineexplicit - involvesSpecies(const fourdst::atomic::Species &species) constgridfire::GraphEngine + calculateAllDerivativesUsingPrecomputation(const std::vector< double > &Y_in, const std::vector< double > &bare_rates, double T9, double rho) constgridfire::GraphEngineprivate + calculateMolarReactionFlow(const reaction::Reaction &reaction, const std::vector< double > &Y, const double T9, const double rho) const overridegridfire::GraphEnginevirtual + calculateMolarReactionFlow(const reaction::Reaction &reaction, const std::vector< T > &Y, const T T9, const T rho) constgridfire::GraphEngineprivate + calculateRHSAndEnergy(const std::vector< double > &Y, const double T9, const double rho) const overridegridfire::GraphEnginevirtual + collectNetworkSpecies()gridfire::GraphEngineprivate + exportToCSV(const std::string &filename) constgridfire::GraphEngine + exportToDot(const std::string &filename) constgridfire::GraphEngine + generateJacobianMatrix(const std::vector< double > &Y, const double T9, const double rho) overridegridfire::GraphEnginevirtual + generateStoichiometryMatrix() overridegridfire::GraphEnginevirtual + getJacobianMatrixEntry(const int i, const int j) const overridegridfire::GraphEnginevirtual + getNetReactionStoichiometry(const reaction::Reaction &reaction)gridfire::GraphEnginestatic + getNetworkReactions() const overridegridfire::GraphEnginevirtual + getNetworkSpecies() const overridegridfire::GraphEnginevirtual + getScreeningModel() const overridegridfire::GraphEnginevirtual + getSpeciesTimescales(const std::vector< double > &Y, double T9, double rho) const overridegridfire::GraphEnginevirtual + getStoichiometryMatrixEntry(const int speciesIndex, const int reactionIndex) const overridegridfire::GraphEnginevirtual + GraphEngine(const fourdst::composition::Composition &composition)gridfire::GraphEngineexplicit + GraphEngine(const reaction::LogicalReactionSet &reactions)gridfire::GraphEngineexplicit + involvesSpecies(const fourdst::atomic::Species &species) constgridfire::GraphEngine + isPrecomputationEnabled() constgridfire::GraphEngine m_configgridfire::GraphEngineprivate - m_constantsgridfire::GraphEngineprivate + m_constantsgridfire::GraphEngineprivate m_jacobianMatrixgridfire::GraphEngineprivate m_loggergridfire::GraphEngineprivate m_networkSpeciesgridfire::GraphEngineprivate m_networkSpeciesMapgridfire::GraphEngineprivate - m_reactionIDMapgridfire::GraphEngineprivate - m_reactionsgridfire::GraphEngineprivate - m_rhsADFungridfire::GraphEngineprivate - m_screeningModelgridfire::GraphEngineprivate - m_screeningTypegridfire::GraphEngineprivate - m_speciesToIndexMapgridfire::GraphEngineprivate - m_stoichiometryMatrixgridfire::GraphEngineprivate + m_precomputedReactionsgridfire::GraphEngineprivate + m_reactionIDMapgridfire::GraphEngineprivate + m_reactionsgridfire::GraphEngineprivate + m_rhsADFungridfire::GraphEngineprivate + m_screeningModelgridfire::GraphEngineprivate + m_screeningTypegridfire::GraphEngineprivate + m_speciesToIndexMapgridfire::GraphEngineprivate + m_stoichiometryMatrixgridfire::GraphEngineprivate + m_usePrecomputationgridfire::GraphEngineprivate populateReactionIDMap()gridfire::GraphEngineprivate populateSpeciesToIndexMap()gridfire::GraphEngineprivate - recordADTape()gridfire::GraphEngineprivate - reserveJacobianMatrix()gridfire::GraphEngineprivate + precomputeNetwork()gridfire::GraphEngineprivate + recordADTape()gridfire::GraphEngineprivate + reserveJacobianMatrix()gridfire::GraphEngineprivate + setPrecomputation(bool precompute)gridfire::GraphEngine setScreeningModel(screening::ScreeningType) overridegridfire::GraphEnginevirtual syncInternalMaps()gridfire::GraphEngineprivate update(const NetIn &netIn) overridegridfire::GraphEnginevirtual diff --git a/docs/html/classgridfire_1_1_graph_engine.html b/docs/html/classgridfire_1_1_graph_engine.html index 5a23c816..c84e9f5a 100644 --- a/docs/html/classgridfire_1_1_graph_engine.html +++ b/docs/html/classgridfire_1_1_graph_engine.html @@ -100,6 +100,7 @@ $(function(){initNavTree('classgridfire_1_1_graph_engine.html',''); initResizabl
+Classes | Public Member Functions | Static Public Member Functions | Private Member Functions | @@ -124,14 +125,21 @@ Inheritance diagram for gridfire::GraphEngine:
+ + + + + +

+Classes

struct  constants
 
struct  PrecomputedReaction
 
- - - + + + @@ -160,6 +168,7 @@ Public Member Functions + @@ -171,9 +180,15 @@ Public Member Functions + + + + + + @@ -205,12 +220,16 @@ Private Member Functions + + + + @@ -228,6 +247,12 @@ Private Member Functions

Public Member Functions

 GraphEngine (const fourdst::composition::Composition &composition)
 Constructs a GraphEngine from a composition.
 
 GraphEngine (reaction::LogicalReactionSet reactions)
 Constructs a GraphEngine from a set of reactions.
 
 GraphEngine (const reaction::LogicalReactionSet &reactions)
 Constructs a GraphEngine from a set of reactions.
 
StepDerivatives< double > calculateRHSAndEnergy (const std::vector< double > &Y, const double T9, const double rho) const override
 Calculates the right-hand side (dY/dt) and energy generation rate.
 
 Computes timescales for all species in the network.
 
void update (const NetIn &netIn) override
 Update the internal state of the engine.
 
bool involvesSpecies (const fourdst::atomic::Species &species) const
 Checks if a given species is involved in the network.
 Exports the network to a CSV file for analysis.
 
void setScreeningModel (screening::ScreeningType) override
 Set the electron screening model.
 
screening::ScreeningType getScreeningModel () const override
 Get the current electron screening model.
 
void setPrecomputation (bool precompute)
 
bool isPrecomputationEnabled () const
 
- Public Member Functions inherited from gridfire::Engine
virtual ~Engine ()=default
 Virtual destructor.
void recordADTape ()
 Records the AD tape for the right-hand side of the ODE.
 
void precomputeNetwork ()
 
bool validateConservation () const
 Validates mass and charge conservation across all reactions.
 
void validateComposition (const fourdst::composition::Composition &composition, double culling, double T9)
 Validates the composition against the current reaction set.
 
StepDerivatives< double > calculateAllDerivativesUsingPrecomputation (const std::vector< double > &Y_in, const std::vector< double > &bare_rates, double T9, double rho) const
 
template<IsArithmeticOrAD T>
calculateMolarReactionFlow (const reaction::Reaction &reaction, const std::vector< T > &Y, const T T9, const T rho) const
 Calculates the molar reaction flow for a given reaction.
+ + + + + + @@ -257,13 +282,12 @@ Private Attributes - - - - - - - + + + + + +

Private Attributes

Config & m_config = Config::getInstance()
 
quill::Logger * m_logger = LogManager::getInstance().getLogger("log")
 
constants m_constants
 
reaction::LogicalReactionSet m_reactions
 Set of REACLIB reactions in the network.
 
 
std::unique_ptr< screening::ScreeningModelm_screeningModel = screening::selectScreeningModel(m_screeningType)
 
Config & m_config = Config::getInstance()
 
Constants & m_constants = Constants::getInstance()
 Access to physical constants.
 
quill::Logger * m_logger = LogManager::getInstance().getLogger("log")
 
bool m_usePrecomputation = true
 Flag to enable or disable using precomputed reactions for efficiency. Mathematically, this should not change the results. Generally end users should not need to change this.
 
std::vector< PrecomputedReactionm_precomputedReactions
 Precomputed reactions for efficiency.
 

Detailed Description

A reaction network engine that uses a graph-based representation.

@@ -279,7 +303,7 @@ Private Attributes
See also
engine_abstract.h
-

Definition at line 89 of file engine_graph.h.

+

Definition at line 90 of file engine_graph.h.

Constructor & Destructor Documentation

◆ GraphEngine() [1/2]

@@ -318,8 +342,8 @@ Private Attributes - -

◆ GraphEngine() [2/2]

+ +

◆ GraphEngine() [2/2]

@@ -330,7 +354,7 @@ Private Attributes gridfire::GraphEngine::GraphEngine ( - reaction::LogicalReactionSet reactions) + const reaction::LogicalReactionSet & reactions) @@ -350,7 +374,7 @@ Private Attributes

This constructor uses the given set of reactions to construct the reaction network.

-

Definition at line 33 of file engine_graph.cpp.

+

Definition at line 34 of file engine_graph.cpp.

@@ -399,7 +423,7 @@ Private Attributes
Returns
StepDerivatives<ADDouble> containing dY/dt and energy generation rate.

This method calculates the time derivatives of all species and the specific nuclear energy generation rate for the current state using automatic differentiation.

-

Definition at line 258 of file engine_graph.cpp.

+

Definition at line 352 of file engine_graph.cpp.

@@ -447,7 +471,7 @@ Private Attributes
Returns
StepDerivatives<double> containing dY/dt and energy generation rate.

This method calculates the time derivatives of all species and the specific nuclear energy generation rate for the current state using double precision arithmetic.

-

Definition at line 250 of file engine_graph.cpp.

+

Definition at line 344 of file engine_graph.cpp.

@@ -503,7 +527,48 @@ template<IsArithmeticOrAD T>
Returns
StepDerivatives<T> containing dY/dt and energy generation rate.

This method calculates the time derivatives of all species and the specific nuclear energy generation rate for the current state.

-

Definition at line 487 of file engine_graph.h.

+

Definition at line 521 of file engine_graph.h.

+ + + + +

◆ calculateAllDerivativesUsingPrecomputation()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
StepDerivatives< double > gridfire::GraphEngine::calculateAllDerivativesUsingPrecomputation (const std::vector< double > & Y_in,
const std::vector< double > & bare_rates,
double T9,
double rho ) const
+
+nodiscardprivate
+
+ +

Definition at line 223 of file engine_graph.cpp.

@@ -559,7 +624,7 @@ template<IsArithmeticOrAD T>

Implements gridfire::DynamicEngine.

-

Definition at line 275 of file engine_graph.cpp.

+

Definition at line 377 of file engine_graph.cpp.

@@ -621,7 +686,7 @@ template<IsArithmeticOrAD T>
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.

-

Definition at line 555 of file engine_graph.h.

+

Definition at line 589 of file engine_graph.h.

@@ -672,7 +737,7 @@ template<IsArithmeticOrAD T>

Implements gridfire::Engine.

-

Definition at line 38 of file engine_graph.cpp.

+

Definition at line 42 of file engine_graph.cpp.

@@ -702,7 +767,7 @@ template<IsArithmeticOrAD T>

Collects the unique species in the network.

This method collects the unique species in the network from the reactants and products of all reactions.

-

Definition at line 57 of file engine_graph.cpp.

+

Definition at line 72 of file engine_graph.cpp.

@@ -737,7 +802,7 @@ template<IsArithmeticOrAD T>

Example usage:

engine.exportToCSV("network.csv");
-

Definition at line 382 of file engine_graph.cpp.

+

Definition at line 484 of file engine_graph.cpp.

@@ -772,7 +837,7 @@ template<IsArithmeticOrAD T>

Example usage:

engine.exportToDot("network.dot");
-

Definition at line 334 of file engine_graph.cpp.

+

Definition at line 436 of file engine_graph.cpp.

@@ -822,7 +887,7 @@ template<IsArithmeticOrAD T>

Implements gridfire::DynamicEngine.

-

Definition at line 284 of file engine_graph.cpp.

+

Definition at line 386 of file engine_graph.cpp.

@@ -854,7 +919,7 @@ template<IsArithmeticOrAD T>

Implements gridfire::DynamicEngine.

-

Definition at line 209 of file engine_graph.cpp.

+

Definition at line 303 of file engine_graph.cpp.

@@ -899,7 +964,7 @@ template<IsArithmeticOrAD T>

Implements gridfire::DynamicEngine.

-

Definition at line 317 of file engine_graph.cpp.

+

Definition at line 419 of file engine_graph.cpp.

@@ -935,7 +1000,7 @@ template<IsArithmeticOrAD T>
Returns
Map of species to their stoichiometric coefficients.
-

Definition at line 321 of file engine_graph.cpp.

+

Definition at line 423 of file engine_graph.cpp.

@@ -967,7 +1032,7 @@ template<IsArithmeticOrAD T>

Implements gridfire::DynamicEngine.

-

Definition at line 119 of file engine_graph.cpp.

+

Definition at line 134 of file engine_graph.cpp.

@@ -999,7 +1064,7 @@ template<IsArithmeticOrAD T>

Implements gridfire::Engine.

-

Definition at line 113 of file engine_graph.cpp.

+

Definition at line 128 of file engine_graph.cpp.

@@ -1026,9 +1091,15 @@ template<IsArithmeticOrAD T>
+

Get the current electron screening model.

+
Returns
The currently active screening model type.
+
Usage Example:
screening::ScreeningType currentModel = myEngine.getScreeningModel();
+
ScreeningType
Enumerates the available plasma screening models.
+
+

Implements gridfire::DynamicEngine.

-

Definition at line 271 of file engine_graph.cpp.

+

Definition at line 365 of file engine_graph.cpp.

@@ -1078,7 +1149,7 @@ template<IsArithmeticOrAD T>

Implements gridfire::DynamicEngine.

-

Definition at line 436 of file engine_graph.cpp.

+

Definition at line 538 of file engine_graph.cpp.

@@ -1123,7 +1194,7 @@ template<IsArithmeticOrAD T>

Implements gridfire::DynamicEngine.

-

Definition at line 327 of file engine_graph.cpp.

+

Definition at line 429 of file engine_graph.cpp.

@@ -1159,7 +1230,34 @@ template<IsArithmeticOrAD T>
Returns
True if the species is involved in the network, false otherwise.
-

Definition at line 125 of file engine_graph.cpp.

+

Definition at line 140 of file engine_graph.cpp.

+ + + + +

◆ isPrecomputationEnabled()

+ +
+
+ + + + + +
+ + + + + + + +
bool gridfire::GraphEngine::isPrecomputationEnabled () const
+
+nodiscard
+
+ +

Definition at line 373 of file engine_graph.cpp.

@@ -1189,7 +1287,7 @@ template<IsArithmeticOrAD T>

Populates the reaction ID map.

This method populates the reaction ID map, which maps reaction IDs to REACLIBReaction objects.

-

Definition at line 86 of file engine_graph.cpp.

+

Definition at line 101 of file engine_graph.cpp.

@@ -1219,7 +1317,34 @@ template<IsArithmeticOrAD T>

Populates the species-to-index map.

This method populates the species-to-index map, which maps species to their index in the stoichiometry matrix.

-

Definition at line 95 of file engine_graph.cpp.

+

Definition at line 110 of file engine_graph.cpp.

+ + + + +

◆ precomputeNetwork()

+ +
+
+ + + + + +
+ + + + + + + +
void gridfire::GraphEngine::precomputeNetwork ()
+
+private
+
+ +

Definition at line 603 of file engine_graph.cpp.

@@ -1255,7 +1380,7 @@ template<IsArithmeticOrAD T> -

Definition at line 456 of file engine_graph.cpp.

+

Definition at line 558 of file engine_graph.cpp.

@@ -1285,7 +1410,26 @@ template<IsArithmeticOrAD T>

Reserves space for the Jacobian matrix.

This method reserves space for the Jacobian matrix, which is used to store the partial derivatives of the right-hand side of the ODE with respect to the species abundances.

-

Definition at line 102 of file engine_graph.cpp.

+

Definition at line 117 of file engine_graph.cpp.

+ + + + +

◆ setPrecomputation()

+ +
+
+ + + + + + + +
void gridfire::GraphEngine::setPrecomputation (bool precompute)
+
+ +

Definition at line 369 of file engine_graph.cpp.

@@ -1312,9 +1456,22 @@ template<IsArithmeticOrAD T>
+

Set the electron screening model.

+
Parameters
+ + +
modelThe type of screening model to use for reaction rate calculations.
+
+
+

This method allows changing the screening model at runtime. Screening corrections account for the electrostatic shielding of nuclei by electrons, which affects reaction rates in dense stellar plasmas.

+
Usage Example:
myEngine.setScreeningModel(screening::ScreeningType::WEAK);
+
@ WEAK
Weak screening model (Salpeter, 1954).
+
+
Postcondition
The engine will use the specified screening model for subsequent rate calculations.
+

Implements gridfire::DynamicEngine.

-

Definition at line 266 of file engine_graph.cpp.

+

Definition at line 360 of file engine_graph.cpp.

@@ -1344,7 +1501,7 @@ template<IsArithmeticOrAD T>

Synchronizes the internal maps.

This method synchronizes the internal maps used by the engine, including the species map, reaction ID map, and species-to-index map. It also generates the stoichiometry matrix and records the AD tape.

-

Definition at line 47 of file engine_graph.cpp.

+

Definition at line 62 of file engine_graph.cpp.

@@ -1371,9 +1528,23 @@ template<IsArithmeticOrAD T>
+

Update the internal state of the engine.

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

-

Definition at line 452 of file engine_graph.cpp.

+

Definition at line 554 of file engine_graph.cpp.

@@ -1420,7 +1591,7 @@ template<IsArithmeticOrAD T>

This method validates the composition against the current reaction set. If the composition is not compatible with the reaction set, the reaction set is rebuilt from the composition.

-

Definition at line 188 of file engine_graph.cpp.

+

Definition at line 203 of file engine_graph.cpp.

@@ -1451,7 +1622,7 @@ template<IsArithmeticOrAD T>
Returns
True if all reactions conserve mass and charge, false otherwise.

This method checks that all reactions in the network conserve mass and charge. If any reaction does not conserve mass or charge, an error message is logged and false is returned.

-

Definition at line 133 of file engine_graph.cpp.

+

Definition at line 148 of file engine_graph.cpp.

@@ -1476,12 +1647,12 @@ template<IsArithmeticOrAD T>
-

Definition at line 322 of file engine_graph.h.

+

Definition at line 327 of file engine_graph.h.

- -

◆ m_constants

+ +

◆ m_constants

@@ -1490,7 +1661,7 @@ template<IsArithmeticOrAD T>
- +
Constants& gridfire::GraphEngine::m_constants = Constants::getInstance()constants gridfire::GraphEngine::m_constants
@@ -1500,9 +1671,7 @@ template<IsArithmeticOrAD T>
-

Access to physical constants.

- -

Definition at line 323 of file engine_graph.h.

+

Definition at line 330 of file engine_graph.h.

@@ -1528,7 +1697,7 @@ template<IsArithmeticOrAD T>

Jacobian matrix (species x species).

-

Definition at line 315 of file engine_graph.h.

+

Definition at line 340 of file engine_graph.h.

@@ -1552,7 +1721,7 @@ template<IsArithmeticOrAD T>
-

Definition at line 324 of file engine_graph.h.

+

Definition at line 328 of file engine_graph.h.

@@ -1578,7 +1747,7 @@ template<IsArithmeticOrAD T>

Vector of unique species in the network.

-

Definition at line 310 of file engine_graph.h.

+

Definition at line 335 of file engine_graph.h.

@@ -1604,7 +1773,33 @@ template<IsArithmeticOrAD T>

Map from species name to Species object.

-

Definition at line 311 of file engine_graph.h.

+

Definition at line 336 of file engine_graph.h.

+ + + + +

◆ m_precomputedReactions

+ +
+
+ + + + + +
+ + + + +
std::vector<PrecomputedReaction> gridfire::GraphEngine::m_precomputedReactions
+
+private
+
+ +

Precomputed reactions for efficiency.

+ +

Definition at line 349 of file engine_graph.h.

@@ -1630,7 +1825,7 @@ template<IsArithmeticOrAD T>

Map from reaction ID to REACLIBReaction. //PERF: This makes copies of REACLIBReaction and could be a performance bottleneck.

-

Definition at line 308 of file engine_graph.h.

+

Definition at line 333 of file engine_graph.h.

@@ -1656,7 +1851,7 @@ template<IsArithmeticOrAD T>

Set of REACLIB reactions in the network.

-

Definition at line 307 of file engine_graph.h.

+

Definition at line 332 of file engine_graph.h.

@@ -1682,7 +1877,7 @@ template<IsArithmeticOrAD T>

CppAD function for the right-hand side of the ODE.

-

Definition at line 317 of file engine_graph.h.

+

Definition at line 342 of file engine_graph.h.

@@ -1706,7 +1901,7 @@ template<IsArithmeticOrAD T>
-

Definition at line 320 of file engine_graph.h.

+

Definition at line 345 of file engine_graph.h.

@@ -1732,7 +1927,7 @@ template<IsArithmeticOrAD T>

Screening type for the reaction network. Default to no screening.

-

Definition at line 319 of file engine_graph.h.

+

Definition at line 344 of file engine_graph.h.

@@ -1758,7 +1953,7 @@ template<IsArithmeticOrAD T>

Map from species to their index in the stoichiometry matrix.

-

Definition at line 312 of file engine_graph.h.

+

Definition at line 337 of file engine_graph.h.

@@ -1784,7 +1979,33 @@ template<IsArithmeticOrAD T>

Stoichiometry matrix (species x reactions).

-

Definition at line 314 of file engine_graph.h.

+

Definition at line 339 of file engine_graph.h.

+ + + + +

◆ m_usePrecomputation

+ +
+
+ + + + + +
+ + + + +
bool gridfire::GraphEngine::m_usePrecomputation = true
+
+private
+
+ +

Flag to enable or disable using precomputed reactions for efficiency. Mathematically, this should not change the results. Generally end users should not need to change this.

+ +

Definition at line 347 of file engine_graph.h.

diff --git a/docs/html/classgridfire_1_1_graph_engine.js b/docs/html/classgridfire_1_1_graph_engine.js index 7fa2aea4..2afd214c 100644 --- a/docs/html/classgridfire_1_1_graph_engine.js +++ b/docs/html/classgridfire_1_1_graph_engine.js @@ -1,10 +1,13 @@ var classgridfire_1_1_graph_engine = [ + [ "constants", "structgridfire_1_1_graph_engine_1_1constants.html", "structgridfire_1_1_graph_engine_1_1constants" ], + [ "PrecomputedReaction", "structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html", "structgridfire_1_1_graph_engine_1_1_precomputed_reaction" ], [ "GraphEngine", "classgridfire_1_1_graph_engine.html#a9f74786ff930ab72664b31f29d05a30c", null ], - [ "GraphEngine", "classgridfire_1_1_graph_engine.html#a9c285e3a38de6e73503a4e19666678e2", null ], + [ "GraphEngine", "classgridfire_1_1_graph_engine.html#a1e7e851dfa21d41c2dc533ba56fc4c7b", null ], [ "calculateAllDerivatives", "classgridfire_1_1_graph_engine.html#a71a3d1181b90c3becdc5d9a3da05b9c9", null ], [ "calculateAllDerivatives", "classgridfire_1_1_graph_engine.html#aaf4d54e4b774ab8ec8eabec006579d31", null ], [ "calculateAllDerivatives", "classgridfire_1_1_graph_engine.html#af41df9ce979b6410e12642cb093916c9", null ], + [ "calculateAllDerivativesUsingPrecomputation", "classgridfire_1_1_graph_engine.html#a63639f4430d0889605c10839a6f32af9", null ], [ "calculateMolarReactionFlow", "classgridfire_1_1_graph_engine.html#a9245642b741f215e52861d00e756fb3f", null ], [ "calculateMolarReactionFlow", "classgridfire_1_1_graph_engine.html#a5e96b5a0b34c8932f0e14eabda57f1a4", null ], [ "calculateRHSAndEnergy", "classgridfire_1_1_graph_engine.html#a8b3baf29829c7ae0a61430ea70632bbf", null ], @@ -21,26 +24,31 @@ var classgridfire_1_1_graph_engine = [ "getSpeciesTimescales", "classgridfire_1_1_graph_engine.html#a26215593544c3a52597194602e4e25dd", null ], [ "getStoichiometryMatrixEntry", "classgridfire_1_1_graph_engine.html#a6b5feaf788bade212b7c8df7ac8c8152", null ], [ "involvesSpecies", "classgridfire_1_1_graph_engine.html#aa6202cee0c3c481eda77cc9a91bc126b", null ], + [ "isPrecomputationEnabled", "classgridfire_1_1_graph_engine.html#a015f8975701f028c29835d3a9794e00f", null ], [ "populateReactionIDMap", "classgridfire_1_1_graph_engine.html#a26602e1b3c610780a47b5a6511d6d567", null ], [ "populateSpeciesToIndexMap", "classgridfire_1_1_graph_engine.html#a47202c43342b96480070874bffce1391", null ], + [ "precomputeNetwork", "classgridfire_1_1_graph_engine.html#a92644bc333bff69c5685be4552ca12fd", null ], [ "recordADTape", "classgridfire_1_1_graph_engine.html#a95563f6bc86007d9ee053a0f1e15b889", null ], [ "reserveJacobianMatrix", "classgridfire_1_1_graph_engine.html#a5a5458ed01923124f2d7e1f04f32f138", null ], + [ "setPrecomputation", "classgridfire_1_1_graph_engine.html#a6c5410878496abc349ba30b691cdf0f1", null ], [ "setScreeningModel", "classgridfire_1_1_graph_engine.html#a8110e687844f921438bb517e1d8ce62f", null ], [ "syncInternalMaps", "classgridfire_1_1_graph_engine.html#acdce8d87e23a2cd1504bc9472e538c0f", null ], [ "update", "classgridfire_1_1_graph_engine.html#a51b4cedf9b00de79fb6eef243631b04d", null ], [ "validateComposition", "classgridfire_1_1_graph_engine.html#aeeafeab40a5f4dbfae78bdc87e25e93f", null ], [ "validateConservation", "classgridfire_1_1_graph_engine.html#acf4cfccea20f5cb31c9886bf233a28be", null ], [ "m_config", "classgridfire_1_1_graph_engine.html#a3b17102b143435ddfdc015d7a50c4b18", null ], - [ "m_constants", "classgridfire_1_1_graph_engine.html#a0837bab6dcd111d9075c9343b90d64f1", null ], + [ "m_constants", "classgridfire_1_1_graph_engine.html#a10c01bc20ae668c2857efb2a1783098e", null ], [ "m_jacobianMatrix", "classgridfire_1_1_graph_engine.html#a2f1718c89d4aaad028102724d18fa910", null ], [ "m_logger", "classgridfire_1_1_graph_engine.html#a483979fc154adc88d029b3b672066d53", null ], [ "m_networkSpecies", "classgridfire_1_1_graph_engine.html#a92d26068ba139e47d335f5fe9e2814cc", null ], [ "m_networkSpeciesMap", "classgridfire_1_1_graph_engine.html#a30e09ed0bce6aa5fc89beaa316a7b827", null ], + [ "m_precomputedReactions", "classgridfire_1_1_graph_engine.html#a5d431d5385b1219ba29689eb29601ea3", null ], [ "m_reactionIDMap", "classgridfire_1_1_graph_engine.html#a5d6cc63b99b467c2a976d1fbaaa1dfa3", null ], [ "m_reactions", "classgridfire_1_1_graph_engine.html#acb7c4f5108b0efeae48ad15598e808c3", null ], [ "m_rhsADFun", "classgridfire_1_1_graph_engine.html#a2e22b111f6d00ecc9e3804a71f1ce876", null ], [ "m_screeningModel", "classgridfire_1_1_graph_engine.html#af17cf3762abac3efcab9a8e87c961210", null ], [ "m_screeningType", "classgridfire_1_1_graph_engine.html#a52edc3e88f1e8fc497e1e63972d63c80", null ], [ "m_speciesToIndexMap", "classgridfire_1_1_graph_engine.html#ad8237c252145a75092202d00f5e1ddf7", null ], - [ "m_stoichiometryMatrix", "classgridfire_1_1_graph_engine.html#ad1cb5fd32efc37668e2d9ecf0c72ad24", null ] + [ "m_stoichiometryMatrix", "classgridfire_1_1_graph_engine.html#ad1cb5fd32efc37668e2d9ecf0c72ad24", null ], + [ "m_usePrecomputation", "classgridfire_1_1_graph_engine.html#a191cff35402d3c97c82c5c966a39d0de", null ] ]; \ No newline at end of file diff --git a/docs/html/classgridfire_1_1io_1_1_m_e_s_a_network_file_parser.html b/docs/html/classgridfire_1_1io_1_1_m_e_s_a_network_file_parser.html index bbb97ce5..c3963eae 100644 --- a/docs/html/classgridfire_1_1io_1_1_m_e_s_a_network_file_parser.html +++ b/docs/html/classgridfire_1_1io_1_1_m_e_s_a_network_file_parser.html @@ -108,6 +108,9 @@ $(function(){initNavTree('classgridfire_1_1io_1_1_m_e_s_a_network_file_parser.ht
+

A parser for MESA-format network files. + More...

+

#include <network_file.h>

Inheritance diagram for gridfire::io::MESANetworkFileParser:
@@ -115,18 +118,21 @@ Inheritance diagram for gridfire::io::MESANetworkFileParser:
-gridfire::io::NetworkFileParser +gridfire::io::NetworkFileParser
+ + +

Public Member Functions

 MESANetworkFileParser (const std::string &filename)
 Constructs a MESANetworkFileParser.
 
ParsedNetworkData parse (const std::string &filename) const override
 Parses a MESA-format network file.
 
- Public Member Functions inherited from gridfire::io::NetworkFileParser
virtual ~NetworkFileParser ()=default
 Virtual destructor for the base class.
 

@@ -146,8 +152,10 @@ Private Attributes

 

Detailed Description

-
-

Definition at line 36 of file network_file.h.

+

A parser for MESA-format network files.

+

This class is designed to parse reaction network files that follow the format used by the MESA stellar evolution code.

+ +

Definition at line 135 of file network_file.h.

Member Typedef Documentation

◆ Config

@@ -169,7 +177,7 @@ Private Attributes
-

Definition at line 41 of file network_file.h.

+

Definition at line 160 of file network_file.h.

@@ -193,7 +201,7 @@ Private Attributes
-

Definition at line 42 of file network_file.h.

+

Definition at line 161 of file network_file.h.

@@ -221,6 +229,15 @@ Private Attributes
+

Constructs a MESANetworkFileParser.

+
Parameters
+ + +
filenameThe path to the MESA network file. This may be used to pre-configure the parser.
+
+
+
Postcondition
The parser is initialized with the context of the given file.
+

Member Function Documentation

@@ -247,6 +264,22 @@ Private Attributes
+

Parses a MESA-format network file.

+

This method will read and interpret the structure of a MESA network file to extract the list of reactions.

+
Parameters
+ + +
filenameThe path to the MESA network file.
+
+
+
Returns
A ParsedNetworkData struct containing the list of reaction names.
+
Exceptions
+ + +
std::runtime_errorIf the file cannot be opened or if it contains formatting errors.
+
+
+

Implements gridfire::io::NetworkFileParser.

@@ -272,7 +305,7 @@ Private Attributes
-

Definition at line 43 of file network_file.h.

+

Definition at line 162 of file network_file.h.

@@ -296,7 +329,7 @@ Private Attributes
-

Definition at line 46 of file network_file.h.

+

Definition at line 165 of file network_file.h.

@@ -320,7 +353,7 @@ Private Attributes
-

Definition at line 44 of file network_file.h.

+

Definition at line 163 of file network_file.h.

diff --git a/docs/html/classgridfire_1_1io_1_1_network_file_parser.html b/docs/html/classgridfire_1_1io_1_1_network_file_parser.html index 3bab0c7d..f0d37835 100644 --- a/docs/html/classgridfire_1_1io_1_1_network_file_parser.html +++ b/docs/html/classgridfire_1_1io_1_1_network_file_parser.html @@ -106,6 +106,9 @@ $(function(){initNavTree('classgridfire_1_1io_1_1_network_file_parser.html','');
+

An abstract base class for network file parsers. + More...

+

#include <network_file.h>

Inheritance diagram for gridfire::io::NetworkFileParser:
@@ -113,21 +116,25 @@ Inheritance diagram for gridfire::io::NetworkFileParser:
-gridfire::io::MESANetworkFileParser -gridfire::io::SimpleReactionListFileParser +gridfire::io::MESANetworkFileParser +gridfire::io::SimpleReactionListFileParser
+ +

Public Member Functions

virtual ~NetworkFileParser ()=default
 Virtual destructor for the base class.
 
virtual ParsedNetworkData parse (const std::string &filename) const =0
 Parses a network file and returns the parsed data.
 

Detailed Description

-
-

Definition at line 17 of file network_file.h.

+

An abstract base class for network file parsers.

+

This class defines the interface for parsing files that contain reaction network definitions. Derived classes must implement the parse method to handle specific file formats.

+ +

Definition at line 38 of file network_file.h.

Constructor & Destructor Documentation

◆ ~NetworkFileParser()

@@ -152,6 +159,8 @@ Public Member Functions
+

Virtual destructor for the base class.

+

Member Function Documentation

@@ -178,6 +187,33 @@ Public Member Functions
+

Parses a network file and returns the parsed data.

+

This is a pure virtual function that must be implemented by derived classes. It takes a filename as input and returns a ParsedNetworkData struct containing the information extracted from the file.

+
Parameters
+ + +
filenameThe path to the network file to parse.
+
+
+
Returns
A ParsedNetworkData struct containing the parsed reaction data.
+
Exceptions
+ + +
std::runtime_errorIf the file cannot be opened or a parsing error occurs.
+
+
+

Usage

std::unique_ptr<NetworkFileParser> parser = std::make_unique<SimpleReactionListFileParser>();
+
try {
+
ParsedNetworkData data = parser->parse("my_reactions.txt");
+
for (const auto& reaction_name : data.reactionPENames) {
+
// ... process reaction name
+
}
+
} catch (const std::runtime_error& e) {
+
// ... handle error
+
}
+
Holds the data parsed from a network file.
+
std::vector< std::string > reactionPENames
A vector of reaction names in their PEN-style format.
+

Implemented in gridfire::io::MESANetworkFileParser, and gridfire::io::SimpleReactionListFileParser.

diff --git a/docs/html/classgridfire_1_1io_1_1_simple_reaction_list_file_parser.html b/docs/html/classgridfire_1_1io_1_1_simple_reaction_list_file_parser.html index 2bc57380..bce1ef46 100644 --- a/docs/html/classgridfire_1_1io_1_1_simple_reaction_list_file_parser.html +++ b/docs/html/classgridfire_1_1io_1_1_simple_reaction_list_file_parser.html @@ -108,6 +108,9 @@ $(function(){initNavTree('classgridfire_1_1io_1_1_simple_reaction_list_file_pars
+

A parser for simple text files containing a list of reactions. + More...

+

#include <network_file.h>

Inheritance diagram for gridfire::io::SimpleReactionListFileParser:
@@ -115,18 +118,21 @@ Inheritance diagram for gridfire::io::SimpleReactionListFileParser:
-gridfire::io::NetworkFileParser +gridfire::io::NetworkFileParser
+ + +

Public Member Functions

 SimpleReactionListFileParser ()
 Constructs a SimpleReactionListFileParser.
 
ParsedNetworkData parse (const std::string &filename) const override
 Parses a simple reaction list file.
 
- Public Member Functions inherited from gridfire::io::NetworkFileParser
virtual ~NetworkFileParser ()=default
 Virtual destructor for the base class.
 

@@ -144,8 +150,10 @@ Private Attributes

 

Detailed Description

-
-

Definition at line 25 of file network_file.h.

+

A parser for simple text files containing a list of reactions.

+

This parser reads a file where each line contains a single reaction name. It supports comments (lines starting with '#') and ignores empty lines.

+ +

Definition at line 84 of file network_file.h.

Member Typedef Documentation

◆ Config

@@ -167,7 +175,7 @@ Private Attributes
-

Definition at line 30 of file network_file.h.

+

Definition at line 120 of file network_file.h.

@@ -191,7 +199,7 @@ Private Attributes
-

Definition at line 31 of file network_file.h.

+

Definition at line 121 of file network_file.h.

@@ -219,6 +227,9 @@ Private Attributes
+

Constructs a SimpleReactionListFileParser.

+
Postcondition
The parser is initialized and ready to parse files.
+

Definition at line 42 of file network_file.cpp.

@@ -247,6 +258,35 @@ Private Attributes
+

Parses a simple reaction list file.

+

This method reads the specified file line by line. It trims whitespace from each line, ignores lines that are empty or start with a '#' comment character, and stores the remaining lines as reaction names.

+
Parameters
+ + +
filenameThe path to the simple reaction list file.
+
+
+
Returns
A ParsedNetworkData struct containing the list of reaction names.
+
Exceptions
+ + +
std::runtime_errorIf the file cannot be opened for reading.
+
+
+

Algorithm

    +
  1. Opens the specified file.
  2. +
  3. Reads the file line by line.
  4. +
  5. For each line, it removes any trailing comments (starting with '#').
  6. +
  7. Trims leading and trailing whitespace.
  8. +
  9. If the line is not empty, it is added to the list of reaction names.
  10. +
  11. Returns the populated ParsedNetworkData struct.
  12. +
+

Usage

+
ParsedNetworkData data = parser.parse("reactions.txt");
+
ParsedNetworkData parse(const std::string &filename) const override
Parses a simple reaction list file.
+
SimpleReactionListFileParser()
Constructs a SimpleReactionListFileParser.
+
Holds the data parsed from a network file.
+

Implements gridfire::io::NetworkFileParser.

Definition at line 44 of file network_file.cpp.

@@ -274,7 +314,7 @@ Private Attributes
-

Definition at line 32 of file network_file.h.

+

Definition at line 122 of file network_file.h.

@@ -298,7 +338,7 @@ Private Attributes
-

Definition at line 33 of file network_file.h.

+

Definition at line 123 of file network_file.h.

diff --git a/docs/html/classgridfire_1_1screening_1_1_bare_screening_model.html b/docs/html/classgridfire_1_1screening_1_1_bare_screening_model.html index 46036586..30157904 100644 --- a/docs/html/classgridfire_1_1screening_1_1_bare_screening_model.html +++ b/docs/html/classgridfire_1_1screening_1_1_bare_screening_model.html @@ -108,6 +108,9 @@ $(function(){initNavTree('classgridfire_1_1screening_1_1_bare_screening_model.ht
+

A screening model that applies no screening effect. + More...

+

#include <screening_bare.h>

Inheritance diagram for gridfire::screening::BareScreeningModel:
@@ -115,40 +118,48 @@ Inheritance diagram for gridfire::screening::BareScreeningModel:
-gridfire::screening::ScreeningModel +gridfire::screening::ScreeningModel
+ + +

Public Member Functions

std::vector< double > calculateScreeningFactors (const reaction::LogicalReactionSet &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< double > &Y, const double T9, const double rho) const override
 Calculates screening factors, which are always 1.0.
 
std::vector< ADDoublecalculateScreeningFactors (const reaction::LogicalReactionSet &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< ADDouble > &Y, const ADDouble T9, const ADDouble rho) const override
 Calculates screening factors for AD types, which are always 1.0.
 
- Public Member Functions inherited from gridfire::screening::ScreeningModel
virtual ~ScreeningModel ()=default
 Virtual destructor.
 
+

Private Types

using ADDouble = CppAD::AD<double>
 Alias for CppAD Automatic Differentiation type for double precision.
 
+

Private Member Functions

template<typename T>
std::vector< T > calculateFactors_impl (const reaction::LogicalReactionSet &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< T > &Y, const T T9, const T rho) const
 Template implementation for calculating screening factors.
 
+

Additional Inherited Members

- Public Types inherited from gridfire::screening::ScreeningModel
using ADDouble = CppAD::AD<double>
 Alias for CppAD Automatic Differentiation type for double precision.
 

Detailed Description

-
-

Definition at line 9 of file screening_bare.h.

+

A screening model that applies no screening effect.

+

This class implements the ScreeningModel interface but returns a screening factor of 1.0 for all reactions, regardless of the plasma conditions. It represents the case of bare, unscreened nuclei and serves as a baseline or can be used when screening effects are negligible or intentionally ignored.

+ +

Definition at line 21 of file screening_bare.h.

Member Typedef Documentation

◆ ADDouble

@@ -170,7 +181,9 @@ Additional Inherited Members
-

Definition at line 10 of file screening_bare.h.

+

Alias for CppAD Automatic Differentiation type for double precision.

+ +

Definition at line 23 of file screening_bare.h.

@@ -219,7 +232,46 @@ template<typename T>
-

Definition at line 39 of file screening_bare.h.

+

Template implementation for calculating screening factors.

+

Template implementation for the bare screening model.

+

This private helper function contains the core logic for both the double and ADDouble versions of calculateScreeningFactors. It is templated to handle both numeric types seamlessly.

+
Template Parameters
+ + +
TThe numeric type, either double or CppAD::AD<double>.
+
+
+
Parameters
+ + + + + + +
reactionsThe set of reactions for which to calculate factors.
speciesA vector of all atomic species (unused).
YA vector of molar abundances (unused).
T9The temperature (unused).
rhoThe density (unused).
+
+
+
Returns
A vector of type T with all elements initialized to 1.0.
+

This function provides the actual implementation for calculateFactors_impl. It creates a vector of the appropriate numeric type (T) and size, and initializes all its elements to 1.0, representing no screening.

+
Template Parameters
+ + +
TThe numeric type, either double or CppAD::AD<double>.
+
+
+
Parameters
+ + + + + + +
reactionsThe set of reactions, used to determine the size of the output vector.
speciesUnused parameter.
YUnused parameter.
T9Unused parameter.
rhoUnused parameter.
+
+
+
Returns
A std::vector<T> of the same size as reactions, with all elements set to 1.0.
+ +

Definition at line 126 of file screening_bare.h.

@@ -265,6 +317,20 @@ template<typename T>
+

Calculates screening factors for AD types, which are always 1.0.

+

This implementation returns a vector of AD-typed screening factors where every element is 1.0. This is the automatic differentiation-compatible version.

+
Parameters
+ + + + + + +
reactionsThe set of logical reactions in the network.
speciesA vector of all atomic species (unused).
YA vector of the molar abundances as AD types (unused).
T9The temperature as an AD type (unused).
rhoThe plasma density as an AD type (unused).
+
+
+
Returns
A vector of ADDouble, with each element being 1.0, of the same size as the reactions set.
+

Implements gridfire::screening::ScreeningModel.

Definition at line 12 of file screening_bare.cpp.

@@ -313,6 +379,29 @@ template<typename T>
+

Calculates screening factors, which are always 1.0.

+

This implementation returns a vector of screening factors where every element is 1.0, effectively applying no screening correction to the reaction rates.

+
Parameters
+ + + + + + +
reactionsThe set of logical reactions in the network.
speciesA vector of all atomic species (unused).
YA vector of the molar abundances (unused).
T9The temperature (unused).
rhoThe plasma density (unused).
+
+
+
Returns
A vector of doubles, with each element being 1.0, of the same size as the reactions set.
+

Algorithm The function simply creates and returns a std::vector<double> of the same size as the input reactions set, with all elements initialized to 1.0.

+

Usage

BareScreeningModel bare_model;
+
// ... (initialize reactions, species, Y, T9, rho)
+
std::vector<double> factors = bare_model.calculateScreeningFactors(
+
reactions, species, Y, T9, rho
+
);
+
// 'factors' will contain [1.0, 1.0, ...]
+
A screening model that applies no screening effect.
+
std::vector< double > calculateScreeningFactors(const reaction::LogicalReactionSet &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< double > &Y, const double T9, const double rho) const override
Calculates screening factors, which are always 1.0.
+

Implements gridfire::screening::ScreeningModel.

Definition at line 22 of file screening_bare.cpp.

diff --git a/docs/html/classgridfire_1_1screening_1_1_screening_model.html b/docs/html/classgridfire_1_1screening_1_1_screening_model.html index c6e84cc4..eb67cc1a 100644 --- a/docs/html/classgridfire_1_1screening_1_1_screening_model.html +++ b/docs/html/classgridfire_1_1screening_1_1_screening_model.html @@ -107,6 +107,9 @@ $(function(){initNavTree('classgridfire_1_1screening_1_1_screening_model.html','
+

An abstract base class for plasma screening models. + More...

+

#include <screening_abstract.h>

Inheritance diagram for gridfire::screening::ScreeningModel:
@@ -114,28 +117,35 @@ Inheritance diagram for gridfire::screening::ScreeningModel:
-gridfire::screening::BareScreeningModel -gridfire::screening::WeakScreeningModel +gridfire::screening::BareScreeningModel +gridfire::screening::WeakScreeningModel
+

Public Types

using ADDouble = CppAD::AD<double>
 Alias for CppAD Automatic Differentiation type for double precision.
 
+ + +

Public Member Functions

virtual ~ScreeningModel ()=default
 Virtual destructor.
 
virtual std::vector< double > calculateScreeningFactors (const reaction::LogicalReactionSet &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< double > &Y, const double T9, const double rho) const =0
 Calculates screening factors for a set of reactions.
 
virtual std::vector< ADDoublecalculateScreeningFactors (const reaction::LogicalReactionSet &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< ADDouble > &Y, const ADDouble T9, const ADDouble rho) const =0
 Calculates screening factors using CppAD types for automatic differentiation.
 

Detailed Description

-
-

Definition at line 12 of file screening_abstract.h.

+

An abstract base class for plasma screening models.

+

This class defines the interface for models that calculate the enhancement factor for nuclear reaction rates due to the electrostatic screening of interacting nuclei by the surrounding plasma. Concrete implementations of this class will provide specific screening prescriptions (e.g., WEAK, BARE, STRONG, etc.).

+

The interface provides methods for calculating screening factors for both standard double-precision inputs and for CppAD's automatic differentiation types, allowing the screening contributions to be included in Jacobian calculations.

+ +

Definition at line 27 of file screening_abstract.h.

Member Typedef Documentation

◆ ADDouble

@@ -149,7 +159,9 @@ Public Member Functions
-

Definition at line 14 of file screening_abstract.h.

+

Alias for CppAD Automatic Differentiation type for double precision.

+ +

Definition at line 30 of file screening_abstract.h.

@@ -177,6 +189,9 @@ Public Member Functions
+

Virtual destructor.

+

Ensures that derived class destructors are called correctly.

+

Member Function Documentation

@@ -222,6 +237,21 @@ Public Member Functions
+

Calculates screening factors using CppAD types for automatic differentiation.

+

This is a pure virtual function that provides an overload of calculateScreeningFactors for use with CppAD. It allows the derivatives of the screening factors with respect to abundances, temperature, and density to be computed automatically.

+
Parameters
+ + + + + + +
reactionsThe set of logical reactions in the network.
speciesA vector of all atomic species involved in the network.
YA vector of the molar abundances (mol/g) for each species, as AD types.
T9The temperature in units of 10^9 K, as an AD type.
rhoThe plasma density in g/cm^3, as an AD type.
+
+
+
Returns
A vector of screening factors (dimensionless), as AD types.
+

Note This method is essential for including the effects of screening in the Jacobian matrix of the reaction network.

+

Implemented in gridfire::screening::BareScreeningModel, and gridfire::screening::WeakScreeningModel.

@@ -268,6 +298,36 @@ Public Member Functions
+

Calculates screening factors for a set of reactions.

+

This is a pure virtual function that must be implemented by derived classes. It computes the screening enhancement factor for each reaction in the provided set based on the given plasma conditions.

+
Parameters
+ + + + + + +
reactionsThe set of logical reactions in the network.
speciesA vector of all atomic species involved in the network.
YA vector of the molar abundances (mol/g) for each species.
T9The temperature in units of 10^9 K.
rhoThe plasma density in g/cm^3.
+
+
+
Returns
A vector of screening factors (dimensionless), one for each reaction in the reactions set, in the same order.
+

Pre-conditions

+

Post-conditions

+

Usage

// Assume 'model' is a std::unique_ptr<ScreeningModel> to a concrete implementation
+
// and other parameters (reactions, species, Y, T9, rho) are initialized.
+
std::vector<double> screening_factors = model->calculateScreeningFactors(
+
reactions, species, Y, T9, rho
+
);
+
for (size_t i = 0; i < reactions.size(); ++i) {
+
// ... use screening_factors[i] ...
+
}
+

Implemented in gridfire::screening::BareScreeningModel, and gridfire::screening::WeakScreeningModel.

diff --git a/docs/html/classgridfire_1_1screening_1_1_weak_screening_model.html b/docs/html/classgridfire_1_1screening_1_1_weak_screening_model.html index 248e16e8..f873d6e9 100644 --- a/docs/html/classgridfire_1_1screening_1_1_weak_screening_model.html +++ b/docs/html/classgridfire_1_1screening_1_1_weak_screening_model.html @@ -108,6 +108,9 @@ $(function(){initNavTree('classgridfire_1_1screening_1_1_weak_screening_model.ht
+

Implements the weak screening model based on the Debye-Hückel approximation. + More...

+

#include <screening_weak.h>

Inheritance diagram for gridfire::screening::WeakScreeningModel:
@@ -115,40 +118,48 @@ Inheritance diagram for gridfire::screening::WeakScreeningModel:
-gridfire::screening::ScreeningModel +gridfire::screening::ScreeningModel
+ + +

Public Member Functions

std::vector< double > calculateScreeningFactors (const reaction::LogicalReactionSet &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< double > &Y, const double T9, const double rho) const override
 Calculates weak screening factors for a set of reactions.
 
std::vector< CppAD::AD< double > > calculateScreeningFactors (const reaction::LogicalReactionSet &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< CppAD::AD< double > > &Y, const CppAD::AD< double > T9, const CppAD::AD< double > rho) const override
 Calculates weak screening factors using CppAD types.
 
- Public Member Functions inherited from gridfire::screening::ScreeningModel
virtual ~ScreeningModel ()=default
 Virtual destructor.
 
+

Private Member Functions

template<typename T>
std::vector< T > calculateFactors_impl (const reaction::LogicalReactionSet &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< T > &Y, const T T9, const T rho) const
 Template implementation for calculating weak screening factors.
 
+

Private Attributes

quill::Logger * m_logger = fourdst::logging::LogManager::getInstance().getLogger("log")
 Logger instance for recording trace and debug information.
 
+

Additional Inherited Members

- Public Types inherited from gridfire::screening::ScreeningModel
using ADDouble = CppAD::AD<double>
 Alias for CppAD Automatic Differentiation type for double precision.
 

Detailed Description

-
-

Definition at line 13 of file screening_weak.h.

+

Implements the weak screening model based on the Debye-Hückel approximation.

+

This class provides a concrete implementation of the ScreeningModel interface for the weak screening regime, following the formulation of Salpeter (1954). This approach applies the Debye-Hückel theory to model the electrostatic shielding of nuclei in a plasma. It is applicable to non-degenerate, non-relativistic plasmas where thermal energy dominates the electrostatic potential energy.

+ +

Definition at line 26 of file screening_weak.h.

Member Function Documentation

◆ calculateFactors_impl()

@@ -194,7 +205,59 @@ template<typename T>
-

Definition at line 45 of file screening_weak.h.

+

Template implementation for calculating weak screening factors.

+

Core implementation of the weak screening calculation (Debye-Hückel model).

+

This private helper function contains the core logic for calculating weak screening factors. It is templated to handle both double and CppAD::AD<double> numeric types, avoiding code duplication.

+
Template Parameters
+ + +
TThe numeric type, either double or CppAD::AD<double>.
+
+
+
Parameters
+ + + + + + +
reactionsThe set of reactions.
speciesA vector of all species in the network.
YA vector of molar abundances.
T9The temperature in 10^9 K.
rhoThe density in g/cm^3.
+
+
+
Returns
A vector of screening factors of type T.
+

This function calculates the screening factor exp(H_12) for each reaction, based on the Debye-Hückel approximation as formulated by Salpeter (1954).

+
Template Parameters
+ + +
TThe numeric type (double or CppAD::AD<double>).
+
+
+
Parameters
+ + + + + + +
reactionsThe set of reactions to be screened.
speciesThe list of all species in the network.
YThe molar abundances of the species.
T9The temperature in 10^9 K.
rhoThe density in g/cm^3.
+
+
+
Returns
A vector of screening factors, one for each reaction.
+

Algorithm

    +
  1. Low-Temperature Cutoff: If T9 is below a small threshold (1e-9), screening is effectively turned off to prevent numerical instability.
  2. +
  3. Zeta Factor (ζ): A composition-dependent term is calculated: ζ = ∑(Z_i² + Z_i) * Y_i, where Z_i is the charge and Y_i is the molar abundance of species i.
  4. +
  5. Prefactor: A key prefactor is computed: prefactor = 0.188 * sqrt(ρ / T₇³) * sqrt(ζ), where T₇ is the temperature in units of 10^7 K.
  6. +
  7. Screening Term (H_12): For each reaction, the term H_12 is calculated:
      +
    • For a two-body reaction (reactants Z₁ and Z₂): H_12 = prefactor * Z₁ * Z₂.
    • +
    • For the triple-alpha reaction (3 * He4): H_12 = 3 * (prefactor * Z_α * Z_α).
    • +
    • For one-body reactions (decays), H_12 is 0, so the factor is 1.
    • +
    +
  8. +
  9. Capping: The value of H_12 is capped at 2.0 to prevent excessively large and unphysical screening factors (exp(2) ≈ 7.4).
  10. +
  11. Final Factor: The screening factor for the reaction is exp(H_12).
  12. +
+ +

Definition at line 141 of file screening_weak.h.

@@ -240,6 +303,20 @@ template<typename T>
+

Calculates weak screening factors using CppAD types.

+

This is the automatic differentiation-compatible version of the method. It allows the derivatives of the screening factors to be computed with respect to plasma conditions.

+
Parameters
+ + + + + + +
reactionsThe set of logical reactions in the network.
speciesA vector of all atomic species involved in the network.
YA vector of the molar abundances as AD types.
T9The temperature as an AD type.
rhoThe plasma density as an AD type.
+
+
+
Returns
A vector of screening factors as AD types.
+

Implements gridfire::screening::ScreeningModel.

Definition at line 12 of file screening_weak.cpp.

@@ -288,6 +365,27 @@ template<typename T>
+

Calculates weak screening factors for a set of reactions.

+

This method computes the screening enhancement factor for each reaction based on the Salpeter (1954) formula.

+
Parameters
+ + + + + + +
reactionsThe set of logical reactions in the network.
speciesA vector of all atomic species involved in the network.
YA vector of the molar abundances (mol/g) for each species.
T9The temperature in units of 10^9 K.
rhoThe plasma density in g/cm^3.
+
+
+
Returns
A vector of screening factors (dimensionless), one for each reaction.
+

Usage

WeakScreeningModel weak_model;
+
// ... (initialize reactions, species, Y, T9, rho)
+
std::vector<double> factors = weak_model.calculateScreeningFactors(
+
reactions, species, Y, T9, rho
+
);
+
Implements the weak screening model based on the Debye-Hückel approximation.
+
std::vector< double > calculateScreeningFactors(const reaction::LogicalReactionSet &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< double > &Y, const double T9, const double rho) const override
Calculates weak screening factors for a set of reactions.
+

Implements gridfire::screening::ScreeningModel.

Definition at line 22 of file screening_weak.cpp.

@@ -315,7 +413,9 @@ template<typename T>
-

Definition at line 31 of file screening_weak.h.

+

Logger instance for recording trace and debug information.

+ +

Definition at line 81 of file screening_weak.h.

diff --git a/docs/html/doxygen_crawl.html b/docs/html/doxygen_crawl.html index 4946b70b..75e3ba26 100644 --- a/docs/html/doxygen_crawl.html +++ b/docs/html/doxygen_crawl.html @@ -84,32 +84,35 @@ + - - + + - - + + + + @@ -122,19 +125,22 @@ + + + + - @@ -551,6 +557,19 @@ + + + + + + + + + + + + + diff --git a/docs/html/engine__abstract_8h_source.html b/docs/html/engine__abstract_8h_source.html index ccb7b343..79128cf9 100644 --- a/docs/html/engine__abstract_8h_source.html +++ b/docs/html/engine__abstract_8h_source.html @@ -176,24 +176,24 @@ $(function(){initNavTree('engine__abstract_8h_source.html',''); initResizable(tr
213 double T9,
214 double rho
215 ) const = 0;
-
216
-
217 virtual void update(const NetIn& netIn) = 0;
-
218
-
219 virtual void setScreeningModel(screening::ScreeningType model) = 0;
-
220
-
221 [[nodiscard]] virtual screening::ScreeningType getScreeningModel() const = 0;
-
222 };
+
216
+
237 virtual void update(const NetIn& netIn) = 0;
+
238
+
255 virtual void setScreeningModel(screening::ScreeningType model) = 0;
+
256
+
267 [[nodiscard]] virtual screening::ScreeningType getScreeningModel() const = 0;
+
268 };
-
223}
+
269}
Abstract class for engines supporting Jacobian and stoichiometry operations.
virtual double getJacobianMatrixEntry(int i, int j) const =0
Get an entry from the previously generated Jacobian matrix.
virtual void generateJacobianMatrix(const std::vector< double > &Y, double T9, double rho)=0
Generate the Jacobian matrix for the current state.
-
virtual void setScreeningModel(screening::ScreeningType model)=0
+
virtual void setScreeningModel(screening::ScreeningType model)=0
Set the electron screening model.
virtual std::unordered_map< fourdst::atomic::Species, double > getSpeciesTimescales(const std::vector< double > &Y, double T9, double rho) const =0
Compute timescales for all species in the network.
virtual double calculateMolarReactionFlow(const reaction::Reaction &reaction, const std::vector< double > &Y, double T9, double rho) const =0
Calculate the molar reaction flow for a given reaction.
-
virtual screening::ScreeningType getScreeningModel() const =0
-
virtual void update(const NetIn &netIn)=0
+
virtual screening::ScreeningType getScreeningModel() const =0
Get the current electron screening model.
+
virtual void update(const NetIn &netIn)=0
Update the internal state of the engine.
virtual const reaction::LogicalReactionSet & getNetworkReactions() const =0
Get the set of logical reactions in the network.
virtual void generateStoichiometryMatrix()=0
Generate the stoichiometry matrix for the network.
virtual int getStoichiometryMatrixEntry(int speciesIndex, int reactionIndex) const =0
Get an entry from the stoichiometry matrix.
@@ -205,7 +205,7 @@ $(function(){initNavTree('engine__abstract_8h_source.html',''); initResizable(tr
Concept for types allowed in engine calculations.
Definition reaction.h:25
TemplatedReactionSet< LogicalReaction > LogicalReactionSet
A set of logical reactions.
Definition reaction.h:557
-
ScreeningType
+
ScreeningType
Enumerates the available plasma screening models.
Defines classes for representing and managing nuclear reactions.
diff --git a/docs/html/engine__adaptive_8cpp_source.html b/docs/html/engine__adaptive_8cpp_source.html index d878d22c..cc1e6c01 100644 --- a/docs/html/engine__adaptive_8cpp_source.html +++ b/docs/html/engine__adaptive_8cpp_source.html @@ -557,20 +557,20 @@ $(function(){initNavTree('engine__adaptive_8cpp_source.html',''); initResizable(
405}
406
double calculateMolarReactionFlow(const reaction::Reaction &reaction, const std::vector< double > &Y_culled, double T9, double rho) const override
Calculates the molar reaction flow for a given reaction in the active network.
-
screening::ScreeningType getScreeningModel() const override
-
std::unordered_set< fourdst::atomic::Species > findReachableSpecies(const NetIn &netIn) const
+
screening::ScreeningType getScreeningModel() const override
Gets the screening model from the base engine.
+
std::unordered_set< fourdst::atomic::Species > findReachableSpecies(const NetIn &netIn) const
Finds all species that are reachable from the initial fuel through the reaction network.
const reaction::LogicalReactionSet & getNetworkReactions() const override
Gets the set of active logical reactions in the network.
-
Config & m_config
-
reaction::LogicalReactionSet m_activeReactions
-
std::vector< size_t > m_reactionIndexMap
+
Config & m_config
A reference to the singleton Config instance, used for retrieving configuration parameters.
+
reaction::LogicalReactionSet m_activeReactions
The set of reactions that are currently active in the network.
+
std::vector< size_t > m_reactionIndexMap
A map from the indices of the active reactions to the indices of the corresponding reactions in the f...
void generateStoichiometryMatrix() override
Generates the stoichiometry matrix for the active reactions and species.
size_t mapCulledToFullSpeciesIndex(size_t culledSpeciesIndex) const
Maps a culled species index to a full species index.
std::vector< double > mapFullToCulled(const std::vector< double > &full) const
Maps a vector of full abundances to a vector of culled abundances.
-
std::vector< const reaction::LogicalReaction * > cullReactionsByFlow(const std::vector< ReactionFlow > &allFlows, const std::unordered_set< fourdst::atomic::Species > &reachableSpecies, const std::vector< double > &Y_full, double maxFlow) const
+
std::vector< const reaction::LogicalReaction * > cullReactionsByFlow(const std::vector< ReactionFlow > &allFlows, const std::unordered_set< fourdst::atomic::Species > &reachableSpecies, const std::vector< double > &Y_full, double maxFlow) const
Culls reactions from the network based on their flow rates.
double getJacobianMatrixEntry(const int i_culled, const int j_culled) const override
Gets an entry from the Jacobian matrix for the active species.
-
DynamicEngine & m_baseEngine
-
std::vector< size_t > m_speciesIndexMap
-
bool m_isStale
+
DynamicEngine & m_baseEngine
The underlying engine to which this view delegates calculations.
+
std::vector< size_t > m_speciesIndexMap
A map from the indices of the active species to the indices of the corresponding species in the full ...
+
bool m_isStale
A flag indicating whether the view is stale and needs to be updated.
int getStoichiometryMatrixEntry(const int speciesIndex_culled, const int reactionIndex_culled) const override
Gets an entry from the stoichiometry matrix for the active species and reactions.
std::vector< double > mapCulledToFull(const std::vector< double > &culled) const
Maps a vector of culled abundances to a vector of full abundances.
StepDerivatives< double > calculateRHSAndEnergy(const std::vector< double > &Y_culled, const double T9, const double rho) const override
Calculates the right-hand side (dY/dt) and energy generation for the active species.
@@ -579,21 +579,21 @@ $(function(){initNavTree('engine__adaptive_8cpp_source.html',''); initResizable(
std::vector< size_t > constructSpeciesIndexMap() const
Constructs the species index map.
size_t mapCulledToFullReactionIndex(size_t culledReactionIndex) const
Maps a culled reaction index to a full reaction index.
std::unordered_map< fourdst::atomic::Species, double > getSpeciesTimescales(const std::vector< double > &Y_culled, double T9, double rho) const override
Computes timescales for all active species in the network.
-
void finalizeActiveSet(const std::vector< const reaction::LogicalReaction * > &finalReactions)
-
void setScreeningModel(screening::ScreeningType model) override
-
std::vector< ReactionFlow > calculateAllReactionFlows(const NetIn &netIn, std::vector< double > &out_Y_Full) const
-
quill::Logger * m_logger
+
void finalizeActiveSet(const std::vector< const reaction::LogicalReaction * > &finalReactions)
Finalizes the set of active species and reactions.
+
void setScreeningModel(screening::ScreeningType model) override
Sets the screening model for the base engine.
+
std::vector< ReactionFlow > calculateAllReactionFlows(const NetIn &netIn, std::vector< double > &out_Y_Full) const
Calculates the molar reaction flow rate for all reactions in the full network.
+
quill::Logger * m_logger
A pointer to the logger instance, used for logging messages.
const std::vector< fourdst::atomic::Species > & getNetworkSpecies() const override
Gets the list of active species in the network.
void generateJacobianMatrix(const std::vector< double > &Y_culled, const double T9, const double rho) override
Generates the Jacobian matrix for the active species.
AdaptiveEngineView(DynamicEngine &baseEngine)
Constructs an AdaptiveEngineView.
void validateState() const
Validates that the AdaptiveEngineView is not stale.
-
std::vector< fourdst::atomic::Species > m_activeSpecies
+
std::vector< fourdst::atomic::Species > m_activeSpecies
The set of species that are currently active in the network.
Abstract class for engines supporting Jacobian and stoichiometry operations.
Represents a single nuclear reaction from a specific data source.
Definition reaction.h:72
Definition reaction.h:25
TemplatedReactionSet< LogicalReaction > LogicalReactionSet
A set of logical reactions.
Definition reaction.h:557
-
ScreeningType
+
ScreeningType
Enumerates the available plasma screening models.
Definition network.h:53
diff --git a/docs/html/engine__adaptive_8h_source.html b/docs/html/engine__adaptive_8h_source.html index 6c1e5d54..008a04c1 100644 --- a/docs/html/engine__adaptive_8h_source.html +++ b/docs/html/engine__adaptive_8h_source.html @@ -165,83 +165,83 @@ $(function(){initNavTree('engine__adaptive_8h_source.html',''); initResizable(tr
220 ) const override;
221
226 [[nodiscard]] const DynamicEngine& getBaseEngine() const override { return m_baseEngine; }
-
227
-
228 void setScreeningModel(screening::ScreeningType model) override;
-
229
-
230 [[nodiscard]] screening::ScreeningType getScreeningModel() const override;
-
231 private:
-
232 using Config = fourdst::config::Config;
-
233 using LogManager = fourdst::logging::LogManager;
-
234 Config& m_config = Config::getInstance();
-
235 quill::Logger* m_logger = LogManager::getInstance().getLogger("log");
-
236
-
237 DynamicEngine& m_baseEngine;
-
238
-
239 std::vector<fourdst::atomic::Species> m_activeSpecies;
-
240 reaction::LogicalReactionSet m_activeReactions;
-
241
-
242 std::vector<size_t> m_speciesIndexMap;
-
243 std::vector<size_t> m_reactionIndexMap;
-
244
-
245 bool m_isStale = true;
-
246
-
247 private:
-
- - -
253 double flowRate;
-
254 };
-
-
255 private:
-
266 [[nodiscard]] std::vector<size_t> constructSpeciesIndexMap() const;
-
267
-
278 [[nodiscard]] std::vector<size_t> constructReactionIndexMap() const;
+
227
+
243 void setScreeningModel(screening::ScreeningType model) override;
+
244
+
258 [[nodiscard]] screening::ScreeningType getScreeningModel() const override;
+
259 private:
+
260 using Config = fourdst::config::Config;
+
261 using LogManager = fourdst::logging::LogManager;
+
263 Config& m_config = Config::getInstance();
+
265 quill::Logger* m_logger = LogManager::getInstance().getLogger("log");
+
266
+
268 DynamicEngine& m_baseEngine;
+
269
+
271 std::vector<fourdst::atomic::Species> m_activeSpecies;
+
273 reaction::LogicalReactionSet m_activeReactions;
+
274
+
276 std::vector<size_t> m_speciesIndexMap;
+
278 std::vector<size_t> m_reactionIndexMap;
279
-
287 [[nodiscard]] std::vector<double> mapCulledToFull(const std::vector<double>& culled) const;
-
288
-
296 [[nodiscard]] std::vector<double> mapFullToCulled(const std::vector<double>& full) const;
-
297
-
306 [[nodiscard]] size_t mapCulledToFullSpeciesIndex(size_t culledSpeciesIndex) const;
-
307
-
316 [[nodiscard]] size_t mapCulledToFullReactionIndex(size_t culledReactionIndex) const;
-
317
-
323 void validateState() const;
-
324
-
325 std::vector<ReactionFlow> calculateAllReactionFlows(
-
326 const NetIn& netIn,
-
327 std::vector<double>& out_Y_Full
-
328 ) const;
-
329 [[nodiscard]] std::unordered_set<fourdst::atomic::Species> findReachableSpecies(
-
330 const NetIn& netIn
-
331 ) const;
-
332 [[nodiscard]] std::vector<const reaction::LogicalReaction*> cullReactionsByFlow(
-
333 const std::vector<ReactionFlow>& allFlows,
-
334 const std::unordered_set<fourdst::atomic::Species>& reachableSpecies,
-
335 const std::vector<double>& Y_full,
-
336 double maxFlow
-
337 ) const;
-
338 void finalizeActiveSet(
-
339 const std::vector<const reaction::LogicalReaction*>& finalReactions
-
340 );
-
341 };
+
281 bool m_isStale = true;
+
282
+
283 private:
+
+ + +
289 double flowRate;
+
290 };
-
342}
+
291 private:
+
302 [[nodiscard]] std::vector<size_t> constructSpeciesIndexMap() const;
+
303
+
314 [[nodiscard]] std::vector<size_t> constructReactionIndexMap() const;
+
315
+
323 [[nodiscard]] std::vector<double> mapCulledToFull(const std::vector<double>& culled) const;
+
324
+
332 [[nodiscard]] std::vector<double> mapFullToCulled(const std::vector<double>& full) const;
+
333
+
342 [[nodiscard]] size_t mapCulledToFullSpeciesIndex(size_t culledSpeciesIndex) const;
+
343
+
352 [[nodiscard]] size_t mapCulledToFullReactionIndex(size_t culledReactionIndex) const;
+
353
+
359 void validateState() const;
+
360
+
382 std::vector<ReactionFlow> calculateAllReactionFlows(
+
383 const NetIn& netIn,
+
384 std::vector<double>& out_Y_Full
+
385 ) const;
+
403 [[nodiscard]] std::unordered_set<fourdst::atomic::Species> findReachableSpecies(
+
404 const NetIn& netIn
+
405 ) const;
+
426 [[nodiscard]] std::vector<const reaction::LogicalReaction*> cullReactionsByFlow(
+
427 const std::vector<ReactionFlow>& allFlows,
+
428 const std::unordered_set<fourdst::atomic::Species>& reachableSpecies,
+
429 const std::vector<double>& Y_full,
+
430 double maxFlow
+
431 ) const;
+
447 void finalizeActiveSet(
+
448 const std::vector<const reaction::LogicalReaction*>& finalReactions
+
449 );
+
450 };
+ +
451}
double calculateMolarReactionFlow(const reaction::Reaction &reaction, const std::vector< double > &Y_culled, double T9, double rho) const override
Calculates the molar reaction flow for a given reaction in the active network.
-
screening::ScreeningType getScreeningModel() const override
-
std::unordered_set< fourdst::atomic::Species > findReachableSpecies(const NetIn &netIn) const
+
screening::ScreeningType getScreeningModel() const override
Gets the screening model from the base engine.
+
std::unordered_set< fourdst::atomic::Species > findReachableSpecies(const NetIn &netIn) const
Finds all species that are reachable from the initial fuel through the reaction network.
const reaction::LogicalReactionSet & getNetworkReactions() const override
Gets the set of active logical reactions in the network.
-
Config & m_config
-
reaction::LogicalReactionSet m_activeReactions
-
std::vector< size_t > m_reactionIndexMap
+
Config & m_config
A reference to the singleton Config instance, used for retrieving configuration parameters.
+
reaction::LogicalReactionSet m_activeReactions
The set of reactions that are currently active in the network.
+
std::vector< size_t > m_reactionIndexMap
A map from the indices of the active reactions to the indices of the corresponding reactions in the f...
void generateStoichiometryMatrix() override
Generates the stoichiometry matrix for the active reactions and species.
size_t mapCulledToFullSpeciesIndex(size_t culledSpeciesIndex) const
Maps a culled species index to a full species index.
std::vector< double > mapFullToCulled(const std::vector< double > &full) const
Maps a vector of full abundances to a vector of culled abundances.
-
std::vector< const reaction::LogicalReaction * > cullReactionsByFlow(const std::vector< ReactionFlow > &allFlows, const std::unordered_set< fourdst::atomic::Species > &reachableSpecies, const std::vector< double > &Y_full, double maxFlow) const
+
std::vector< const reaction::LogicalReaction * > cullReactionsByFlow(const std::vector< ReactionFlow > &allFlows, const std::unordered_set< fourdst::atomic::Species > &reachableSpecies, const std::vector< double > &Y_full, double maxFlow) const
Culls reactions from the network based on their flow rates.
double getJacobianMatrixEntry(const int i_culled, const int j_culled) const override
Gets an entry from the Jacobian matrix for the active species.
-
DynamicEngine & m_baseEngine
-
fourdst::logging::LogManager LogManager
-
std::vector< size_t > m_speciesIndexMap
-
bool m_isStale
+
DynamicEngine & m_baseEngine
The underlying engine to which this view delegates calculations.
+
fourdst::logging::LogManager LogManager
+
std::vector< size_t > m_speciesIndexMap
A map from the indices of the active species to the indices of the corresponding species in the full ...
+
bool m_isStale
A flag indicating whether the view is stale and needs to be updated.
int getStoichiometryMatrixEntry(const int speciesIndex_culled, const int reactionIndex_culled) const override
Gets an entry from the stoichiometry matrix for the active species and reactions.
std::vector< double > mapCulledToFull(const std::vector< double > &culled) const
Maps a vector of culled abundances to a vector of full abundances.
StepDerivatives< double > calculateRHSAndEnergy(const std::vector< double > &Y_culled, const double T9, const double rho) const override
Calculates the right-hand side (dY/dt) and energy generation for the active species.
@@ -250,17 +250,17 @@ $(function(){initNavTree('engine__adaptive_8h_source.html',''); initResizable(tr
std::vector< size_t > constructSpeciesIndexMap() const
Constructs the species index map.
size_t mapCulledToFullReactionIndex(size_t culledReactionIndex) const
Maps a culled reaction index to a full reaction index.
std::unordered_map< fourdst::atomic::Species, double > getSpeciesTimescales(const std::vector< double > &Y_culled, double T9, double rho) const override
Computes timescales for all active species in the network.
-
void finalizeActiveSet(const std::vector< const reaction::LogicalReaction * > &finalReactions)
-
void setScreeningModel(screening::ScreeningType model) override
-
std::vector< ReactionFlow > calculateAllReactionFlows(const NetIn &netIn, std::vector< double > &out_Y_Full) const
-
quill::Logger * m_logger
+
void finalizeActiveSet(const std::vector< const reaction::LogicalReaction * > &finalReactions)
Finalizes the set of active species and reactions.
+
void setScreeningModel(screening::ScreeningType model) override
Sets the screening model for the base engine.
+
std::vector< ReactionFlow > calculateAllReactionFlows(const NetIn &netIn, std::vector< double > &out_Y_Full) const
Calculates the molar reaction flow rate for all reactions in the full network.
+
quill::Logger * m_logger
A pointer to the logger instance, used for logging messages.
const std::vector< fourdst::atomic::Species > & getNetworkSpecies() const override
Gets the list of active species in the network.
void generateJacobianMatrix(const std::vector< double > &Y_culled, const double T9, const double rho) override
Generates the Jacobian matrix for the active species.
AdaptiveEngineView(DynamicEngine &baseEngine)
Constructs an AdaptiveEngineView.
void validateState() const
Validates that the AdaptiveEngineView is not stale.
const DynamicEngine & getBaseEngine() const override
Gets the base engine.
-
std::vector< fourdst::atomic::Species > m_activeSpecies
-
fourdst::config::Config Config
+
std::vector< fourdst::atomic::Species > m_activeSpecies
The set of species that are currently active in the network.
+
fourdst::config::Config Config
Abstract class for engines supporting Jacobian and stoichiometry operations.
Abstract base class for a "view" of a reaction network engine.
Represents a "logical" reaction that aggregates rates from multiple sources.
Definition reaction.h:308
@@ -269,14 +269,14 @@ $(function(){initNavTree('engine__adaptive_8h_source.html',''); initResizable(tr
Abstract interfaces for engine "views" in GridFire.
Definition reaction.h:25
TemplatedReactionSet< LogicalReaction > LogicalReactionSet
A set of logical reactions.
Definition reaction.h:557
-
ScreeningType
+
ScreeningType
Enumerates the available plasma screening models.
-
A struct to hold a reaction and its flow rate.
-
const reaction::LogicalReaction * reactionPtr
-
double flowRate
+
A struct to hold a reaction and its flow rate.
+
const reaction::LogicalReaction * reactionPtr
+
double flowRate
Definition network.h:53
Structure holding derivatives and energy generation for a network step.
diff --git a/docs/html/engine__defined_8cpp_source.html b/docs/html/engine__defined_8cpp_source.html index 5ac0b1fd..ad86a9e1 100644 --- a/docs/html/engine__defined_8cpp_source.html +++ b/docs/html/engine__defined_8cpp_source.html @@ -144,7 +144,7 @@ $(function(){initNavTree('engine__defined_8cpp_source.html',''); initResizable(t
33 ) const {
34 validateNetworkState();
35
-
36 const auto Y_full = mapViewToFull(Y_defined);
+
36 const auto Y_full = mapViewToFull(Y_defined);
37 const auto [dydt, nuclearEnergyGenerationRate] = m_baseEngine.calculateRHSAndEnergy(Y_full, T9, rho);
38
39 StepDerivatives<double> definedResults;
@@ -162,7 +162,7 @@ $(function(){initNavTree('engine__defined_8cpp_source.html',''); initResizable(t
49 ) {
50 validateNetworkState();
51
-
52 const auto Y_full = mapViewToFull(Y_defined);
+
52 const auto Y_full = mapViewToFull(Y_defined);
53 m_baseEngine.generateJacobianMatrix(Y_full, T9, rho);
54 }
@@ -174,8 +174,8 @@ $(function(){initNavTree('engine__defined_8cpp_source.html',''); initResizable(t
59 ) const {
60 validateNetworkState();
61
-
62 const size_t i_full = mapViewToFullSpeciesIndex(i_defined);
-
63 const size_t j_full = mapViewToFullSpeciesIndex(j_defined);
+
62 const size_t i_full = mapViewToFullSpeciesIndex(i_defined);
+
63 const size_t j_full = mapViewToFullSpeciesIndex(j_defined);
64
65 return m_baseEngine.getJacobianMatrixEntry(i_full, j_full);
66 }
@@ -196,8 +196,8 @@ $(function(){initNavTree('engine__defined_8cpp_source.html',''); initResizable(t
77 ) const {
78 validateNetworkState();
79
-
80 const size_t i_full = mapViewToFullSpeciesIndex(speciesIndex_defined);
-
81 const size_t j_full = mapViewToFullReactionIndex(reactionIndex_defined);
+
80 const size_t i_full = mapViewToFullSpeciesIndex(speciesIndex_defined);
+
81 const size_t j_full = mapViewToFullReactionIndex(reactionIndex_defined);
82 return m_baseEngine.getStoichiometryMatrixEntry(i_full, j_full);
83 }
@@ -216,7 +216,7 @@ $(function(){initNavTree('engine__defined_8cpp_source.html',''); initResizable(t
95 m_logger -> flush_log();
96 throw std::runtime_error("Reaction not found in active reactions: " + std::string(reaction.id()));
97 }
-
98 const auto Y_full = mapViewToFull(Y_defined);
+
98 const auto Y_full = mapViewToFull(Y_defined);
99 return m_baseEngine.calculateMolarReactionFlow(reaction, Y_full, T9, rho);
100 }
@@ -237,7 +237,7 @@ $(function(){initNavTree('engine__defined_8cpp_source.html',''); initResizable(t
112 ) const {
113 validateNetworkState();
114
-
115 const auto Y_full = mapViewToFull(Y_defined);
+
115 const auto Y_full = mapViewToFull(Y_defined);
116 const auto fullTimescales = m_baseEngine.getSpeciesTimescales(Y_full, T9, rho);
117
118 std::unordered_map<Species, double> definedTimescales;
@@ -405,7 +405,7 @@ $(function(){initNavTree('engine__defined_8cpp_source.html',''); initResizable(t
266
-
267 std::vector<double> FileDefinedEngineView::mapViewToFull(const std::vector<double>& culled) const {
+
267 std::vector<double> FileDefinedEngineView::mapViewToFull(const std::vector<double>& culled) const {
268 std::vector<double> full(m_baseEngine.getNetworkSpecies().size(), 0.0);
269 for (size_t i_culled = 0; i_culled < culled.size(); ++i_culled) {
270 const size_t i_full = m_speciesIndexMap[i_culled];
@@ -427,7 +427,7 @@ $(function(){initNavTree('engine__defined_8cpp_source.html',''); initResizable(t
284
-
285 size_t FileDefinedEngineView::mapViewToFullSpeciesIndex(size_t culledSpeciesIndex) const {
+
285 size_t FileDefinedEngineView::mapViewToFullSpeciesIndex(size_t culledSpeciesIndex) const {
286 if (culledSpeciesIndex < 0 || culledSpeciesIndex >= static_cast<int>(m_speciesIndexMap.size())) {
287 LOG_ERROR(m_logger, "Defined index {} is out of bounds for species index map of size {}.", culledSpeciesIndex, m_speciesIndexMap.size());
288 m_logger->flush_log();
@@ -438,7 +438,7 @@ $(function(){initNavTree('engine__defined_8cpp_source.html',''); initResizable(t
293
-
294 size_t FileDefinedEngineView::mapViewToFullReactionIndex(size_t culledReactionIndex) const {
+
294 size_t FileDefinedEngineView::mapViewToFullReactionIndex(size_t culledReactionIndex) const {
295 if (culledReactionIndex < 0 || culledReactionIndex >= static_cast<int>(m_reactionIndexMap.size())) {
296 LOG_ERROR(m_logger, "Defined index {} is out of bounds for reaction index map of size {}.", culledReactionIndex, m_reactionIndexMap.size());
297 m_logger->flush_log();
@@ -459,44 +459,44 @@ $(function(){initNavTree('engine__defined_8cpp_source.html',''); initResizable(t
310}
Abstract class for engines supporting Jacobian and stoichiometry operations.
-
const io::NetworkFileParser & m_parser
Parser for the network file.
-
double getJacobianMatrixEntry(const int i_defined, const int j_defined) const override
Get an entry from the previously generated Jacobian matrix.
-
std::string m_fileName
Name of the file defining the reaction set considered by the engine view.
-
void generateStoichiometryMatrix() override
Generate the stoichiometry matrix for the network.
-
std::vector< fourdst::atomic::Species > m_activeSpecies
Active species in the defined engine.
-
StepDerivatives< double > calculateRHSAndEnergy(const std::vector< double > &Y_defined, const double T9, const double rho) const override
Calculate the right-hand side (dY/dt) and energy generation.
-
void buildFromFile(const std::string &fileName)
-
void generateJacobianMatrix(const std::vector< double > &Y_defined, const double T9, const double rho) override
Generate the Jacobian matrix for the current state.
-
const DynamicEngine & getBaseEngine() const override
Access the underlying engine instance.
+
const io::NetworkFileParser & m_parser
Active species in the defined engine.
+
double getJacobianMatrixEntry(const int i_defined, const int j_defined) const override
Gets an entry from the Jacobian matrix for the active species.
+
std::string m_fileName
Parser for the network file.
+
void generateStoichiometryMatrix() override
Generates the stoichiometry matrix for the active reactions and species.
+
std::vector< fourdst::atomic::Species > m_activeSpecies
Active reactions in the defined engine.
+
StepDerivatives< double > calculateRHSAndEnergy(const std::vector< double > &Y_defined, const double T9, const double rho) const override
Calculates the right-hand side (dY/dt) and energy generation for the active species.
+
void buildFromFile(const std::string &fileName)
Builds the active species and reaction sets from a file.
+
void generateJacobianMatrix(const std::vector< double > &Y_defined, const double T9, const double rho) override
Generates the Jacobian matrix for the active species.
+
const DynamicEngine & getBaseEngine() const override
Gets the base engine.
std::vector< size_t > constructSpeciesIndexMap() const
Constructs the species index map.
-
const reaction::LogicalReactionSet & getNetworkReactions() const override
Get the set of logical reactions in the network.
-
bool m_isStale
-
const std::vector< fourdst::atomic::Species > & getNetworkSpecies() const override
Get the list of species in the network.
-
size_t mapViewToFullSpeciesIndex(size_t culledSpeciesIndex) const
Maps a culled species index to a full species index.
-
FileDefinedEngineView(DynamicEngine &baseEngine, const std::string &fileName, const io::NetworkFileParser &parser)
-
void setNetworkFile(const std::string &fileName)
+
const reaction::LogicalReactionSet & getNetworkReactions() const override
Gets the set of active logical reactions in the network.
+
bool m_isStale
A flag indicating whether the view is stale and needs to be updated.
+
size_t mapViewToFullReactionIndex(size_t definedReactionIndex) const
Maps a culled reaction index to a full reaction index.
+
const std::vector< fourdst::atomic::Species > & getNetworkSpecies() const override
Gets the list of active species in the network defined by the file.
+
FileDefinedEngineView(DynamicEngine &baseEngine, const std::string &fileName, const io::NetworkFileParser &parser)
Constructs a FileDefinedEngineView.
+
void setNetworkFile(const std::string &fileName)
Sets a new network file to define the active reactions.
std::vector< double > mapFullToView(const std::vector< double > &full) const
Maps a vector of full abundances to a vector of culled abundances.
-
quill::Logger * m_logger
-
int getStoichiometryMatrixEntry(const int speciesIndex_defined, const int reactionIndex_defined) const override
Get an entry from the stoichiometry matrix.
-
std::vector< double > mapViewToFull(const std::vector< double > &culled) const
Maps a vector of culled abundances to a vector of full abundances.
-
double calculateMolarReactionFlow(const reaction::Reaction &reaction, const std::vector< double > &Y_defined, const double T9, const double rho) const override
Calculate the molar reaction flow for a given reaction.
-
void update(const NetIn &netIn) override
-
std::unordered_map< fourdst::atomic::Species, double > getSpeciesTimescales(const std::vector< double > &Y_defined, const double T9, const double rho) const override
Compute timescales for all species in the network.
-
DynamicEngine & m_baseEngine
-
void setScreeningModel(screening::ScreeningType model) override
-
screening::ScreeningType getScreeningModel() const override
-
reaction::LogicalReactionSet m_activeReactions
Active reactions in the defined engine.
-
void validateNetworkState() const
-
size_t mapViewToFullReactionIndex(size_t culledReactionIndex) const
Maps a culled reaction index to a full reaction index.
+
quill::Logger * m_logger
A pointer to the logger instance.
+
int getStoichiometryMatrixEntry(const int speciesIndex_defined, const int reactionIndex_defined) const override
Gets an entry from the stoichiometry matrix for the active species and reactions.
+
size_t mapViewToFullSpeciesIndex(size_t definedSpeciesIndex) const
Maps a culled species index to a full species index.
+
double calculateMolarReactionFlow(const reaction::Reaction &reaction, const std::vector< double > &Y_defined, const double T9, const double rho) const override
Calculates the molar reaction flow for a given reaction in the active network.
+
void update(const NetIn &netIn) override
Updates the engine view if it is marked as stale.
+
std::unordered_map< fourdst::atomic::Species, double > getSpeciesTimescales(const std::vector< double > &Y_defined, const double T9, const double rho) const override
Computes timescales for all active species in the network.
+
DynamicEngine & m_baseEngine
The underlying engine to which this view delegates calculations.
+
void setScreeningModel(screening::ScreeningType model) override
Sets the screening model for the base engine.
+
std::vector< double > mapViewToFull(const std::vector< double > &defined) const
Maps a vector of culled abundances to a vector of full abundances.
+
screening::ScreeningType getScreeningModel() const override
Gets the screening model from the base engine.
+
reaction::LogicalReactionSet m_activeReactions
Maps indices of active species to indices in the full network.
+
void validateNetworkState() const
Validates that the FileDefinedEngineView is not stale.
std::vector< size_t > constructReactionIndexMap() const
Constructs the reaction index map.
-
std::vector< size_t > m_speciesIndexMap
Maps indices of active species to indices in the full network.
-
std::vector< size_t > m_reactionIndexMap
Maps indices of active reactions 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
+
An abstract base class for network file parsers.
Represents a single nuclear reaction from a specific data source.
Definition reaction.h:72
Definition reaction.h:25
TemplatedReactionSet< LogicalReaction > LogicalReactionSet
A set of logical reactions.
Definition reaction.h:557
-
ScreeningType
+
ScreeningType
Enumerates the available plasma screening models.
Definition network.h:53
Structure holding derivatives and energy generation for a network step.
diff --git a/docs/html/engine__defined_8h.html b/docs/html/engine__defined_8h.html index 255a10fc..9440d18c 100644 --- a/docs/html/engine__defined_8h.html +++ b/docs/html/engine__defined_8h.html @@ -119,6 +119,7 @@ $(function(){initNavTree('engine__defined_8h.html',''); initResizable(true); });

Classes

class  gridfire::FileDefinedEngineView + An engine view that uses a user-defined reaction network from a file. More...
  + + + +

diff --git a/docs/html/engine__defined_8h_source.html b/docs/html/engine__defined_8h_source.html index 3595c4d2..1d67f154 100644 --- a/docs/html/engine__defined_8h_source.html +++ b/docs/html/engine__defined_8h_source.html @@ -117,142 +117,142 @@ $(function(){initNavTree('engine__defined_8h_source.html',''); initResizable(tru
13#include <string>
14
15namespace gridfire{
-
-
16 class FileDefinedEngineView final: public DynamicEngine, public EngineView<DynamicEngine> {
-
17 public:
-
18 explicit FileDefinedEngineView(
-
19 DynamicEngine& baseEngine,
-
20 const std::string& fileName,
-
21 const io::NetworkFileParser& parser
-
22 );
-
23
-
24 // --- EngineView Interface ---
-
25 const DynamicEngine& getBaseEngine() const override;
-
26
-
27 // --- Engine Interface ---
-
28 const std::vector<fourdst::atomic::Species>& getNetworkSpecies() const override;
-
29
-
30 // --- DynamicEngine Interface ---
- -
32 const std::vector<double>& Y_defined,
-
33 const double T9,
-
34 const double rho
-
35 ) const override;
- -
37 const std::vector<double>& Y_defined,
-
38 const double T9,
-
39 const double rho
-
40 ) override;
- -
42 const int i_defined,
-
43 const int j_defined
-
44 ) const override;
-
45 void generateStoichiometryMatrix() override;
- -
47 const int speciesIndex_defined,
-
48 const int reactionIndex_defined
-
49 ) const override;
- - -
52 const std::vector<double>& Y_defined,
-
53 const double T9,
-
54 const double rho
-
55 ) const override;
- -
57 std::unordered_map<fourdst::atomic::Species, double> getSpeciesTimescales(
-
58 const std::vector<double>& Y_defined,
-
59 const double T9,
-
60 const double rho
-
61 ) const override;
-
62
-
63 void update(const NetIn &netIn) override;
-
64
-
65 void setNetworkFile(const std::string& fileName);
-
66
- -
68
-
69 [[nodiscard]] screening::ScreeningType getScreeningModel() const override;
-
70 private:
-
71 using Config = fourdst::config::Config;
-
72 using LogManager = fourdst::logging::LogManager;
-
73 Config& m_config = Config::getInstance();
-
74 quill::Logger* m_logger = LogManager::getInstance().getLogger("log");
-
75
- -
77 std::string m_fileName;
- -
79
-
80 std::vector<fourdst::atomic::Species> m_activeSpecies;
- -
82
-
83 std::vector<size_t> m_speciesIndexMap;
-
84 std::vector<size_t> m_reactionIndexMap;
-
85
-
86 bool m_isStale = true;
-
87
-
88 private:
-
89 void buildFromFile(const std::string& fileName);
-
90
-
101 std::vector<size_t> constructSpeciesIndexMap() const;
-
102
-
113 std::vector<size_t> constructReactionIndexMap() const;
-
114
-
122 std::vector<double> mapViewToFull(const std::vector<double>& culled) const;
-
123
-
131 std::vector<double> mapFullToView(const std::vector<double>& full) const;
-
132
-
141 size_t mapViewToFullSpeciesIndex(size_t culledSpeciesIndex) const;
-
142
-
151 size_t mapViewToFullReactionIndex(size_t culledReactionIndex) const;
-
152
-
153 void validateNetworkState() const;
-
154 };
+
+
36 class FileDefinedEngineView final: public DynamicEngine, public EngineView<DynamicEngine> {
+
37 public:
+
55 explicit FileDefinedEngineView(
+
56 DynamicEngine& baseEngine,
+
57 const std::string& fileName,
+
58 const io::NetworkFileParser& parser
+
59 );
+
60
+
61 // --- EngineView Interface ---
+
66 const DynamicEngine& getBaseEngine() const override;
+
67
+
68 // --- Engine Interface ---
+
73 const std::vector<fourdst::atomic::Species>& getNetworkSpecies() const override;
+
74
+
75 // --- DynamicEngine Interface ---
+ +
88 const std::vector<double>& Y_defined,
+
89 const double T9,
+
90 const double rho
+
91 ) const override;
+ +
102 const std::vector<double>& Y_defined,
+
103 const double T9,
+
104 const double rho
+
105 ) override;
+ +
117 const int i_defined,
+
118 const int j_defined
+
119 ) const override;
+
125 void generateStoichiometryMatrix() override;
+ +
137 const int speciesIndex_defined,
+
138 const int reactionIndex_defined
+
139 ) const override;
+ + +
153 const std::vector<double>& Y_defined,
+
154 const double T9,
+
155 const double rho
+
156 ) const override;
+ +
175 std::unordered_map<fourdst::atomic::Species, double> getSpeciesTimescales(
+
176 const std::vector<double>& Y_defined,
+
177 const double T9,
+
178 const double rho
+
179 ) const override;
+
180
+
192 void update(const NetIn &netIn) override;
+
193
+
207 void setNetworkFile(const std::string& fileName);
+
208
+
214 void setScreeningModel(screening::ScreeningType model) override;
+
215
+
221 [[nodiscard]] screening::ScreeningType getScreeningModel() const override;
+
222 private:
+
223 using Config = fourdst::config::Config;
+
224 using LogManager = fourdst::logging::LogManager;
+
226 Config& m_config = Config::getInstance();
+
228 quill::Logger* m_logger = LogManager::getInstance().getLogger("log");
+
229
+ +
233 std::string m_fileName;
+ +
236
+
238 std::vector<fourdst::atomic::Species> m_activeSpecies;
+ +
241
+
243 std::vector<size_t> m_speciesIndexMap;
+
245 std::vector<size_t> m_reactionIndexMap;
+
246
+
248 bool m_isStale = true;
+
249
+
250 private:
+
268 void buildFromFile(const std::string& fileName);
+
269
+
280 std::vector<size_t> constructSpeciesIndexMap() const;
+
281
+
292 std::vector<size_t> constructReactionIndexMap() const;
+
293
+
301 std::vector<double> mapViewToFull(const std::vector<double>& defined) const;
+
302
+
310 std::vector<double> mapFullToView(const std::vector<double>& full) const;
+
311
+
320 size_t mapViewToFullSpeciesIndex(size_t definedSpeciesIndex) const;
+
321
+
330 size_t mapViewToFullReactionIndex(size_t definedReactionIndex) const;
+
331
+
337 void validateNetworkState() const;
+
338 };
-
155}
+
339}
Abstract class for engines supporting Jacobian and stoichiometry operations.
Abstract base class for a "view" of a reaction network engine.
-
const io::NetworkFileParser & m_parser
Parser for the network file.
-
double getJacobianMatrixEntry(const int i_defined, const int j_defined) const override
Get an entry from the previously generated Jacobian matrix.
-
std::string m_fileName
Name of the file defining the reaction set considered by the engine view.
-
void generateStoichiometryMatrix() override
Generate the stoichiometry matrix for the network.
-
std::vector< fourdst::atomic::Species > m_activeSpecies
Active species in the defined engine.
-
StepDerivatives< double > calculateRHSAndEnergy(const std::vector< double > &Y_defined, const double T9, const double rho) const override
Calculate the right-hand side (dY/dt) and energy generation.
-
void buildFromFile(const std::string &fileName)
-
void generateJacobianMatrix(const std::vector< double > &Y_defined, const double T9, const double rho) override
Generate the Jacobian matrix for the current state.
-
const DynamicEngine & getBaseEngine() const override
Access the underlying engine instance.
+
const io::NetworkFileParser & m_parser
Active species in the defined engine.
+
double getJacobianMatrixEntry(const int i_defined, const int j_defined) const override
Gets an entry from the Jacobian matrix for the active species.
+
std::string m_fileName
Parser for the network file.
+
void generateStoichiometryMatrix() override
Generates the stoichiometry matrix for the active reactions and species.
+
std::vector< fourdst::atomic::Species > m_activeSpecies
Active reactions in the defined engine.
+
StepDerivatives< double > calculateRHSAndEnergy(const std::vector< double > &Y_defined, const double T9, const double rho) const override
Calculates the right-hand side (dY/dt) and energy generation for the active species.
+
void buildFromFile(const std::string &fileName)
Builds the active species and reaction sets from a file.
+
void generateJacobianMatrix(const std::vector< double > &Y_defined, const double T9, const double rho) override
Generates the Jacobian matrix for the active species.
+
const DynamicEngine & getBaseEngine() const override
Gets the base engine.
std::vector< size_t > constructSpeciesIndexMap() const
Constructs the species index map.
-
const reaction::LogicalReactionSet & getNetworkReactions() const override
Get the set of logical reactions in the network.
-
fourdst::config::Config Config
- - -
const std::vector< fourdst::atomic::Species > & getNetworkSpecies() const override
Get the list of species in the network.
-
size_t mapViewToFullSpeciesIndex(size_t culledSpeciesIndex) const
Maps a culled species index to a full species index.
-
FileDefinedEngineView(DynamicEngine &baseEngine, const std::string &fileName, const io::NetworkFileParser &parser)
-
void setNetworkFile(const std::string &fileName)
+
const reaction::LogicalReactionSet & getNetworkReactions() const override
Gets the set of active logical reactions in the network.
+
fourdst::config::Config Config
+
bool m_isStale
A flag indicating whether the view is stale and needs to be updated.
+
size_t mapViewToFullReactionIndex(size_t definedReactionIndex) const
Maps a culled reaction index to a full reaction index.
+
Config & m_config
A reference to the singleton Config instance.
+
const std::vector< fourdst::atomic::Species > & getNetworkSpecies() const override
Gets the list of active species in the network defined by the file.
+
FileDefinedEngineView(DynamicEngine &baseEngine, const std::string &fileName, const io::NetworkFileParser &parser)
Constructs a FileDefinedEngineView.
+
void setNetworkFile(const std::string &fileName)
Sets a new network file to define the active reactions.
std::vector< double > mapFullToView(const std::vector< double > &full) const
Maps a vector of full abundances to a vector of culled abundances.
- -
int getStoichiometryMatrixEntry(const int speciesIndex_defined, const int reactionIndex_defined) const override
Get an entry from the stoichiometry matrix.
-
std::vector< double > mapViewToFull(const std::vector< double > &culled) const
Maps a vector of culled abundances to a vector of full abundances.
-
double calculateMolarReactionFlow(const reaction::Reaction &reaction, const std::vector< double > &Y_defined, const double T9, const double rho) const override
Calculate the molar reaction flow for a given reaction.
-
fourdst::logging::LogManager LogManager
-
void update(const NetIn &netIn) override
-
std::unordered_map< fourdst::atomic::Species, double > getSpeciesTimescales(const std::vector< double > &Y_defined, const double T9, const double rho) const override
Compute timescales for all species in the network.
- -
void setScreeningModel(screening::ScreeningType model) override
-
screening::ScreeningType getScreeningModel() const override
-
reaction::LogicalReactionSet m_activeReactions
Active reactions in the defined engine.
- -
size_t mapViewToFullReactionIndex(size_t culledReactionIndex) const
Maps a culled reaction index to a full reaction index.
+
quill::Logger * m_logger
A pointer to the logger instance.
+
int getStoichiometryMatrixEntry(const int speciesIndex_defined, const int reactionIndex_defined) const override
Gets an entry from the stoichiometry matrix for the active species and reactions.
+
size_t mapViewToFullSpeciesIndex(size_t definedSpeciesIndex) const
Maps a culled species index to a full species index.
+
double calculateMolarReactionFlow(const reaction::Reaction &reaction, const std::vector< double > &Y_defined, const double T9, const double rho) const override
Calculates the molar reaction flow for a given reaction in the active network.
+
fourdst::logging::LogManager LogManager
+
void update(const NetIn &netIn) override
Updates the engine view if it is marked as stale.
+
std::unordered_map< fourdst::atomic::Species, double > getSpeciesTimescales(const std::vector< double > &Y_defined, const double T9, const double rho) const override
Computes timescales for all active species in the network.
+
DynamicEngine & m_baseEngine
The underlying engine to which this view delegates calculations.
+
void setScreeningModel(screening::ScreeningType model) override
Sets the screening model for the base engine.
+
std::vector< double > mapViewToFull(const std::vector< double > &defined) const
Maps a vector of culled abundances to a vector of full abundances.
+
screening::ScreeningType getScreeningModel() const override
Gets the screening model from the base engine.
+
reaction::LogicalReactionSet m_activeReactions
Maps indices of active species to indices in the full network.
+
void validateNetworkState() const
Validates that the FileDefinedEngineView is not stale.
std::vector< size_t > constructReactionIndexMap() const
Constructs the reaction index map.
-
std::vector< size_t > m_speciesIndexMap
Maps indices of active species to indices in the full network.
-
std::vector< size_t > m_reactionIndexMap
Maps indices of active reactions 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
+
An abstract base class for network file parsers.
Represents a single nuclear reaction from a specific data source.
Definition reaction.h:72
Abstract interfaces for reaction network engines in GridFire.
Abstract interfaces for engine "views" in GridFire.
TemplatedReactionSet< LogicalReaction > LogicalReactionSet
A set of logical reactions.
Definition reaction.h:557
- +
ScreeningType
Enumerates the available plasma screening models.
diff --git a/docs/html/engine__graph_8cpp_source.html b/docs/html/engine__graph_8cpp_source.html index b3f2cfbc..5e01305b 100644 --- a/docs/html/engine__graph_8cpp_source.html +++ b/docs/html/engine__graph_8cpp_source.html @@ -133,584 +133,759 @@ $(function(){initNavTree('engine__graph_8cpp_source.html',''); initResizable(tru
28 ):
29 m_reactions(build_reaclib_nuclear_network(composition, false)) {
-
31 }
+ +
32 }
-
32
-
- -
34 m_reactions(std::move(reactions)) {
- -
36 }
+
33
+
+ +
35 const reaction::LogicalReactionSet &reactions
+
36 ) :
+
37 m_reactions(reactions) {
+ + +
40 }
-
37
-
- -
39 const std::vector<double> &Y,
-
40 const double T9,
-
41 const double rho
-
42 ) const {
-
43 return calculateAllDerivatives<double>(Y, T9, rho);
-
44 }
+
41
+
+ +
43 const std::vector<double> &Y,
+
44 const double T9,
+
45 const double rho
+
46 ) const {
+ +
48 std::vector<double> bare_rates;
+
49 bare_rates.reserve(m_reactions.size());
+
50 for (const auto& reaction: m_reactions) {
+
51 bare_rates.push_back(reaction.calculate_rate(T9));
+
52 }
+
53
+
54 // --- The public facing interface can always use the precomputed version since taping is done internally ---
+
55 return calculateAllDerivativesUsingPrecomputation(Y, bare_rates, T9, rho);
+
56 } else {
+
57 return calculateAllDerivatives<double>(Y, T9, rho);
+
58 }
+
59 }
-
45
-
46
- -
55
-
56 // --- Network Graph Construction Methods ---
-
- -
58 m_networkSpecies.clear();
-
59 m_networkSpeciesMap.clear();
60
-
61 std::set<std::string_view> uniqueSpeciesNames;
-
62
-
63 for (const auto& reaction: m_reactions) {
-
64 for (const auto& reactant: reaction.reactants()) {
-
65 uniqueSpeciesNames.insert(reactant.name());
-
66 }
-
67 for (const auto& product: reaction.products()) {
-
68 uniqueSpeciesNames.insert(product.name());
-
69 }
-
70 }
-
71
-
72 for (const auto& name: uniqueSpeciesNames) {
-
73 auto it = fourdst::atomic::species.find(std::string(name));
-
74 if (it != fourdst::atomic::species.end()) {
-
75 m_networkSpecies.push_back(it->second);
-
76 m_networkSpeciesMap.insert({name, it->second});
-
77 } else {
-
78 LOG_ERROR(m_logger, "Species '{}' not found in global atomic species database.", name);
-
79 m_logger->flush_log();
-
80 throw std::runtime_error("Species not found in global atomic species database: " + std::string(name));
+
61
+ +
70
+
71 // --- Network Graph Construction Methods ---
+
+ +
73 m_networkSpecies.clear();
+
74 m_networkSpeciesMap.clear();
+
75
+
76 std::set<std::string_view> uniqueSpeciesNames;
+
77
+
78 for (const auto& reaction: m_reactions) {
+
79 for (const auto& reactant: reaction.reactants()) {
+
80 uniqueSpeciesNames.insert(reactant.name());
81 }
-
82 }
-
83
-
84 }
+
82 for (const auto& product: reaction.products()) {
+
83 uniqueSpeciesNames.insert(product.name());
+
84 }
+
85 }
+
86
+
87 for (const auto& name: uniqueSpeciesNames) {
+
88 auto it = fourdst::atomic::species.find(std::string(name));
+
89 if (it != fourdst::atomic::species.end()) {
+
90 m_networkSpecies.push_back(it->second);
+
91 m_networkSpeciesMap.insert({name, it->second});
+
92 } else {
+
93 LOG_ERROR(m_logger, "Species '{}' not found in global atomic species database.", name);
+
94 m_logger->flush_log();
+
95 throw std::runtime_error("Species not found in global atomic species database: " + std::string(name));
+
96 }
+
97 }
+
98
+
99 }
-
85
-
- -
87 LOG_TRACE_L1(m_logger, "Populating reaction ID map for REACLIB graph network (serif::network::GraphNetwork)...");
-
88 m_reactionIDMap.clear();
-
89 for (auto& reaction: m_reactions) {
-
90 m_reactionIDMap.emplace(reaction.id(), &reaction);
-
91 }
-
92 LOG_TRACE_L1(m_logger, "Populated {} reactions in the reaction ID map.", m_reactionIDMap.size());
-
93 }
+
100
+
+ +
102 LOG_TRACE_L1(m_logger, "Populating reaction ID map for REACLIB graph network (serif::network::GraphNetwork)...");
+
103 m_reactionIDMap.clear();
+
104 for (auto& reaction: m_reactions) {
+
105 m_reactionIDMap.emplace(reaction.id(), &reaction);
+
106 }
+
107 LOG_TRACE_L1(m_logger, "Populated {} reactions in the reaction ID map.", m_reactionIDMap.size());
+
108 }
-
94
-
- -
96 m_speciesToIndexMap.clear();
-
97 for (size_t i = 0; i < m_networkSpecies.size(); ++i) {
- -
99 }
-
100 }
+
109
+
+ +
111 m_speciesToIndexMap.clear();
+
112 for (size_t i = 0; i < m_networkSpecies.size(); ++i) {
+ +
114 }
+
115 }
-
101
-
- -
103 // The implementation of this function (and others) constrains this nuclear network to a constant temperature and density during
-
104 // each evaluation.
-
105 size_t numSpecies = m_networkSpecies.size();
-
106 m_jacobianMatrix.clear();
-
107 m_jacobianMatrix.resize(numSpecies, numSpecies, false); // Sparse matrix, no initial values
-
108 LOG_TRACE_L2(m_logger, "Jacobian matrix resized to {} rows and {} columns.",
-
109 m_jacobianMatrix.size1(), m_jacobianMatrix.size2());
-
110 }
+
116
+
+ +
118 // The implementation of this function (and others) constrains this nuclear network to a constant temperature and density during
+
119 // each evaluation.
+
120 size_t numSpecies = m_networkSpecies.size();
+
121 m_jacobianMatrix.clear();
+
122 m_jacobianMatrix.resize(numSpecies, numSpecies, false); // Sparse matrix, no initial values
+
123 LOG_TRACE_L2(m_logger, "Jacobian matrix resized to {} rows and {} columns.",
+
124 m_jacobianMatrix.size1(), m_jacobianMatrix.size2());
+
125 }
-
111
-
112 // --- Basic Accessors and Queries ---
-
-
113 const std::vector<fourdst::atomic::Species>& GraphEngine::getNetworkSpecies() const {
-
114 // Returns a constant reference to the vector of unique species in the network.
-
115 LOG_TRACE_L3(m_logger, "Providing access to network species vector. Size: {}.", m_networkSpecies.size());
-
116 return m_networkSpecies;
-
117 }
+
126
+
127 // --- Basic Accessors and Queries ---
+
+
128 const std::vector<fourdst::atomic::Species>& GraphEngine::getNetworkSpecies() const {
+
129 // Returns a constant reference to the vector of unique species in the network.
+
130 LOG_TRACE_L3(m_logger, "Providing access to network species vector. Size: {}.", m_networkSpecies.size());
+
131 return m_networkSpecies;
+
132 }
-
118
-
- -
120 // Returns a constant reference to the set of reactions in the network.
-
121 LOG_TRACE_L3(m_logger, "Providing access to network reactions set. Size: {}.", m_reactions.size());
-
122 return m_reactions;
-
123 }
+
133
+
+ +
135 // Returns a constant reference to the set of reactions in the network.
+
136 LOG_TRACE_L3(m_logger, "Providing access to network reactions set. Size: {}.", m_reactions.size());
+
137 return m_reactions;
+
138 }
-
124
-
-
125 bool GraphEngine::involvesSpecies(const fourdst::atomic::Species& species) const {
-
126 // Checks if a given species is present in the network's species map for efficient lookup.
-
127 const bool found = m_networkSpeciesMap.contains(species.name());
-
128 LOG_DEBUG(m_logger, "Checking if species '{}' is involved in the network: {}.", species.name(), found ? "Yes" : "No");
-
129 return found;
-
130 }
+
139
+
+
140 bool GraphEngine::involvesSpecies(const fourdst::atomic::Species& species) const {
+
141 // Checks if a given species is present in the network's species map for efficient lookup.
+
142 const bool found = m_networkSpeciesMap.contains(species.name());
+
143 LOG_DEBUG(m_logger, "Checking if species '{}' is involved in the network: {}.", species.name(), found ? "Yes" : "No");
+
144 return found;
+
145 }
-
131
-
132 // --- Validation Methods ---
-
- -
134 LOG_TRACE_L1(m_logger, "Validating mass (A) and charge (Z) conservation across all reactions in the network.");
-
135
-
136 for (const auto& reaction : m_reactions) {
-
137 uint64_t totalReactantA = 0;
-
138 uint64_t totalReactantZ = 0;
-
139 uint64_t totalProductA = 0;
-
140 uint64_t totalProductZ = 0;
-
141
-
142 // Calculate total A and Z for reactants
-
143 for (const auto& reactant : reaction.reactants()) {
-
144 auto it = m_networkSpeciesMap.find(reactant.name());
-
145 if (it != m_networkSpeciesMap.end()) {
-
146 totalReactantA += it->second.a();
-
147 totalReactantZ += it->second.z();
-
148 } else {
-
149 // This scenario indicates a severe data integrity issue:
-
150 // a reactant is part of a reaction but not in the network's species map.
-
151 LOG_ERROR(m_logger, "CRITICAL ERROR: Reactant species '{}' in reaction '{}' not found in network species map during conservation validation.",
-
152 reactant.name(), reaction.id());
-
153 return false;
-
154 }
-
155 }
+
146
+
147 // --- Validation Methods ---
+
+ +
149 LOG_TRACE_L1(m_logger, "Validating mass (A) and charge (Z) conservation across all reactions in the network.");
+
150
+
151 for (const auto& reaction : m_reactions) {
+
152 uint64_t totalReactantA = 0;
+
153 uint64_t totalReactantZ = 0;
+
154 uint64_t totalProductA = 0;
+
155 uint64_t totalProductZ = 0;
156
-
157 // Calculate total A and Z for products
-
158 for (const auto& product : reaction.products()) {
-
159 auto it = m_networkSpeciesMap.find(product.name());
+
157 // Calculate total A and Z for reactants
+
158 for (const auto& reactant : reaction.reactants()) {
+
159 auto it = m_networkSpeciesMap.find(reactant.name());
160 if (it != m_networkSpeciesMap.end()) {
-
161 totalProductA += it->second.a();
-
162 totalProductZ += it->second.z();
+
161 totalReactantA += it->second.a();
+
162 totalReactantZ += it->second.z();
163 } else {
-
164 // Similar critical error for product species
-
165 LOG_ERROR(m_logger, "CRITICAL ERROR: Product species '{}' in reaction '{}' not found in network species map during conservation validation.",
-
166 product.name(), reaction.id());
-
167 return false;
-
168 }
-
169 }
-
170
-
171 // Compare totals for conservation
-
172 if (totalReactantA != totalProductA) {
-
173 LOG_ERROR(m_logger, "Mass number (A) not conserved for reaction '{}': Reactants A={} vs Products A={}.",
-
174 reaction.id(), totalReactantA, totalProductA);
-
175 return false;
-
176 }
-
177 if (totalReactantZ != totalProductZ) {
-
178 LOG_ERROR(m_logger, "Atomic number (Z) not conserved for reaction '{}': Reactants Z={} vs Products Z={}.",
-
179 reaction.id(), totalReactantZ, totalProductZ);
-
180 return false;
-
181 }
-
182 }
-
183
-
184 LOG_TRACE_L1(m_logger, "Mass (A) and charge (Z) conservation validated successfully for all reactions.");
-
185 return true; // All reactions passed the conservation check
-
186 }
-
-
187
-
-
188 void GraphEngine::validateComposition(const fourdst::composition::Composition &composition, double culling, double T9) {
-
189 // Check if the requested network has already been cached.
-
190 // PERF: Rebuilding this should be pretty fast but it may be a good point of optimization in the future.
-
191 const reaction::LogicalReactionSet validationReactionSet = build_reaclib_nuclear_network(composition, false);
-
192 // TODO: need some more robust method here to
-
193 // A. Build the basic network from the composition's species with non zero mass fractions.
-
194 // B. rebuild a new composition from the reaction set's reactants + products (with the mass fractions from the things that are only products set to 0)
-
195 // C. Rebuild the reaction set from the new composition
-
196 // D. Cull reactions where all reactants have mass fractions below the culling threshold.
-
197 // E. Be careful about maintaining caching through all of this
+
164 // This scenario indicates a severe data integrity issue:
+
165 // a reactant is part of a reaction but not in the network's species map.
+
166 LOG_ERROR(m_logger, "CRITICAL ERROR: Reactant species '{}' in reaction '{}' not found in network species map during conservation validation.",
+
167 reactant.name(), reaction.id());
+
168 return false;
+
169 }
+
170 }
+
171
+
172 // Calculate total A and Z for products
+
173 for (const auto& product : reaction.products()) {
+
174 auto it = m_networkSpeciesMap.find(product.name());
+
175 if (it != m_networkSpeciesMap.end()) {
+
176 totalProductA += it->second.a();
+
177 totalProductZ += it->second.z();
+
178 } else {
+
179 // Similar critical error for product species
+
180 LOG_ERROR(m_logger, "CRITICAL ERROR: Product species '{}' in reaction '{}' not found in network species map during conservation validation.",
+
181 product.name(), reaction.id());
+
182 return false;
+
183 }
+
184 }
+
185
+
186 // Compare totals for conservation
+
187 if (totalReactantA != totalProductA) {
+
188 LOG_ERROR(m_logger, "Mass number (A) not conserved for reaction '{}': Reactants A={} vs Products A={}.",
+
189 reaction.id(), totalReactantA, totalProductA);
+
190 return false;
+
191 }
+
192 if (totalReactantZ != totalProductZ) {
+
193 LOG_ERROR(m_logger, "Atomic number (Z) not conserved for reaction '{}': Reactants Z={} vs Products Z={}.",
+
194 reaction.id(), totalReactantZ, totalProductZ);
+
195 return false;
+
196 }
+
197 }
198
-
199
-
200 // This allows for dynamic network modification while retaining caching for networks which are very similar.
-
201 if (validationReactionSet != m_reactions) {
-
202 LOG_DEBUG(m_logger, "Reaction set not cached. Rebuilding the reaction set for T9={} and culling={}.", T9, culling);
-
203 m_reactions = std::move(validationReactionSet);
-
204 syncInternalMaps(); // Re-sync internal maps after updating reactions. Note this will also retrace the AD tape.
-
205 }
-
206 }
+
199 LOG_TRACE_L1(m_logger, "Mass (A) and charge (Z) conservation validated successfully for all reactions.");
+
200 return true; // All reactions passed the conservation check
+
201 }
-
207
-
208 // --- Generate Stoichiometry Matrix ---
-
- -
210 LOG_TRACE_L1(m_logger, "Generating stoichiometry matrix...");
-
211
-
212 // Task 1: Set dimensions and initialize the matrix
-
213 size_t numSpecies = m_networkSpecies.size();
-
214 size_t numReactions = m_reactions.size();
-
215 m_stoichiometryMatrix.resize(numSpecies, numReactions, false);
-
216
-
217 LOG_TRACE_L1(m_logger, "Stoichiometry matrix initialized with dimensions: {} rows (species) x {} columns (reactions).",
-
218 numSpecies, numReactions);
-
219
-
220 // Task 2: Populate the stoichiometry matrix
-
221 // Iterate through all reactions, assign them a column index, and fill in their stoichiometric coefficients.
-
222 size_t reactionColumnIndex = 0;
-
223 for (const auto& reaction : m_reactions) {
-
224 // Get the net stoichiometry for the current reaction
-
225 std::unordered_map<fourdst::atomic::Species, int> netStoichiometry = reaction.stoichiometry();
-
226
-
227 // Iterate through the species and their coefficients in the stoichiometry map
-
228 for (const auto& [species, coefficient] : netStoichiometry) {
-
229 // Find the row index for this species
-
230 auto it = m_speciesToIndexMap.find(species);
-
231 if (it != m_speciesToIndexMap.end()) {
-
232 const size_t speciesRowIndex = it->second;
-
233 // Set the matrix element. Boost.uBLAS handles sparse insertion.
-
234 m_stoichiometryMatrix(speciesRowIndex, reactionColumnIndex) = coefficient;
-
235 } else {
-
236 // This scenario should ideally not happen if m_networkSpeciesMap and m_speciesToIndexMap are correctly synced
-
237 LOG_ERROR(m_logger, "CRITICAL ERROR: Species '{}' from reaction '{}' stoichiometry not found in species to index map.",
-
238 species.name(), reaction.id());
-
239 m_logger -> flush_log();
-
240 throw std::runtime_error("Species not found in species to index map: " + std::string(species.name()));
-
241 }
-
242 }
-
243 reactionColumnIndex++; // Move to the next column for the next reaction
-
244 }
-
245
-
246 LOG_TRACE_L1(m_logger, "Stoichiometry matrix population complete. Number of non-zero elements: {}.",
-
247 m_stoichiometryMatrix.nnz()); // Assuming nnz() exists for compressed_matrix
-
248 }
-
-
249
-
- -
251 const std::vector<double> &Y_in,
-
252 const double T9,
-
253 const double rho
-
254 ) const {
-
255 return calculateAllDerivatives<double>(Y_in, T9, rho);
-
256 }
-
-
257
-
- -
259 const std::vector<ADDouble> &Y_in,
-
260 const ADDouble &T9,
-
261 const ADDouble &rho
-
262 ) const {
-
263 return calculateAllDerivatives<ADDouble>(Y_in, T9, rho);
-
264 }
-
-
265
- -
270
-
- -
272 return m_screeningType;
-
273 }
+
202
+
+
203 void GraphEngine::validateComposition(const fourdst::composition::Composition &composition, double culling, double T9) {
+
204 // Check if the requested network has already been cached.
+
205 // PERF: Rebuilding this should be pretty fast but it may be a good point of optimization in the future.
+
206 const reaction::LogicalReactionSet validationReactionSet = build_reaclib_nuclear_network(composition, false);
+
207 // TODO: need some more robust method here to
+
208 // A. Build the basic network from the composition's species with non zero mass fractions.
+
209 // B. rebuild a new composition from the reaction set's reactants + products (with the mass fractions from the things that are only products set to 0)
+
210 // C. Rebuild the reaction set from the new composition
+
211 // D. Cull reactions where all reactants have mass fractions below the culling threshold.
+
212 // E. Be careful about maintaining caching through all of this
+
213
+
214
+
215 // This allows for dynamic network modification while retaining caching for networks which are very similar.
+
216 if (validationReactionSet != m_reactions) {
+
217 LOG_DEBUG(m_logger, "Reaction set not cached. Rebuilding the reaction set for T9={} and culling={}.", T9, culling);
+
218 m_reactions = validationReactionSet;
+
219 syncInternalMaps(); // Re-sync internal maps after updating reactions. Note this will also retrace the AD tape.
+
220 }
+
221 }
+
222
+
+ +
224 const std::vector<double> &Y_in,
+
225 const std::vector<double> &bare_rates,
+
226 const double T9,
+
227 const double rho
+
228 ) const {
+
229 // --- Calculate screening factors ---
+
230 const std::vector<double> screeningFactors = m_screeningModel->calculateScreeningFactors(
+ + +
233 Y_in,
+
234 T9,
+
235 rho
+
236 );
+
237
+
238 // --- Optimized loop ---
+
239 std::vector<double> molarReactionFlows;
+
240 molarReactionFlows.reserve(m_precomputedReactions.size());
+
241
+
242 for (const auto& precomp : m_precomputedReactions) {
+
243 double abundanceProduct = 1.0;
+
244 bool below_threshold = false;
+
245 for (size_t i = 0; i < precomp.unique_reactant_indices.size(); ++i) {
+
246 const size_t reactantIndex = precomp.unique_reactant_indices[i];
+
247 const int power = precomp.reactant_powers[i];
+
248 const double abundance = Y_in[reactantIndex];
+
249 if (abundance < MIN_ABUNDANCE_THRESHOLD) {
+
250 below_threshold = true;
+
251 break;
+
252 }
+
253
+
254 abundanceProduct *= std::pow(Y_in[reactantIndex], power);
+
255 }
+
256 if (below_threshold) {
+
257 molarReactionFlows.push_back(0.0);
+
258 continue; // Skip this reaction if any reactant is below the abundance threshold
+
259 }
+
260
+
261 const double bare_rate = bare_rates[precomp.reaction_index];
+
262 const double screeningFactor = screeningFactors[precomp.reaction_index];
+
263 const size_t numReactants = m_reactions[precomp.reaction_index].reactants().size();
+
264
+
265 const double molarReactionFlow =
+
266 screeningFactor *
+
267 bare_rate *
+
268 precomp.symmetry_factor *
+
269 abundanceProduct *
+
270 std::pow(rho, numReactants);
+
271
+
272 molarReactionFlows.push_back(molarReactionFlow);
+
273 }
274
-
- - -
277 const std::vector<double> &Y,
-
278 const double T9,
-
279 const double rho
-
280 ) const {
- -
282 }
-
-
283
-
- -
285 const std::vector<double> &Y,
-
286 const double T9,
-
287 const double rho
-
288 ) {
-
289
-
290 LOG_TRACE_L1(m_logger, "Generating jacobian matrix for T9={}, rho={}..", T9, rho);
-
291 const size_t numSpecies = m_networkSpecies.size();
-
292
-
293 // 1. Pack the input variables into a vector for CppAD
-
294 std::vector<double> adInput(numSpecies + 2, 0.0); // +2 for T9 and rho
-
295 for (size_t i = 0; i < numSpecies; ++i) {
-
296 adInput[i] = Y[i];
-
297 }
-
298 adInput[numSpecies] = T9; // T9
-
299 adInput[numSpecies + 1] = rho; // rho
-
300
-
301 // 2. Calculate the full jacobian
-
302 const std::vector<double> dotY = m_rhsADFun.Jacobian(adInput);
-
303
-
304 // 3. Pack jacobian vector into sparse matrix
-
305 m_jacobianMatrix.clear();
-
306 for (size_t i = 0; i < numSpecies; ++i) {
-
307 for (size_t j = 0; j < numSpecies; ++j) {
-
308 const double value = dotY[i * (numSpecies + 2) + j];
-
309 if (std::abs(value) > MIN_JACOBIAN_THRESHOLD) {
-
310 m_jacobianMatrix(i, j) = value;
-
311 }
-
312 }
-
313 }
-
314 LOG_TRACE_L1(m_logger, "Jacobian matrix generated with dimensions: {} rows x {} columns.", m_jacobianMatrix.size1(), m_jacobianMatrix.size2());
-
315 }
-
-
316
-
-
317 double GraphEngine::getJacobianMatrixEntry(const int i, const int j) const {
-
318 return m_jacobianMatrix(i, j);
-
319 }
+
275 // --- Assemble molar abundance derivatives ---
+ +
277 result.dydt.assign(m_networkSpecies.size(), 0.0); // Initialize derivatives to zero
+
278 for (size_t j = 0; j < m_precomputedReactions.size(); ++j) {
+
279 const auto& precomp = m_precomputedReactions[j];
+
280 const double R_j = molarReactionFlows[j];
+
281
+
282 for (size_t i = 0; i < precomp.affected_species_indices.size(); ++i) {
+
283 const size_t speciesIndex = precomp.affected_species_indices[i];
+
284 const int stoichiometricCoefficient = precomp.stoichiometric_coefficients[i];
+
285
+
286 // Update the derivative for this species
+
287 result.dydt[speciesIndex] += static_cast<double>(stoichiometricCoefficient) * R_j / rho;
+
288 }
+
289 }
+
290
+
291 // --- Calculate the nuclear energy generation rate ---
+
292 double massProductionRate = 0.0; // [mol][s^-1]
+
293 for (size_t i = 0; i < m_networkSpecies.size(); ++i) {
+
294 const auto& species = m_networkSpecies[i];
+
295 massProductionRate += result.dydt[i] * species.mass() * m_constants.u;
+
296 }
+
297 result.nuclearEnergyGenerationRate = -massProductionRate * m_constants.Na * m_constants.c * m_constants.c; // [erg][s^-1][g^-1]
+
298 return result;
+
299
+
300 }
+
301
+
302 // --- Generate Stoichiometry Matrix ---
+
+ +
304 LOG_TRACE_L1(m_logger, "Generating stoichiometry matrix...");
+
305
+
306 // Task 1: Set dimensions and initialize the matrix
+
307 size_t numSpecies = m_networkSpecies.size();
+
308 size_t numReactions = m_reactions.size();
+
309 m_stoichiometryMatrix.resize(numSpecies, numReactions, false);
+
310
+
311 LOG_TRACE_L1(m_logger, "Stoichiometry matrix initialized with dimensions: {} rows (species) x {} columns (reactions).",
+
312 numSpecies, numReactions);
+
313
+
314 // Task 2: Populate the stoichiometry matrix
+
315 // Iterate through all reactions, assign them a column index, and fill in their stoichiometric coefficients.
+
316 size_t reactionColumnIndex = 0;
+
317 for (const auto& reaction : m_reactions) {
+
318 // Get the net stoichiometry for the current reaction
+
319 std::unordered_map<fourdst::atomic::Species, int> netStoichiometry = reaction.stoichiometry();
320
-
-
321 std::unordered_map<fourdst::atomic::Species, int> GraphEngine::getNetReactionStoichiometry(
- -
323 ) {
-
324 return reaction.stoichiometry();
-
325 }
+
321 // Iterate through the species and their coefficients in the stoichiometry map
+
322 for (const auto& [species, coefficient] : netStoichiometry) {
+
323 // Find the row index for this species
+
324 auto it = m_speciesToIndexMap.find(species);
+
325 if (it != m_speciesToIndexMap.end()) {
+
326 const size_t speciesRowIndex = it->second;
+
327 // Set the matrix element. Boost.uBLAS handles sparse insertion.
+
328 m_stoichiometryMatrix(speciesRowIndex, reactionColumnIndex) = coefficient;
+
329 } else {
+
330 // This scenario should ideally not happen if m_networkSpeciesMap and m_speciesToIndexMap are correctly synced
+
331 LOG_ERROR(m_logger, "CRITICAL ERROR: Species '{}' from reaction '{}' stoichiometry not found in species to index map.",
+
332 species.name(), reaction.id());
+
333 m_logger -> flush_log();
+
334 throw std::runtime_error("Species not found in species to index map: " + std::string(species.name()));
+
335 }
+
336 }
+
337 reactionColumnIndex++; // Move to the next column for the next reaction
+
338 }
+
339
+
340 LOG_TRACE_L1(m_logger, "Stoichiometry matrix population complete. Number of non-zero elements: {}.",
+
341 m_stoichiometryMatrix.nnz()); // Assuming nnz() exists for compressed_matrix
+
342 }
-
326
-
- -
328 const int speciesIndex,
-
329 const int reactionIndex
-
330 ) const {
-
331 return m_stoichiometryMatrix(speciesIndex, reactionIndex);
-
332 }
-
-
333
-
-
334 void GraphEngine::exportToDot(const std::string &filename) const {
-
335 LOG_TRACE_L1(m_logger, "Exporting network graph to DOT file: {}", filename);
-
336
-
337 std::ofstream dotFile(filename);
-
338 if (!dotFile.is_open()) {
-
339 LOG_ERROR(m_logger, "Failed to open file for writing: {}", filename);
-
340 m_logger->flush_log();
-
341 throw std::runtime_error("Failed to open file for writing: " + filename);
-
342 }
343
-
344 dotFile << "digraph NuclearReactionNetwork {\n";
-
345 dotFile << " graph [rankdir=LR, splines=true, overlap=false, bgcolor=\"#f0f0f0\"];\n";
-
346 dotFile << " node [shape=circle, style=filled, fillcolor=\"#a7c7e7\", fontname=\"Helvetica\"];\n";
-
347 dotFile << " edge [fontname=\"Helvetica\", fontsize=10];\n\n";
-
348
-
349 // 1. Define all species as nodes
-
350 dotFile << " // --- Species Nodes ---\n";
-
351 for (const auto& species : m_networkSpecies) {
-
352 dotFile << " \"" << species.name() << "\" [label=\"" << species.name() << "\"];\n";
-
353 }
-
354 dotFile << "\n";
-
355
-
356 // 2. Define all reactions as intermediate nodes and connect them
-
357 dotFile << " // --- Reaction Edges ---\n";
-
358 for (const auto& reaction : m_reactions) {
-
359 // Create a unique ID for the reaction node
-
360 std::string reactionNodeId = "reaction_" + std::string(reaction.id());
-
361
-
362 // Define the reaction node (small, black dot)
-
363 dotFile << " \"" << reactionNodeId << "\" [shape=point, fillcolor=black, width=0.1, height=0.1, label=\"\"];\n";
-
364
-
365 // Draw edges from reactants to the reaction node
-
366 for (const auto& reactant : reaction.reactants()) {
-
367 dotFile << " \"" << reactant.name() << "\" -> \"" << reactionNodeId << "\";\n";
-
368 }
-
369
-
370 // Draw edges from the reaction node to products
-
371 for (const auto& product : reaction.products()) {
-
372 dotFile << " \"" << reactionNodeId << "\" -> \"" << product.name() << "\" [label=\"" << reaction.qValue() << " MeV\"];\n";
-
373 }
-
374 dotFile << "\n";
-
375 }
-
376
-
377 dotFile << "}\n";
-
378 dotFile.close();
-
379 LOG_TRACE_L1(m_logger, "Successfully exported network to {}", filename);
-
380 }
+
+ +
345 const std::vector<double> &Y_in,
+
346 const double T9,
+
347 const double rho
+
348 ) const {
+
349 return calculateAllDerivatives<double>(Y_in, T9, rho);
+
350 }
-
381
-
-
382 void GraphEngine::exportToCSV(const std::string &filename) const {
-
383 LOG_TRACE_L1(m_logger, "Exporting network graph to CSV file: {}", filename);
-
384
-
385 std::ofstream csvFile(filename, std::ios::out | std::ios::trunc);
-
386 if (!csvFile.is_open()) {
-
387 LOG_ERROR(m_logger, "Failed to open file for writing: {}", filename);
-
388 m_logger->flush_log();
-
389 throw std::runtime_error("Failed to open file for writing: " + filename);
-
390 }
-
391 csvFile << "Reaction;Reactants;Products;Q-value;sources;rates\n";
-
392 for (const auto& reaction : m_reactions) {
-
393 // Dynamic cast to REACLIBReaction to access specific properties
-
394 csvFile << reaction.id() << ";";
-
395 // Reactants
-
396 int count = 0;
-
397 for (const auto& reactant : reaction.reactants()) {
-
398 csvFile << reactant.name();
-
399 if (++count < reaction.reactants().size()) {
-
400 csvFile << ",";
-
401 }
-
402 }
-
403 csvFile << ";";
-
404 count = 0;
-
405 for (const auto& product : reaction.products()) {
-
406 csvFile << product.name();
-
407 if (++count < reaction.products().size()) {
-
408 csvFile << ",";
-
409 }
-
410 }
-
411 csvFile << ";" << reaction.qValue() << ";";
-
412 // Reaction coefficients
-
413 auto sources = reaction.sources();
-
414 count = 0;
-
415 for (const auto& source : sources) {
-
416 csvFile << source;
-
417 if (++count < sources.size()) {
-
418 csvFile << ",";
-
419 }
-
420 }
-
421 csvFile << ";";
-
422 // Reaction coefficients
-
423 count = 0;
-
424 for (const auto& rates : reaction) {
-
425 csvFile << rates;
-
426 if (++count < reaction.size()) {
-
427 csvFile << ",";
-
428 }
-
429 }
-
430 csvFile << "\n";
-
431 }
-
432 csvFile.close();
-
433 LOG_TRACE_L1(m_logger, "Successfully exported network graph to {}", filename);
+
351
+
+ +
353 const std::vector<ADDouble> &Y_in,
+
354 const ADDouble &T9,
+
355 const ADDouble &rho
+
356 ) const {
+
357 return calculateAllDerivatives<ADDouble>(Y_in, T9, rho);
+
358 }
+
+
359
+ +
364
+ +
368
+
+
369 void GraphEngine::setPrecomputation(const bool precompute) {
+
370 m_usePrecomputation = precompute;
+
371 }
+
+
372
+
+ +
374 return m_usePrecomputation;
+
375 }
+
+
376
+
+ + +
379 const std::vector<double> &Y,
+
380 const double T9,
+
381 const double rho
+
382 ) const {
+ +
384 }
+
+
385
+
+ +
387 const std::vector<double> &Y,
+
388 const double T9,
+
389 const double rho
+
390 ) {
+
391
+
392 LOG_TRACE_L1(m_logger, "Generating jacobian matrix for T9={}, rho={}..", T9, rho);
+
393 const size_t numSpecies = m_networkSpecies.size();
+
394
+
395 // 1. Pack the input variables into a vector for CppAD
+
396 std::vector<double> adInput(numSpecies + 2, 0.0); // +2 for T9 and rho
+
397 for (size_t i = 0; i < numSpecies; ++i) {
+
398 adInput[i] = Y[i];
+
399 }
+
400 adInput[numSpecies] = T9; // T9
+
401 adInput[numSpecies + 1] = rho; // rho
+
402
+
403 // 2. Calculate the full jacobian
+
404 const std::vector<double> dotY = m_rhsADFun.Jacobian(adInput);
+
405
+
406 // 3. Pack jacobian vector into sparse matrix
+
407 m_jacobianMatrix.clear();
+
408 for (size_t i = 0; i < numSpecies; ++i) {
+
409 for (size_t j = 0; j < numSpecies; ++j) {
+
410 const double value = dotY[i * (numSpecies + 2) + j];
+
411 if (std::abs(value) > MIN_JACOBIAN_THRESHOLD) {
+
412 m_jacobianMatrix(i, j) = value;
+
413 }
+
414 }
+
415 }
+
416 LOG_TRACE_L1(m_logger, "Jacobian matrix generated with dimensions: {} rows x {} columns.", m_jacobianMatrix.size1(), m_jacobianMatrix.size2());
+
417 }
+
+
418
+
+
419 double GraphEngine::getJacobianMatrixEntry(const int i, const int j) const {
+
420 return m_jacobianMatrix(i, j);
+
421 }
+
+
422
+
+
423 std::unordered_map<fourdst::atomic::Species, int> GraphEngine::getNetReactionStoichiometry(
+ +
425 ) {
+
426 return reaction.stoichiometry();
+
427 }
+
+
428
+
+ +
430 const int speciesIndex,
+
431 const int reactionIndex
+
432 ) const {
+
433 return m_stoichiometryMatrix(speciesIndex, reactionIndex);
434 }
435
-
436 std::unordered_map<fourdst::atomic::Species, double> GraphEngine::getSpeciesTimescales(const std::vector<double> &Y, const double T9,
-
437 const double rho) const {
-
438 auto [dydt, _] = calculateAllDerivatives<double>(Y, T9, rho);
-
439 std::unordered_map<fourdst::atomic::Species, double> speciesTimescales;
-
440 speciesTimescales.reserve(m_networkSpecies.size());
-
441 for (size_t i = 0; i < m_networkSpecies.size(); ++i) {
-
442 double timescale = std::numeric_limits<double>::infinity();
-
443 const auto species = m_networkSpecies[i];
-
444 if (std::abs(dydt[i]) > 0.0) {
-
445 timescale = std::abs(Y[i] / dydt[i]);
-
446 }
-
447 speciesTimescales.emplace(species, timescale);
-
448 }
-
449 return speciesTimescales;
-
450 }
-
-
451
-
-
452 void GraphEngine::update(const NetIn &netIn) {
-
453 return; // No-op for GraphEngine, as it does not support manually triggering updates.
-
454 }
-
-
455
-
- -
457 LOG_TRACE_L1(m_logger, "Recording AD tape for the RHS calculation...");
-
458
-
459 // Task 1: Set dimensions and initialize the matrix
-
460 const size_t numSpecies = m_networkSpecies.size();
-
461 if (numSpecies == 0) {
-
462 LOG_ERROR(m_logger, "Cannot record AD tape: No species in the network.");
-
463 m_logger->flush_log();
-
464 throw std::runtime_error("Cannot record AD tape: No species in the network.");
-
465 }
-
466 const size_t numADInputs = numSpecies + 2; // Note here that by not letting T9 and rho be independent variables, we are constraining the network to a constant temperature and density during each evaluation.
-
467
-
468 // --- CppAD Tape Recording ---
-
469 // 1. Declare independent variable (adY)
-
470 // We also initialize the dummy variable for tape recording (these tell CppAD what the derivative chain looks like).
-
471 // Their numeric values are irrelevant except for in so far as they avoid numerical instabilities.
-
472
-
473 // Distribute total mass fraction uniformly between species in the dummy variable space
-
474 const auto uniformMassFraction = static_cast<CppAD::AD<double>>(1.0 / numSpecies);
-
475 std::vector<CppAD::AD<double>> adInput(numADInputs, uniformMassFraction);
-
476 adInput[numSpecies] = 1.0; // Dummy T9
-
477 adInput[numSpecies + 1] = 1.0; // Dummy rho
+
436 void GraphEngine::exportToDot(const std::string &filename) const {
+
437 LOG_TRACE_L1(m_logger, "Exporting network graph to DOT file: {}", filename);
+
438
+
439 std::ofstream dotFile(filename);
+
440 if (!dotFile.is_open()) {
+
441 LOG_ERROR(m_logger, "Failed to open file for writing: {}", filename);
+
442 m_logger->flush_log();
+
443 throw std::runtime_error("Failed to open file for writing: " + filename);
+
444 }
+
445
+
446 dotFile << "digraph NuclearReactionNetwork {\n";
+
447 dotFile << " graph [rankdir=LR, splines=true, overlap=false, bgcolor=\"#f0f0f0\"];\n";
+
448 dotFile << " node [shape=circle, style=filled, fillcolor=\"#a7c7e7\", fontname=\"Helvetica\"];\n";
+
449 dotFile << " edge [fontname=\"Helvetica\", fontsize=10];\n\n";
+
450
+
451 // 1. Define all species as nodes
+
452 dotFile << " // --- Species Nodes ---\n";
+
453 for (const auto& species : m_networkSpecies) {
+
454 dotFile << " \"" << species.name() << "\" [label=\"" << species.name() << "\"];\n";
+
455 }
+
456 dotFile << "\n";
+
457
+
458 // 2. Define all reactions as intermediate nodes and connect them
+
459 dotFile << " // --- Reaction Edges ---\n";
+
460 for (const auto& reaction : m_reactions) {
+
461 // Create a unique ID for the reaction node
+
462 std::string reactionNodeId = "reaction_" + std::string(reaction.id());
+
463
+
464 // Define the reaction node (small, black dot)
+
465 dotFile << " \"" << reactionNodeId << "\" [shape=point, fillcolor=black, width=0.1, height=0.1, label=\"\"];\n";
+
466
+
467 // Draw edges from reactants to the reaction node
+
468 for (const auto& reactant : reaction.reactants()) {
+
469 dotFile << " \"" << reactant.name() << "\" -> \"" << reactionNodeId << "\";\n";
+
470 }
+
471
+
472 // Draw edges from the reaction node to products
+
473 for (const auto& product : reaction.products()) {
+
474 dotFile << " \"" << reactionNodeId << "\" -> \"" << product.name() << "\" [label=\"" << reaction.qValue() << " MeV\"];\n";
+
475 }
+
476 dotFile << "\n";
+
477 }
478
-
479 // 3. Declare independent variables (what CppAD will differentiate wrt.)
-
480 // This also beings the tape recording process.
-
481 CppAD::Independent(adInput);
-
482
-
483 std::vector<CppAD::AD<double>> adY(numSpecies);
-
484 for(size_t i = 0; i < numSpecies; ++i) {
-
485 adY[i] = adInput[i];
-
486 }
-
487 const CppAD::AD<double> adT9 = adInput[numSpecies];
-
488 const CppAD::AD<double> adRho = adInput[numSpecies + 1];
-
489
-
490
-
491 // 5. Call the actual templated function
-
492 // We let T9 and rho be constant, so we pass them as fixed values.
-
493 auto [dydt, nuclearEnergyGenerationRate] = calculateAllDerivatives<CppAD::AD<double>>(adY, adT9, adRho);
-
494
-
495 m_rhsADFun.Dependent(adInput, dydt);
-
496
-
497 LOG_TRACE_L1(m_logger, "AD tape recorded successfully for the RHS calculation. Number of independent variables: {}.",
-
498 adInput.size());
-
499 }
+
479 dotFile << "}\n";
+
480 dotFile.close();
+
481 LOG_TRACE_L1(m_logger, "Successfully exported network to {}", filename);
+
482 }
-
500}
-
const std::vector< fourdst::atomic::Species > & getNetworkSpecies() const override
Gets the list of species in the network.
-
std::unordered_map< fourdst::atomic::Species, double > getSpeciesTimescales(const std::vector< double > &Y, double T9, double rho) const override
Computes timescales for all species in the network.
-
void populateReactionIDMap()
Populates the reaction ID map.
-
CppAD::ADFun< double > m_rhsADFun
CppAD function for the right-hand side of the ODE.
-
boost::numeric::ublas::compressed_matrix< double > m_jacobianMatrix
Jacobian matrix (species x species).
-
double getJacobianMatrixEntry(const int i, const int j) const override
Gets an entry from the previously generated Jacobian matrix.
-
std::unordered_map< std::string_view, fourdst::atomic::Species > m_networkSpeciesMap
Map from species name to Species object.
-
void populateSpeciesToIndexMap()
Populates the species-to-index map.
-
quill::Logger * m_logger
-
void update(const NetIn &netIn) override
-
screening::ScreeningType m_screeningType
Screening type for the reaction network. Default to no screening.
-
void reserveJacobianMatrix()
Reserves space for the Jacobian matrix.
-
std::unordered_map< std::string_view, reaction::Reaction * > m_reactionIDMap
Map from reaction ID to REACLIBReaction. //PERF: This makes copies of REACLIBReaction and could be a ...
-
screening::ScreeningType getScreeningModel() const override
-
int getStoichiometryMatrixEntry(const int speciesIndex, const int reactionIndex) const override
Gets an entry from the stoichiometry matrix.
-
void setScreeningModel(screening::ScreeningType) override
-
void exportToCSV(const std::string &filename) const
Exports the network to a CSV file for analysis.
-
StepDerivatives< double > calculateRHSAndEnergy(const std::vector< double > &Y, const double T9, const double rho) const override
Calculates the right-hand side (dY/dt) and energy generation rate.
-
static std::unordered_map< fourdst::atomic::Species, int > getNetReactionStoichiometry(const reaction::Reaction &reaction)
Gets the net stoichiometry for a given reaction.
-
double calculateMolarReactionFlow(const reaction::Reaction &reaction, const std::vector< double > &Y, const double T9, const double rho) const override
Calculates the molar reaction flow for a given reaction.
-
std::vector< fourdst::atomic::Species > m_networkSpecies
Vector of unique species in the network.
-
void recordADTape()
Records the AD tape for the right-hand side of the ODE.
+
483
+
+
484 void GraphEngine::exportToCSV(const std::string &filename) const {
+
485 LOG_TRACE_L1(m_logger, "Exporting network graph to CSV file: {}", filename);
+
486
+
487 std::ofstream csvFile(filename, std::ios::out | std::ios::trunc);
+
488 if (!csvFile.is_open()) {
+
489 LOG_ERROR(m_logger, "Failed to open file for writing: {}", filename);
+
490 m_logger->flush_log();
+
491 throw std::runtime_error("Failed to open file for writing: " + filename);
+
492 }
+
493 csvFile << "Reaction;Reactants;Products;Q-value;sources;rates\n";
+
494 for (const auto& reaction : m_reactions) {
+
495 // Dynamic cast to REACLIBReaction to access specific properties
+
496 csvFile << reaction.id() << ";";
+
497 // Reactants
+
498 int count = 0;
+
499 for (const auto& reactant : reaction.reactants()) {
+
500 csvFile << reactant.name();
+
501 if (++count < reaction.reactants().size()) {
+
502 csvFile << ",";
+
503 }
+
504 }
+
505 csvFile << ";";
+
506 count = 0;
+
507 for (const auto& product : reaction.products()) {
+
508 csvFile << product.name();
+
509 if (++count < reaction.products().size()) {
+
510 csvFile << ",";
+
511 }
+
512 }
+
513 csvFile << ";" << reaction.qValue() << ";";
+
514 // Reaction coefficients
+
515 auto sources = reaction.sources();
+
516 count = 0;
+
517 for (const auto& source : sources) {
+
518 csvFile << source;
+
519 if (++count < sources.size()) {
+
520 csvFile << ",";
+
521 }
+
522 }
+
523 csvFile << ";";
+
524 // Reaction coefficients
+
525 count = 0;
+
526 for (const auto& rates : reaction) {
+
527 csvFile << rates;
+
528 if (++count < reaction.size()) {
+
529 csvFile << ",";
+
530 }
+
531 }
+
532 csvFile << "\n";
+
533 }
+
534 csvFile.close();
+
535 LOG_TRACE_L1(m_logger, "Successfully exported network graph to {}", filename);
+
536 }
+
+
537
+
+
538 std::unordered_map<fourdst::atomic::Species, double> GraphEngine::getSpeciesTimescales(const std::vector<double> &Y, const double T9,
+
539 const double rho) const {
+
540 auto [dydt, _] = calculateAllDerivatives<double>(Y, T9, rho);
+
541 std::unordered_map<fourdst::atomic::Species, double> speciesTimescales;
+
542 speciesTimescales.reserve(m_networkSpecies.size());
+
543 for (size_t i = 0; i < m_networkSpecies.size(); ++i) {
+
544 double timescale = std::numeric_limits<double>::infinity();
+
545 const auto species = m_networkSpecies[i];
+
546 if (std::abs(dydt[i]) > 0.0) {
+
547 timescale = std::abs(Y[i] / dydt[i]);
+
548 }
+
549 speciesTimescales.emplace(species, timescale);
+
550 }
+
551 return speciesTimescales;
+
552 }
+
+
553
+
+
554 void GraphEngine::update(const NetIn &netIn) {
+
555 // No-op for GraphEngine, as it does not support manually triggering updates.
+
556 }
+
+
557
+
+ +
559 LOG_TRACE_L1(m_logger, "Recording AD tape for the RHS calculation...");
+
560
+
561 // Task 1: Set dimensions and initialize the matrix
+
562 const size_t numSpecies = m_networkSpecies.size();
+
563 if (numSpecies == 0) {
+
564 LOG_ERROR(m_logger, "Cannot record AD tape: No species in the network.");
+
565 m_logger->flush_log();
+
566 throw std::runtime_error("Cannot record AD tape: No species in the network.");
+
567 }
+
568 const size_t numADInputs = numSpecies + 2; // Note here that by not letting T9 and rho be independent variables, we are constraining the network to a constant temperature and density during each evaluation.
+
569
+
570 // --- CppAD Tape Recording ---
+
571 // 1. Declare independent variable (adY)
+
572 // We also initialize the dummy variable for tape recording (these tell CppAD what the derivative chain looks like).
+
573 // Their numeric values are irrelevant except for in so far as they avoid numerical instabilities.
+
574
+
575 // Distribute total mass fraction uniformly between species in the dummy variable space
+
576 const auto uniformMassFraction = static_cast<CppAD::AD<double>>(1.0 / static_cast<double>(numSpecies));
+
577 std::vector<CppAD::AD<double>> adInput(numADInputs, uniformMassFraction);
+
578 adInput[numSpecies] = 1.0; // Dummy T9
+
579 adInput[numSpecies + 1] = 1.0; // Dummy rho
+
580
+
581 // 3. Declare independent variables (what CppAD will differentiate wrt.)
+
582 // This also beings the tape recording process.
+
583 CppAD::Independent(adInput);
+
584
+
585 std::vector<CppAD::AD<double>> adY(numSpecies);
+
586 for(size_t i = 0; i < numSpecies; ++i) {
+
587 adY[i] = adInput[i];
+
588 }
+
589 const CppAD::AD<double> adT9 = adInput[numSpecies];
+
590 const CppAD::AD<double> adRho = adInput[numSpecies + 1];
+
591
+
592
+
593 // 5. Call the actual templated function
+
594 // We let T9 and rho be constant, so we pass them as fixed values.
+
595 auto [dydt, nuclearEnergyGenerationRate] = calculateAllDerivatives<CppAD::AD<double>>(adY, adT9, adRho);
+
596
+
597 m_rhsADFun.Dependent(adInput, dydt);
+
598
+
599 LOG_TRACE_L1(m_logger, "AD tape recorded successfully for the RHS calculation. Number of independent variables: {}.",
+
600 adInput.size());
+
601 }
+
+
602
+
+ +
604 LOG_TRACE_L1(m_logger, "Pre-computing constant components of GraphNetwork state...");
+
605
+
606 // --- Reverse map for fast species lookups ---
+
607 std::unordered_map<fourdst::atomic::Species, size_t> speciesIndexMap;
+
608 for (size_t i = 0; i < m_networkSpecies.size(); ++i) {
+
609 speciesIndexMap[m_networkSpecies[i]] = i;
+
610 }
+
611
+ +
613 m_precomputedReactions.reserve(m_reactions.size());
+
614
+
615 for (size_t i = 0; i < m_reactions.size(); ++i) {
+
616 const auto& reaction = m_reactions[i];
+
617 PrecomputedReaction precomp;
+
618 precomp.reaction_index = i;
+
619
+
620 // --- Precompute reactant information ---
+
621 // Count occurrences for each reactant to determine powers and symmetry
+
622 std::unordered_map<size_t, int> reactantCounts;
+
623 for (const auto& reactant: reaction.reactants()) {
+
624 size_t reactantIndex = speciesIndexMap.at(reactant);
+
625 reactantCounts[reactantIndex]++;
+
626 }
+
627
+
628 double symmetryDenominator = 1.0;
+
629 for (const auto& [index, count] : reactantCounts) {
+
630 precomp.unique_reactant_indices.push_back(index);
+
631 precomp.reactant_powers.push_back(count);
+
632
+
633 symmetryDenominator *= 1.0/std::tgamma(count + 1);
+
634 }
+
635
+
636 precomp.symmetry_factor = symmetryDenominator;
+
637
+
638 // --- Precompute stoichiometry information ---
+
639 const auto stoichiometryMap = reaction.stoichiometry();
+
640 precomp.affected_species_indices.reserve(stoichiometryMap.size());
+
641 precomp.stoichiometric_coefficients.reserve(stoichiometryMap.size());
+
642
+
643 for (const auto& [species, coeff] : stoichiometryMap) {
+
644 precomp.affected_species_indices.push_back(speciesIndexMap.at(species));
+
645 precomp.stoichiometric_coefficients.push_back(coeff);
+
646 }
+
647
+
648 m_precomputedReactions.push_back(std::move(precomp));
+
649 }
+
650 }
+
+
651}
+
bool isPrecomputationEnabled() const
+
const std::vector< fourdst::atomic::Species > & getNetworkSpecies() const override
Gets the list of species in the network.
+ +
bool m_usePrecomputation
Flag to enable or disable using precomputed reactions for efficiency. Mathematically,...
+
std::unordered_map< fourdst::atomic::Species, double > getSpeciesTimescales(const std::vector< double > &Y, double T9, double rho) const override
Computes timescales for all species in the network.
+
void populateReactionIDMap()
Populates the reaction ID map.
+
CppAD::ADFun< double > m_rhsADFun
CppAD function for the right-hand side of the ODE.
+
boost::numeric::ublas::compressed_matrix< double > m_jacobianMatrix
Jacobian matrix (species x species).
+
double getJacobianMatrixEntry(const int i, const int j) const override
Gets an entry from the previously generated Jacobian matrix.
+
std::unordered_map< std::string_view, fourdst::atomic::Species > m_networkSpeciesMap
Map from species name to Species object.
+
void populateSpeciesToIndexMap()
Populates the species-to-index map.
+
quill::Logger * m_logger
+
void update(const NetIn &netIn) override
Update the internal state of the engine.
+
screening::ScreeningType m_screeningType
Screening type for the reaction network. Default to no screening.
+
void reserveJacobianMatrix()
Reserves space for the Jacobian matrix.
+
std::vector< PrecomputedReaction > m_precomputedReactions
Precomputed reactions for efficiency.
+
std::unordered_map< std::string_view, reaction::Reaction * > m_reactionIDMap
Map from reaction ID to REACLIBReaction. //PERF: This makes copies of REACLIBReaction and could be a ...
+
StepDerivatives< double > calculateAllDerivativesUsingPrecomputation(const std::vector< double > &Y_in, const std::vector< double > &bare_rates, double T9, double rho) const
+
screening::ScreeningType getScreeningModel() const override
Get the current electron screening model.
+
int getStoichiometryMatrixEntry(const int speciesIndex, const int reactionIndex) const override
Gets an entry from the stoichiometry matrix.
+
void setPrecomputation(bool precompute)
+
void setScreeningModel(screening::ScreeningType) override
Set the electron screening model.
+
void exportToCSV(const std::string &filename) const
Exports the network to a CSV file for analysis.
+
StepDerivatives< double > calculateRHSAndEnergy(const std::vector< double > &Y, const double T9, const double rho) const override
Calculates the right-hand side (dY/dt) and energy generation rate.
+
static std::unordered_map< fourdst::atomic::Species, int > getNetReactionStoichiometry(const reaction::Reaction &reaction)
Gets the net stoichiometry for a given reaction.
+
double calculateMolarReactionFlow(const reaction::Reaction &reaction, const std::vector< double > &Y, const double T9, const double rho) const override
Calculates the molar reaction flow for a given reaction.
+ +
std::vector< fourdst::atomic::Species > m_networkSpecies
Vector of unique species in the network.
+
void recordADTape()
Records the AD tape for the right-hand side of the ODE.
GraphEngine(const fourdst::composition::Composition &composition)
Constructs a GraphEngine from a composition.
-
bool involvesSpecies(const fourdst::atomic::Species &species) const
Checks if a given species is involved in the network.
-
reaction::LogicalReactionSet m_reactions
Set of REACLIB reactions in the network.
-
void syncInternalMaps()
Synchronizes the internal maps.
-
bool validateConservation() const
Validates mass and charge conservation across all reactions.
-
boost::numeric::ublas::compressed_matrix< int > m_stoichiometryMatrix
Stoichiometry matrix (species x reactions).
-
const reaction::LogicalReactionSet & getNetworkReactions() const override
Gets the set of logical reactions in the network.
-
std::unordered_map< fourdst::atomic::Species, size_t > m_speciesToIndexMap
Map from species to their index in the stoichiometry matrix.
-
void exportToDot(const std::string &filename) const
Exports the network to a DOT file for visualization.
-
void generateJacobianMatrix(const std::vector< double > &Y, const double T9, const double rho) override
Generates the Jacobian matrix for the current state.
-
void generateStoichiometryMatrix() override
Generates the stoichiometry matrix for the network.
-
void collectNetworkSpecies()
Collects the unique species in the network.
-
void validateComposition(const fourdst::composition::Composition &composition, double culling, double T9)
Validates the composition against the current reaction set.
-
std::unique_ptr< screening::ScreeningModel > m_screeningModel
-
StepDerivatives< T > calculateAllDerivatives(const std::vector< T > &Y_in, T T9, T rho) const
Calculates all derivatives (dY/dt) and the energy generation rate.
+
bool involvesSpecies(const fourdst::atomic::Species &species) const
Checks if a given species is involved in the network.
+
reaction::LogicalReactionSet m_reactions
Set of REACLIB reactions in the network.
+
void syncInternalMaps()
Synchronizes the internal maps.
+
bool validateConservation() const
Validates mass and charge conservation across all reactions.
+
boost::numeric::ublas::compressed_matrix< int > m_stoichiometryMatrix
Stoichiometry matrix (species x reactions).
+
const reaction::LogicalReactionSet & getNetworkReactions() const override
Gets the set of logical reactions in the network.
+
std::unordered_map< fourdst::atomic::Species, size_t > m_speciesToIndexMap
Map from species to their index in the stoichiometry matrix.
+
void exportToDot(const std::string &filename) const
Exports the network to a DOT file for visualization.
+
void generateJacobianMatrix(const std::vector< double > &Y, const double T9, const double rho) override
Generates the Jacobian matrix for the current state.
+
void generateStoichiometryMatrix() override
Generates the stoichiometry matrix for the network.
+
void collectNetworkSpecies()
Collects the unique species in the network.
+
void validateComposition(const fourdst::composition::Composition &composition, double culling, double T9)
Validates the composition against the current reaction set.
+
std::unique_ptr< screening::ScreeningModel > m_screeningModel
+
StepDerivatives< T > calculateAllDerivatives(const std::vector< T > &Y_in, T T9, T rho) const
Calculates all derivatives (dY/dt) and the energy generation rate.
Represents a single nuclear reaction from a specific data source.
Definition reaction.h:72
TemplatedReactionSet< LogicalReaction > LogicalReactionSet
A set of logical reactions.
Definition reaction.h:557
-
std::unique_ptr< ScreeningModel > selectScreeningModel(ScreeningType type)
- +
std::unique_ptr< ScreeningModel > selectScreeningModel(ScreeningType type)
A factory function to select and create a screening model.
+
ScreeningType
Enumerates the available plasma screening models.
CppAD::AD< double > ADDouble
Alias for CppAD AD type for double precision.
+
static constexpr double MIN_ABUNDANCE_THRESHOLD
Minimum abundance threshold below which species are ignored.
reaction::LogicalReactionSet build_reaclib_nuclear_network(const fourdst::composition::Composition &composition, bool reverse)
Definition network.cpp:64
static constexpr double MIN_JACOBIAN_THRESHOLD
Minimum value for Jacobian matrix entries.
-
STL namespace.
Defines classes for representing and managing nuclear reactions.
+ + + + + + +
Structure holding derivatives and energy generation for a network step.
+
T nuclearEnergyGenerationRate
Specific energy generation rate (e.g., erg/g/s).
+
std::vector< T > dydt
Derivatives of abundances (dY/dt for each species).
diff --git a/docs/html/engine__graph_8h.html b/docs/html/engine__graph_8h.html index ea64e5c1..6b725cb1 100644 --- a/docs/html/engine__graph_8h.html +++ b/docs/html/engine__graph_8h.html @@ -130,6 +130,10 @@ Classes

class  gridfire::GraphEngine
 A reaction network engine that uses a graph-based representation. More...
 
struct  gridfire::GraphEngine::PrecomputedReaction
 
struct  gridfire::GraphEngine::constants
 
diff --git a/docs/html/engine__graph_8h.js b/docs/html/engine__graph_8h.js index 6a5c1eac..aaf5eb87 100644 --- a/docs/html/engine__graph_8h.js +++ b/docs/html/engine__graph_8h.js @@ -1,6 +1,8 @@ var engine__graph_8h = [ [ "gridfire::GraphEngine", "classgridfire_1_1_graph_engine.html", "classgridfire_1_1_graph_engine" ], + [ "gridfire::GraphEngine::PrecomputedReaction", "structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html", "structgridfire_1_1_graph_engine_1_1_precomputed_reaction" ], + [ "gridfire::GraphEngine::constants", "structgridfire_1_1_graph_engine_1_1constants.html", "structgridfire_1_1_graph_engine_1_1constants" ], [ "gridfire::ADDouble", "namespacegridfire.html#a1121d0b2d005195333412559fa29d3cc", null ], [ "gridfire::MIN_ABUNDANCE_THRESHOLD", "namespacegridfire.html#a96c062f94713921e5d7568ecedcdcb06", null ], [ "gridfire::MIN_DENSITY_THRESHOLD", "namespacegridfire.html#ada3c137c014ecd8d06200fea2d1a9f50", null ], diff --git a/docs/html/engine__graph_8h_source.html b/docs/html/engine__graph_8h_source.html index 8be55e7c..45fd26ea 100644 --- a/docs/html/engine__graph_8h_source.html +++ b/docs/html/engine__graph_8h_source.html @@ -141,331 +141,375 @@ $(function(){initNavTree('engine__graph_8h_source.html',''); initResizable(true)
56 static constexpr double MIN_ABUNDANCE_THRESHOLD = 1e-18;
57
64 static constexpr double MIN_JACOBIAN_THRESHOLD = 1e-24;
-
65
-
-
89 class GraphEngine final : public DynamicEngine{
-
90 public:
-
101 explicit GraphEngine(const fourdst::composition::Composition &composition);
-
102
-
111 explicit GraphEngine(reaction::LogicalReactionSet reactions);
-
112
- -
127 const std::vector<double>& Y,
-
128 const double T9,
-
129 const double rho
-
130 ) const override;
-
131
- -
146 const std::vector<double>& Y,
-
147 const double T9,
-
148 const double rho
-
149 ) override;
-
150
-
157 void generateStoichiometryMatrix() override;
-
158
-
171 [[nodiscard]] double calculateMolarReactionFlow(
- -
173 const std::vector<double>&Y,
-
174 const double T9,
-
175 const double rho
-
176 ) const override;
-
177
-
182 [[nodiscard]] const std::vector<fourdst::atomic::Species>& getNetworkSpecies() const override;
-
183
-
188 [[nodiscard]] const reaction::LogicalReactionSet& getNetworkReactions() const override;
-
189
-
201 [[nodiscard]] double getJacobianMatrixEntry(
-
202 const int i,
-
203 const int j
-
204 ) const override;
-
205
-
212 [[nodiscard]] static std::unordered_map<fourdst::atomic::Species, int> getNetReactionStoichiometry(
- -
214 );
-
215
-
227 [[nodiscard]] int getStoichiometryMatrixEntry(
-
228 const int speciesIndex,
-
229 const int reactionIndex
-
230 ) const override;
-
231
-
243 [[nodiscard]] std::unordered_map<fourdst::atomic::Species, double> getSpeciesTimescales(
-
244 const std::vector<double>& Y,
-
245 double T9,
-
246 double rho
-
247 ) const override;
-
248
-
249 void update(const NetIn& netIn) override;
-
250
-
257 [[nodiscard]] bool involvesSpecies(
-
258 const fourdst::atomic::Species& species
-
259 ) const;
-
260
-
277 void exportToDot(
-
278 const std::string& filename
-
279 ) const;
-
280
-
297 void exportToCSV(
-
298 const std::string& filename
-
299 ) const;
-
300
- -
302
-
303 [[nodiscard]] screening::ScreeningType getScreeningModel() const override;
-
304
+
65
+
66
+
+
90 class GraphEngine final : public DynamicEngine{
+
91 public:
+
102 explicit GraphEngine(const fourdst::composition::Composition &composition);
+
103
+
112 explicit GraphEngine(const reaction::LogicalReactionSet &reactions);
+
113
+ +
128 const std::vector<double>& Y,
+
129 const double T9,
+
130 const double rho
+
131 ) const override;
+
132
+ +
147 const std::vector<double>& Y,
+
148 const double T9,
+
149 const double rho
+
150 ) override;
+
151
+
158 void generateStoichiometryMatrix() override;
+
159
+
172 [[nodiscard]] double calculateMolarReactionFlow(
+ +
174 const std::vector<double>&Y,
+
175 const double T9,
+
176 const double rho
+
177 ) const override;
+
178
+
183 [[nodiscard]] const std::vector<fourdst::atomic::Species>& getNetworkSpecies() const override;
+
184
+
189 [[nodiscard]] const reaction::LogicalReactionSet& getNetworkReactions() const override;
+
190
+
202 [[nodiscard]] double getJacobianMatrixEntry(
+
203 const int i,
+
204 const int j
+
205 ) const override;
+
206
+
213 [[nodiscard]] static std::unordered_map<fourdst::atomic::Species, int> getNetReactionStoichiometry(
+ +
215 );
+
216
+
228 [[nodiscard]] int getStoichiometryMatrixEntry(
+
229 const int speciesIndex,
+
230 const int reactionIndex
+
231 ) const override;
+
232
+
244 [[nodiscard]] std::unordered_map<fourdst::atomic::Species, double> getSpeciesTimescales(
+
245 const std::vector<double>& Y,
+
246 double T9,
+
247 double rho
+
248 ) const override;
+
249
+
250 void update(const NetIn& netIn) override;
+
251
+
258 [[nodiscard]] bool involvesSpecies(
+
259 const fourdst::atomic::Species& species
+
260 ) const;
+
261
+
278 void exportToDot(
+
279 const std::string& filename
+
280 ) const;
+
281
+
298 void exportToCSV(
+
299 const std::string& filename
+
300 ) const;
+
301
+ +
303
+
304 [[nodiscard]] screening::ScreeningType getScreeningModel() const override;
305
-
306 private:
- -
308 std::unordered_map<std::string_view, reaction::Reaction*> m_reactionIDMap;
+
306 void setPrecomputation(bool precompute);
+
307
+
308 [[nodiscard]] bool isPrecomputationEnabled() const;
309
-
310 std::vector<fourdst::atomic::Species> m_networkSpecies;
-
311 std::unordered_map<std::string_view, fourdst::atomic::Species> m_networkSpeciesMap;
-
312 std::unordered_map<fourdst::atomic::Species, size_t> m_speciesToIndexMap;
-
313
-
314 boost::numeric::ublas::compressed_matrix<int> m_stoichiometryMatrix;
-
315 boost::numeric::ublas::compressed_matrix<double> m_jacobianMatrix;
-
316
-
317 CppAD::ADFun<double> m_rhsADFun;
-
318
- -
320 std::unique_ptr<screening::ScreeningModel> m_screeningModel = screening::selectScreeningModel(m_screeningType);
-
321
-
322 Config& m_config = Config::getInstance();
-
323 Constants& m_constants = Constants::getInstance();
-
324 quill::Logger* m_logger = LogManager::getInstance().getLogger("log");
+
310 private:
+
+ + +
313 std::vector<size_t> unique_reactant_indices;
+
314 std::vector<int> reactant_powers;
+ +
316 std::vector<size_t> affected_species_indices;
+ +
318 };
+
+
319
+
+
320 struct constants {
+
321 const double u = Constants::getInstance().get("u").value;
+
322 const double Na = Constants::getInstance().get("N_a").value;
+
323 const double c = Constants::getInstance().get("c").value;
+
324 };
+
325
326 private:
-
334 void syncInternalMaps();
-
335
- -
343
- -
351
- -
359
- +
327 Config& m_config = Config::getInstance();
+
328 quill::Logger* m_logger = LogManager::getInstance().getLogger("log");
+
329
+ +
331
+ +
333 std::unordered_map<std::string_view, reaction::Reaction*> m_reactionIDMap;
+
334
+
335 std::vector<fourdst::atomic::Species> m_networkSpecies;
+
336 std::unordered_map<std::string_view, fourdst::atomic::Species> m_networkSpeciesMap;
+
337 std::unordered_map<fourdst::atomic::Species, size_t> m_speciesToIndexMap;
+
338
+
339 boost::numeric::ublas::compressed_matrix<int> m_stoichiometryMatrix;
+
340 boost::numeric::ublas::compressed_matrix<double> m_jacobianMatrix;
+
341
+
342 CppAD::ADFun<double> m_rhsADFun;
+
343
+ +
345 std::unique_ptr<screening::ScreeningModel> m_screeningModel = screening::selectScreeningModel(m_screeningType);
+
346
+ +
348
+
349 std::vector<PrecomputedReaction> m_precomputedReactions;
+
350
+
351 private:
+
359 void syncInternalMaps();
+
360
+
368
-
378 void recordADTape();
-
379
-
389 [[nodiscard]] bool validateConservation() const;
-
390
- -
403 const fourdst::composition::Composition &composition,
-
404 double culling,
-
405 double T9
-
406 );
-
407
-
421 template <IsArithmeticOrAD T>
- - -
424 const std::vector<T> &Y,
-
425 const T T9,
-
426 const T rho
-
427 ) const;
-
428
-
441 template<IsArithmeticOrAD T>
- -
443 const std::vector<T> &Y_in,
-
444 T T9,
-
445 T rho
-
446 ) const;
-
447
- -
461 const std::vector<double>& Y_in,
-
462 const double T9,
-
463 const double rho
-
464 ) const;
-
465
- -
479 const std::vector<ADDouble>& Y_in,
-
480 const ADDouble &T9,
-
481 const ADDouble &rho
-
482 ) const;
-
483 };
+ +
376
+ +
384
+ +
393
+
403 void recordADTape();
+
404
+
405 void precomputeNetwork();
+
406
+
416 [[nodiscard]] bool validateConservation() const;
+
417
+ +
430 const fourdst::composition::Composition &composition,
+
431 double culling,
+
432 double T9
+
433 );
+
434
+ +
436 const std::vector<double> &Y_in,
+
437 const std::vector<double>& bare_rates,
+
438 double T9,
+
439 double rho
+
440 ) const;
+
441
+
455 template <IsArithmeticOrAD T>
+ + +
458 const std::vector<T> &Y,
+
459 const T T9,
+
460 const T rho
+
461 ) const;
+
462
+
475 template<IsArithmeticOrAD T>
+ +
477 const std::vector<T> &Y_in,
+
478 T T9,
+
479 T rho
+
480 ) const;
+
481
+ +
495 const std::vector<double>& Y_in,
+
496 const double T9,
+
497 const double rho
+
498 ) const;
+
499
+ +
513 const std::vector<ADDouble>& Y_in,
+
514 const ADDouble &T9,
+
515 const ADDouble &rho
+
516 ) const;
+
517 };
-
484
-
485
-
486 template<IsArithmeticOrAD T>
-
- -
488 const std::vector<T> &Y_in, T T9, T rho) const {
-
489 std::vector<T> screeningFactors = m_screeningModel->calculateScreeningFactors(
- - -
492 Y_in,
-
493 T9,
-
494 rho
-
495 );
-
496
-
497 // --- Setup output derivatives structure ---
-
498 StepDerivatives<T> result;
-
499 result.dydt.resize(m_networkSpecies.size(), static_cast<T>(0.0));
-
500
-
501 // --- AD Pre-setup (flags to control conditionals in an AD safe / branch aware manner) ---
-
502 // ----- Constants for AD safe calculations ---
-
503 const T zero = static_cast<T>(0.0);
-
504 const T one = static_cast<T>(1.0);
-
505
-
506 // ----- Initialize variables for molar concentration product and thresholds ---
-
507 // Note: the logic here is that we use CppAD::CondExprLt to test thresholds and if they are less we set the flag
-
508 // to zero so that the final returned reaction flow is 0. This is as opposed to standard if statements
-
509 // which create branches that break the AD tape.
-
510 const T rho_threshold = static_cast<T>(MIN_DENSITY_THRESHOLD);
-
511
-
512 // --- Check if the density is below the threshold where we ignore reactions ---
-
513 T threshold_flag = CppAD::CondExpLt(rho, rho_threshold, zero, one); // If rho < threshold, set flag to 0
-
514
-
515 std::vector<T> Y = Y_in;
-
516 for (size_t i = 0; i < m_networkSpecies.size(); ++i) {
-
517 // We use CppAD::CondExpLt to handle AD taping and prevent branching
-
518 // Note that while this is syntactically more complex this is equivalent to
-
519 // if (Y[i] < 0) {Y[i] = 0;}
-
520 // The issue is that this would introduce a branch which would require the auto diff tape to be re-recorded
-
521 // each timestep, which is very inefficient.
-
522 Y[i] = CppAD::CondExpLt(Y[i], zero, zero, Y[i]); // Ensure no negative abundances
-
523 }
-
524
-
525 const T u = static_cast<T>(m_constants.get("u").value); // Atomic mass unit in grams
-
526 const T N_A = static_cast<T>(m_constants.get("N_a").value); // Avogadro's number in mol^-1
-
527 const T c = static_cast<T>(m_constants.get("c").value); // Speed of light in cm/s
-
528
-
529 // --- SINGLE LOOP OVER ALL REACTIONS ---
-
530 for (size_t reactionIndex = 0; reactionIndex < m_reactions.size(); ++reactionIndex) {
-
531 const auto& reaction = m_reactions[reactionIndex];
-
532
-
533 // 1. Calculate reaction rate
-
534 const T molarReactionFlow = screeningFactors[reactionIndex] * calculateMolarReactionFlow<T>(reaction, Y, T9, rho);
-
535
-
536 // 2. Use the rate to update all relevant species derivatives (dY/dt)
-
537 for (size_t speciesIndex = 0; speciesIndex < m_networkSpecies.size(); ++speciesIndex) {
-
538 const T nu_ij = static_cast<T>(m_stoichiometryMatrix(speciesIndex, reactionIndex));
-
539 result.dydt[speciesIndex] += threshold_flag * nu_ij * molarReactionFlow / rho;
-
540 }
-
541 }
-
542
-
543 T massProductionRate = static_cast<T>(0.0); // [mol][s^-1]
-
544 for (const auto& [species, index] : m_speciesToIndexMap) {
-
545 massProductionRate += result.dydt[index] * species.mass() * u;
-
546 }
-
547
-
548 result.nuclearEnergyGenerationRate = -massProductionRate * N_A * c * c; // [cm^2][s^-3] = [erg][s^-1][g^-1]
-
549
-
550 return result;
-
551 }
-
-
552
-
553
-
554 template <IsArithmeticOrAD T>
-
- - -
557 const std::vector<T> &Y,
-
558 const T T9,
-
559 const T rho
-
560 ) const {
-
561
-
562 // --- Pre-setup (flags to control conditionals in an AD safe / branch aware manner) ---
-
563 // ----- Constants for AD safe calculations ---
-
564 const T zero = static_cast<T>(0.0);
-
565 const T one = static_cast<T>(1.0);
+
518
+
519
+
520 template<IsArithmeticOrAD T>
+
+ +
522 const std::vector<T> &Y_in, T T9, T rho) const {
+
523 std::vector<T> screeningFactors = m_screeningModel->calculateScreeningFactors(
+ + +
526 Y_in,
+
527 T9,
+
528 rho
+
529 );
+
530
+
531 // --- Setup output derivatives structure ---
+
532 StepDerivatives<T> result;
+
533 result.dydt.resize(m_networkSpecies.size(), static_cast<T>(0.0));
+
534
+
535 // --- AD Pre-setup (flags to control conditionals in an AD safe / branch aware manner) ---
+
536 // ----- Constants for AD safe calculations ---
+
537 const T zero = static_cast<T>(0.0);
+
538 const T one = static_cast<T>(1.0);
+
539
+
540 // ----- Initialize variables for molar concentration product and thresholds ---
+
541 // Note: the logic here is that we use CppAD::CondExprLt to test thresholds and if they are less we set the flag
+
542 // to zero so that the final returned reaction flow is 0. This is as opposed to standard if statements
+
543 // which create branches that break the AD tape.
+
544 const T rho_threshold = static_cast<T>(MIN_DENSITY_THRESHOLD);
+
545
+
546 // --- Check if the density is below the threshold where we ignore reactions ---
+
547 T threshold_flag = CppAD::CondExpLt(rho, rho_threshold, zero, one); // If rho < threshold, set flag to 0
+
548
+
549 std::vector<T> Y = Y_in;
+
550 for (size_t i = 0; i < m_networkSpecies.size(); ++i) {
+
551 // We use CppAD::CondExpLt to handle AD taping and prevent branching
+
552 // Note that while this is syntactically more complex this is equivalent to
+
553 // if (Y[i] < 0) {Y[i] = 0;}
+
554 // The issue is that this would introduce a branch which would require the auto diff tape to be re-recorded
+
555 // each timestep, which is very inefficient.
+
556 Y[i] = CppAD::CondExpLt(Y[i], zero, zero, Y[i]); // Ensure no negative abundances
+
557 }
+
558
+
559 const T u = static_cast<T>(m_constants.u); // Atomic mass unit in grams
+
560 const T N_A = static_cast<T>(m_constants.Na); // Avogadro's number in mol^-1
+
561 const T c = static_cast<T>(m_constants.c); // Speed of light in cm/s
+
562
+
563 // --- SINGLE LOOP OVER ALL REACTIONS ---
+
564 for (size_t reactionIndex = 0; reactionIndex < m_reactions.size(); ++reactionIndex) {
+
565 const auto& reaction = m_reactions[reactionIndex];
566
-
567 // ----- Initialize variables for molar concentration product and thresholds ---
-
568 // Note: the logic here is that we use CppAD::CondExprLt to test thresholds and if they are less we set the flag
-
569 // to zero so that the final returned reaction flow is 0. This is as opposed to standard if statements
-
570 // which create branches that break the AD tape.
-
571 const T Y_threshold = static_cast<T>(MIN_ABUNDANCE_THRESHOLD);
-
572 T threshold_flag = one;
-
573
-
574 // --- Calculate the molar reaction rate (in units of [s^-1][cm^3(N-1)][mol^(1-N)] for N reactants) ---
-
575 const T k_reaction = reaction.calculate_rate(T9);
+
567 // 1. Calculate reaction rate
+
568 const T molarReactionFlow = screeningFactors[reactionIndex] * calculateMolarReactionFlow<T>(reaction, Y, T9, rho);
+
569
+
570 // 2. Use the rate to update all relevant species derivatives (dY/dt)
+
571 for (size_t speciesIndex = 0; speciesIndex < m_networkSpecies.size(); ++speciesIndex) {
+
572 const T nu_ij = static_cast<T>(m_stoichiometryMatrix(speciesIndex, reactionIndex));
+
573 result.dydt[speciesIndex] += threshold_flag * nu_ij * molarReactionFlow / rho;
+
574 }
+
575 }
576
-
577 // --- Cound the number of each reactant species to account for species multiplicity ---
-
578 std::unordered_map<std::string, int> reactant_counts;
-
579 reactant_counts.reserve(reaction.reactants().size());
-
580 for (const auto& reactant : reaction.reactants()) {
-
581 reactant_counts[std::string(reactant.name())]++;
-
582 }
+
577 T massProductionRate = static_cast<T>(0.0); // [mol][s^-1]
+
578 for (const auto& [species, index] : m_speciesToIndexMap) {
+
579 massProductionRate += result.dydt[index] * species.mass() * u;
+
580 }
+
581
+
582 result.nuclearEnergyGenerationRate = -massProductionRate * N_A * c * c; // [cm^2][s^-3] = [erg][s^-1][g^-1]
583
-
584 // --- Accumulator for the molar concentration ---
-
585 auto molar_concentration_product = static_cast<T>(1.0);
-
586
-
587 // --- Loop through each unique reactant species and calculate the molar concentration for that species then multiply that into the accumulator ---
-
588 for (const auto& [species_name, count] : reactant_counts) {
-
589 // --- Resolve species to molar abundance ---
-
590 // PERF: Could probably optimize out this lookup
-
591 const auto species_it = m_speciesToIndexMap.find(m_networkSpeciesMap.at(species_name));
-
592 const size_t species_index = species_it->second;
-
593 const T Yi = Y[species_index];
-
594
-
595 // --- Check if the species abundance is below the threshold where we ignore reactions ---
-
596 threshold_flag *= CppAD::CondExpLt(Yi, Y_threshold, zero, one);
-
597
-
598 // --- Convert from molar abundance to molar concentration ---
-
599 T molar_concentration = Yi * rho;
-
600
-
601 // --- If count is > 1 , we need to raise the molar concentration to the power of count since there are really count bodies in that reaction ---
-
602 molar_concentration_product *= CppAD::pow(molar_concentration, static_cast<T>(count)); // ni^count
-
603
-
604 // --- Apply factorial correction for identical reactions ---
-
605 if (count > 1) {
-
606 molar_concentration_product /= static_cast<T>(std::tgamma(static_cast<double>(count + 1))); // Gamma function for factorial
-
607 }
-
608 }
-
609 // --- Final reaction flow calculation [mol][s^-1][cm^-3] ---
-
610 // Note: If the threshold flag ever gets set to zero this will return zero.
-
611 // This will result basically in multiple branches being written to the AD tape, which will make
-
612 // the tape more expensive to record, but it will also mean that we only need to record it once for
-
613 // the entire network.
-
614 return molar_concentration_product * k_reaction * threshold_flag;
-
615 }
+
584 return result;
+
585 }
-
616};
+
586
+
587
+
588 template <IsArithmeticOrAD T>
+
+ + +
591 const std::vector<T> &Y,
+
592 const T T9,
+
593 const T rho
+
594 ) const {
+
595
+
596 // --- Pre-setup (flags to control conditionals in an AD safe / branch aware manner) ---
+
597 // ----- Constants for AD safe calculations ---
+
598 const T zero = static_cast<T>(0.0);
+
599 const T one = static_cast<T>(1.0);
+
600
+
601 // ----- Initialize variables for molar concentration product and thresholds ---
+
602 // Note: the logic here is that we use CppAD::CondExprLt to test thresholds and if they are less we set the flag
+
603 // to zero so that the final returned reaction flow is 0. This is as opposed to standard if statements
+
604 // which create branches that break the AD tape.
+
605 const T Y_threshold = static_cast<T>(MIN_ABUNDANCE_THRESHOLD);
+
606 T threshold_flag = one;
+
607
+
608 // --- Calculate the molar reaction rate (in units of [s^-1][cm^3(N-1)][mol^(1-N)] for N reactants) ---
+
609 const T k_reaction = reaction.calculate_rate(T9);
+
610
+
611 // --- Cound the number of each reactant species to account for species multiplicity ---
+
612 std::unordered_map<std::string, int> reactant_counts;
+
613 reactant_counts.reserve(reaction.reactants().size());
+
614 for (const auto& reactant : reaction.reactants()) {
+
615 reactant_counts[std::string(reactant.name())]++;
+
616 }
+
617
+
618 // --- Accumulator for the molar concentration ---
+
619 auto molar_concentration_product = static_cast<T>(1.0);
+
620
+
621 // --- Loop through each unique reactant species and calculate the molar concentration for that species then multiply that into the accumulator ---
+
622 for (const auto& [species_name, count] : reactant_counts) {
+
623 // --- Resolve species to molar abundance ---
+
624 // PERF: Could probably optimize out this lookup
+
625 const auto species_it = m_speciesToIndexMap.find(m_networkSpeciesMap.at(species_name));
+
626 const size_t species_index = species_it->second;
+
627 const T Yi = Y[species_index];
+
628
+
629 // --- Check if the species abundance is below the threshold where we ignore reactions ---
+
630 threshold_flag *= CppAD::CondExpLt(Yi, Y_threshold, zero, one);
+
631
+
632 // --- Convert from molar abundance to molar concentration ---
+
633 T molar_concentration = Yi * rho;
+
634
+
635 // --- If count is > 1 , we need to raise the molar concentration to the power of count since there are really count bodies in that reaction ---
+
636 molar_concentration_product *= CppAD::pow(molar_concentration, static_cast<T>(count)); // ni^count
+
637
+
638 // --- Apply factorial correction for identical reactions ---
+
639 if (count > 1) {
+
640 molar_concentration_product /= static_cast<T>(std::tgamma(static_cast<double>(count + 1))); // Gamma function for factorial
+
641 }
+
642 }
+
643 // --- Final reaction flow calculation [mol][s^-1][cm^-3] ---
+
644 // Note: If the threshold flag ever gets set to zero this will return zero.
+
645 // This will result basically in multiple branches being written to the AD tape, which will make
+
646 // the tape more expensive to record, but it will also mean that we only need to record it once for
+
647 // the entire network.
+
648 return molar_concentration_product * k_reaction * threshold_flag;
+
649 }
+
+
650};
Abstract class for engines supporting Jacobian and stoichiometry operations.
-
Constants & m_constants
Access to physical constants.
-
const std::vector< fourdst::atomic::Species > & getNetworkSpecies() const override
Gets the list of species in the network.
-
std::unordered_map< fourdst::atomic::Species, double > getSpeciesTimescales(const std::vector< double > &Y, double T9, double rho) const override
Computes timescales for all species in the network.
-
void populateReactionIDMap()
Populates the reaction ID map.
-
CppAD::ADFun< double > m_rhsADFun
CppAD function for the right-hand side of the ODE.
-
boost::numeric::ublas::compressed_matrix< double > m_jacobianMatrix
Jacobian matrix (species x species).
-
double getJacobianMatrixEntry(const int i, const int j) const override
Gets an entry from the previously generated Jacobian matrix.
-
std::unordered_map< std::string_view, fourdst::atomic::Species > m_networkSpeciesMap
Map from species name to Species object.
- -
void populateSpeciesToIndexMap()
Populates the species-to-index map.
-
quill::Logger * m_logger
-
void update(const NetIn &netIn) override
-
screening::ScreeningType m_screeningType
Screening type for the reaction network. Default to no screening.
-
void reserveJacobianMatrix()
Reserves space for the Jacobian matrix.
-
std::unordered_map< std::string_view, reaction::Reaction * > m_reactionIDMap
Map from reaction ID to REACLIBReaction. //PERF: This makes copies of REACLIBReaction and could be a ...
-
screening::ScreeningType getScreeningModel() const override
-
int getStoichiometryMatrixEntry(const int speciesIndex, const int reactionIndex) const override
Gets an entry from the stoichiometry matrix.
-
void setScreeningModel(screening::ScreeningType) override
-
void exportToCSV(const std::string &filename) const
Exports the network to a CSV file for analysis.
-
StepDerivatives< double > calculateRHSAndEnergy(const std::vector< double > &Y, const double T9, const double rho) const override
Calculates the right-hand side (dY/dt) and energy generation rate.
-
static std::unordered_map< fourdst::atomic::Species, int > getNetReactionStoichiometry(const reaction::Reaction &reaction)
Gets the net stoichiometry for a given reaction.
-
double calculateMolarReactionFlow(const reaction::Reaction &reaction, const std::vector< double > &Y, const double T9, const double rho) const override
Calculates the molar reaction flow for a given reaction.
-
std::vector< fourdst::atomic::Species > m_networkSpecies
Vector of unique species in the network.
-
void recordADTape()
Records the AD tape for the right-hand side of the ODE.
+
bool isPrecomputationEnabled() const
+
const std::vector< fourdst::atomic::Species > & getNetworkSpecies() const override
Gets the list of species in the network.
+ +
bool m_usePrecomputation
Flag to enable or disable using precomputed reactions for efficiency. Mathematically,...
+
std::unordered_map< fourdst::atomic::Species, double > getSpeciesTimescales(const std::vector< double > &Y, double T9, double rho) const override
Computes timescales for all species in the network.
+
void populateReactionIDMap()
Populates the reaction ID map.
+
CppAD::ADFun< double > m_rhsADFun
CppAD function for the right-hand side of the ODE.
+
boost::numeric::ublas::compressed_matrix< double > m_jacobianMatrix
Jacobian matrix (species x species).
+
double getJacobianMatrixEntry(const int i, const int j) const override
Gets an entry from the previously generated Jacobian matrix.
+
std::unordered_map< std::string_view, fourdst::atomic::Species > m_networkSpeciesMap
Map from species name to Species object.
+ +
void populateSpeciesToIndexMap()
Populates the species-to-index map.
+
quill::Logger * m_logger
+
void update(const NetIn &netIn) override
Update the internal state of the engine.
+
screening::ScreeningType m_screeningType
Screening type for the reaction network. Default to no screening.
+
void reserveJacobianMatrix()
Reserves space for the Jacobian matrix.
+
std::vector< PrecomputedReaction > m_precomputedReactions
Precomputed reactions for efficiency.
+
std::unordered_map< std::string_view, reaction::Reaction * > m_reactionIDMap
Map from reaction ID to REACLIBReaction. //PERF: This makes copies of REACLIBReaction and could be a ...
+
StepDerivatives< double > calculateAllDerivativesUsingPrecomputation(const std::vector< double > &Y_in, const std::vector< double > &bare_rates, double T9, double rho) const
+
screening::ScreeningType getScreeningModel() const override
Get the current electron screening model.
+
int getStoichiometryMatrixEntry(const int speciesIndex, const int reactionIndex) const override
Gets an entry from the stoichiometry matrix.
+
void setPrecomputation(bool precompute)
+
void setScreeningModel(screening::ScreeningType) override
Set the electron screening model.
+
void exportToCSV(const std::string &filename) const
Exports the network to a CSV file for analysis.
+
StepDerivatives< double > calculateRHSAndEnergy(const std::vector< double > &Y, const double T9, const double rho) const override
Calculates the right-hand side (dY/dt) and energy generation rate.
+
static std::unordered_map< fourdst::atomic::Species, int > getNetReactionStoichiometry(const reaction::Reaction &reaction)
Gets the net stoichiometry for a given reaction.
+
double calculateMolarReactionFlow(const reaction::Reaction &reaction, const std::vector< double > &Y, const double T9, const double rho) const override
Calculates the molar reaction flow for a given reaction.
+ +
std::vector< fourdst::atomic::Species > m_networkSpecies
Vector of unique species in the network.
+
void recordADTape()
Records the AD tape for the right-hand side of the ODE.
GraphEngine(const fourdst::composition::Composition &composition)
Constructs a GraphEngine from a composition.
-
bool involvesSpecies(const fourdst::atomic::Species &species) const
Checks if a given species is involved in the network.
-
reaction::LogicalReactionSet m_reactions
Set of REACLIB reactions in the network.
-
void syncInternalMaps()
Synchronizes the internal maps.
-
bool validateConservation() const
Validates mass and charge conservation across all reactions.
-
boost::numeric::ublas::compressed_matrix< int > m_stoichiometryMatrix
Stoichiometry matrix (species x reactions).
-
const reaction::LogicalReactionSet & getNetworkReactions() const override
Gets the set of logical reactions in the network.
-
std::unordered_map< fourdst::atomic::Species, size_t > m_speciesToIndexMap
Map from species to their index in the stoichiometry matrix.
-
void exportToDot(const std::string &filename) const
Exports the network to a DOT file for visualization.
-
void generateJacobianMatrix(const std::vector< double > &Y, const double T9, const double rho) override
Generates the Jacobian matrix for the current state.
-
void generateStoichiometryMatrix() override
Generates the stoichiometry matrix for the network.
-
void collectNetworkSpecies()
Collects the unique species in the network.
-
void validateComposition(const fourdst::composition::Composition &composition, double culling, double T9)
Validates the composition against the current reaction set.
-
std::unique_ptr< screening::ScreeningModel > m_screeningModel
-
StepDerivatives< T > calculateAllDerivatives(const std::vector< T > &Y_in, T T9, T rho) const
Calculates all derivatives (dY/dt) and the energy generation rate.
+
bool involvesSpecies(const fourdst::atomic::Species &species) const
Checks if a given species is involved in the network.
+
reaction::LogicalReactionSet m_reactions
Set of REACLIB reactions in the network.
+
void syncInternalMaps()
Synchronizes the internal maps.
+
bool validateConservation() const
Validates mass and charge conservation across all reactions.
+
boost::numeric::ublas::compressed_matrix< int > m_stoichiometryMatrix
Stoichiometry matrix (species x reactions).
+
const reaction::LogicalReactionSet & getNetworkReactions() const override
Gets the set of logical reactions in the network.
+
std::unordered_map< fourdst::atomic::Species, size_t > m_speciesToIndexMap
Map from species to their index in the stoichiometry matrix.
+
void exportToDot(const std::string &filename) const
Exports the network to a DOT file for visualization.
+
void generateJacobianMatrix(const std::vector< double > &Y, const double T9, const double rho) override
Generates the Jacobian matrix for the current state.
+
void generateStoichiometryMatrix() override
Generates the stoichiometry matrix for the network.
+
void collectNetworkSpecies()
Collects the unique species in the network.
+
void validateComposition(const fourdst::composition::Composition &composition, double culling, double T9)
Validates the composition against the current reaction set.
+
std::unique_ptr< screening::ScreeningModel > m_screeningModel
+
StepDerivatives< T > calculateAllDerivatives(const std::vector< T > &Y_in, T T9, T rho) const
Calculates all derivatives (dY/dt) and the energy generation rate.
Represents a single nuclear reaction from a specific data source.
Definition reaction.h:72
Abstract interfaces for reaction network engines in GridFire.
TemplatedReactionSet< LogicalReaction > LogicalReactionSet
A set of logical reactions.
Definition reaction.h:557
-
std::unique_ptr< ScreeningModel > selectScreeningModel(ScreeningType type)
- - +
std::unique_ptr< ScreeningModel > selectScreeningModel(ScreeningType type)
A factory function to select and create a screening model.
+
ScreeningType
Enumerates the available plasma screening models.
+
@ BARE
No screening applied. The screening factor is always 1.0.
CppAD::AD< double > ADDouble
Alias for CppAD AD type for double precision.
static constexpr double MIN_ABUNDANCE_THRESHOLD
Minimum abundance threshold below which species are ignored.
@@ -475,6 +519,17 @@ $(function(){initNavTree('engine__graph_8h_source.html',''); initResizable(true)
Defines classes for representing and managing nuclear reactions.
+ + + + + + + + +
const double u
Atomic mass unit in g.
+
const double Na
Avogadro's number.
+
const double c
Speed of light in cm/s.
Structure holding derivatives and energy generation for a network step.
T nuclearEnergyGenerationRate
Specific energy generation rate (e.g., erg/g/s).
diff --git a/docs/html/functions.html b/docs/html/functions.html index 7559a656..3884f61e 100644 --- a/docs/html/functions.html +++ b/docs/html/functions.html @@ -112,6 +112,7 @@ $(function(){initNavTree('functions.html',''); initResizable(true); });
  • AdaptiveEngineView() : gridfire::AdaptiveEngineView
  • add_reaction() : gridfire::reaction::LogicalReaction, gridfire::reaction::TemplatedReactionSet< ReactionT >
  • ADDouble : gridfire::screening::BareScreeningModel, gridfire::screening::ScreeningModel
  • +
  • affected_species_indices : gridfire::GraphEngine::PrecomputedReaction
  • aIon : gridfire::approx8::Approx8Net
  • all_species() : gridfire::reaction::Reaction
  • Approx8Network() : gridfire::approx8::Approx8Network
  • diff --git a/docs/html/functions_c.html b/docs/html/functions_c.html index 7bb53e63..af9732ad 100644 --- a/docs/html/functions_c.html +++ b/docs/html/functions_c.html @@ -102,8 +102,10 @@ $(function(){initNavTree('functions_c.html',''); initResizable(true); });
    Here is a list of all class members with links to the classes they belong to:

    - c -

    diff --git a/docs/html/functions_func_m.html b/docs/html/functions_func_m.html index 3bc94288..1de7f3e2 100644 --- a/docs/html/functions_func_m.html +++ b/docs/html/functions_func_m.html @@ -107,9 +107,9 @@ $(function(){initNavTree('functions_func_m.html',''); initResizable(true); });
  • mapCulledToFullSpeciesIndex() : gridfire::AdaptiveEngineView
  • mapFullToCulled() : gridfire::AdaptiveEngineView
  • mapFullToView() : gridfire::FileDefinedEngineView
  • -
  • mapViewToFull() : gridfire::FileDefinedEngineView
  • -
  • mapViewToFullReactionIndex() : gridfire::FileDefinedEngineView
  • -
  • mapViewToFullSpeciesIndex() : gridfire::FileDefinedEngineView
  • +
  • mapViewToFull() : gridfire::FileDefinedEngineView
  • +
  • mapViewToFullReactionIndex() : gridfire::FileDefinedEngineView
  • +
  • mapViewToFullSpeciesIndex() : gridfire::FileDefinedEngineView
  • MESANetworkFileParser() : gridfire::io::MESANetworkFileParser
  • MolarAbundance() : gridfire::NetIn
  • diff --git a/docs/html/functions_func_p.html b/docs/html/functions_func_p.html index e37ece48..263e1783 100644 --- a/docs/html/functions_func_p.html +++ b/docs/html/functions_func_p.html @@ -107,6 +107,7 @@ $(function(){initNavTree('functions_func_p.html',''); initResizable(true); });
  • peName() : gridfire::reaction::Reaction
  • populateReactionIDMap() : gridfire::GraphEngine
  • populateSpeciesToIndexMap() : gridfire::GraphEngine
  • +
  • precomputeNetwork() : gridfire::GraphEngine
  • product_species() : gridfire::reaction::Reaction
  • products() : gridfire::reaction::Reaction
  • diff --git a/docs/html/functions_func_s.html b/docs/html/functions_func_s.html index 70682c13..a7bcc3de 100644 --- a/docs/html/functions_func_s.html +++ b/docs/html/functions_func_s.html @@ -104,6 +104,7 @@ $(function(){initNavTree('functions_func_s.html',''); initResizable(true); });

    - s -

    diff --git a/docs/html/functions_m.html b/docs/html/functions_m.html index 4a28e2a4..efaea43a 100644 --- a/docs/html/functions_m.html +++ b/docs/html/functions_m.html @@ -107,7 +107,7 @@ $(function(){initNavTree('functions_m.html',''); initResizable(true); });
  • m_baseEngine : gridfire::AdaptiveEngineView, gridfire::FileDefinedEngineView
  • m_chapter : gridfire::reaction::Reaction
  • m_config : gridfire::AdaptiveEngineView, gridfire::FileDefinedEngineView, gridfire::GraphEngine, gridfire::io::MESANetworkFileParser, gridfire::io::SimpleReactionListFileParser, gridfire::Network, gridfire::solver::DirectNetworkSolver, gridfire::solver::QSENetworkSolver
  • -
  • m_constants : gridfire::GraphEngine, gridfire::Network
  • +
  • m_constants : gridfire::GraphEngine, gridfire::Network
  • m_dt0 : gridfire::approx8::Approx8Network
  • m_dynamicSpeciesIndices : gridfire::solver::QSENetworkSolver::EigenFunctor< T >, gridfire::solver::QSENetworkSolver::JacobianFunctor, gridfire::solver::QSENetworkSolver::RHSFunctor
  • m_engine : gridfire::solver::DirectNetworkSolver::JacobianFunctor, gridfire::solver::DirectNetworkSolver::RHSFunctor, gridfire::solver::NetworkSolverStrategy< EngineT >, gridfire::solver::QSENetworkSolver::EigenFunctor< T >, gridfire::solver::QSENetworkSolver::JacobianFunctor, gridfire::solver::QSENetworkSolver::RHSFunctor
  • @@ -126,6 +126,7 @@ $(function(){initNavTree('functions_m.html',''); initResizable(true); });
  • m_numSpecies : gridfire::solver::DirectNetworkSolver::JacobianFunctor, gridfire::solver::DirectNetworkSolver::RHSFunctor
  • m_parser : gridfire::FileDefinedEngineView
  • m_peName : gridfire::reaction::Reaction
  • +
  • m_precomputedReactions : gridfire::GraphEngine
  • m_products : gridfire::reaction::Reaction
  • m_QSESpeciesIndices : gridfire::solver::QSENetworkSolver::EigenFunctor< T >, gridfire::solver::QSENetworkSolver::JacobianFunctor, gridfire::solver::QSENetworkSolver::RHSFunctor
  • m_qValue : gridfire::reaction::Reaction
  • @@ -149,6 +150,7 @@ $(function(){initNavTree('functions_m.html',''); initResizable(true); });
  • m_stoichiometryMatrix : gridfire::GraphEngine
  • m_T9 : gridfire::solver::DirectNetworkSolver::JacobianFunctor, gridfire::solver::DirectNetworkSolver::RHSFunctor, gridfire::solver::QSENetworkSolver::EigenFunctor< T >, gridfire::solver::QSENetworkSolver::JacobianFunctor, gridfire::solver::QSENetworkSolver::RHSFunctor
  • m_tMax : gridfire::approx8::Approx8Network
  • +
  • m_usePrecomputation : gridfire::GraphEngine
  • m_y : gridfire::approx8::Approx8Network
  • m_Y_QSE : gridfire::solver::QSENetworkSolver::RHSFunctor
  • m_YFull : gridfire::solver::QSENetworkSolver::EigenFunctor< T >
  • @@ -157,9 +159,9 @@ $(function(){initNavTree('functions_m.html',''); initResizable(true); });
  • mapCulledToFullSpeciesIndex() : gridfire::AdaptiveEngineView
  • mapFullToCulled() : gridfire::AdaptiveEngineView
  • mapFullToView() : gridfire::FileDefinedEngineView
  • -
  • mapViewToFull() : gridfire::FileDefinedEngineView
  • -
  • mapViewToFullReactionIndex() : gridfire::FileDefinedEngineView
  • -
  • mapViewToFullSpeciesIndex() : gridfire::FileDefinedEngineView
  • +
  • mapViewToFull() : gridfire::FileDefinedEngineView
  • +
  • mapViewToFullReactionIndex() : gridfire::FileDefinedEngineView
  • +
  • mapViewToFullSpeciesIndex() : gridfire::FileDefinedEngineView
  • MESANetworkFileParser() : gridfire::io::MESANetworkFileParser
  • mIon : gridfire::approx8::Approx8Net
  • MolarAbundance() : gridfire::NetIn
  • diff --git a/docs/html/functions_n.html b/docs/html/functions_n.html index df7f181e..12eb735c 100644 --- a/docs/html/functions_n.html +++ b/docs/html/functions_n.html @@ -102,6 +102,7 @@ $(function(){initNavTree('functions_n.html',''); initResizable(true); });
    Here is a list of all class members with links to the classes they belong to:

    - n -

    diff --git a/docs/html/functions_u.html b/docs/html/functions_u.html index 4183eddb..be0a0e6e 100644 --- a/docs/html/functions_u.html +++ b/docs/html/functions_u.html @@ -102,6 +102,8 @@ $(function(){initNavTree('functions_u.html',''); initResizable(true); });
    Here is a list of all class members with links to the classes they belong to:

    - u -

    diff --git a/docs/html/functions_vars.html b/docs/html/functions_vars.html index 6bbee0b4..47356581 100644 --- a/docs/html/functions_vars.html +++ b/docs/html/functions_vars.html @@ -109,11 +109,13 @@ $(function(){initNavTree('functions_vars.html',''); initResizable(true); });
  • a4 : gridfire::reaction::RateCoefficientSet
  • a5 : gridfire::reaction::RateCoefficientSet
  • a6 : gridfire::reaction::RateCoefficientSet
  • +
  • affected_species_indices : gridfire::GraphEngine::PrecomputedReaction
  • aIon : gridfire::approx8::Approx8Net
  • - c -

    Namespaces

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     Cgridfire::approx8::Approx8NetContains constants and arrays related to the nuclear network
     Cgridfire::solver::dynamicQSESpeciesIndicesStructure to hold indices of dynamic and QSE species
     Cgridfire::solver::QSENetworkSolver::EigenFunctor< T >Functor for calculating the residual and Jacobian for the QSE species using Eigen
     Cgridfire::EngineAbstract base class for a reaction network engine
     Cgridfire::DynamicEngineAbstract class for engines supporting Jacobian and stoichiometry operations
     Cgridfire::AdaptiveEngineViewAn engine view that dynamically adapts the reaction network based on runtime conditions
     Cgridfire::FileDefinedEngineView
     Cgridfire::GraphEngineA reaction network engine that uses a graph-based representation
     Cgridfire::EngineView< EngineT >Abstract base class for a "view" of a reaction network engine
     Cgridfire::EngineView< DynamicEngine >
     Cgridfire::AdaptiveEngineViewAn engine view that dynamically adapts the reaction network based on runtime conditions
     Cgridfire::FileDefinedEngineView
     Cstd::hash< gridfire::reaction::LogicalReactionSet >
     Cstd::hash< gridfire::reaction::Reaction >
     Cstd::hash< gridfire::reaction::ReactionSet >
     Cgridfire::approx8::JacobianFunctor to calculate the Jacobian matrix for implicit solvers
     Cgridfire::solver::DirectNetworkSolver::JacobianFunctorFunctor for calculating the Jacobian matrix
     Cgridfire::solver::QSENetworkSolver::JacobianFunctorFunctor for calculating the Jacobian matrix of the ODEs for the dynamic species
     Cgridfire::NetIn
     Cgridfire::NetOut
     Cgridfire::Network
     Cgridfire::approx8::Approx8NetworkClass for the Approx8 nuclear reaction network
     Cgridfire::io::NetworkFileParser
     Cgridfire::io::MESANetworkFileParser
     Cgridfire::io::SimpleReactionListFileParser
     Cgridfire::solver::NetworkSolverStrategy< EngineT >Abstract base class for network solver strategies
     Cgridfire::solver::NetworkSolverStrategy< DynamicEngine >
     Cgridfire::solver::DirectNetworkSolverA network solver that directly integrates the reaction network ODEs
     Cgridfire::solver::QSENetworkSolverA network solver that uses a Quasi-Steady-State Equilibrium (QSE) approach
     Cgridfire::approx8::ODEFunctor to calculate the derivatives for the ODE solver
     Cgridfire::io::ParsedNetworkData
     Cgridfire::reaction::RateCoefficientSetHolds the seven coefficients for the REACLIB rate equation
     Cgridfire::reaction::ReactionRepresents a single nuclear reaction from a specific data source
     Cgridfire::reaction::LogicalReactionRepresents a "logical" reaction that aggregates rates from multiple sources
     Cgridfire::AdaptiveEngineView::ReactionFlowA struct to hold a reaction and its flow rate
     Cgridfire::reaclib::ReactionRecord
     Cgridfire::solver::DirectNetworkSolver::RHSFunctorFunctor for calculating the right-hand side of the ODEs
     Cgridfire::solver::QSENetworkSolver::RHSFunctorFunctor for calculating the right-hand side of the ODEs for the dynamic species
     Cgridfire::screening::ScreeningModel
     Cgridfire::screening::BareScreeningModel
     Cgridfire::screening::WeakScreeningModel
     Cgridfire::StepDerivatives< T >Structure holding derivatives and energy generation for a network step
     Cgridfire::reaction::TemplatedReactionSet< ReactionT >
     Cgridfire::GraphEngine::constants
     Cgridfire::solver::dynamicQSESpeciesIndicesStructure to hold indices of dynamic and QSE species
     Cgridfire::solver::QSENetworkSolver::EigenFunctor< T >Functor for calculating the residual and Jacobian for the QSE species using Eigen
     Cgridfire::EngineAbstract base class for a reaction network engine
     Cgridfire::DynamicEngineAbstract class for engines supporting Jacobian and stoichiometry operations
     Cgridfire::AdaptiveEngineViewAn engine view that dynamically adapts the reaction network based on runtime conditions
     Cgridfire::FileDefinedEngineViewAn engine view that uses a user-defined reaction network from a file
     Cgridfire::GraphEngineA reaction network engine that uses a graph-based representation
     Cgridfire::EngineView< EngineT >Abstract base class for a "view" of a reaction network engine
     Cgridfire::EngineView< DynamicEngine >
     Cgridfire::AdaptiveEngineViewAn engine view that dynamically adapts the reaction network based on runtime conditions
     Cgridfire::FileDefinedEngineViewAn engine view that uses a user-defined reaction network from a file
     Cstd::hash< gridfire::reaction::LogicalReactionSet >
     Cstd::hash< gridfire::reaction::Reaction >
     Cstd::hash< gridfire::reaction::ReactionSet >
     Cgridfire::approx8::JacobianFunctor to calculate the Jacobian matrix for implicit solvers
     Cgridfire::solver::DirectNetworkSolver::JacobianFunctorFunctor for calculating the Jacobian matrix
     Cgridfire::solver::QSENetworkSolver::JacobianFunctorFunctor for calculating the Jacobian matrix of the ODEs for the dynamic species
     Cgridfire::NetIn
     Cgridfire::NetOut
     Cgridfire::Network
     Cgridfire::approx8::Approx8NetworkClass for the Approx8 nuclear reaction network
     Cgridfire::io::NetworkFileParserAn abstract base class for network file parsers
     Cgridfire::io::MESANetworkFileParserA parser for MESA-format network files
     Cgridfire::io::SimpleReactionListFileParserA parser for simple text files containing a list of reactions
     Cgridfire::solver::NetworkSolverStrategy< EngineT >Abstract base class for network solver strategies
     Cgridfire::solver::NetworkSolverStrategy< DynamicEngine >
     Cgridfire::solver::DirectNetworkSolverA network solver that directly integrates the reaction network ODEs
     Cgridfire::solver::QSENetworkSolverA network solver that uses a Quasi-Steady-State Equilibrium (QSE) approach
     Cgridfire::approx8::ODEFunctor to calculate the derivatives for the ODE solver
     Cgridfire::io::ParsedNetworkDataHolds the data parsed from a network file
     Cgridfire::GraphEngine::PrecomputedReaction
     Cgridfire::reaction::RateCoefficientSetHolds the seven coefficients for the REACLIB rate equation
     Cgridfire::reaction::ReactionRepresents a single nuclear reaction from a specific data source
     Cgridfire::reaction::LogicalReactionRepresents a "logical" reaction that aggregates rates from multiple sources
     Cgridfire::AdaptiveEngineView::ReactionFlowA struct to hold a reaction and its flow rate
     Cgridfire::reaclib::ReactionRecord
     Cgridfire::solver::DirectNetworkSolver::RHSFunctorFunctor for calculating the right-hand side of the ODEs
     Cgridfire::solver::QSENetworkSolver::RHSFunctorFunctor for calculating the right-hand side of the ODEs for the dynamic species
     Cgridfire::screening::ScreeningModelAn abstract base class for plasma screening models
     Cgridfire::screening::BareScreeningModelA screening model that applies no screening effect
     Cgridfire::screening::WeakScreeningModelImplements the weak screening model based on the Debye-Hückel approximation
     Cgridfire::StepDerivatives< T >Structure holding derivatives and energy generation for a network step
     Cgridfire::reaction::TemplatedReactionSet< ReactionT >
    diff --git a/docs/html/hierarchy.js b/docs/html/hierarchy.js index 0249a50d..685bd57f 100644 --- a/docs/html/hierarchy.js +++ b/docs/html/hierarchy.js @@ -1,6 +1,7 @@ var hierarchy = [ [ "gridfire::approx8::Approx8Net", "structgridfire_1_1approx8_1_1_approx8_net.html", null ], + [ "gridfire::GraphEngine::constants", "structgridfire_1_1_graph_engine_1_1constants.html", null ], [ "gridfire::solver::dynamicQSESpeciesIndices", "structgridfire_1_1solver_1_1dynamic_q_s_e_species_indices.html", null ], [ "gridfire::solver::QSENetworkSolver::EigenFunctor< T >", "structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html", null ], [ "gridfire::Engine", "classgridfire_1_1_engine.html", [ @@ -37,6 +38,7 @@ var hierarchy = ] ], [ "gridfire::approx8::ODE", "structgridfire_1_1approx8_1_1_o_d_e.html", null ], [ "gridfire::io::ParsedNetworkData", "structgridfire_1_1io_1_1_parsed_network_data.html", null ], + [ "gridfire::GraphEngine::PrecomputedReaction", "structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html", null ], [ "gridfire::reaction::RateCoefficientSet", "structgridfire_1_1reaction_1_1_rate_coefficient_set.html", null ], [ "gridfire::reaction::Reaction", "classgridfire_1_1reaction_1_1_reaction.html", [ [ "gridfire::reaction::LogicalReaction", "classgridfire_1_1reaction_1_1_logical_reaction.html", null ] diff --git a/docs/html/index.html b/docs/html/index.html index 988f6f19..d57bd938 100644 --- a/docs/html/index.html +++ b/docs/html/index.html @@ -214,7 +214,7 @@ How to Use
    return 0;
    }
    -
    A reaction network engine that uses a graph-based representation.
    +
    A reaction network engine that uses a graph-based representation.
    A network solver that uses a Quasi-Steady-State Equilibrium (QSE) approach.
    Definition solver.h:98
    diff --git a/docs/html/logging_8cpp_source.html b/docs/html/logging_8cpp_source.html index a9385375..23d06991 100644 --- a/docs/html/logging_8cpp_source.html +++ b/docs/html/logging_8cpp_source.html @@ -168,7 +168,7 @@ $(function(){initNavTree('logging_8cpp_source.html',''); initResizable(true); })
    virtual std::unordered_map< fourdst::atomic::Species, double > getSpeciesTimescales(const std::vector< double > &Y, double T9, double rho) const =0
    Compute timescales for all species in the network.
    Abstract interfaces for reaction network engines in GridFire.
    -
    std::string formatNuclearTimescaleLogString(const DynamicEngine &engine, const std::vector< double > &Y, const double T9, const double rho)
    Definition logging.cpp:13
    +
    std::string formatNuclearTimescaleLogString(const DynamicEngine &engine, const std::vector< double > &Y, const double T9, const double rho)
    Formats a map of nuclear species timescales into a human-readable string.
    Definition logging.cpp:13
    diff --git a/docs/html/logging_8h.html b/docs/html/logging_8h.html index 5364c8bd..a83f90d4 100644 --- a/docs/html/logging_8h.html +++ b/docs/html/logging_8h.html @@ -121,6 +121,7 @@ Namespaces

    Functions

    std::string gridfire::utils::formatNuclearTimescaleLogString (const DynamicEngine &engine, const std::vector< double > &Y, const double T9, const double rho) + Formats a map of nuclear species timescales into a human-readable string.
      diff --git a/docs/html/logging_8h_source.html b/docs/html/logging_8h_source.html index f966ff83..afe8bfcf 100644 --- a/docs/html/logging_8h_source.html +++ b/docs/html/logging_8h_source.html @@ -111,18 +111,18 @@ $(function(){initNavTree('logging_8h_source.html',''); initResizable(true); });
    7
    8namespace gridfire::utils {
    - -
    10 const DynamicEngine& engine,
    -
    11 const std::vector<double>& Y,
    -
    12 const double T9,
    -
    13 const double rho
    -
    14 );
    -
    15}
    + +
    60 const DynamicEngine& engine,
    +
    61 const std::vector<double>& Y,
    +
    62 const double T9,
    +
    63 const double rho
    +
    64 );
    +
    65}
    Abstract class for engines supporting Jacobian and stoichiometry operations.
    Abstract interfaces for reaction network engines in GridFire.
    Definition logging.h:8
    -
    std::string formatNuclearTimescaleLogString(const DynamicEngine &engine, const std::vector< double > &Y, const double T9, const double rho)
    Definition logging.cpp:13
    +
    std::string formatNuclearTimescaleLogString(const DynamicEngine &engine, const std::vector< double > &Y, const double T9, const double rho)
    Formats a map of nuclear species timescales into a human-readable string.
    Definition logging.cpp:13
    diff --git a/docs/html/menudata.js b/docs/html/menudata.js index f982042c..2266b684 100644 --- a/docs/html/menudata.js +++ b/docs/html/menudata.js @@ -117,7 +117,9 @@ var menudata={children:[ {text:"p",url:"functions_vars.html#index_p"}, {text:"q",url:"functions_vars.html#index_q"}, {text:"r",url:"functions_vars.html#index_r"}, -{text:"t",url:"functions_vars.html#index_t"}]}, +{text:"s",url:"functions_vars.html#index_s"}, +{text:"t",url:"functions_vars.html#index_t"}, +{text:"u",url:"functions_vars.html#index_u"}]}, {text:"Typedefs",url:"functions_type.html"}, {text:"Enumerator",url:"functions_eval.html"}, {text:"Related Symbols",url:"functions_rela.html"}]}]}, diff --git a/docs/html/namespacegridfire.html b/docs/html/namespacegridfire.html index 2fc8b1d1..4bef5e23 100644 --- a/docs/html/namespacegridfire.html +++ b/docs/html/namespacegridfire.html @@ -143,6 +143,7 @@ Classes  Abstract base class for a "view" of a reaction network engine. More...
      class  FileDefinedEngineView + An engine view that uses a user-defined reaction network from a file. More...
      class  GraphEngine  A reaction network engine that uses a graph-based representation. More...
    diff --git a/docs/html/namespacegridfire_1_1io.html b/docs/html/namespacegridfire_1_1io.html index 216f76e5..fcf8cd31 100644 --- a/docs/html/namespacegridfire_1_1io.html +++ b/docs/html/namespacegridfire_1_1io.html @@ -108,12 +108,16 @@ $(function(){initNavTree('namespacegridfire_1_1io.html',''); initResizable(true)

    Classes

    class  MESANetworkFileParser + A parser for MESA-format network files. More...
      class  NetworkFileParser + An abstract base class for network file parsers. More...
      struct  ParsedNetworkData + Holds the data parsed from a network file. More...
      class  SimpleReactionListFileParser + A parser for simple text files containing a list of reactions. More...
      diff --git a/docs/html/namespacegridfire_1_1screening.html b/docs/html/namespacegridfire_1_1screening.html index fba897a6..4f1ec6c0 100644 --- a/docs/html/namespacegridfire_1_1screening.html +++ b/docs/html/namespacegridfire_1_1screening.html @@ -111,10 +111,13 @@ $(function(){initNavTree('namespacegridfire_1_1screening.html',''); initResizabl

    Classes

    class  BareScreeningModel + A screening model that applies no screening effect. More...
      class  ScreeningModel + An abstract base class for plasma screening models. More...
      class  WeakScreeningModel + Implements the weak screening model based on the Debye-Hückel approximation. More...
      +

    @@ -127,11 +130,13 @@ Enumerations

    enum class  ScreeningType { BARE , WEAK }
     Enumerates the available plasma screening models. More...
     
    +

    Functions

    std::unique_ptr< ScreeningModelselectScreeningModel (ScreeningType type)
     A factory function to select and create a screening model.
     

    Typedef Documentation

    @@ -171,14 +176,24 @@ Functions
    + +

    Enumerates the available plasma screening models.

    +

    This enum provides a set of identifiers for the different screening prescriptions that can be used in the reaction rate calculations.

    - -
    Enumerator
    BARE 

    No screening applied.

    +
    Enumerator
    BARE 

    No screening applied. The screening factor is always 1.0.

    WEAK 

    Weak screening model.

    +
    WEAK 

    Weak screening model (Salpeter, 1954).

    +

    This model is suitable for non-degenerate, non-relativistic plasmas where the electrostatic potential energy between ions is small compared to their thermal kinetic energy. The screening enhancement factor is calculated as exp(H_12).

    +

    Algorithm

      +
    1. A composition-dependent term, ζ = ∑(Z_i^2 + Z_i) * Y_i, is calculated, where Z_i is the charge and Y_i is the molar abundance of each species.
    2. +
    3. A prefactor is computed: prefactor = 0.188 * sqrt(ρ / T₇³) * sqrt(ζ), where ρ is the density and T₇ is the temperature in 10^7 K.
    4. +
    5. For a reaction between two nuclei with charges Z₁ and Z₂, the enhancement term is H_12 = prefactor * Z₁ * Z₂.
    6. +
    7. The final screening factor is exp(H_12). A special calculation is performed for the triple-alpha reaction.
    8. +
    -

    Definition at line 8 of file screening_types.h.

    +

    Definition at line 15 of file screening_types.h.

    @@ -198,6 +213,30 @@ Functions
    +

    A factory function to select and create a screening model.

    +

    This function returns a std::unique_ptr to a concrete implementation of the ScreeningModel abstract base class, based on the specified ScreeningType. This allows for easy switching between different screening prescriptions at runtime.

    +
    Parameters
    + + +
    typeThe ScreeningType enum value specifying which model to create.
    +
    +
    +
    Returns
    A std::unique_ptr<ScreeningModel> holding an instance of the requested screening model.
    +

    Algorithm The function uses a switch statement to determine which concrete model to instantiate. If the provided type does not match a known case, it defaults to creating a BareScreeningModel to ensure safe behavior.

    +

    Post-conditions

    +

    Usage

    // Select the weak screening model
    + +
    +
    // Use the model to calculate screening factors
    +
    // (assuming other parameters are initialized)
    +
    std::vector<double> factors = screening_model->calculateScreeningFactors(
    +
    reactions, species, Y, T9, rho
    +
    );
    +
    std::unique_ptr< ScreeningModel > selectScreeningModel(ScreeningType type)
    A factory function to select and create a screening model.
    +
    @ WEAK
    Weak screening model (Salpeter, 1954).
    +

    Definition at line 9 of file screening_types.cpp.

    diff --git a/docs/html/namespacegridfire_1_1utils.html b/docs/html/namespacegridfire_1_1utils.html index eca11ff1..469a25be 100644 --- a/docs/html/namespacegridfire_1_1utils.html +++ b/docs/html/namespacegridfire_1_1utils.html @@ -108,6 +108,7 @@ $(function(){initNavTree('namespacegridfire_1_1utils.html',''); initResizable(tr

    Functions

    std::string formatNuclearTimescaleLogString (const DynamicEngine &engine, const std::vector< double > &Y, const double T9, const double rho) + Formats a map of nuclear species timescales into a human-readable string.
     

    Function Documentation

    @@ -140,6 +141,46 @@ Functions
    +

    Formats a map of nuclear species timescales into a human-readable string.

    +

    This function takes a reaction network engine and the current plasma conditions to calculate the characteristic timescales for each species. It then formats this information into a neatly aligned ASCII table, which is suitable for logging or printing to the console.

    +
    Parameters
    + + + + + +
    engineA constant reference to a DynamicEngine object, used to calculate the species timescales.
    YA vector of the molar abundances (mol/g) for each species.
    T9The temperature in units of 10^9 K.
    rhoThe plasma density in g/cm^3.
    +
    +
    +
    Returns
    A std::string containing the formatted table of species and their timescales.
    +

    Pre-conditions

    +

    Algorithm

      +
    1. Calls the getSpeciesTimescales method on the provided engine to get the timescale for each species under the given conditions.
    2. +
    3. Determines the maximum length of the species names to dynamically set the width of the "Species" column for proper alignment.
    4. +
    5. Uses a std::ostringstream to build the output string.
    6. +
    7. Constructs a header for the table with titles "Species" and "Timescale (s)".
    8. +
    9. Iterates through the map of timescales, adding a row to the table for each species.
    10. +
    11. Timescales are formatted in scientific notation with 3 digits of precision.
    12. +
    13. Special handling is included to print "inf" for infinite timescales.
    14. +
    15. The final string, including header and footer lines, is returned.
    16. +
    +

    Usage

    // Assume 'my_engine' is a valid DynamicEngine object and Y, T9, rho are initialized.
    +
    std::string log_output = gridfire::utils::formatNuclearTimescaleLogString(my_engine, Y, T9, rho);
    +
    std::cout << log_output;
    +
    +
    // Example Output:
    +
    // == Timescales (s) ==
    +
    // Species Timescale (s)
    +
    // ==========================
    +
    // h1 1.234e+05
    +
    // he4 inf
    +
    // c12 8.765e-02
    +
    // ==========================
    +
    std::string formatNuclearTimescaleLogString(const DynamicEngine &engine, const std::vector< double > &Y, const double T9, const double rho)
    Formats a map of nuclear species timescales into a human-readable string.
    Definition logging.cpp:13
    +

    Definition at line 13 of file logging.cpp.

    diff --git a/docs/html/navtreedata.js b/docs/html/navtreedata.js index b6134c79..383dfc9f 100644 --- a/docs/html/navtreedata.js +++ b/docs/html/navtreedata.js @@ -79,10 +79,10 @@ var NAVTREE = var NAVTREEINDEX = [ "_2_users_2tboudreaux_2_programming_24_d_s_t_a_r_2_grid_fire_2src_2network_2include_2gridfire_2engine_2engine_approx8_8h-example.html", -"classgridfire_1_1_graph_engine.html#acf4cfccea20f5cb31c9886bf233a28be", -"classgridfire_1_1reaction_1_1_templated_reaction_set.html#aac76ec883b4ecebb2a94b2485dae7105", -"namespacegridfire_1_1reaction.html#aa86f08712565f278adacc7cd2361eb31", -"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_jacobian_functor.html#a2071ce797f94ae1a3ea6d934748672ce" +"classgridfire_1_1_graph_engine.html#a95563f6bc86007d9ee053a0f1e15b889", +"classgridfire_1_1reaction_1_1_templated_reaction_set.html#a5fda3af5ea9ae0ecfb60a61a9e07f5b4", +"namespacegridfire_1_1approx8.html#ad7a6f894fa4bdeebb4cae0eba3b2c210", +"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a08ce53701b152f3ce108c1c18ce64de2" ]; var SYNCONMSG = 'click to disable panel synchronization'; diff --git a/docs/html/navtreeindex0.js b/docs/html/navtreeindex0.js index 1c2d6abd..371ffc55 100644 --- a/docs/html/navtreeindex0.js +++ b/docs/html/navtreeindex0.js @@ -139,12 +139,12 @@ var NAVTREEINDEX0 = "classgridfire_1_1_file_defined_engine_view.html#a63f8f85e75ecaab6fa39d48d7a846187":[4,0,0,10,0], "classgridfire_1_1_file_defined_engine_view.html#a6e421bc748933be31bed9ff53f12b595":[2,0,0,11,30], "classgridfire_1_1_file_defined_engine_view.html#a6e421bc748933be31bed9ff53f12b595":[4,0,0,10,30], +"classgridfire_1_1_file_defined_engine_view.html#a74217a1f8fd8e6daff969cb17885315c":[2,0,0,11,19], +"classgridfire_1_1_file_defined_engine_view.html#a74217a1f8fd8e6daff969cb17885315c":[4,0,0,10,19], "classgridfire_1_1_file_defined_engine_view.html#a7a80966c023ae722239491af58609362":[2,0,0,11,28], "classgridfire_1_1_file_defined_engine_view.html#a7a80966c023ae722239491af58609362":[4,0,0,10,28], "classgridfire_1_1_file_defined_engine_view.html#a8bb583e039b49608272997ed2d3387fa":[2,0,0,11,13], "classgridfire_1_1_file_defined_engine_view.html#a8bb583e039b49608272997ed2d3387fa":[4,0,0,10,13], -"classgridfire_1_1_file_defined_engine_view.html#a8d2c6b9a33b9c8c172bbd2c2e2e9ffaf":[2,0,0,11,20], -"classgridfire_1_1_file_defined_engine_view.html#a8d2c6b9a33b9c8c172bbd2c2e2e9ffaf":[4,0,0,10,20], "classgridfire_1_1_file_defined_engine_view.html#a8f2f64bab0f516ed2a6fd529912e0acd":[2,0,0,11,2], "classgridfire_1_1_file_defined_engine_view.html#a8f2f64bab0f516ed2a6fd529912e0acd":[4,0,0,10,2], "classgridfire_1_1_file_defined_engine_view.html#a92f14da849e99d07c1ff1347addb9263":[2,0,0,11,21], @@ -155,8 +155,8 @@ var NAVTREEINDEX0 = "classgridfire_1_1_file_defined_engine_view.html#a9d93633ed4ab68de94b7274f879a0432":[4,0,0,10,31], "classgridfire_1_1_file_defined_engine_view.html#a9da9224f5c99a5068f3d8cbf066e4693":[2,0,0,11,16], "classgridfire_1_1_file_defined_engine_view.html#a9da9224f5c99a5068f3d8cbf066e4693":[4,0,0,10,16], -"classgridfire_1_1_file_defined_engine_view.html#ac231044e37e0962f664f8465e1ccb022":[2,0,0,11,18], -"classgridfire_1_1_file_defined_engine_view.html#ac231044e37e0962f664f8465e1ccb022":[4,0,0,10,18], +"classgridfire_1_1_file_defined_engine_view.html#aa2373955ef5b0eabf7a57c7208e38bb1":[2,0,0,11,20], +"classgridfire_1_1_file_defined_engine_view.html#aa2373955ef5b0eabf7a57c7208e38bb1":[4,0,0,10,20], "classgridfire_1_1_file_defined_engine_view.html#ac371fb66fd0a76a04df204c9dd9a05ef":[2,0,0,11,4], "classgridfire_1_1_file_defined_engine_view.html#ac371fb66fd0a76a04df204c9dd9a05ef":[4,0,0,10,4], "classgridfire_1_1_file_defined_engine_view.html#acbb1a9bcb775e6d50de512a333afed08":[2,0,0,11,1], @@ -169,14 +169,14 @@ var NAVTREEINDEX0 = "classgridfire_1_1_file_defined_engine_view.html#ad8454c98fa9a4bb45dc81059bc51fc81":[4,0,0,10,27], "classgridfire_1_1_file_defined_engine_view.html#ad96bbee6d3d37b50d9236a975ef704c0":[2,0,0,11,22], "classgridfire_1_1_file_defined_engine_view.html#ad96bbee6d3d37b50d9236a975ef704c0":[4,0,0,10,22], +"classgridfire_1_1_file_defined_engine_view.html#adba3c11b11a04b2907c1635210d73dee":[2,0,0,11,18], +"classgridfire_1_1_file_defined_engine_view.html#adba3c11b11a04b2907c1635210d73dee":[4,0,0,10,18], "classgridfire_1_1_file_defined_engine_view.html#adbc50f397445f92b810d80cf329b8626":[2,0,0,11,14], "classgridfire_1_1_file_defined_engine_view.html#adbc50f397445f92b810d80cf329b8626":[4,0,0,10,14], "classgridfire_1_1_file_defined_engine_view.html#ae012da2b1f6169cb13e6075a73353ab2":[2,0,0,11,25], "classgridfire_1_1_file_defined_engine_view.html#ae012da2b1f6169cb13e6075a73353ab2":[4,0,0,10,25], "classgridfire_1_1_file_defined_engine_view.html#ae3f99002ab2c56a5bcdec00839f8628f":[2,0,0,11,24], "classgridfire_1_1_file_defined_engine_view.html#ae3f99002ab2c56a5bcdec00839f8628f":[4,0,0,10,24], -"classgridfire_1_1_file_defined_engine_view.html#ae7d6f0ff9076d59d1245c047bbd1bdb9":[2,0,0,11,19], -"classgridfire_1_1_file_defined_engine_view.html#ae7d6f0ff9076d59d1245c047bbd1bdb9":[4,0,0,10,19], "classgridfire_1_1_file_defined_engine_view.html#aebb3f3548f8781506f31580706810a4e":[2,0,0,11,6], "classgridfire_1_1_file_defined_engine_view.html#aebb3f3548f8781506f31580706810a4e":[4,0,0,10,6], "classgridfire_1_1_file_defined_engine_view.html#aebd4a1a584f2784f1df3d503645be03b":[2,0,0,11,34], @@ -185,69 +185,69 @@ var NAVTREEINDEX0 = "classgridfire_1_1_file_defined_engine_view.html#af0a77a4749a15aae87bdecfccbd1736e":[4,0,0,10,33], "classgridfire_1_1_graph_engine.html":[2,0,0,12], "classgridfire_1_1_graph_engine.html":[4,0,0,11], -"classgridfire_1_1_graph_engine.html#a0837bab6dcd111d9075c9343b90d64f1":[2,0,0,12,31], -"classgridfire_1_1_graph_engine.html#a0837bab6dcd111d9075c9343b90d64f1":[4,0,0,11,31], -"classgridfire_1_1_graph_engine.html#a0ed390f3e598ebba4e245ac90bb78767":[2,0,0,12,16], -"classgridfire_1_1_graph_engine.html#a0ed390f3e598ebba4e245ac90bb78767":[4,0,0,11,16], -"classgridfire_1_1_graph_engine.html#a26215593544c3a52597194602e4e25dd":[2,0,0,12,18], -"classgridfire_1_1_graph_engine.html#a26215593544c3a52597194602e4e25dd":[4,0,0,11,18], -"classgridfire_1_1_graph_engine.html#a26602e1b3c610780a47b5a6511d6d567":[2,0,0,12,21], -"classgridfire_1_1_graph_engine.html#a26602e1b3c610780a47b5a6511d6d567":[4,0,0,11,21], -"classgridfire_1_1_graph_engine.html#a2e22b111f6d00ecc9e3804a71f1ce876":[2,0,0,12,38], -"classgridfire_1_1_graph_engine.html#a2e22b111f6d00ecc9e3804a71f1ce876":[4,0,0,11,38], -"classgridfire_1_1_graph_engine.html#a2f1718c89d4aaad028102724d18fa910":[2,0,0,12,32], -"classgridfire_1_1_graph_engine.html#a2f1718c89d4aaad028102724d18fa910":[4,0,0,11,32], -"classgridfire_1_1_graph_engine.html#a303e6093591cde91430f866a04a8be7c":[2,0,0,12,13], -"classgridfire_1_1_graph_engine.html#a303e6093591cde91430f866a04a8be7c":[4,0,0,11,13], -"classgridfire_1_1_graph_engine.html#a30e09ed0bce6aa5fc89beaa316a7b827":[2,0,0,12,35], -"classgridfire_1_1_graph_engine.html#a30e09ed0bce6aa5fc89beaa316a7b827":[4,0,0,11,35], -"classgridfire_1_1_graph_engine.html#a3b17102b143435ddfdc015d7a50c4b18":[2,0,0,12,30], -"classgridfire_1_1_graph_engine.html#a3b17102b143435ddfdc015d7a50c4b18":[4,0,0,11,30], -"classgridfire_1_1_graph_engine.html#a47202c43342b96480070874bffce1391":[2,0,0,12,22], -"classgridfire_1_1_graph_engine.html#a47202c43342b96480070874bffce1391":[4,0,0,11,22], -"classgridfire_1_1_graph_engine.html#a483979fc154adc88d029b3b672066d53":[2,0,0,12,33], -"classgridfire_1_1_graph_engine.html#a483979fc154adc88d029b3b672066d53":[4,0,0,11,33], -"classgridfire_1_1_graph_engine.html#a51b4cedf9b00de79fb6eef243631b04d":[2,0,0,12,27], -"classgridfire_1_1_graph_engine.html#a51b4cedf9b00de79fb6eef243631b04d":[4,0,0,11,27], -"classgridfire_1_1_graph_engine.html#a52edc3e88f1e8fc497e1e63972d63c80":[2,0,0,12,40], -"classgridfire_1_1_graph_engine.html#a52edc3e88f1e8fc497e1e63972d63c80":[4,0,0,11,40], -"classgridfire_1_1_graph_engine.html#a5a5458ed01923124f2d7e1f04f32f138":[2,0,0,12,24], -"classgridfire_1_1_graph_engine.html#a5a5458ed01923124f2d7e1f04f32f138":[4,0,0,11,24], -"classgridfire_1_1_graph_engine.html#a5d6cc63b99b467c2a976d1fbaaa1dfa3":[2,0,0,12,36], -"classgridfire_1_1_graph_engine.html#a5d6cc63b99b467c2a976d1fbaaa1dfa3":[4,0,0,11,36], -"classgridfire_1_1_graph_engine.html#a5e96b5a0b34c8932f0e14eabda57f1a4":[2,0,0,12,6], -"classgridfire_1_1_graph_engine.html#a5e96b5a0b34c8932f0e14eabda57f1a4":[4,0,0,11,6], -"classgridfire_1_1_graph_engine.html#a697f2004e0d02c59e83c7890742d7c9a":[2,0,0,12,17], -"classgridfire_1_1_graph_engine.html#a697f2004e0d02c59e83c7890742d7c9a":[4,0,0,11,17], -"classgridfire_1_1_graph_engine.html#a6b5feaf788bade212b7c8df7ac8c8152":[2,0,0,12,19], -"classgridfire_1_1_graph_engine.html#a6b5feaf788bade212b7c8df7ac8c8152":[4,0,0,11,19], -"classgridfire_1_1_graph_engine.html#a71a3d1181b90c3becdc5d9a3da05b9c9":[2,0,0,12,2], -"classgridfire_1_1_graph_engine.html#a71a3d1181b90c3becdc5d9a3da05b9c9":[4,0,0,11,2], -"classgridfire_1_1_graph_engine.html#a8110e687844f921438bb517e1d8ce62f":[2,0,0,12,25], -"classgridfire_1_1_graph_engine.html#a8110e687844f921438bb517e1d8ce62f":[4,0,0,11,25], -"classgridfire_1_1_graph_engine.html#a832e2fe066381811a3e0464806ff5e95":[2,0,0,12,9], -"classgridfire_1_1_graph_engine.html#a832e2fe066381811a3e0464806ff5e95":[4,0,0,11,9], -"classgridfire_1_1_graph_engine.html#a8b3baf29829c7ae0a61430ea70632bbf":[2,0,0,12,7], -"classgridfire_1_1_graph_engine.html#a8b3baf29829c7ae0a61430ea70632bbf":[4,0,0,11,7], -"classgridfire_1_1_graph_engine.html#a8c29d8bbde407e913be5eb77efb2c0c9":[2,0,0,12,14], -"classgridfire_1_1_graph_engine.html#a8c29d8bbde407e913be5eb77efb2c0c9":[4,0,0,11,14], -"classgridfire_1_1_graph_engine.html#a9245642b741f215e52861d00e756fb3f":[2,0,0,12,5], -"classgridfire_1_1_graph_engine.html#a9245642b741f215e52861d00e756fb3f":[4,0,0,11,5], -"classgridfire_1_1_graph_engine.html#a92d26068ba139e47d335f5fe9e2814cc":[2,0,0,12,34], -"classgridfire_1_1_graph_engine.html#a92d26068ba139e47d335f5fe9e2814cc":[4,0,0,11,34], -"classgridfire_1_1_graph_engine.html#a95563f6bc86007d9ee053a0f1e15b889":[2,0,0,12,23], -"classgridfire_1_1_graph_engine.html#a95563f6bc86007d9ee053a0f1e15b889":[4,0,0,11,23], -"classgridfire_1_1_graph_engine.html#a9c285e3a38de6e73503a4e19666678e2":[2,0,0,12,1], -"classgridfire_1_1_graph_engine.html#a9c285e3a38de6e73503a4e19666678e2":[4,0,0,11,1], -"classgridfire_1_1_graph_engine.html#a9f74786ff930ab72664b31f29d05a30c":[2,0,0,12,0], -"classgridfire_1_1_graph_engine.html#a9f74786ff930ab72664b31f29d05a30c":[4,0,0,11,0], -"classgridfire_1_1_graph_engine.html#aa6202cee0c3c481eda77cc9a91bc126b":[2,0,0,12,20], -"classgridfire_1_1_graph_engine.html#aa6202cee0c3c481eda77cc9a91bc126b":[4,0,0,11,20], -"classgridfire_1_1_graph_engine.html#aaf4d54e4b774ab8ec8eabec006579d31":[2,0,0,12,3], -"classgridfire_1_1_graph_engine.html#aaf4d54e4b774ab8ec8eabec006579d31":[4,0,0,11,3], -"classgridfire_1_1_graph_engine.html#acb7c4f5108b0efeae48ad15598e808c3":[2,0,0,12,37], -"classgridfire_1_1_graph_engine.html#acb7c4f5108b0efeae48ad15598e808c3":[4,0,0,11,37], -"classgridfire_1_1_graph_engine.html#acdce8d87e23a2cd1504bc9472e538c0f":[2,0,0,12,26], -"classgridfire_1_1_graph_engine.html#acdce8d87e23a2cd1504bc9472e538c0f":[4,0,0,11,26], -"classgridfire_1_1_graph_engine.html#acf4cfccea20f5cb31c9886bf233a28be":[2,0,0,12,29] +"classgridfire_1_1_graph_engine.html#a015f8975701f028c29835d3a9794e00f":[2,0,0,12,24], +"classgridfire_1_1_graph_engine.html#a015f8975701f028c29835d3a9794e00f":[4,0,0,11,24], +"classgridfire_1_1_graph_engine.html#a0ed390f3e598ebba4e245ac90bb78767":[2,0,0,12,19], +"classgridfire_1_1_graph_engine.html#a0ed390f3e598ebba4e245ac90bb78767":[4,0,0,11,19], +"classgridfire_1_1_graph_engine.html#a10c01bc20ae668c2857efb2a1783098e":[2,0,0,12,37], +"classgridfire_1_1_graph_engine.html#a10c01bc20ae668c2857efb2a1783098e":[4,0,0,11,37], +"classgridfire_1_1_graph_engine.html#a191cff35402d3c97c82c5c966a39d0de":[2,0,0,12,50], +"classgridfire_1_1_graph_engine.html#a191cff35402d3c97c82c5c966a39d0de":[4,0,0,11,50], +"classgridfire_1_1_graph_engine.html#a1e7e851dfa21d41c2dc533ba56fc4c7b":[2,0,0,12,3], +"classgridfire_1_1_graph_engine.html#a1e7e851dfa21d41c2dc533ba56fc4c7b":[4,0,0,11,3], +"classgridfire_1_1_graph_engine.html#a26215593544c3a52597194602e4e25dd":[2,0,0,12,21], +"classgridfire_1_1_graph_engine.html#a26215593544c3a52597194602e4e25dd":[4,0,0,11,21], +"classgridfire_1_1_graph_engine.html#a26602e1b3c610780a47b5a6511d6d567":[2,0,0,12,25], +"classgridfire_1_1_graph_engine.html#a26602e1b3c610780a47b5a6511d6d567":[4,0,0,11,25], +"classgridfire_1_1_graph_engine.html#a2e22b111f6d00ecc9e3804a71f1ce876":[2,0,0,12,45], +"classgridfire_1_1_graph_engine.html#a2e22b111f6d00ecc9e3804a71f1ce876":[4,0,0,11,45], +"classgridfire_1_1_graph_engine.html#a2f1718c89d4aaad028102724d18fa910":[2,0,0,12,38], +"classgridfire_1_1_graph_engine.html#a2f1718c89d4aaad028102724d18fa910":[4,0,0,11,38], +"classgridfire_1_1_graph_engine.html#a303e6093591cde91430f866a04a8be7c":[2,0,0,12,16], +"classgridfire_1_1_graph_engine.html#a303e6093591cde91430f866a04a8be7c":[4,0,0,11,16], +"classgridfire_1_1_graph_engine.html#a30e09ed0bce6aa5fc89beaa316a7b827":[2,0,0,12,41], +"classgridfire_1_1_graph_engine.html#a30e09ed0bce6aa5fc89beaa316a7b827":[4,0,0,11,41], +"classgridfire_1_1_graph_engine.html#a3b17102b143435ddfdc015d7a50c4b18":[2,0,0,12,36], +"classgridfire_1_1_graph_engine.html#a3b17102b143435ddfdc015d7a50c4b18":[4,0,0,11,36], +"classgridfire_1_1_graph_engine.html#a47202c43342b96480070874bffce1391":[2,0,0,12,26], +"classgridfire_1_1_graph_engine.html#a47202c43342b96480070874bffce1391":[4,0,0,11,26], +"classgridfire_1_1_graph_engine.html#a483979fc154adc88d029b3b672066d53":[2,0,0,12,39], +"classgridfire_1_1_graph_engine.html#a483979fc154adc88d029b3b672066d53":[4,0,0,11,39], +"classgridfire_1_1_graph_engine.html#a51b4cedf9b00de79fb6eef243631b04d":[2,0,0,12,33], +"classgridfire_1_1_graph_engine.html#a51b4cedf9b00de79fb6eef243631b04d":[4,0,0,11,33], +"classgridfire_1_1_graph_engine.html#a52edc3e88f1e8fc497e1e63972d63c80":[2,0,0,12,47], +"classgridfire_1_1_graph_engine.html#a52edc3e88f1e8fc497e1e63972d63c80":[4,0,0,11,47], +"classgridfire_1_1_graph_engine.html#a5a5458ed01923124f2d7e1f04f32f138":[2,0,0,12,29], +"classgridfire_1_1_graph_engine.html#a5a5458ed01923124f2d7e1f04f32f138":[4,0,0,11,29], +"classgridfire_1_1_graph_engine.html#a5d431d5385b1219ba29689eb29601ea3":[2,0,0,12,42], +"classgridfire_1_1_graph_engine.html#a5d431d5385b1219ba29689eb29601ea3":[4,0,0,11,42], +"classgridfire_1_1_graph_engine.html#a5d6cc63b99b467c2a976d1fbaaa1dfa3":[2,0,0,12,43], +"classgridfire_1_1_graph_engine.html#a5d6cc63b99b467c2a976d1fbaaa1dfa3":[4,0,0,11,43], +"classgridfire_1_1_graph_engine.html#a5e96b5a0b34c8932f0e14eabda57f1a4":[2,0,0,12,9], +"classgridfire_1_1_graph_engine.html#a5e96b5a0b34c8932f0e14eabda57f1a4":[4,0,0,11,9], +"classgridfire_1_1_graph_engine.html#a63639f4430d0889605c10839a6f32af9":[2,0,0,12,7], +"classgridfire_1_1_graph_engine.html#a63639f4430d0889605c10839a6f32af9":[4,0,0,11,7], +"classgridfire_1_1_graph_engine.html#a697f2004e0d02c59e83c7890742d7c9a":[2,0,0,12,20], +"classgridfire_1_1_graph_engine.html#a697f2004e0d02c59e83c7890742d7c9a":[4,0,0,11,20], +"classgridfire_1_1_graph_engine.html#a6b5feaf788bade212b7c8df7ac8c8152":[2,0,0,12,22], +"classgridfire_1_1_graph_engine.html#a6b5feaf788bade212b7c8df7ac8c8152":[4,0,0,11,22], +"classgridfire_1_1_graph_engine.html#a6c5410878496abc349ba30b691cdf0f1":[2,0,0,12,30], +"classgridfire_1_1_graph_engine.html#a6c5410878496abc349ba30b691cdf0f1":[4,0,0,11,30], +"classgridfire_1_1_graph_engine.html#a71a3d1181b90c3becdc5d9a3da05b9c9":[2,0,0,12,4], +"classgridfire_1_1_graph_engine.html#a71a3d1181b90c3becdc5d9a3da05b9c9":[4,0,0,11,4], +"classgridfire_1_1_graph_engine.html#a8110e687844f921438bb517e1d8ce62f":[2,0,0,12,31], +"classgridfire_1_1_graph_engine.html#a8110e687844f921438bb517e1d8ce62f":[4,0,0,11,31], +"classgridfire_1_1_graph_engine.html#a832e2fe066381811a3e0464806ff5e95":[2,0,0,12,12], +"classgridfire_1_1_graph_engine.html#a832e2fe066381811a3e0464806ff5e95":[4,0,0,11,12], +"classgridfire_1_1_graph_engine.html#a8b3baf29829c7ae0a61430ea70632bbf":[2,0,0,12,10], +"classgridfire_1_1_graph_engine.html#a8b3baf29829c7ae0a61430ea70632bbf":[4,0,0,11,10], +"classgridfire_1_1_graph_engine.html#a8c29d8bbde407e913be5eb77efb2c0c9":[2,0,0,12,17], +"classgridfire_1_1_graph_engine.html#a8c29d8bbde407e913be5eb77efb2c0c9":[4,0,0,11,17], +"classgridfire_1_1_graph_engine.html#a9245642b741f215e52861d00e756fb3f":[2,0,0,12,8], +"classgridfire_1_1_graph_engine.html#a9245642b741f215e52861d00e756fb3f":[4,0,0,11,8], +"classgridfire_1_1_graph_engine.html#a92644bc333bff69c5685be4552ca12fd":[2,0,0,12,27], +"classgridfire_1_1_graph_engine.html#a92644bc333bff69c5685be4552ca12fd":[4,0,0,11,27], +"classgridfire_1_1_graph_engine.html#a92d26068ba139e47d335f5fe9e2814cc":[2,0,0,12,40], +"classgridfire_1_1_graph_engine.html#a92d26068ba139e47d335f5fe9e2814cc":[4,0,0,11,40], +"classgridfire_1_1_graph_engine.html#a95563f6bc86007d9ee053a0f1e15b889":[2,0,0,12,28] }; diff --git a/docs/html/navtreeindex1.js b/docs/html/navtreeindex1.js index 4af06d65..a855ee2b 100644 --- a/docs/html/navtreeindex1.js +++ b/docs/html/navtreeindex1.js @@ -1,26 +1,38 @@ var NAVTREEINDEX1 = { -"classgridfire_1_1_graph_engine.html#acf4cfccea20f5cb31c9886bf233a28be":[4,0,0,11,29], -"classgridfire_1_1_graph_engine.html#ad1cb5fd32efc37668e2d9ecf0c72ad24":[2,0,0,12,42], -"classgridfire_1_1_graph_engine.html#ad1cb5fd32efc37668e2d9ecf0c72ad24":[4,0,0,11,42], -"classgridfire_1_1_graph_engine.html#ad45650d10fc5dff1673ae3f806d067da":[2,0,0,12,15], -"classgridfire_1_1_graph_engine.html#ad45650d10fc5dff1673ae3f806d067da":[4,0,0,11,15], -"classgridfire_1_1_graph_engine.html#ad8237c252145a75092202d00f5e1ddf7":[2,0,0,12,41], -"classgridfire_1_1_graph_engine.html#ad8237c252145a75092202d00f5e1ddf7":[4,0,0,11,41], -"classgridfire_1_1_graph_engine.html#adac8c7d62bae76e17fc060e86dadd929":[2,0,0,12,10], -"classgridfire_1_1_graph_engine.html#adac8c7d62bae76e17fc060e86dadd929":[4,0,0,11,10], -"classgridfire_1_1_graph_engine.html#ae347ff0316e532e0298ec8c913908105":[2,0,0,12,11], -"classgridfire_1_1_graph_engine.html#ae347ff0316e532e0298ec8c913908105":[4,0,0,11,11], -"classgridfire_1_1_graph_engine.html#aed726d36ee2b3796beff6067a1e4db38":[2,0,0,12,12], -"classgridfire_1_1_graph_engine.html#aed726d36ee2b3796beff6067a1e4db38":[4,0,0,11,12], -"classgridfire_1_1_graph_engine.html#aedf42d83bfcc28313b6b6454034d2efa":[2,0,0,12,8], -"classgridfire_1_1_graph_engine.html#aedf42d83bfcc28313b6b6454034d2efa":[4,0,0,11,8], -"classgridfire_1_1_graph_engine.html#aeeafeab40a5f4dbfae78bdc87e25e93f":[2,0,0,12,28], -"classgridfire_1_1_graph_engine.html#aeeafeab40a5f4dbfae78bdc87e25e93f":[4,0,0,11,28], -"classgridfire_1_1_graph_engine.html#af17cf3762abac3efcab9a8e87c961210":[2,0,0,12,39], -"classgridfire_1_1_graph_engine.html#af17cf3762abac3efcab9a8e87c961210":[4,0,0,11,39], -"classgridfire_1_1_graph_engine.html#af41df9ce979b6410e12642cb093916c9":[2,0,0,12,4], -"classgridfire_1_1_graph_engine.html#af41df9ce979b6410e12642cb093916c9":[4,0,0,11,4], +"classgridfire_1_1_graph_engine.html#a95563f6bc86007d9ee053a0f1e15b889":[4,0,0,11,28], +"classgridfire_1_1_graph_engine.html#a9f74786ff930ab72664b31f29d05a30c":[2,0,0,12,2], +"classgridfire_1_1_graph_engine.html#a9f74786ff930ab72664b31f29d05a30c":[4,0,0,11,2], +"classgridfire_1_1_graph_engine.html#aa6202cee0c3c481eda77cc9a91bc126b":[2,0,0,12,23], +"classgridfire_1_1_graph_engine.html#aa6202cee0c3c481eda77cc9a91bc126b":[4,0,0,11,23], +"classgridfire_1_1_graph_engine.html#aaf4d54e4b774ab8ec8eabec006579d31":[2,0,0,12,5], +"classgridfire_1_1_graph_engine.html#aaf4d54e4b774ab8ec8eabec006579d31":[4,0,0,11,5], +"classgridfire_1_1_graph_engine.html#acb7c4f5108b0efeae48ad15598e808c3":[2,0,0,12,44], +"classgridfire_1_1_graph_engine.html#acb7c4f5108b0efeae48ad15598e808c3":[4,0,0,11,44], +"classgridfire_1_1_graph_engine.html#acdce8d87e23a2cd1504bc9472e538c0f":[2,0,0,12,32], +"classgridfire_1_1_graph_engine.html#acdce8d87e23a2cd1504bc9472e538c0f":[4,0,0,11,32], +"classgridfire_1_1_graph_engine.html#acf4cfccea20f5cb31c9886bf233a28be":[2,0,0,12,35], +"classgridfire_1_1_graph_engine.html#acf4cfccea20f5cb31c9886bf233a28be":[4,0,0,11,35], +"classgridfire_1_1_graph_engine.html#ad1cb5fd32efc37668e2d9ecf0c72ad24":[2,0,0,12,49], +"classgridfire_1_1_graph_engine.html#ad1cb5fd32efc37668e2d9ecf0c72ad24":[4,0,0,11,49], +"classgridfire_1_1_graph_engine.html#ad45650d10fc5dff1673ae3f806d067da":[2,0,0,12,18], +"classgridfire_1_1_graph_engine.html#ad45650d10fc5dff1673ae3f806d067da":[4,0,0,11,18], +"classgridfire_1_1_graph_engine.html#ad8237c252145a75092202d00f5e1ddf7":[2,0,0,12,48], +"classgridfire_1_1_graph_engine.html#ad8237c252145a75092202d00f5e1ddf7":[4,0,0,11,48], +"classgridfire_1_1_graph_engine.html#adac8c7d62bae76e17fc060e86dadd929":[2,0,0,12,13], +"classgridfire_1_1_graph_engine.html#adac8c7d62bae76e17fc060e86dadd929":[4,0,0,11,13], +"classgridfire_1_1_graph_engine.html#ae347ff0316e532e0298ec8c913908105":[2,0,0,12,14], +"classgridfire_1_1_graph_engine.html#ae347ff0316e532e0298ec8c913908105":[4,0,0,11,14], +"classgridfire_1_1_graph_engine.html#aed726d36ee2b3796beff6067a1e4db38":[2,0,0,12,15], +"classgridfire_1_1_graph_engine.html#aed726d36ee2b3796beff6067a1e4db38":[4,0,0,11,15], +"classgridfire_1_1_graph_engine.html#aedf42d83bfcc28313b6b6454034d2efa":[2,0,0,12,11], +"classgridfire_1_1_graph_engine.html#aedf42d83bfcc28313b6b6454034d2efa":[4,0,0,11,11], +"classgridfire_1_1_graph_engine.html#aeeafeab40a5f4dbfae78bdc87e25e93f":[2,0,0,12,34], +"classgridfire_1_1_graph_engine.html#aeeafeab40a5f4dbfae78bdc87e25e93f":[4,0,0,11,34], +"classgridfire_1_1_graph_engine.html#af17cf3762abac3efcab9a8e87c961210":[2,0,0,12,46], +"classgridfire_1_1_graph_engine.html#af17cf3762abac3efcab9a8e87c961210":[4,0,0,11,46], +"classgridfire_1_1_graph_engine.html#af41df9ce979b6410e12642cb093916c9":[2,0,0,12,6], +"classgridfire_1_1_graph_engine.html#af41df9ce979b6410e12642cb093916c9":[4,0,0,11,6], "classgridfire_1_1_network.html":[2,0,0,15], "classgridfire_1_1_network.html":[4,0,0,14], "classgridfire_1_1_network.html#a0bb7c7be9a3c3212ef6dcbf26dcacb16":[2,0,0,15,11], @@ -237,17 +249,5 @@ var NAVTREEINDEX1 = "classgridfire_1_1reaction_1_1_templated_reaction_set.html#a54c8cd7c34564277fe28eefc623f666e":[4,0,0,3,3,0], "classgridfire_1_1reaction_1_1_templated_reaction_set.html#a5962968fe478c79250e9d88d80a87600":[2,0,0,3,3,26], "classgridfire_1_1reaction_1_1_templated_reaction_set.html#a5962968fe478c79250e9d88d80a87600":[4,0,0,3,3,26], -"classgridfire_1_1reaction_1_1_templated_reaction_set.html#a5fda3af5ea9ae0ecfb60a61a9e07f5b4":[2,0,0,3,3,23], -"classgridfire_1_1reaction_1_1_templated_reaction_set.html#a5fda3af5ea9ae0ecfb60a61a9e07f5b4":[4,0,0,3,3,23], -"classgridfire_1_1reaction_1_1_templated_reaction_set.html#a638067a3e55ec2a422206055881aaaad":[2,0,0,3,3,19], -"classgridfire_1_1reaction_1_1_templated_reaction_set.html#a638067a3e55ec2a422206055881aaaad":[4,0,0,3,3,19], -"classgridfire_1_1reaction_1_1_templated_reaction_set.html#a6a1dc3c56690386ae9f6aa5c2aa37ba2":[2,0,0,3,3,21], -"classgridfire_1_1reaction_1_1_templated_reaction_set.html#a6a1dc3c56690386ae9f6aa5c2aa37ba2":[4,0,0,3,3,21], -"classgridfire_1_1reaction_1_1_templated_reaction_set.html#a7777ecd0f594fdf66ce57d22610fad3c":[2,0,0,3,3,7], -"classgridfire_1_1reaction_1_1_templated_reaction_set.html#a7777ecd0f594fdf66ce57d22610fad3c":[4,0,0,3,3,7], -"classgridfire_1_1reaction_1_1_templated_reaction_set.html#a87257704009fcd57b553f86cdaacb597":[2,0,0,3,3,3], -"classgridfire_1_1reaction_1_1_templated_reaction_set.html#a87257704009fcd57b553f86cdaacb597":[4,0,0,3,3,3], -"classgridfire_1_1reaction_1_1_templated_reaction_set.html#a89c4c5af12aef7fbfc24316c88237e22":[2,0,0,3,3,20], -"classgridfire_1_1reaction_1_1_templated_reaction_set.html#a89c4c5af12aef7fbfc24316c88237e22":[4,0,0,3,3,20], -"classgridfire_1_1reaction_1_1_templated_reaction_set.html#aac76ec883b4ecebb2a94b2485dae7105":[2,0,0,3,3,15] +"classgridfire_1_1reaction_1_1_templated_reaction_set.html#a5fda3af5ea9ae0ecfb60a61a9e07f5b4":[2,0,0,3,3,23] }; diff --git a/docs/html/navtreeindex2.js b/docs/html/navtreeindex2.js index 3a5e081b..ca111d05 100644 --- a/docs/html/navtreeindex2.js +++ b/docs/html/navtreeindex2.js @@ -1,5 +1,17 @@ var NAVTREEINDEX2 = { +"classgridfire_1_1reaction_1_1_templated_reaction_set.html#a5fda3af5ea9ae0ecfb60a61a9e07f5b4":[4,0,0,3,3,23], +"classgridfire_1_1reaction_1_1_templated_reaction_set.html#a638067a3e55ec2a422206055881aaaad":[2,0,0,3,3,19], +"classgridfire_1_1reaction_1_1_templated_reaction_set.html#a638067a3e55ec2a422206055881aaaad":[4,0,0,3,3,19], +"classgridfire_1_1reaction_1_1_templated_reaction_set.html#a6a1dc3c56690386ae9f6aa5c2aa37ba2":[2,0,0,3,3,21], +"classgridfire_1_1reaction_1_1_templated_reaction_set.html#a6a1dc3c56690386ae9f6aa5c2aa37ba2":[4,0,0,3,3,21], +"classgridfire_1_1reaction_1_1_templated_reaction_set.html#a7777ecd0f594fdf66ce57d22610fad3c":[2,0,0,3,3,7], +"classgridfire_1_1reaction_1_1_templated_reaction_set.html#a7777ecd0f594fdf66ce57d22610fad3c":[4,0,0,3,3,7], +"classgridfire_1_1reaction_1_1_templated_reaction_set.html#a87257704009fcd57b553f86cdaacb597":[2,0,0,3,3,3], +"classgridfire_1_1reaction_1_1_templated_reaction_set.html#a87257704009fcd57b553f86cdaacb597":[4,0,0,3,3,3], +"classgridfire_1_1reaction_1_1_templated_reaction_set.html#a89c4c5af12aef7fbfc24316c88237e22":[2,0,0,3,3,20], +"classgridfire_1_1reaction_1_1_templated_reaction_set.html#a89c4c5af12aef7fbfc24316c88237e22":[4,0,0,3,3,20], +"classgridfire_1_1reaction_1_1_templated_reaction_set.html#aac76ec883b4ecebb2a94b2485dae7105":[2,0,0,3,3,15], "classgridfire_1_1reaction_1_1_templated_reaction_set.html#aac76ec883b4ecebb2a94b2485dae7105":[4,0,0,3,3,15], "classgridfire_1_1reaction_1_1_templated_reaction_set.html#ab8cb5fbce6b819b9e4e44b0c2db54c6f":[2,0,0,3,3,6], "classgridfire_1_1reaction_1_1_templated_reaction_set.html#ab8cb5fbce6b819b9e4e44b0c2db54c6f":[4,0,0,3,3,6], @@ -237,17 +249,5 @@ var NAVTREEINDEX2 = "namespacegridfire_1_1approx8.html#aaa49cb0c9ad4b0b9dd0f9b5e192ca12a":[2,0,0,0,5], "namespacegridfire_1_1approx8.html#aafd24448743672021dd4507316060817":[2,0,0,0,25], "namespacegridfire_1_1approx8.html#ac309c160c806208bf01bebeb29c23896":[2,0,0,0,18], -"namespacegridfire_1_1approx8.html#acdbb3ee2ef22bfd9c836324285d0da98":[2,0,0,0,19], -"namespacegridfire_1_1approx8.html#ad7a6f894fa4bdeebb4cae0eba3b2c210":[2,0,0,0,20], -"namespacegridfire_1_1approx8.html#aed8175751b4920a53922f87f8c0e63c4":[2,0,0,0,24], -"namespacegridfire_1_1approx8.html#af7d9b901dbb3c88c151d927912d5121f":[2,0,0,0,7], -"namespacegridfire_1_1io.html":[2,0,0,1], -"namespacegridfire_1_1reaclib.html":[2,0,0,2], -"namespacegridfire_1_1reaclib.html#a02ff11b88be94392151873e06a30b276":[2,0,0,2,2], -"namespacegridfire_1_1reaclib.html#a5dba5efc372d2a9e9e846dfd6563f3c0":[2,0,0,2,5], -"namespacegridfire_1_1reaclib.html#a6bb94d5adc7bb9db5a67f770f7453e63":[2,0,0,2,3], -"namespacegridfire_1_1reaclib.html#a91c7971c9d0a2971b9a6fa4d841c761d":[2,0,0,2,1], -"namespacegridfire_1_1reaclib.html#af6ff0dfe7ffe34c73ba9acbab5ef8a66":[2,0,0,2,6], -"namespacegridfire_1_1reaclib.html#afc0deac6cbef076e8884e66fd3ab66e0":[2,0,0,2,4], -"namespacegridfire_1_1reaction.html":[2,0,0,3] +"namespacegridfire_1_1approx8.html#acdbb3ee2ef22bfd9c836324285d0da98":[2,0,0,0,19] }; diff --git a/docs/html/navtreeindex3.js b/docs/html/navtreeindex3.js index dd395d83..79656326 100644 --- a/docs/html/navtreeindex3.js +++ b/docs/html/navtreeindex3.js @@ -1,5 +1,17 @@ var NAVTREEINDEX3 = { +"namespacegridfire_1_1approx8.html#ad7a6f894fa4bdeebb4cae0eba3b2c210":[2,0,0,0,20], +"namespacegridfire_1_1approx8.html#aed8175751b4920a53922f87f8c0e63c4":[2,0,0,0,24], +"namespacegridfire_1_1approx8.html#af7d9b901dbb3c88c151d927912d5121f":[2,0,0,0,7], +"namespacegridfire_1_1io.html":[2,0,0,1], +"namespacegridfire_1_1reaclib.html":[2,0,0,2], +"namespacegridfire_1_1reaclib.html#a02ff11b88be94392151873e06a30b276":[2,0,0,2,2], +"namespacegridfire_1_1reaclib.html#a5dba5efc372d2a9e9e846dfd6563f3c0":[2,0,0,2,5], +"namespacegridfire_1_1reaclib.html#a6bb94d5adc7bb9db5a67f770f7453e63":[2,0,0,2,3], +"namespacegridfire_1_1reaclib.html#a91c7971c9d0a2971b9a6fa4d841c761d":[2,0,0,2,1], +"namespacegridfire_1_1reaclib.html#af6ff0dfe7ffe34c73ba9acbab5ef8a66":[2,0,0,2,6], +"namespacegridfire_1_1reaclib.html#afc0deac6cbef076e8884e66fd3ab66e0":[2,0,0,2,4], +"namespacegridfire_1_1reaction.html":[2,0,0,3], "namespacegridfire_1_1reaction.html#aa86f08712565f278adacc7cd2361eb31":[2,0,0,3,4], "namespacegridfire_1_1reaction.html#abfcfafc0cda0c3ed56930a12e7ead67f":[2,0,0,3,6], "namespacegridfire_1_1reaction.html#ad838ce3fb6cc02c3fd90b924a0dd91b1":[2,0,0,3,5], @@ -69,6 +81,28 @@ var NAVTREEINDEX3 = "structgridfire_1_1_adaptive_engine_view_1_1_reaction_flow.html#a3bb21f20df8115d37108cf3c3be3bc6f":[4,0,0,6,0,1], "structgridfire_1_1_adaptive_engine_view_1_1_reaction_flow.html#a6c2e9087f6c8af5d89a5f0de7bd4a5b4":[2,0,0,7,0,0], "structgridfire_1_1_adaptive_engine_view_1_1_reaction_flow.html#a6c2e9087f6c8af5d89a5f0de7bd4a5b4":[4,0,0,6,0,0], +"structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html":[2,0,0,12,1], +"structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html":[4,0,0,11,1], +"structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#a03d596c88289e21e7bd18711e3a1f275":[2,0,0,12,1,1], +"structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#a03d596c88289e21e7bd18711e3a1f275":[4,0,0,11,1,1], +"structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#a3e2e67e532970738d20491ea56b170f3":[2,0,0,12,1,0], +"structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#a3e2e67e532970738d20491ea56b170f3":[4,0,0,11,1,0], +"structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#a510e380116e2e6d9158cf00fedac2666":[2,0,0,12,1,5], +"structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#a510e380116e2e6d9158cf00fedac2666":[4,0,0,11,1,5], +"structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#a7a7e9167b19e339e0d69544b9c00e79c":[2,0,0,12,1,3], +"structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#a7a7e9167b19e339e0d69544b9c00e79c":[4,0,0,11,1,3], +"structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#a93635f6940d3534e949f402503c3d497":[2,0,0,12,1,2], +"structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#a93635f6940d3534e949f402503c3d497":[4,0,0,11,1,2], +"structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#ac42504e868c0b9fd9ac9a405ea739f0e":[2,0,0,12,1,4], +"structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#ac42504e868c0b9fd9ac9a405ea739f0e":[4,0,0,11,1,4], +"structgridfire_1_1_graph_engine_1_1constants.html":[2,0,0,12,0], +"structgridfire_1_1_graph_engine_1_1constants.html":[4,0,0,11,0], +"structgridfire_1_1_graph_engine_1_1constants.html#a3597bc632a5dd50aaa0044d8c18ca423":[2,0,0,12,0,2], +"structgridfire_1_1_graph_engine_1_1constants.html#a3597bc632a5dd50aaa0044d8c18ca423":[4,0,0,11,0,2], +"structgridfire_1_1_graph_engine_1_1constants.html#a5ccc874d6704615e0ce54c14dc67699d":[2,0,0,12,0,1], +"structgridfire_1_1_graph_engine_1_1constants.html#a5ccc874d6704615e0ce54c14dc67699d":[4,0,0,11,0,1], +"structgridfire_1_1_graph_engine_1_1constants.html#a8bea6e348699c1aea93d17bb56739306":[2,0,0,12,0,0], +"structgridfire_1_1_graph_engine_1_1constants.html#a8bea6e348699c1aea93d17bb56739306":[4,0,0,11,0,0], "structgridfire_1_1_net_in.html":[2,0,0,13], "structgridfire_1_1_net_in.html":[4,0,0,12], "structgridfire_1_1_net_in.html#a06f0dff9f8927b7cf2da3004c8fa1577":[2,0,0,13,3], @@ -215,39 +249,5 @@ var NAVTREEINDEX3 = "structgridfire_1_1solver_1_1_direct_network_solver_1_1_r_h_s_functor.html#aed201b52ea757069c17a49e9638b3d3c":[4,0,0,5,0,1,0], "structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html":[2,0,0,5,3,0], "structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html":[4,0,0,5,3,0], -"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a08ce53701b152f3ce108c1c18ce64de2":[2,0,0,5,3,0,8], -"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a08ce53701b152f3ce108c1c18ce64de2":[4,0,0,5,3,0,8], -"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a16dc10cb9c1392920f8d0ba95e0bc86e":[2,0,0,5,3,0,6], -"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a16dc10cb9c1392920f8d0ba95e0bc86e":[4,0,0,5,3,0,6], -"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a2dca32a9e0bea5aea2a565f94b99a8de":[2,0,0,5,3,0,13], -"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a2dca32a9e0bea5aea2a565f94b99a8de":[4,0,0,5,3,0,13], -"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a51687d7a9770164f79e485a763bd94b0":[2,0,0,5,3,0,4], -"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a51687d7a9770164f79e485a763bd94b0":[4,0,0,5,3,0,4], -"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a5ce08aab2f1976c9258dad2b67e1c5b6":[2,0,0,5,3,0,5], -"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a5ce08aab2f1976c9258dad2b67e1c5b6":[4,0,0,5,3,0,5], -"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a6771ae56ddd9058954b42ee92a378309":[2,0,0,5,3,0,12], -"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a6771ae56ddd9058954b42ee92a378309":[4,0,0,5,3,0,12], -"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a93b46ca95ddf9e4d21d02700621e6285":[2,0,0,5,3,0,9], -"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a93b46ca95ddf9e4d21d02700621e6285":[4,0,0,5,3,0,9], -"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a94a1e5994062c32bd45c248860be6fa4":[2,0,0,5,3,0,3], -"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a94a1e5994062c32bd45c248860be6fa4":[4,0,0,5,3,0,3], -"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#aa9730f06a604c3c95ccc33ab6f0f8878":[2,0,0,5,3,0,7], -"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#aa9730f06a604c3c95ccc33ab6f0f8878":[4,0,0,5,3,0,7], -"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#ab0a0d4c166e97b971543cbbf2b0a1a2e":[2,0,0,5,3,0,11], -"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#ab0a0d4c166e97b971543cbbf2b0a1a2e":[4,0,0,5,3,0,11], -"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#abaf28fdd93e881ef56c24f541be7492d":[2,0,0,5,3,0,10], -"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#abaf28fdd93e881ef56c24f541be7492d":[4,0,0,5,3,0,10], -"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#abc86b32db81acf1b24feb3763dc4ddb0":[2,0,0,5,3,0,2], -"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#abc86b32db81acf1b24feb3763dc4ddb0":[4,0,0,5,3,0,2], -"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#ac4ec3c180a9778acdd604a9b80d25399":[2,0,0,5,3,0,0], -"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#ac4ec3c180a9778acdd604a9b80d25399":[4,0,0,5,3,0,0], -"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#ad42fdb6d5ae06eaa6ddccf03eba0a50c":[2,0,0,5,3,0,1], -"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#ad42fdb6d5ae06eaa6ddccf03eba0a50c":[4,0,0,5,3,0,1], -"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_jacobian_functor.html":[2,0,0,5,3,1], -"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_jacobian_functor.html":[4,0,0,5,3,1], -"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_jacobian_functor.html#a0907f7b6c1a87baf5e39fbc17a30df82":[2,0,0,5,3,1,5], -"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_jacobian_functor.html#a0907f7b6c1a87baf5e39fbc17a30df82":[4,0,0,5,3,1,5], -"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_jacobian_functor.html#a1b92391170eb46771bd499aa8d115334":[2,0,0,5,3,1,4], -"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_jacobian_functor.html#a1b92391170eb46771bd499aa8d115334":[4,0,0,5,3,1,4], -"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_jacobian_functor.html#a2071ce797f94ae1a3ea6d934748672ce":[2,0,0,5,3,1,2] +"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a08ce53701b152f3ce108c1c18ce64de2":[2,0,0,5,3,0,8] }; diff --git a/docs/html/navtreeindex4.js b/docs/html/navtreeindex4.js index 0bd9b0d3..19903bf1 100644 --- a/docs/html/navtreeindex4.js +++ b/docs/html/navtreeindex4.js @@ -1,5 +1,39 @@ var NAVTREEINDEX4 = { +"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a08ce53701b152f3ce108c1c18ce64de2":[4,0,0,5,3,0,8], +"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a16dc10cb9c1392920f8d0ba95e0bc86e":[2,0,0,5,3,0,6], +"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a16dc10cb9c1392920f8d0ba95e0bc86e":[4,0,0,5,3,0,6], +"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a2dca32a9e0bea5aea2a565f94b99a8de":[2,0,0,5,3,0,13], +"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a2dca32a9e0bea5aea2a565f94b99a8de":[4,0,0,5,3,0,13], +"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a51687d7a9770164f79e485a763bd94b0":[2,0,0,5,3,0,4], +"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a51687d7a9770164f79e485a763bd94b0":[4,0,0,5,3,0,4], +"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a5ce08aab2f1976c9258dad2b67e1c5b6":[2,0,0,5,3,0,5], +"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a5ce08aab2f1976c9258dad2b67e1c5b6":[4,0,0,5,3,0,5], +"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a6771ae56ddd9058954b42ee92a378309":[2,0,0,5,3,0,12], +"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a6771ae56ddd9058954b42ee92a378309":[4,0,0,5,3,0,12], +"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a93b46ca95ddf9e4d21d02700621e6285":[2,0,0,5,3,0,9], +"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a93b46ca95ddf9e4d21d02700621e6285":[4,0,0,5,3,0,9], +"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a94a1e5994062c32bd45c248860be6fa4":[2,0,0,5,3,0,3], +"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a94a1e5994062c32bd45c248860be6fa4":[4,0,0,5,3,0,3], +"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#aa9730f06a604c3c95ccc33ab6f0f8878":[2,0,0,5,3,0,7], +"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#aa9730f06a604c3c95ccc33ab6f0f8878":[4,0,0,5,3,0,7], +"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#ab0a0d4c166e97b971543cbbf2b0a1a2e":[2,0,0,5,3,0,11], +"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#ab0a0d4c166e97b971543cbbf2b0a1a2e":[4,0,0,5,3,0,11], +"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#abaf28fdd93e881ef56c24f541be7492d":[2,0,0,5,3,0,10], +"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#abaf28fdd93e881ef56c24f541be7492d":[4,0,0,5,3,0,10], +"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#abc86b32db81acf1b24feb3763dc4ddb0":[2,0,0,5,3,0,2], +"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#abc86b32db81acf1b24feb3763dc4ddb0":[4,0,0,5,3,0,2], +"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#ac4ec3c180a9778acdd604a9b80d25399":[2,0,0,5,3,0,0], +"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#ac4ec3c180a9778acdd604a9b80d25399":[4,0,0,5,3,0,0], +"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#ad42fdb6d5ae06eaa6ddccf03eba0a50c":[2,0,0,5,3,0,1], +"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#ad42fdb6d5ae06eaa6ddccf03eba0a50c":[4,0,0,5,3,0,1], +"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_jacobian_functor.html":[2,0,0,5,3,1], +"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_jacobian_functor.html":[4,0,0,5,3,1], +"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_jacobian_functor.html#a0907f7b6c1a87baf5e39fbc17a30df82":[2,0,0,5,3,1,5], +"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_jacobian_functor.html#a0907f7b6c1a87baf5e39fbc17a30df82":[4,0,0,5,3,1,5], +"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_jacobian_functor.html#a1b92391170eb46771bd499aa8d115334":[2,0,0,5,3,1,4], +"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_jacobian_functor.html#a1b92391170eb46771bd499aa8d115334":[4,0,0,5,3,1,4], +"structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_jacobian_functor.html#a2071ce797f94ae1a3ea6d934748672ce":[2,0,0,5,3,1,2], "structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_jacobian_functor.html#a2071ce797f94ae1a3ea6d934748672ce":[4,0,0,5,3,1,2], "structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_jacobian_functor.html#a3668fae1e0f8e69ff3fd87275bf4a79d":[2,0,0,5,3,1,1], "structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_jacobian_functor.html#a3668fae1e0f8e69ff3fd87275bf4a79d":[4,0,0,5,3,1,1], diff --git a/docs/html/network__file_8cpp_source.html b/docs/html/network__file_8cpp_source.html index 0f9f14bd..0ee54136 100644 --- a/docs/html/network__file_8cpp_source.html +++ b/docs/html/network__file_8cpp_source.html @@ -181,13 +181,13 @@ $(function(){initNavTree('network__file_8cpp_source.html',''); initResizable(tru
    76
    77}
    -
    ParsedNetworkData parse(const std::string &filename) const override
    -
    quill::Logger * m_logger
    -
    SimpleReactionListFileParser()
    +
    ParsedNetworkData parse(const std::string &filename) const override
    Parses a simple reaction list file.
    +
    quill::Logger * m_logger
    +
    SimpleReactionListFileParser()
    Constructs a SimpleReactionListFileParser.
    -
    -
    std::vector< std::string > reactionPENames
    +
    Holds the data parsed from a network file.
    +
    std::vector< std::string > reactionPENames
    A vector of reaction names in their PEN-style format.
    diff --git a/docs/html/network__file_8h.html b/docs/html/network__file_8h.html index 00e5c921..29e5f2ea 100644 --- a/docs/html/network__file_8h.html +++ b/docs/html/network__file_8h.html @@ -116,12 +116,16 @@ $(function(){initNavTree('network__file_8h.html',''); initResizable(true); });

    Classes

    struct  gridfire::io::ParsedNetworkData + Holds the data parsed from a network file. More...
      class  gridfire::io::NetworkFileParser + An abstract base class for network file parsers. More...
      class  gridfire::io::SimpleReactionListFileParser + A parser for simple text files containing a list of reactions. More...
      class  gridfire::io::MESANetworkFileParser + A parser for MESA-format network files. More...
      +

    diff --git a/docs/html/network__file_8h_source.html b/docs/html/network__file_8h_source.html index 4c147fac..d2aa106b 100644 --- a/docs/html/network__file_8h_source.html +++ b/docs/html/network__file_8h_source.html @@ -114,71 +114,71 @@ $(function(){initNavTree('network__file_8h_source.html',''); initResizable(true)
    10
    11namespace gridfire::io {
    -
    12
    -
    - -
    14 std::vector<std::string> reactionPENames;
    -
    15 };
    +
    12
    +
    + +
    27 std::vector<std::string> reactionPENames;
    +
    28 };
    -
    16
    -
    - -
    18 public:
    -
    19 virtual ~NetworkFileParser() = default;
    -
    20
    -
    21 [[nodiscard]] virtual ParsedNetworkData parse(const std::string& filename) const = 0;
    -
    22
    -
    23 };
    +
    29
    +
    + +
    39 public:
    +
    43 virtual ~NetworkFileParser() = default;
    +
    44
    +
    71 [[nodiscard]] virtual ParsedNetworkData parse(const std::string& filename) const = 0;
    +
    72
    +
    73 };
    -
    24
    -
    - -
    26 public:
    - -
    28 ParsedNetworkData parse(const std::string& filename) const override;
    -
    29 private:
    -
    30 using Config = fourdst::config::Config;
    -
    31 using LogManager = fourdst::logging::LogManager;
    -
    32 Config& m_config = Config::getInstance();
    -
    33 quill::Logger* m_logger = LogManager::getInstance().getLogger("log");
    -
    34 };
    +
    74
    +
    + +
    85 public:
    + +
    118 ParsedNetworkData parse(const std::string& filename) const override;
    +
    119 private:
    +
    120 using Config = fourdst::config::Config;
    +
    121 using LogManager = fourdst::logging::LogManager;
    +
    122 Config& m_config = Config::getInstance();
    +
    123 quill::Logger* m_logger = LogManager::getInstance().getLogger("log");
    +
    124 };
    -
    35
    -
    - -
    37 public:
    -
    38 explicit MESANetworkFileParser(const std::string& filename);
    -
    39 ParsedNetworkData parse(const std::string& filename) const override;
    -
    40 private:
    -
    41 using Config = fourdst::config::Config;
    -
    42 using LogManager = fourdst::logging::LogManager;
    -
    43 Config& m_config = Config::getInstance();
    -
    44 quill::Logger* m_logger = LogManager::getInstance().getLogger("log");
    -
    45
    -
    46 std::string m_filename;
    -
    47 };
    +
    125
    +
    + +
    136 public:
    +
    145 explicit MESANetworkFileParser(const std::string& filename);
    +
    158 ParsedNetworkData parse(const std::string& filename) const override;
    +
    159 private:
    +
    160 using Config = fourdst::config::Config;
    +
    161 using LogManager = fourdst::logging::LogManager;
    +
    162 Config& m_config = Config::getInstance();
    +
    163 quill::Logger* m_logger = LogManager::getInstance().getLogger("log");
    +
    164
    +
    165 std::string m_filename;
    +
    166 };
    -
    48}
    +
    167}
    -
    ParsedNetworkData parse(const std::string &filename) const override
    -
    fourdst::logging::LogManager LogManager
    - - -
    MESANetworkFileParser(const std::string &filename)
    - -
    fourdst::config::Config Config
    - -
    virtual ParsedNetworkData parse(const std::string &filename) const =0
    -
    virtual ~NetworkFileParser()=default
    - -
    ParsedNetworkData parse(const std::string &filename) const override
    -
    fourdst::logging::LogManager LogManager
    - - - +
    ParsedNetworkData parse(const std::string &filename) const override
    Parses a MESA-format network file.
    +
    fourdst::logging::LogManager LogManager
    + + +
    MESANetworkFileParser(const std::string &filename)
    Constructs a MESANetworkFileParser.
    + +
    fourdst::config::Config Config
    +
    An abstract base class for network file parsers.
    +
    virtual ParsedNetworkData parse(const std::string &filename) const =0
    Parses a network file and returns the parsed data.
    +
    virtual ~NetworkFileParser()=default
    Virtual destructor for the base class.
    + +
    ParsedNetworkData parse(const std::string &filename) const override
    Parses a simple reaction list file.
    +
    fourdst::logging::LogManager LogManager
    + + +
    SimpleReactionListFileParser()
    Constructs a SimpleReactionListFileParser.
    - -
    std::vector< std::string > reactionPENames
    +
    Holds the data parsed from a network file.
    +
    std::vector< std::string > reactionPENames
    A vector of reaction names in their PEN-style format.
    diff --git a/docs/html/screening__abstract_8h.html b/docs/html/screening__abstract_8h.html index 82655e56..830f350f 100644 --- a/docs/html/screening__abstract_8h.html +++ b/docs/html/screening__abstract_8h.html @@ -115,6 +115,7 @@ $(function(){initNavTree('screening__abstract_8h.html',''); initResizable(true);

    Classes

    class  gridfire::screening::ScreeningModel
     An abstract base class for plasma screening models. More...
     
    +

    diff --git a/docs/html/screening__abstract_8h_source.html b/docs/html/screening__abstract_8h_source.html index b6681763..4e7fcce5 100644 --- a/docs/html/screening__abstract_8h_source.html +++ b/docs/html/screening__abstract_8h_source.html @@ -114,36 +114,36 @@ $(function(){initNavTree('screening__abstract_8h_source.html',''); initResizable
    10
    -
    - -
    13 public:
    -
    14 using ADDouble = CppAD::AD<double>;
    -
    15 virtual ~ScreeningModel() = default;
    -
    16
    -
    17 virtual std::vector<double> calculateScreeningFactors(
    -
    18 const reaction::LogicalReactionSet& reactions,
    -
    19 const std::vector<fourdst::atomic::Species>& species,
    -
    20 const std::vector<double>& Y,
    -
    21 const double T9,
    -
    22 const double rho
    -
    23 ) const = 0;
    -
    24
    -
    25 virtual std::vector<ADDouble> calculateScreeningFactors(
    -
    26 const reaction::LogicalReactionSet& reactions,
    -
    27 const std::vector<fourdst::atomic::Species>& species,
    -
    28 const std::vector<ADDouble>& Y,
    -
    29 const ADDouble T9,
    -
    30 const ADDouble rho
    -
    31 ) const = 0;
    -
    32 };
    +
    + +
    28 public:
    +
    30 using ADDouble = CppAD::AD<double>;
    +
    36 virtual ~ScreeningModel() = default;
    +
    37
    +
    73 virtual std::vector<double> calculateScreeningFactors(
    +
    74 const reaction::LogicalReactionSet& reactions,
    +
    75 const std::vector<fourdst::atomic::Species>& species,
    +
    76 const std::vector<double>& Y,
    +
    77 const double T9,
    +
    78 const double rho
    +
    79 ) const = 0;
    +
    80
    +
    100 virtual std::vector<ADDouble> calculateScreeningFactors(
    +
    101 const reaction::LogicalReactionSet& reactions,
    +
    102 const std::vector<fourdst::atomic::Species>& species,
    +
    103 const std::vector<ADDouble>& Y,
    +
    104 const ADDouble T9,
    +
    105 const ADDouble rho
    +
    106 ) const = 0;
    +
    107 };
    -
    33}
    +
    108}
    - - -
    virtual std::vector< ADDouble > calculateScreeningFactors(const reaction::LogicalReactionSet &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< ADDouble > &Y, const ADDouble T9, const ADDouble rho) const =0
    -
    virtual std::vector< double > calculateScreeningFactors(const reaction::LogicalReactionSet &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< double > &Y, const double T9, const double rho) const =0
    - +
    An abstract base class for plasma screening models.
    +
    CppAD::AD< double > ADDouble
    Alias for CppAD Automatic Differentiation type for double precision.
    +
    virtual std::vector< ADDouble > calculateScreeningFactors(const reaction::LogicalReactionSet &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< ADDouble > &Y, const ADDouble T9, const ADDouble rho) const =0
    Calculates screening factors using CppAD types for automatic differentiation.
    +
    virtual std::vector< double > calculateScreeningFactors(const reaction::LogicalReactionSet &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< double > &Y, const double T9, const double rho) const =0
    Calculates screening factors for a set of reactions.
    +
    virtual ~ScreeningModel()=default
    Virtual destructor.
    TemplatedReactionSet< LogicalReaction > LogicalReactionSet
    A set of logical reactions.
    Definition reaction.h:557
    Defines classes for representing and managing nuclear reactions.
    diff --git a/docs/html/screening__bare_8cpp_source.html b/docs/html/screening__bare_8cpp_source.html index 617cfcb6..781afbf6 100644 --- a/docs/html/screening__bare_8cpp_source.html +++ b/docs/html/screening__bare_8cpp_source.html @@ -137,9 +137,9 @@ $(function(){initNavTree('screening__bare_8cpp_source.html',''); initResizable(t
    30 }
    31}
    - -
    std::vector< T > calculateFactors_impl(const reaction::LogicalReactionSet &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< T > &Y, const T T9, const T rho) const
    -
    std::vector< double > calculateScreeningFactors(const reaction::LogicalReactionSet &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< double > &Y, const double T9, const double rho) const override
    +
    CppAD::AD< double > ADDouble
    Alias for CppAD Automatic Differentiation type for double precision.
    +
    std::vector< T > calculateFactors_impl(const reaction::LogicalReactionSet &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< T > &Y, const T T9, const T rho) const
    Template implementation for calculating screening factors.
    +
    std::vector< double > calculateScreeningFactors(const reaction::LogicalReactionSet &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< double > &Y, const double T9, const double rho) const override
    Calculates screening factors, which are always 1.0.
    TemplatedReactionSet< LogicalReaction > LogicalReactionSet
    A set of logical reactions.
    Definition reaction.h:557
    CppAD::AD< double > ADDouble
    diff --git a/docs/html/screening__bare_8h.html b/docs/html/screening__bare_8h.html index c761d881..05fe8335 100644 --- a/docs/html/screening__bare_8h.html +++ b/docs/html/screening__bare_8h.html @@ -114,6 +114,7 @@ $(function(){initNavTree('screening__bare_8h.html',''); initResizable(true); });

    Classes

    class  gridfire::screening::BareScreeningModel
     A screening model that applies no screening effect. More...
     
    +

    diff --git a/docs/html/screening__bare_8h_source.html b/docs/html/screening__bare_8h_source.html index b0d4ecfd..e5dcd995 100644 --- a/docs/html/screening__bare_8h_source.html +++ b/docs/html/screening__bare_8h_source.html @@ -110,56 +110,56 @@ $(function(){initNavTree('screening__bare_8h_source.html',''); initResizable(tru
    6#include "cppad/cppad.hpp"
    7
    8namespace gridfire::screening {
    -
    -
    9 class BareScreeningModel final : public ScreeningModel {
    -
    10 using ADDouble = CppAD::AD<double>;
    -
    11 public:
    -
    12 [[nodiscard]] std::vector<double> calculateScreeningFactors(
    -
    13 const reaction::LogicalReactionSet& reactions,
    -
    14 const std::vector<fourdst::atomic::Species>& species,
    -
    15 const std::vector<double>& Y,
    -
    16 const double T9,
    -
    17 const double rho
    -
    18 ) const override;
    -
    19
    -
    20 [[nodiscard]] std::vector<ADDouble> calculateScreeningFactors(
    -
    21 const reaction::LogicalReactionSet& reactions,
    -
    22 const std::vector<fourdst::atomic::Species>& species,
    -
    23 const std::vector<ADDouble>& Y,
    -
    24 const ADDouble T9,
    -
    25 const ADDouble rho
    -
    26 ) const override;
    -
    27 private:
    -
    28 template <typename T>
    -
    29 [[nodiscard]] std::vector<T> calculateFactors_impl(
    -
    30 const reaction::LogicalReactionSet& reactions,
    -
    31 const std::vector<fourdst::atomic::Species>& species,
    -
    32 const std::vector<T>& Y,
    -
    33 const T T9,
    -
    34 const T rho
    -
    35 ) const;
    -
    36 };
    +
    +
    21 class BareScreeningModel final : public ScreeningModel {
    +
    23 using ADDouble = CppAD::AD<double>;
    +
    24 public:
    +
    54 [[nodiscard]] std::vector<double> calculateScreeningFactors(
    +
    55 const reaction::LogicalReactionSet& reactions,
    +
    56 const std::vector<fourdst::atomic::Species>& species,
    +
    57 const std::vector<double>& Y,
    +
    58 const double T9,
    +
    59 const double rho
    +
    60 ) const override;
    +
    61
    +
    77 [[nodiscard]] std::vector<ADDouble> calculateScreeningFactors(
    +
    78 const reaction::LogicalReactionSet& reactions,
    +
    79 const std::vector<fourdst::atomic::Species>& species,
    +
    80 const std::vector<ADDouble>& Y,
    +
    81 const ADDouble T9,
    +
    82 const ADDouble rho
    +
    83 ) const override;
    +
    84 private:
    +
    100 template <typename T>
    +
    101 [[nodiscard]] std::vector<T> calculateFactors_impl(
    +
    102 const reaction::LogicalReactionSet& reactions,
    +
    103 const std::vector<fourdst::atomic::Species>& species,
    +
    104 const std::vector<T>& Y,
    +
    105 const T T9,
    +
    106 const T rho
    +
    107 ) const;
    +
    108 };
    -
    37
    -
    38 template<typename T>
    -
    - -
    40 const reaction::LogicalReactionSet &reactions,
    -
    41 const std::vector<fourdst::atomic::Species> &species,
    -
    42 const std::vector<T> &Y,
    -
    43 const T T9,
    -
    44 const T rho
    -
    45 ) const {
    -
    46 return std::vector<T>(reactions.size(), T(1.0)); // Bare screening returns 1.0 for all reactions
    -
    47 }
    +
    109
    +
    125 template<typename T>
    +
    + +
    127 const reaction::LogicalReactionSet &reactions,
    +
    128 const std::vector<fourdst::atomic::Species> &species,
    +
    129 const std::vector<T> &Y,
    +
    130 const T T9,
    +
    131 const T rho
    +
    132 ) const {
    +
    133 return std::vector<T>(reactions.size(), T(1.0)); // Bare screening returns 1.0 for all reactions
    +
    134 }
    -
    48}
    +
    135}
    size_t size() const
    Gets the number of reactions in the set.
    Definition reaction.h:453
    - - -
    std::vector< T > calculateFactors_impl(const reaction::LogicalReactionSet &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< T > &Y, const T T9, const T rho) const
    -
    std::vector< double > calculateScreeningFactors(const reaction::LogicalReactionSet &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< double > &Y, const double T9, const double rho) const override
    - +
    A screening model that applies no screening effect.
    +
    CppAD::AD< double > ADDouble
    Alias for CppAD Automatic Differentiation type for double precision.
    +
    std::vector< T > calculateFactors_impl(const reaction::LogicalReactionSet &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< T > &Y, const T T9, const T rho) const
    Template implementation for calculating screening factors.
    +
    std::vector< double > calculateScreeningFactors(const reaction::LogicalReactionSet &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< double > &Y, const double T9, const double rho) const override
    Calculates screening factors, which are always 1.0.
    +
    An abstract base class for plasma screening models.
    TemplatedReactionSet< LogicalReaction > LogicalReactionSet
    A set of logical reactions.
    Definition reaction.h:557
    Defines classes for representing and managing nuclear reactions.
    diff --git a/docs/html/screening__types_8cpp.html b/docs/html/screening__types_8cpp.html index dfd3ed88..0b2ae336 100644 --- a/docs/html/screening__types_8cpp.html +++ b/docs/html/screening__types_8cpp.html @@ -123,6 +123,7 @@ Namespaces

    Functions

    std::unique_ptr< ScreeningModelgridfire::screening::selectScreeningModel (ScreeningType type)
     A factory function to select and create a screening model.
     
    diff --git a/docs/html/screening__types_8cpp_source.html b/docs/html/screening__types_8cpp_source.html index 2d43c7db..c3be8eae 100644 --- a/docs/html/screening__types_8cpp_source.html +++ b/docs/html/screening__types_8cpp_source.html @@ -124,10 +124,10 @@ $(function(){initNavTree('screening__types_8cpp_source.html',''); initResizable(
    19}
    -
    std::unique_ptr< ScreeningModel > selectScreeningModel(ScreeningType type)
    -
    ScreeningType
    -
    @ WEAK
    Weak screening model.
    -
    @ BARE
    No screening applied.
    +
    std::unique_ptr< ScreeningModel > selectScreeningModel(ScreeningType type)
    A factory function to select and create a screening model.
    +
    ScreeningType
    Enumerates the available plasma screening models.
    +
    @ WEAK
    Weak screening model (Salpeter, 1954).
    +
    @ BARE
    No screening applied. The screening factor is always 1.0.
    diff --git a/docs/html/screening__types_8h.html b/docs/html/screening__types_8h.html index f10c9153..6bab4996 100644 --- a/docs/html/screening__types_8h.html +++ b/docs/html/screening__types_8h.html @@ -123,11 +123,13 @@ Enumerations enum class  gridfire::screening::ScreeningType { gridfire::screening::BARE , gridfire::screening::WEAK } + Enumerates the available plasma screening models. More...
      +

    Functions

    std::unique_ptr< ScreeningModelgridfire::screening::selectScreeningModel (ScreeningType type)
     A factory function to select and create a screening model.
     
    diff --git a/docs/html/screening__types_8h_source.html b/docs/html/screening__types_8h_source.html index 80d74a93..512f994b 100644 --- a/docs/html/screening__types_8h_source.html +++ b/docs/html/screening__types_8h_source.html @@ -109,20 +109,20 @@ $(function(){initNavTree('screening__types_8h_source.html',''); initResizable(tr
    5#include <memory>
    6
    7namespace gridfire::screening {
    -
    -
    8 enum class ScreeningType {
    - - -
    11 };
    +
    +
    15 enum class ScreeningType {
    + + +
    36 };
    -
    12
    -
    13 std::unique_ptr<ScreeningModel> selectScreeningModel(ScreeningType type);
    -
    14}
    +
    37
    +
    69 std::unique_ptr<ScreeningModel> selectScreeningModel(ScreeningType type);
    +
    70}
    -
    std::unique_ptr< ScreeningModel > selectScreeningModel(ScreeningType type)
    - - - +
    std::unique_ptr< ScreeningModel > selectScreeningModel(ScreeningType type)
    A factory function to select and create a screening model.
    +
    ScreeningType
    Enumerates the available plasma screening models.
    +
    @ WEAK
    Weak screening model (Salpeter, 1954).
    +
    @ BARE
    No screening applied. The screening factor is always 1.0.
    diff --git a/docs/html/screening__weak_8cpp_source.html b/docs/html/screening__weak_8cpp_source.html index 06488395..b966df54 100644 --- a/docs/html/screening__weak_8cpp_source.html +++ b/docs/html/screening__weak_8cpp_source.html @@ -137,9 +137,9 @@ $(function(){initNavTree('screening__weak_8cpp_source.html',''); initResizable(t
    30 }
    31}
    -
    CppAD::AD< double > ADDouble
    -
    std::vector< T > calculateFactors_impl(const reaction::LogicalReactionSet &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< T > &Y, const T T9, const T rho) const
    -
    std::vector< double > calculateScreeningFactors(const reaction::LogicalReactionSet &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< double > &Y, const double T9, const double rho) const override
    +
    CppAD::AD< double > ADDouble
    Alias for CppAD Automatic Differentiation type for double precision.
    +
    std::vector< T > calculateFactors_impl(const reaction::LogicalReactionSet &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< T > &Y, const T T9, const T rho) const
    Template implementation for calculating weak screening factors.
    +
    std::vector< double > calculateScreeningFactors(const reaction::LogicalReactionSet &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< double > &Y, const double T9, const double rho) const override
    Calculates weak screening factors for a set of reactions.
    TemplatedReactionSet< LogicalReaction > LogicalReactionSet
    A set of logical reactions.
    Definition reaction.h:557
    CppAD::AD< double > ADDouble
    diff --git a/docs/html/screening__weak_8h.html b/docs/html/screening__weak_8h.html index 3edced81..a1e29ca9 100644 --- a/docs/html/screening__weak_8h.html +++ b/docs/html/screening__weak_8h.html @@ -117,6 +117,7 @@ $(function(){initNavTree('screening__weak_8h.html',''); initResizable(true); });

    Classes

    class  gridfire::screening::WeakScreeningModel + Implements the weak screening model based on the Debye-Hückel approximation. More...
     

    Detailed Description

    A struct to hold a reaction and its flow rate.

    -

    Definition at line 251 of file engine_adaptive.h.

    +

    Definition at line 287 of file engine_adaptive.h.

    Member Data Documentation

    ◆ flowRate

    @@ -133,7 +133,7 @@ Public Attributes

    diff --git a/docs/html/screening__weak_8h_source.html b/docs/html/screening__weak_8h_source.html index 09102027..3b973de8 100644 --- a/docs/html/screening__weak_8h_source.html +++ b/docs/html/screening__weak_8h_source.html @@ -114,121 +114,121 @@ $(function(){initNavTree('screening__weak_8h_source.html',''); initResizable(tru
    10#include "cppad/cppad.hpp"
    11
    12namespace gridfire::screening {
    -
    -
    13 class WeakScreeningModel final : public ScreeningModel {
    -
    14 public:
    -
    15 [[nodiscard]] std::vector<double> calculateScreeningFactors(
    -
    16 const reaction::LogicalReactionSet& reactions,
    -
    17 const std::vector<fourdst::atomic::Species>& species,
    -
    18 const std::vector<double>& Y,
    -
    19 const double T9,
    -
    20 const double rho
    -
    21 ) const override;
    -
    22
    -
    23 [[nodiscard]] std::vector<CppAD::AD<double>> calculateScreeningFactors(
    -
    24 const reaction::LogicalReactionSet& reactions,
    -
    25 const std::vector<fourdst::atomic::Species>& species,
    -
    26 const std::vector<CppAD::AD<double>>& Y,
    -
    27 const CppAD::AD<double> T9,
    -
    28 const CppAD::AD<double> rho
    -
    29 ) const override;
    -
    30 private:
    -
    31 quill::Logger* m_logger = fourdst::logging::LogManager::getInstance().getLogger("log");
    -
    32
    -
    33 private:
    -
    34 template <typename T>
    -
    35 [[nodiscard]] std::vector<T> calculateFactors_impl(
    -
    36 const reaction::LogicalReactionSet& reactions,
    -
    37 const std::vector<fourdst::atomic::Species>& species,
    -
    38 const std::vector<T>& Y,
    -
    39 const T T9,
    -
    40 const T rho
    -
    41 ) const;
    -
    42 };
    +
    +
    26 class WeakScreeningModel final : public ScreeningModel {
    +
    27 public:
    +
    50 [[nodiscard]] std::vector<double> calculateScreeningFactors(
    +
    51 const reaction::LogicalReactionSet& reactions,
    +
    52 const std::vector<fourdst::atomic::Species>& species,
    +
    53 const std::vector<double>& Y,
    +
    54 const double T9,
    +
    55 const double rho
    +
    56 ) const override;
    +
    57
    +
    72 [[nodiscard]] std::vector<CppAD::AD<double>> calculateScreeningFactors(
    +
    73 const reaction::LogicalReactionSet& reactions,
    +
    74 const std::vector<fourdst::atomic::Species>& species,
    +
    75 const std::vector<CppAD::AD<double>>& Y,
    +
    76 const CppAD::AD<double> T9,
    +
    77 const CppAD::AD<double> rho
    +
    78 ) const override;
    +
    79 private:
    +
    81 quill::Logger* m_logger = fourdst::logging::LogManager::getInstance().getLogger("log");
    +
    82
    +
    83 private:
    +
    99 template <typename T>
    +
    100 [[nodiscard]] std::vector<T> calculateFactors_impl(
    +
    101 const reaction::LogicalReactionSet& reactions,
    +
    102 const std::vector<fourdst::atomic::Species>& species,
    +
    103 const std::vector<T>& Y,
    +
    104 const T T9,
    +
    105 const T rho
    +
    106 ) const;
    +
    107 };
    -
    43
    -
    44 template <typename T>
    -
    - -
    46 const reaction::LogicalReactionSet& reactions,
    -
    47 const std::vector<fourdst::atomic::Species>& species,
    -
    48 const std::vector<T>& Y,
    -
    49 const T T9,
    -
    50 const T rho
    -
    51 ) const {
    -
    52 LOG_TRACE_L1(
    - -
    54 "Calculating weak screening factors for {} reactions...",
    -
    55 reactions.size()
    -
    56 );
    -
    57 // --- CppAD Safe low temp checking ---
    -
    58 const T zero(0.0);
    -
    59 const T one(1.0);
    -
    60 const T low_temp_threshold(1e-9);
    -
    61
    -
    62 const T low_T_flag = CppAD::CondExpLt(T9, low_temp_threshold, zero, one);
    -
    63
    -
    64 // --- Calculate composition-dependent terms ---
    -
    65 // ζ = ∑(Z_i^2 + Z_i) * X_i / A_i
    -
    66 // This simplifies somewhat to ζ = ∑ (Z_i^2 + Z_i) * Y_i
    -
    67 // Where Y_i is the molar abundance (mol/g)
    -
    68 T zeta(0.0);
    -
    69 for (size_t i = 0; i < species.size(); ++i) {
    -
    70 const T Z = species[i].m_z;
    -
    71 zeta += (Z * Z + Z) * Y[i];
    -
    72 }
    -
    73
    -
    74 // --- Constant prefactors ---
    -
    75 const T T7 = T9 * static_cast<T>(100.00);
    -
    76 const T T7_safe = CppAD::CondExpLe(T7, low_temp_threshold, low_temp_threshold, T7);
    -
    77 const T prefactor = static_cast<T>(0.188) * CppAD::sqrt(rho / (T7_safe * T7_safe * T7_safe)) * CppAD::sqrt(zeta);
    -
    78
    -
    79 // --- Loop through reactions and calculate screening factors for each ---
    -
    80 std::vector<T> factors;
    -
    81 factors.reserve(reactions.size());
    -
    82 for (const auto& reaction : reactions) {
    -
    83 T H_12(0.0); // screening abundance term
    -
    84 const auto& reactants = reaction.reactants();
    -
    85 const bool isTripleAlpha = (
    -
    86 reactants.size() == 3 &&
    -
    87 reactants[0].m_z == 2 &&
    -
    88 reactants[1].m_z == 2 &&
    -
    89 reactants[2].m_z == 2 &&
    -
    90 reactants[0] == reactants[1] &&
    -
    91 reactants[1] == reactants[2]
    -
    92 );
    -
    93 if (reactants.size() == 2) {
    -
    94 LOG_TRACE_L3(m_logger, "Calculating screening factor for reaction: {}", reaction.peName());
    -
    95 const T Z1 = static_cast<T>(reactants[0].m_z);
    -
    96 const T Z2 = static_cast<T>(reactants[1].m_z);
    -
    97 H_12 = prefactor * Z1 * Z2;
    -
    98 }
    -
    99 else if (isTripleAlpha) {
    -
    100 LOG_TRACE_L3(m_logger, "Special case for triple alpha process in reaction: {}", reaction.peName());
    -
    101 // Special case for triple alpha process
    -
    102 const T Z_alpha = static_cast<T>(2.0);
    -
    103 const T H_alpha_alpha = prefactor * Z_alpha * Z_alpha;
    -
    104 H_12 = static_cast<T>(3.0) * H_alpha_alpha; // Triple alpha process
    -
    105 }
    -
    106 // For 1 body reactions H_12 remains 0 so e^H_12 will be 1.0 (screening does not apply)
    -
    107 // Aside from triple alpha, all other astrophysically relevant reactions are 2-body in the weak screening regime
    -
    108
    -
    109 H_12 *= low_T_flag; // Apply low temperature flag to screening factor
    -
    110 H_12 = CppAD::CondExpGe(H_12, static_cast<T>(2.0), static_cast<T>(2.0), H_12); // Caps the screening factor at 10 to avoid numerical issues
    -
    111 factors.push_back(CppAD::exp(H_12));
    -
    112 // std::cout << "Screening factor: " << reaction.peName() << " : " << factors.back() << "(" << H_12 << ")" << std::endl;
    -
    113 }
    -
    114 return factors;
    -
    115 }
    +
    108
    +
    140 template <typename T>
    +
    + +
    142 const reaction::LogicalReactionSet& reactions,
    +
    143 const std::vector<fourdst::atomic::Species>& species,
    +
    144 const std::vector<T>& Y,
    +
    145 const T T9,
    +
    146 const T rho
    +
    147 ) const {
    +
    148 LOG_TRACE_L1(
    +
    149 m_logger,
    +
    150 "Calculating weak screening factors for {} reactions...",
    +
    151 reactions.size()
    +
    152 );
    +
    153 // --- CppAD Safe low temp checking ---
    +
    154 const T zero(0.0);
    +
    155 const T one(1.0);
    +
    156 const T low_temp_threshold(1e-9);
    +
    157
    +
    158 const T low_T_flag = CppAD::CondExpLt(T9, low_temp_threshold, zero, one);
    +
    159
    +
    160 // --- Calculate composition-dependent terms ---
    +
    161 // ζ = ∑(Z_i^2 + Z_i) * X_i / A_i
    +
    162 // This simplifies somewhat to ζ = ∑ (Z_i^2 + Z_i) * Y_i
    +
    163 // Where Y_i is the molar abundance (mol/g)
    +
    164 T zeta(0.0);
    +
    165 for (size_t i = 0; i < species.size(); ++i) {
    +
    166 const T Z = species[i].m_z;
    +
    167 zeta += (Z * Z + Z) * Y[i];
    +
    168 }
    +
    169
    +
    170 // --- Constant prefactors ---
    +
    171 const T T7 = T9 * static_cast<T>(100.00);
    +
    172 const T T7_safe = CppAD::CondExpLe(T7, low_temp_threshold, low_temp_threshold, T7);
    +
    173 const T prefactor = static_cast<T>(0.188) * CppAD::sqrt(rho / (T7_safe * T7_safe * T7_safe)) * CppAD::sqrt(zeta);
    +
    174
    +
    175 // --- Loop through reactions and calculate screening factors for each ---
    +
    176 std::vector<T> factors;
    +
    177 factors.reserve(reactions.size());
    +
    178 for (const auto& reaction : reactions) {
    +
    179 T H_12(0.0); // screening abundance term
    +
    180 const auto& reactants = reaction.reactants();
    +
    181 const bool isTripleAlpha = (
    +
    182 reactants.size() == 3 &&
    +
    183 reactants[0].m_z == 2 &&
    +
    184 reactants[1].m_z == 2 &&
    +
    185 reactants[2].m_z == 2 &&
    +
    186 reactants[0] == reactants[1] &&
    +
    187 reactants[1] == reactants[2]
    +
    188 );
    +
    189 if (reactants.size() == 2) {
    +
    190 LOG_TRACE_L3(m_logger, "Calculating screening factor for reaction: {}", reaction.peName());
    +
    191 const T Z1 = static_cast<T>(reactants[0].m_z);
    +
    192 const T Z2 = static_cast<T>(reactants[1].m_z);
    +
    193 H_12 = prefactor * Z1 * Z2;
    +
    194 }
    +
    195 else if (isTripleAlpha) {
    +
    196 LOG_TRACE_L3(m_logger, "Special case for triple alpha process in reaction: {}", reaction.peName());
    +
    197 // Special case for triple alpha process
    +
    198 const T Z_alpha = static_cast<T>(2.0);
    +
    199 const T H_alpha_alpha = prefactor * Z_alpha * Z_alpha;
    +
    200 H_12 = static_cast<T>(3.0) * H_alpha_alpha; // Triple alpha process
    +
    201 }
    +
    202 // For 1 body reactions H_12 remains 0 so e^H_12 will be 1.0 (screening does not apply)
    +
    203 // Aside from triple alpha, all other astrophysically relevant reactions are 2-body in the weak screening regime
    +
    204
    +
    205 H_12 *= low_T_flag; // Apply low temperature flag to screening factor
    +
    206 H_12 = CppAD::CondExpGe(H_12, static_cast<T>(2.0), static_cast<T>(2.0), H_12); // Caps the screening factor at 10 to avoid numerical issues
    +
    207 factors.push_back(CppAD::exp(H_12));
    +
    208 // std::cout << "Screening factor: " << reaction.peName() << " : " << factors.back() << "(" << H_12 << ")" << std::endl;
    +
    209 }
    +
    210 return factors;
    +
    211 }
    -
    116
    -
    117}
    +
    212
    +
    213}
    size_t size() const
    Gets the number of reactions in the set.
    Definition reaction.h:453
    - - - -
    std::vector< T > calculateFactors_impl(const reaction::LogicalReactionSet &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< T > &Y, const T T9, const T rho) const
    -
    std::vector< double > calculateScreeningFactors(const reaction::LogicalReactionSet &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< double > &Y, const double T9, const double rho) const override
    +
    An abstract base class for plasma screening models.
    +
    Implements the weak screening model based on the Debye-Hückel approximation.
    +
    quill::Logger * m_logger
    Logger instance for recording trace and debug information.
    +
    std::vector< T > calculateFactors_impl(const reaction::LogicalReactionSet &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< T > &Y, const T T9, const T rho) const
    Template implementation for calculating weak screening factors.
    +
    std::vector< double > calculateScreeningFactors(const reaction::LogicalReactionSet &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< double > &Y, const double T9, const double rho) const override
    Calculates weak screening factors for a set of reactions.
    TemplatedReactionSet< LogicalReaction > LogicalReactionSet
    A set of logical reactions.
    Definition reaction.h:557
    diff --git a/docs/html/search/all_0.js b/docs/html/search/all_0.js index 980b4d9f..f7f53b09 100644 --- a/docs/html/search/all_0.js +++ b/docs/html/search/all_0.js @@ -12,9 +12,10 @@ var searchData= ['adaptivenetworksolverstrategy_9',['AdaptiveNetworkSolverStrategy',['../namespacegridfire_1_1solver.html#af3b10822ab58b55365577755c1f4faf6',1,'gridfire::solver']]], ['add_5freaction_10',['add_reaction',['../classgridfire_1_1reaction_1_1_logical_reaction.html#a14a24cb8ea25a1514134acc51197f1de',1,'gridfire::reaction::LogicalReaction::add_reaction()'],['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#a339dbbf883b6ae20e33d9782d8376bcf',1,'gridfire::reaction::TemplatedReactionSet::add_reaction()']]], ['addouble_11',['ADDouble',['../classgridfire_1_1screening_1_1_screening_model.html#a107ff2897f040d6f27f69d56a0bdd28d',1,'gridfire::screening::ScreeningModel::ADDouble'],['../classgridfire_1_1screening_1_1_bare_screening_model.html#a51119d705267e0b415aae8b4881d8c96',1,'gridfire::screening::BareScreeningModel::ADDouble'],['../namespacegridfire.html#a1121d0b2d005195333412559fa29d3cc',1,'gridfire::ADDouble'],['../namespacegridfire_1_1screening.html#ae7dd1a7ccb7bf3c05084094ab008d8a3',1,'gridfire::screening::ADDouble']]], - ['aion_12',['aIon',['../structgridfire_1_1approx8_1_1_approx8_net.html#a296e54c1b22f0c5d4d07a13577c6e069',1,'gridfire::approx8::Approx8Net']]], - ['all_5fspecies_13',['all_species',['../classgridfire_1_1reaction_1_1_reaction.html#a7dc8fda87e0581fde6da0a81cf4d7224',1,'gridfire::reaction::Reaction']]], - ['approx8_14',['APPROX8',['../namespacegridfire.html#a3f3d6b3f9742b70e62049ccefbb60f37a1fc7adf719c40457abfdb8334675faea',1,'gridfire']]], - ['approx8net_15',['Approx8Net',['../structgridfire_1_1approx8_1_1_approx8_net.html',1,'gridfire::approx8']]], - ['approx8network_16',['Approx8Network',['../classgridfire_1_1approx8_1_1_approx8_network.html',1,'gridfire::approx8::Approx8Network'],['../classgridfire_1_1approx8_1_1_approx8_network.html#a65066078081c544be4e56e25eb407c8b',1,'gridfire::approx8::Approx8Network::Approx8Network()']]] + ['affected_5fspecies_5findices_12',['affected_species_indices',['../structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#a3e2e67e532970738d20491ea56b170f3',1,'gridfire::GraphEngine::PrecomputedReaction']]], + ['aion_13',['aIon',['../structgridfire_1_1approx8_1_1_approx8_net.html#a296e54c1b22f0c5d4d07a13577c6e069',1,'gridfire::approx8::Approx8Net']]], + ['all_5fspecies_14',['all_species',['../classgridfire_1_1reaction_1_1_reaction.html#a7dc8fda87e0581fde6da0a81cf4d7224',1,'gridfire::reaction::Reaction']]], + ['approx8_15',['APPROX8',['../namespacegridfire.html#a3f3d6b3f9742b70e62049ccefbb60f37a1fc7adf719c40457abfdb8334675faea',1,'gridfire']]], + ['approx8net_16',['Approx8Net',['../structgridfire_1_1approx8_1_1_approx8_net.html',1,'gridfire::approx8']]], + ['approx8network_17',['Approx8Network',['../classgridfire_1_1approx8_1_1_approx8_network.html',1,'gridfire::approx8::Approx8Network'],['../classgridfire_1_1approx8_1_1_approx8_network.html#a65066078081c544be4e56e25eb407c8b',1,'gridfire::approx8::Approx8Network::Approx8Network()']]] ]; diff --git a/docs/html/search/all_10.js b/docs/html/search/all_10.js index 85d905a7..69ba5178 100644 --- a/docs/html/search/all_10.js +++ b/docs/html/search/all_10.js @@ -8,24 +8,26 @@ var searchData= ['reaclib_5',['REACLIB',['../namespacegridfire.html#a3f3d6b3f9742b70e62049ccefbb60f37a9b8db7b445ae4f1bd114caa42a583182',1,'gridfire']]], ['reaclib_2ecpp_6',['reaclib.cpp',['../reaclib_8cpp.html',1,'']]], ['reaclib_2eh_7',['reaclib.h',['../reaclib_8h.html',1,'']]], - ['reactant_5fspecies_8',['reactant_species',['../classgridfire_1_1reaction_1_1_reaction.html#a855ea65e4b62fb0cddc550424a4bc923',1,'gridfire::reaction::Reaction']]], - ['reactants_9',['reactants',['../classgridfire_1_1reaction_1_1_reaction.html#a0b543e9b0bb4a21efe4b29780d9bdf5b',1,'gridfire::reaction::Reaction']]], - ['reactants_5fstr_10',['reactants_str',['../structgridfire_1_1reaclib_1_1_reaction_record.html#a67afc513db8dbcc43d79733e22ca8d39',1,'gridfire::reaclib::ReactionRecord']]], - ['reaction_11',['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()']]], - ['reaction_20network_20library_12',['GridFire: A Nuclear Reaction Network Library',['../index.html#autotoc_md0',1,'']]], - ['reaction_2ecpp_13',['reaction.cpp',['../reaction_8cpp.html',1,'']]], - ['reaction_2eh_14',['reaction.h',['../reaction_8h.html',1,'']]], - ['reactionflow_15',['ReactionFlow',['../structgridfire_1_1_adaptive_engine_view_1_1_reaction_flow.html',1,'gridfire::AdaptiveEngineView']]], - ['reactionpenames_16',['reactionPENames',['../structgridfire_1_1io_1_1_parsed_network_data.html#a5145c672877638e6113abf1f719b246d',1,'gridfire::io::ParsedNetworkData']]], - ['reactionptr_17',['reactionPtr',['../structgridfire_1_1_adaptive_engine_view_1_1_reaction_flow.html#a3bb21f20df8115d37108cf3c3be3bc6f',1,'gridfire::AdaptiveEngineView::ReactionFlow']]], - ['reactionrecord_18',['ReactionRecord',['../structgridfire_1_1reaclib_1_1_reaction_record.html',1,'gridfire::reaclib']]], - ['reactions_19',['Reactions',['../index.html#autotoc_md5',1,'']]], - ['reactions_5fdata_2eh_20',['reactions_data.h',['../reactions__data_8h.html',1,'']]], - ['reactionset_21',['ReactionSet',['../namespacegridfire_1_1reaction.html#ad838ce3fb6cc02c3fd90b924a0dd91b1',1,'gridfire::reaction']]], - ['recordadtape_22',['recordADTape',['../classgridfire_1_1_graph_engine.html#a95563f6bc86007d9ee053a0f1e15b889',1,'gridfire::GraphEngine']]], - ['remove_5freaction_23',['remove_reaction',['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#a89c4c5af12aef7fbfc24316c88237e22',1,'gridfire::reaction::TemplatedReactionSet']]], - ['reservejacobianmatrix_24',['reserveJacobianMatrix',['../classgridfire_1_1_graph_engine.html#a5a5458ed01923124f2d7e1f04f32f138',1,'gridfire::GraphEngine']]], - ['reverse_25',['reverse',['../structgridfire_1_1reaclib_1_1_reaction_record.html#aa1fd4f510d7c00d2e4197e9b9caf29fd',1,'gridfire::reaclib::ReactionRecord']]], - ['rhsfunctor_26',['RHSFunctor',['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_r_h_s_functor.html',1,'gridfire::solver::DirectNetworkSolver::RHSFunctor'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_r_h_s_functor.html',1,'gridfire::solver::QSENetworkSolver::RHSFunctor'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_r_h_s_functor.html#a5353d8e6f27b6c435084a167bc009e46',1,'gridfire::solver::QSENetworkSolver::RHSFunctor::RHSFunctor()'],['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_r_h_s_functor.html#aed201b52ea757069c17a49e9638b3d3c',1,'gridfire::solver::DirectNetworkSolver::RHSFunctor::RHSFunctor()']]], - ['rpname_27',['rpName',['../structgridfire_1_1reaclib_1_1_reaction_record.html#a523b7cfb0a6d8ddccd785aef2f425ad1',1,'gridfire::reaclib::ReactionRecord']]] + ['reactant_5fpowers_8',['reactant_powers',['../structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#a03d596c88289e21e7bd18711e3a1f275',1,'gridfire::GraphEngine::PrecomputedReaction']]], + ['reactant_5fspecies_9',['reactant_species',['../classgridfire_1_1reaction_1_1_reaction.html#a855ea65e4b62fb0cddc550424a4bc923',1,'gridfire::reaction::Reaction']]], + ['reactants_10',['reactants',['../classgridfire_1_1reaction_1_1_reaction.html#a0b543e9b0bb4a21efe4b29780d9bdf5b',1,'gridfire::reaction::Reaction']]], + ['reactants_5fstr_11',['reactants_str',['../structgridfire_1_1reaclib_1_1_reaction_record.html#a67afc513db8dbcc43d79733e22ca8d39',1,'gridfire::reaclib::ReactionRecord']]], + ['reaction_12',['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()']]], + ['reaction_20network_20library_13',['GridFire: A Nuclear Reaction Network Library',['../index.html#autotoc_md0',1,'']]], + ['reaction_2ecpp_14',['reaction.cpp',['../reaction_8cpp.html',1,'']]], + ['reaction_2eh_15',['reaction.h',['../reaction_8h.html',1,'']]], + ['reaction_5findex_16',['reaction_index',['../structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#a93635f6940d3534e949f402503c3d497',1,'gridfire::GraphEngine::PrecomputedReaction']]], + ['reactionflow_17',['ReactionFlow',['../structgridfire_1_1_adaptive_engine_view_1_1_reaction_flow.html',1,'gridfire::AdaptiveEngineView']]], + ['reactionpenames_18',['reactionPENames',['../structgridfire_1_1io_1_1_parsed_network_data.html#a5145c672877638e6113abf1f719b246d',1,'gridfire::io::ParsedNetworkData']]], + ['reactionptr_19',['reactionPtr',['../structgridfire_1_1_adaptive_engine_view_1_1_reaction_flow.html#a3bb21f20df8115d37108cf3c3be3bc6f',1,'gridfire::AdaptiveEngineView::ReactionFlow']]], + ['reactionrecord_20',['ReactionRecord',['../structgridfire_1_1reaclib_1_1_reaction_record.html',1,'gridfire::reaclib']]], + ['reactions_21',['Reactions',['../index.html#autotoc_md5',1,'']]], + ['reactions_5fdata_2eh_22',['reactions_data.h',['../reactions__data_8h.html',1,'']]], + ['reactionset_23',['ReactionSet',['../namespacegridfire_1_1reaction.html#ad838ce3fb6cc02c3fd90b924a0dd91b1',1,'gridfire::reaction']]], + ['recordadtape_24',['recordADTape',['../classgridfire_1_1_graph_engine.html#a95563f6bc86007d9ee053a0f1e15b889',1,'gridfire::GraphEngine']]], + ['remove_5freaction_25',['remove_reaction',['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#a89c4c5af12aef7fbfc24316c88237e22',1,'gridfire::reaction::TemplatedReactionSet']]], + ['reservejacobianmatrix_26',['reserveJacobianMatrix',['../classgridfire_1_1_graph_engine.html#a5a5458ed01923124f2d7e1f04f32f138',1,'gridfire::GraphEngine']]], + ['reverse_27',['reverse',['../structgridfire_1_1reaclib_1_1_reaction_record.html#aa1fd4f510d7c00d2e4197e9b9caf29fd',1,'gridfire::reaclib::ReactionRecord']]], + ['rhsfunctor_28',['RHSFunctor',['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_r_h_s_functor.html',1,'gridfire::solver::DirectNetworkSolver::RHSFunctor'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_r_h_s_functor.html',1,'gridfire::solver::QSENetworkSolver::RHSFunctor'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_r_h_s_functor.html#a5353d8e6f27b6c435084a167bc009e46',1,'gridfire::solver::QSENetworkSolver::RHSFunctor::RHSFunctor()'],['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_r_h_s_functor.html#aed201b52ea757069c17a49e9638b3d3c',1,'gridfire::solver::DirectNetworkSolver::RHSFunctor::RHSFunctor()']]], + ['rpname_29',['rpName',['../structgridfire_1_1reaclib_1_1_reaction_record.html#a523b7cfb0a6d8ddccd785aef2f425ad1',1,'gridfire::reaclib::ReactionRecord']]] ]; diff --git a/docs/html/search/all_11.js b/docs/html/search/all_11.js index 294f06c4..b71e08b2 100644 --- a/docs/html/search/all_11.js +++ b/docs/html/search/all_11.js @@ -14,21 +14,24 @@ var searchData= ['selectscreeningmodel_11',['selectScreeningModel',['../namespacegridfire_1_1screening.html#a6ca8556d27ac373e176f5b23437c416e',1,'gridfire::screening']]], ['setformat_12',['setFormat',['../classgridfire_1_1_network.html#a787c601f6e4bd06600bf946efbcc98d4',1,'gridfire::Network']]], ['setnetworkfile_13',['setNetworkFile',['../classgridfire_1_1_file_defined_engine_view.html#a92f14da849e99d07c1ff1347addb9263',1,'gridfire::FileDefinedEngineView']]], - ['setscreeningmodel_14',['setScreeningModel',['../classgridfire_1_1_dynamic_engine.html#a3fb44b6f55563a2f590f31916528f2bd',1,'gridfire::DynamicEngine::setScreeningModel()'],['../classgridfire_1_1_graph_engine.html#a8110e687844f921438bb517e1d8ce62f',1,'gridfire::GraphEngine::setScreeningModel()'],['../classgridfire_1_1_adaptive_engine_view.html#aae4ddbef1c4e2202fd236221a4bf376b',1,'gridfire::AdaptiveEngineView::setScreeningModel()'],['../classgridfire_1_1_file_defined_engine_view.html#ad96bbee6d3d37b50d9236a975ef704c0',1,'gridfire::FileDefinedEngineView::setScreeningModel()']]], - ['setstiff_15',['setStiff',['../classgridfire_1_1approx8_1_1_approx8_network.html#aefed972081514c29cdaaa1efd857ad8d',1,'gridfire::approx8::Approx8Network::setStiff()'],['../classgridfire_1_1_network.html#a84de2d691af06c4b62cfab5022b1e8fe',1,'gridfire::Network::setStiff()']]], - ['shouldupdateview_16',['shouldUpdateView',['../classgridfire_1_1solver_1_1_q_s_e_network_solver.html#a35f1f6ede393f15c8bb8862f3f1c3b07',1,'gridfire::solver::QSENetworkSolver']]], - ['simplereactionlistfileparser_17',['SimpleReactionListFileParser',['../classgridfire_1_1io_1_1_simple_reaction_list_file_parser.html',1,'gridfire::io::SimpleReactionListFileParser'],['../classgridfire_1_1io_1_1_simple_reaction_list_file_parser.html#afc8ed91e8c98205c505e3d9f0cff1993',1,'gridfire::io::SimpleReactionListFileParser::SimpleReactionListFileParser()']]], - ['size_18',['size',['../classgridfire_1_1reaction_1_1_logical_reaction.html#afa41050855b842c63db16c94d2e9b897',1,'gridfire::reaction::LogicalReaction::size()'],['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#a6a1dc3c56690386ae9f6aa5c2aa37ba2',1,'gridfire::reaction::TemplatedReactionSet::size()']]], - ['solver_2ecpp_19',['solver.cpp',['../solver_8cpp.html',1,'']]], - ['solver_2eh_20',['solver.h',['../solver_8h.html',1,'']]], - ['solvers_21',['Solvers',['../index.html#autotoc_md7',1,'']]], - ['sourcelabel_22',['sourceLabel',['../classgridfire_1_1reaction_1_1_reaction.html#a410e2ab0784ad751f82bbe55be603db0',1,'gridfire::reaction::Reaction']]], - ['sources_23',['sources',['../classgridfire_1_1reaction_1_1_logical_reaction.html#add094eda0e71126f8443698d7f3317f4',1,'gridfire::reaction::LogicalReaction']]], - ['staticnetworksolverstrategy_24',['StaticNetworkSolverStrategy',['../namespacegridfire_1_1solver.html#a5361d6cf364f0ba2f88285a60bb9cd92',1,'gridfire::solver']]], - ['std_25',['std',['../namespacestd.html',1,'']]], - ['stepderivatives_26',['StepDerivatives',['../structgridfire_1_1_step_derivatives.html',1,'gridfire']]], - ['stoichiometry_27',['stoichiometry',['../classgridfire_1_1reaction_1_1_reaction.html#aaf0c94db6536b4a9ac1ec08a5c8f01ac',1,'gridfire::reaction::Reaction::stoichiometry(const fourdst::atomic::Species &species) const'],['../classgridfire_1_1reaction_1_1_reaction.html#ad359c06d7196c1a7a955a7b66a51dbe3',1,'gridfire::reaction::Reaction::stoichiometry() const']]], - ['structure_28',['Directory Structure',['../index.html#autotoc_md3',1,'']]], - ['sum_5fproduct_29',['sum_product',['../namespacegridfire_1_1approx8.html#aafd24448743672021dd4507316060817',1,'gridfire::approx8']]], - ['syncinternalmaps_30',['syncInternalMaps',['../classgridfire_1_1_graph_engine.html#acdce8d87e23a2cd1504bc9472e538c0f',1,'gridfire::GraphEngine']]] + ['setprecomputation_14',['setPrecomputation',['../classgridfire_1_1_graph_engine.html#a6c5410878496abc349ba30b691cdf0f1',1,'gridfire::GraphEngine']]], + ['setscreeningmodel_15',['setScreeningModel',['../classgridfire_1_1_dynamic_engine.html#a3fb44b6f55563a2f590f31916528f2bd',1,'gridfire::DynamicEngine::setScreeningModel()'],['../classgridfire_1_1_graph_engine.html#a8110e687844f921438bb517e1d8ce62f',1,'gridfire::GraphEngine::setScreeningModel()'],['../classgridfire_1_1_adaptive_engine_view.html#aae4ddbef1c4e2202fd236221a4bf376b',1,'gridfire::AdaptiveEngineView::setScreeningModel()'],['../classgridfire_1_1_file_defined_engine_view.html#ad96bbee6d3d37b50d9236a975ef704c0',1,'gridfire::FileDefinedEngineView::setScreeningModel()']]], + ['setstiff_16',['setStiff',['../classgridfire_1_1approx8_1_1_approx8_network.html#aefed972081514c29cdaaa1efd857ad8d',1,'gridfire::approx8::Approx8Network::setStiff()'],['../classgridfire_1_1_network.html#a84de2d691af06c4b62cfab5022b1e8fe',1,'gridfire::Network::setStiff()']]], + ['shouldupdateview_17',['shouldUpdateView',['../classgridfire_1_1solver_1_1_q_s_e_network_solver.html#a35f1f6ede393f15c8bb8862f3f1c3b07',1,'gridfire::solver::QSENetworkSolver']]], + ['simplereactionlistfileparser_18',['SimpleReactionListFileParser',['../classgridfire_1_1io_1_1_simple_reaction_list_file_parser.html',1,'gridfire::io::SimpleReactionListFileParser'],['../classgridfire_1_1io_1_1_simple_reaction_list_file_parser.html#afc8ed91e8c98205c505e3d9f0cff1993',1,'gridfire::io::SimpleReactionListFileParser::SimpleReactionListFileParser()']]], + ['size_19',['size',['../classgridfire_1_1reaction_1_1_logical_reaction.html#afa41050855b842c63db16c94d2e9b897',1,'gridfire::reaction::LogicalReaction::size()'],['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#a6a1dc3c56690386ae9f6aa5c2aa37ba2',1,'gridfire::reaction::TemplatedReactionSet::size()']]], + ['solver_2ecpp_20',['solver.cpp',['../solver_8cpp.html',1,'']]], + ['solver_2eh_21',['solver.h',['../solver_8h.html',1,'']]], + ['solvers_22',['Solvers',['../index.html#autotoc_md7',1,'']]], + ['sourcelabel_23',['sourceLabel',['../classgridfire_1_1reaction_1_1_reaction.html#a410e2ab0784ad751f82bbe55be603db0',1,'gridfire::reaction::Reaction']]], + ['sources_24',['sources',['../classgridfire_1_1reaction_1_1_logical_reaction.html#add094eda0e71126f8443698d7f3317f4',1,'gridfire::reaction::LogicalReaction']]], + ['staticnetworksolverstrategy_25',['StaticNetworkSolverStrategy',['../namespacegridfire_1_1solver.html#a5361d6cf364f0ba2f88285a60bb9cd92',1,'gridfire::solver']]], + ['std_26',['std',['../namespacestd.html',1,'']]], + ['stepderivatives_27',['StepDerivatives',['../structgridfire_1_1_step_derivatives.html',1,'gridfire']]], + ['stoichiometric_5fcoefficients_28',['stoichiometric_coefficients',['../structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#a7a7e9167b19e339e0d69544b9c00e79c',1,'gridfire::GraphEngine::PrecomputedReaction']]], + ['stoichiometry_29',['stoichiometry',['../classgridfire_1_1reaction_1_1_reaction.html#aaf0c94db6536b4a9ac1ec08a5c8f01ac',1,'gridfire::reaction::Reaction::stoichiometry(const fourdst::atomic::Species &species) const'],['../classgridfire_1_1reaction_1_1_reaction.html#ad359c06d7196c1a7a955a7b66a51dbe3',1,'gridfire::reaction::Reaction::stoichiometry() const']]], + ['structure_30',['Directory Structure',['../index.html#autotoc_md3',1,'']]], + ['sum_5fproduct_31',['sum_product',['../namespacegridfire_1_1approx8.html#aafd24448743672021dd4507316060817',1,'gridfire::approx8']]], + ['symmetry_5ffactor_32',['symmetry_factor',['../structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#ac42504e868c0b9fd9ac9a405ea739f0e',1,'gridfire::GraphEngine::PrecomputedReaction']]], + ['syncinternalmaps_33',['syncInternalMaps',['../classgridfire_1_1_graph_engine.html#acdce8d87e23a2cd1504bc9472e538c0f',1,'gridfire::GraphEngine']]] ]; diff --git a/docs/html/search/all_13.js b/docs/html/search/all_13.js index b191a539..71827b85 100644 --- a/docs/html/search/all_13.js +++ b/docs/html/search/all_13.js @@ -1,6 +1,8 @@ var searchData= [ - ['unknown_0',['UNKNOWN',['../namespacegridfire.html#a3f3d6b3f9742b70e62049ccefbb60f37aac700abde5f6ff8b7328193eb19697b2',1,'gridfire']]], - ['update_1',['update',['../classgridfire_1_1_dynamic_engine.html#acd500e1cd788df1dc105d28a20dc5f4f',1,'gridfire::DynamicEngine::update()'],['../classgridfire_1_1_graph_engine.html#a51b4cedf9b00de79fb6eef243631b04d',1,'gridfire::GraphEngine::update()'],['../classgridfire_1_1_adaptive_engine_view.html#a7d61e73f5158f1574cda3edc90c51f7e',1,'gridfire::AdaptiveEngineView::update()'],['../classgridfire_1_1_file_defined_engine_view.html#ace3568eadaba69e7357b4386c5ca3eb0',1,'gridfire::FileDefinedEngineView::update()']]], - ['use_2',['How to Use',['../index.html#autotoc_md10',1,'']]] + ['u_0',['u',['../structgridfire_1_1_graph_engine_1_1constants.html#a3597bc632a5dd50aaa0044d8c18ca423',1,'gridfire::GraphEngine::constants']]], + ['unique_5freactant_5findices_1',['unique_reactant_indices',['../structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#a510e380116e2e6d9158cf00fedac2666',1,'gridfire::GraphEngine::PrecomputedReaction']]], + ['unknown_2',['UNKNOWN',['../namespacegridfire.html#a3f3d6b3f9742b70e62049ccefbb60f37aac700abde5f6ff8b7328193eb19697b2',1,'gridfire']]], + ['update_3',['update',['../classgridfire_1_1_dynamic_engine.html#acd500e1cd788df1dc105d28a20dc5f4f',1,'gridfire::DynamicEngine::update()'],['../classgridfire_1_1_graph_engine.html#a51b4cedf9b00de79fb6eef243631b04d',1,'gridfire::GraphEngine::update()'],['../classgridfire_1_1_adaptive_engine_view.html#a7d61e73f5158f1574cda3edc90c51f7e',1,'gridfire::AdaptiveEngineView::update()'],['../classgridfire_1_1_file_defined_engine_view.html#ace3568eadaba69e7357b4386c5ca3eb0',1,'gridfire::FileDefinedEngineView::update()']]], + ['use_4',['How to Use',['../index.html#autotoc_md10',1,'']]] ]; diff --git a/docs/html/search/all_2.js b/docs/html/search/all_2.js index f90529cc..d98326c9 100644 --- a/docs/html/search/all_2.js +++ b/docs/html/search/all_2.js @@ -1,32 +1,35 @@ var searchData= [ - ['c12a_5frate_0',['c12a_rate',['../namespacegridfire_1_1approx8.html#af7d9b901dbb3c88c151d927912d5121f',1,'gridfire::approx8']]], - ['c12c12_5frate_1',['c12c12_rate',['../namespacegridfire_1_1approx8.html#a70eb18e9706ac28a308dcb4fcec7421f',1,'gridfire::approx8']]], - ['c12o16_5frate_2',['c12o16_rate',['../namespacegridfire_1_1approx8.html#a8c30b7e6099c5fc2aa94f9c68fd075dc',1,'gridfire::approx8']]], - ['c12p_5frate_3',['c12p_rate',['../namespacegridfire_1_1approx8.html#a890ad24c2cdb15fb76a3ff8a7b8d77db',1,'gridfire::approx8']]], - ['calculate_5frate_4',['calculate_rate',['../classgridfire_1_1reaction_1_1_reaction.html#ad81e9b2a1773470059ca6989c60556ec',1,'gridfire::reaction::Reaction::calculate_rate(const double T9) const'],['../classgridfire_1_1reaction_1_1_reaction.html#a735192a42f72cd68f289493753e1a616',1,'gridfire::reaction::Reaction::calculate_rate(const CppAD::AD< double > T9) const'],['../classgridfire_1_1reaction_1_1_reaction.html#a648b9ed6108bed2469dc028fb7e351af',1,'gridfire::reaction::Reaction::calculate_rate(const T T9) const'],['../classgridfire_1_1reaction_1_1_logical_reaction.html#a1d2fb3b6a6a1860ace98b32447d1dd1b',1,'gridfire::reaction::LogicalReaction::calculate_rate(const double T9) const override'],['../classgridfire_1_1reaction_1_1_logical_reaction.html#adad6f4297c1d8ce487eab092b73cdd32',1,'gridfire::reaction::LogicalReaction::calculate_rate(const CppAD::AD< double > T9) const override'],['../classgridfire_1_1reaction_1_1_logical_reaction.html#a019b721d83741acdb16036f00739f87c',1,'gridfire::reaction::LogicalReaction::calculate_rate(const T T9) const']]], - ['calculateallderivatives_5',['calculateAllDerivatives',['../classgridfire_1_1_graph_engine.html#af41df9ce979b6410e12642cb093916c9',1,'gridfire::GraphEngine::calculateAllDerivatives(const std::vector< T > &Y_in, T T9, T rho) const'],['../classgridfire_1_1_graph_engine.html#aaf4d54e4b774ab8ec8eabec006579d31',1,'gridfire::GraphEngine::calculateAllDerivatives(const std::vector< double > &Y_in, const double T9, const double rho) const'],['../classgridfire_1_1_graph_engine.html#a71a3d1181b90c3becdc5d9a3da05b9c9',1,'gridfire::GraphEngine::calculateAllDerivatives(const std::vector< ADDouble > &Y_in, const ADDouble &T9, const ADDouble &rho) const']]], - ['calculateallreactionflows_6',['calculateAllReactionFlows',['../classgridfire_1_1_adaptive_engine_view.html#abdbaf4b87629efe43ac1255dad424c0c',1,'gridfire::AdaptiveEngineView']]], - ['calculatefactors_5fimpl_7',['calculateFactors_impl',['../classgridfire_1_1screening_1_1_bare_screening_model.html#a6c93b72c8ca34623127f0846d8dee50a',1,'gridfire::screening::BareScreeningModel::calculateFactors_impl()'],['../classgridfire_1_1screening_1_1_weak_screening_model.html#a2695206d46b9d2c2503f8e58c44df88f',1,'gridfire::screening::WeakScreeningModel::calculateFactors_impl()']]], - ['calculatemolarreactionflow_8',['calculateMolarReactionFlow',['../classgridfire_1_1_dynamic_engine.html#a6633b1757c41dd9e1c397333f4f9e785',1,'gridfire::DynamicEngine::calculateMolarReactionFlow()'],['../classgridfire_1_1_graph_engine.html#a9245642b741f215e52861d00e756fb3f',1,'gridfire::GraphEngine::calculateMolarReactionFlow(const reaction::Reaction &reaction, const std::vector< double > &Y, const double T9, const double rho) const override'],['../classgridfire_1_1_graph_engine.html#a5e96b5a0b34c8932f0e14eabda57f1a4',1,'gridfire::GraphEngine::calculateMolarReactionFlow(const reaction::Reaction &reaction, const std::vector< T > &Y, const T T9, const T rho) const'],['../classgridfire_1_1_adaptive_engine_view.html#a048d4b1d41ecb4125a558d1b9ed7cb31',1,'gridfire::AdaptiveEngineView::calculateMolarReactionFlow()'],['../classgridfire_1_1_file_defined_engine_view.html#ac371fb66fd0a76a04df204c9dd9a05ef',1,'gridfire::FileDefinedEngineView::calculateMolarReactionFlow()']]], - ['calculaterhsandenergy_9',['calculateRHSAndEnergy',['../classgridfire_1_1_engine.html#ac8b56124b6b49cd1802addb74a9a47c2',1,'gridfire::Engine::calculateRHSAndEnergy()'],['../classgridfire_1_1_graph_engine.html#a8b3baf29829c7ae0a61430ea70632bbf',1,'gridfire::GraphEngine::calculateRHSAndEnergy()'],['../classgridfire_1_1_adaptive_engine_view.html#a7b276b7210be588263395bdb0497fc6d',1,'gridfire::AdaptiveEngineView::calculateRHSAndEnergy()'],['../classgridfire_1_1_file_defined_engine_view.html#a2c1d88b06568f9ea4c65e794d012ebfb',1,'gridfire::FileDefinedEngineView::calculateRHSAndEnergy()']]], - ['calculatescreeningfactors_10',['calculateScreeningFactors',['../classgridfire_1_1screening_1_1_screening_model.html#aaec9184d80c86a2d8674e395dad81bde',1,'gridfire::screening::ScreeningModel::calculateScreeningFactors(const reaction::LogicalReactionSet &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< double > &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 &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< ADDouble > &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 &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< double > &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 &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< ADDouble > &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 &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< double > &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 &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< CppAD::AD< double > > &Y, const CppAD::AD< double > T9, const CppAD::AD< double > rho) const override']]], - ['calculatesteadystateabundances_11',['calculateSteadyStateAbundances',['../classgridfire_1_1solver_1_1_q_s_e_network_solver.html#a00d112f6087f6e3a93f4d40a519308d2',1,'gridfire::solver::QSENetworkSolver']]], - ['chapter_12',['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()']]], - ['clear_13',['clear',['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#a05f71d318564d880079fd6c96d59ae21',1,'gridfire::reaction::TemplatedReactionSet']]], - ['coeffs_14',['coeffs',['../structgridfire_1_1reaclib_1_1_reaction_record.html#a80803f612e574859fde0a163bca84bc0',1,'gridfire::reaclib::ReactionRecord']]], - ['collectnetworkspecies_15',['collectNetworkSpecies',['../classgridfire_1_1_graph_engine.html#aedf42d83bfcc28313b6b6454034d2efa',1,'gridfire::GraphEngine']]], - ['components_16',['Core Components',['../index.html#autotoc_md4',1,'']]], - ['composition_17',['composition',['../structgridfire_1_1_net_in.html#a13058f4929e72c1187abbebcddb8aed1',1,'gridfire::NetIn::composition'],['../structgridfire_1_1_net_out.html#a073529511ae0e52f868b47cce0e8ac0a',1,'gridfire::NetOut::composition']]], - ['config_18',['Config',['../classgridfire_1_1_adaptive_engine_view.html#afec39b2faa34ea65c5488dd8e11ba3c3',1,'gridfire::AdaptiveEngineView::Config'],['../classgridfire_1_1_file_defined_engine_view.html#a63f8f85e75ecaab6fa39d48d7a846187',1,'gridfire::FileDefinedEngineView::Config'],['../classgridfire_1_1io_1_1_simple_reaction_list_file_parser.html#ad913155a5a2a36b29e4ce4ca8d71c036',1,'gridfire::io::SimpleReactionListFileParser::Config'],['../classgridfire_1_1io_1_1_m_e_s_a_network_file_parser.html#af43ad8375abf1cedfdccc296b9958c2b',1,'gridfire::io::MESANetworkFileParser::Config']]], - ['constructreactionindexmap_19',['constructReactionIndexMap',['../classgridfire_1_1_adaptive_engine_view.html#a89614f4a48f60c4170a0197f45303e7c',1,'gridfire::AdaptiveEngineView::constructReactionIndexMap()'],['../classgridfire_1_1_file_defined_engine_view.html#aebb3f3548f8781506f31580706810a4e',1,'gridfire::FileDefinedEngineView::constructReactionIndexMap()']]], - ['constructspeciesindexmap_20',['constructSpeciesIndexMap',['../classgridfire_1_1_adaptive_engine_view.html#a896d29325b4233e83d9298850b617a2d',1,'gridfire::AdaptiveEngineView::constructSpeciesIndexMap()'],['../classgridfire_1_1_file_defined_engine_view.html#a51ba09ff01fdcac1125d42f276c9a0a7',1,'gridfire::FileDefinedEngineView::constructSpeciesIndexMap()']]], - ['contains_21',['contains',['../classgridfire_1_1reaction_1_1_reaction.html#ab92785f331a446e51a0960b75d60b37b',1,'gridfire::reaction::Reaction::contains()'],['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#a7777ecd0f594fdf66ce57d22610fad3c',1,'gridfire::reaction::TemplatedReactionSet::contains(const std::string_view &id) const'],['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#ab8cb5fbce6b819b9e4e44b0c2db54c6f',1,'gridfire::reaction::TemplatedReactionSet::contains(const Reaction &reaction) const']]], - ['contains_5fproduct_22',['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()']]], - ['contains_5freactant_23',['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(const fourdst::atomic::Species &species) const']]], - ['contains_5fspecies_24',['contains_species',['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#ad870856d206d93f27125c88d44ff9e34',1,'gridfire::reaction::TemplatedReactionSet']]], - ['convert_5fnetin_25',['convert_netIn',['../classgridfire_1_1approx8_1_1_approx8_network.html#a56426da6f1af7eb8a6d1cc70bc8e742a',1,'gridfire::approx8::Approx8Network']]], - ['core_20components_26',['Core Components',['../index.html#autotoc_md4',1,'']]], - ['culling_27',['culling',['../structgridfire_1_1_net_in.html#a6a5e909b46094ffa20da9a3da906e43f',1,'gridfire::NetIn']]], - ['cullreactionsbyflow_28',['cullReactionsByFlow',['../classgridfire_1_1_adaptive_engine_view.html#a42417e96fe9fd623458af109401daf08',1,'gridfire::AdaptiveEngineView']]] + ['c_0',['c',['../structgridfire_1_1_graph_engine_1_1constants.html#a8bea6e348699c1aea93d17bb56739306',1,'gridfire::GraphEngine::constants']]], + ['c12a_5frate_1',['c12a_rate',['../namespacegridfire_1_1approx8.html#af7d9b901dbb3c88c151d927912d5121f',1,'gridfire::approx8']]], + ['c12c12_5frate_2',['c12c12_rate',['../namespacegridfire_1_1approx8.html#a70eb18e9706ac28a308dcb4fcec7421f',1,'gridfire::approx8']]], + ['c12o16_5frate_3',['c12o16_rate',['../namespacegridfire_1_1approx8.html#a8c30b7e6099c5fc2aa94f9c68fd075dc',1,'gridfire::approx8']]], + ['c12p_5frate_4',['c12p_rate',['../namespacegridfire_1_1approx8.html#a890ad24c2cdb15fb76a3ff8a7b8d77db',1,'gridfire::approx8']]], + ['calculate_5frate_5',['calculate_rate',['../classgridfire_1_1reaction_1_1_reaction.html#ad81e9b2a1773470059ca6989c60556ec',1,'gridfire::reaction::Reaction::calculate_rate(const double T9) const'],['../classgridfire_1_1reaction_1_1_reaction.html#a735192a42f72cd68f289493753e1a616',1,'gridfire::reaction::Reaction::calculate_rate(const CppAD::AD< double > T9) const'],['../classgridfire_1_1reaction_1_1_reaction.html#a648b9ed6108bed2469dc028fb7e351af',1,'gridfire::reaction::Reaction::calculate_rate(const T T9) const'],['../classgridfire_1_1reaction_1_1_logical_reaction.html#a1d2fb3b6a6a1860ace98b32447d1dd1b',1,'gridfire::reaction::LogicalReaction::calculate_rate(const double T9) const override'],['../classgridfire_1_1reaction_1_1_logical_reaction.html#adad6f4297c1d8ce487eab092b73cdd32',1,'gridfire::reaction::LogicalReaction::calculate_rate(const CppAD::AD< double > T9) const override'],['../classgridfire_1_1reaction_1_1_logical_reaction.html#a019b721d83741acdb16036f00739f87c',1,'gridfire::reaction::LogicalReaction::calculate_rate(const T T9) const']]], + ['calculateallderivatives_6',['calculateAllDerivatives',['../classgridfire_1_1_graph_engine.html#af41df9ce979b6410e12642cb093916c9',1,'gridfire::GraphEngine::calculateAllDerivatives(const std::vector< T > &Y_in, T T9, T rho) const'],['../classgridfire_1_1_graph_engine.html#aaf4d54e4b774ab8ec8eabec006579d31',1,'gridfire::GraphEngine::calculateAllDerivatives(const std::vector< double > &Y_in, const double T9, const double rho) const'],['../classgridfire_1_1_graph_engine.html#a71a3d1181b90c3becdc5d9a3da05b9c9',1,'gridfire::GraphEngine::calculateAllDerivatives(const std::vector< ADDouble > &Y_in, const ADDouble &T9, const ADDouble &rho) const']]], + ['calculateallderivativesusingprecomputation_7',['calculateAllDerivativesUsingPrecomputation',['../classgridfire_1_1_graph_engine.html#a63639f4430d0889605c10839a6f32af9',1,'gridfire::GraphEngine']]], + ['calculateallreactionflows_8',['calculateAllReactionFlows',['../classgridfire_1_1_adaptive_engine_view.html#abdbaf4b87629efe43ac1255dad424c0c',1,'gridfire::AdaptiveEngineView']]], + ['calculatefactors_5fimpl_9',['calculateFactors_impl',['../classgridfire_1_1screening_1_1_bare_screening_model.html#a6c93b72c8ca34623127f0846d8dee50a',1,'gridfire::screening::BareScreeningModel::calculateFactors_impl()'],['../classgridfire_1_1screening_1_1_weak_screening_model.html#a2695206d46b9d2c2503f8e58c44df88f',1,'gridfire::screening::WeakScreeningModel::calculateFactors_impl()']]], + ['calculatemolarreactionflow_10',['calculateMolarReactionFlow',['../classgridfire_1_1_dynamic_engine.html#a6633b1757c41dd9e1c397333f4f9e785',1,'gridfire::DynamicEngine::calculateMolarReactionFlow()'],['../classgridfire_1_1_graph_engine.html#a9245642b741f215e52861d00e756fb3f',1,'gridfire::GraphEngine::calculateMolarReactionFlow(const reaction::Reaction &reaction, const std::vector< double > &Y, const double T9, const double rho) const override'],['../classgridfire_1_1_graph_engine.html#a5e96b5a0b34c8932f0e14eabda57f1a4',1,'gridfire::GraphEngine::calculateMolarReactionFlow(const reaction::Reaction &reaction, const std::vector< T > &Y, const T T9, const T rho) const'],['../classgridfire_1_1_adaptive_engine_view.html#a048d4b1d41ecb4125a558d1b9ed7cb31',1,'gridfire::AdaptiveEngineView::calculateMolarReactionFlow()'],['../classgridfire_1_1_file_defined_engine_view.html#ac371fb66fd0a76a04df204c9dd9a05ef',1,'gridfire::FileDefinedEngineView::calculateMolarReactionFlow()']]], + ['calculaterhsandenergy_11',['calculateRHSAndEnergy',['../classgridfire_1_1_engine.html#ac8b56124b6b49cd1802addb74a9a47c2',1,'gridfire::Engine::calculateRHSAndEnergy()'],['../classgridfire_1_1_graph_engine.html#a8b3baf29829c7ae0a61430ea70632bbf',1,'gridfire::GraphEngine::calculateRHSAndEnergy()'],['../classgridfire_1_1_adaptive_engine_view.html#a7b276b7210be588263395bdb0497fc6d',1,'gridfire::AdaptiveEngineView::calculateRHSAndEnergy()'],['../classgridfire_1_1_file_defined_engine_view.html#a2c1d88b06568f9ea4c65e794d012ebfb',1,'gridfire::FileDefinedEngineView::calculateRHSAndEnergy()']]], + ['calculatescreeningfactors_12',['calculateScreeningFactors',['../classgridfire_1_1screening_1_1_screening_model.html#aaec9184d80c86a2d8674e395dad81bde',1,'gridfire::screening::ScreeningModel::calculateScreeningFactors(const reaction::LogicalReactionSet &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< double > &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 &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< ADDouble > &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 &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< double > &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 &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< ADDouble > &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 &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< double > &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 &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< CppAD::AD< double > > &Y, const CppAD::AD< double > T9, const CppAD::AD< double > rho) const override']]], + ['calculatesteadystateabundances_13',['calculateSteadyStateAbundances',['../classgridfire_1_1solver_1_1_q_s_e_network_solver.html#a00d112f6087f6e3a93f4d40a519308d2',1,'gridfire::solver::QSENetworkSolver']]], + ['chapter_14',['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()']]], + ['clear_15',['clear',['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#a05f71d318564d880079fd6c96d59ae21',1,'gridfire::reaction::TemplatedReactionSet']]], + ['coeffs_16',['coeffs',['../structgridfire_1_1reaclib_1_1_reaction_record.html#a80803f612e574859fde0a163bca84bc0',1,'gridfire::reaclib::ReactionRecord']]], + ['collectnetworkspecies_17',['collectNetworkSpecies',['../classgridfire_1_1_graph_engine.html#aedf42d83bfcc28313b6b6454034d2efa',1,'gridfire::GraphEngine']]], + ['components_18',['Core Components',['../index.html#autotoc_md4',1,'']]], + ['composition_19',['composition',['../structgridfire_1_1_net_in.html#a13058f4929e72c1187abbebcddb8aed1',1,'gridfire::NetIn::composition'],['../structgridfire_1_1_net_out.html#a073529511ae0e52f868b47cce0e8ac0a',1,'gridfire::NetOut::composition']]], + ['config_20',['Config',['../classgridfire_1_1_adaptive_engine_view.html#afec39b2faa34ea65c5488dd8e11ba3c3',1,'gridfire::AdaptiveEngineView::Config'],['../classgridfire_1_1_file_defined_engine_view.html#a63f8f85e75ecaab6fa39d48d7a846187',1,'gridfire::FileDefinedEngineView::Config'],['../classgridfire_1_1io_1_1_simple_reaction_list_file_parser.html#ad913155a5a2a36b29e4ce4ca8d71c036',1,'gridfire::io::SimpleReactionListFileParser::Config'],['../classgridfire_1_1io_1_1_m_e_s_a_network_file_parser.html#af43ad8375abf1cedfdccc296b9958c2b',1,'gridfire::io::MESANetworkFileParser::Config']]], + ['constants_21',['constants',['../structgridfire_1_1_graph_engine_1_1constants.html',1,'gridfire::GraphEngine']]], + ['constructreactionindexmap_22',['constructReactionIndexMap',['../classgridfire_1_1_adaptive_engine_view.html#a89614f4a48f60c4170a0197f45303e7c',1,'gridfire::AdaptiveEngineView::constructReactionIndexMap()'],['../classgridfire_1_1_file_defined_engine_view.html#aebb3f3548f8781506f31580706810a4e',1,'gridfire::FileDefinedEngineView::constructReactionIndexMap()']]], + ['constructspeciesindexmap_23',['constructSpeciesIndexMap',['../classgridfire_1_1_adaptive_engine_view.html#a896d29325b4233e83d9298850b617a2d',1,'gridfire::AdaptiveEngineView::constructSpeciesIndexMap()'],['../classgridfire_1_1_file_defined_engine_view.html#a51ba09ff01fdcac1125d42f276c9a0a7',1,'gridfire::FileDefinedEngineView::constructSpeciesIndexMap()']]], + ['contains_24',['contains',['../classgridfire_1_1reaction_1_1_reaction.html#ab92785f331a446e51a0960b75d60b37b',1,'gridfire::reaction::Reaction::contains()'],['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#a7777ecd0f594fdf66ce57d22610fad3c',1,'gridfire::reaction::TemplatedReactionSet::contains(const std::string_view &id) const'],['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#ab8cb5fbce6b819b9e4e44b0c2db54c6f',1,'gridfire::reaction::TemplatedReactionSet::contains(const Reaction &reaction) const']]], + ['contains_5fproduct_25',['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()']]], + ['contains_5freactant_26',['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(const fourdst::atomic::Species &species) const']]], + ['contains_5fspecies_27',['contains_species',['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#ad870856d206d93f27125c88d44ff9e34',1,'gridfire::reaction::TemplatedReactionSet']]], + ['convert_5fnetin_28',['convert_netIn',['../classgridfire_1_1approx8_1_1_approx8_network.html#a56426da6f1af7eb8a6d1cc70bc8e742a',1,'gridfire::approx8::Approx8Network']]], + ['core_20components_29',['Core Components',['../index.html#autotoc_md4',1,'']]], + ['culling_30',['culling',['../structgridfire_1_1_net_in.html#a6a5e909b46094ffa20da9a3da906e43f',1,'gridfire::NetIn']]], + ['cullreactionsbyflow_31',['cullReactionsByFlow',['../classgridfire_1_1_adaptive_engine_view.html#a42417e96fe9fd623458af109401daf08',1,'gridfire::AdaptiveEngineView']]] ]; diff --git a/docs/html/search/all_6.js b/docs/html/search/all_6.js index fc1f765b..aaf31f28 100644 --- a/docs/html/search/all_6.js +++ b/docs/html/search/all_6.js @@ -14,7 +14,7 @@ var searchData= ['getscreeningmodel_11',['getScreeningModel',['../classgridfire_1_1_dynamic_engine.html#a7a203f8e0f3a6744ddc912dfbcfdbcc0',1,'gridfire::DynamicEngine::getScreeningModel()'],['../classgridfire_1_1_graph_engine.html#a697f2004e0d02c59e83c7890742d7c9a',1,'gridfire::GraphEngine::getScreeningModel()'],['../classgridfire_1_1_adaptive_engine_view.html#a0ab1199f900a58f309c3c36532c9164f',1,'gridfire::AdaptiveEngineView::getScreeningModel()'],['../classgridfire_1_1_file_defined_engine_view.html#adbc50f397445f92b810d80cf329b8626',1,'gridfire::FileDefinedEngineView::getScreeningModel()']]], ['getspeciestimescales_12',['getSpeciesTimescales',['../classgridfire_1_1_dynamic_engine.html#a5d8ba98b230d2849035ee2507728fa15',1,'gridfire::DynamicEngine::getSpeciesTimescales()'],['../classgridfire_1_1_graph_engine.html#a26215593544c3a52597194602e4e25dd',1,'gridfire::GraphEngine::getSpeciesTimescales()'],['../classgridfire_1_1_adaptive_engine_view.html#a93b38d0fdc4647f6f7340172dae17872',1,'gridfire::AdaptiveEngineView::getSpeciesTimescales()'],['../classgridfire_1_1_file_defined_engine_view.html#ace3c6ea4841318c08695973ab3dcddc6',1,'gridfire::FileDefinedEngineView::getSpeciesTimescales()']]], ['getstoichiometrymatrixentry_13',['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_file_defined_engine_view.html#a9da9224f5c99a5068f3d8cbf066e4693',1,'gridfire::FileDefinedEngineView::getStoichiometryMatrixEntry()']]], - ['graphengine_14',['GraphEngine',['../classgridfire_1_1_graph_engine.html',1,'gridfire::GraphEngine'],['../classgridfire_1_1_graph_engine.html#a9f74786ff930ab72664b31f29d05a30c',1,'gridfire::GraphEngine::GraphEngine(const fourdst::composition::Composition &composition)'],['../classgridfire_1_1_graph_engine.html#a9c285e3a38de6e73503a4e19666678e2',1,'gridfire::GraphEngine::GraphEngine(reaction::LogicalReactionSet reactions)']]], + ['graphengine_14',['GraphEngine',['../classgridfire_1_1_graph_engine.html',1,'gridfire::GraphEngine'],['../classgridfire_1_1_graph_engine.html#a9f74786ff930ab72664b31f29d05a30c',1,'gridfire::GraphEngine::GraphEngine(const fourdst::composition::Composition &composition)'],['../classgridfire_1_1_graph_engine.html#a1e7e851dfa21d41c2dc533ba56fc4c7b',1,'gridfire::GraphEngine::GraphEngine(const reaction::LogicalReactionSet &reactions)']]], ['gridfire_15',['GridFire',['../index.html',1,'']]], ['gridfire_16',['gridfire',['../namespacegridfire.html',1,'']]], ['gridfire_3a_20a_20nuclear_20reaction_20network_20library_17',['GridFire: A Nuclear Reaction Network Library',['../index.html#autotoc_md0',1,'']]], diff --git a/docs/html/search/all_8.js b/docs/html/search/all_8.js index 43f6ceab..21f4674a 100644 --- a/docs/html/search/all_8.js +++ b/docs/html/search/all_8.js @@ -19,6 +19,7 @@ var searchData= ['io16_16',['io16',['../structgridfire_1_1approx8_1_1_approx8_net.html#ab4e95622dc0414ad7e636ef811e600af',1,'gridfire::approx8::Approx8Net']]], ['is_5freverse_17',['is_reverse',['../classgridfire_1_1reaction_1_1_reaction.html#aa67d05dfabf007c1acad34052d9a1dba',1,'gridfire::reaction::Reaction']]], ['isarithmeticorad_18',['IsArithmeticOrAD',['../conceptgridfire_1_1_is_arithmetic_or_a_d.html',1,'gridfire']]], - ['isstiff_19',['isStiff',['../classgridfire_1_1approx8_1_1_approx8_network.html#a5b17b2831389829533385900ce19a37a',1,'gridfire::approx8::Approx8Network::isStiff()'],['../classgridfire_1_1_network.html#ae93ad65deba79def4b77d420e7affa0b',1,'gridfire::Network::isStiff()']]], - ['itemp_20',['iTemp',['../structgridfire_1_1approx8_1_1_approx8_net.html#a010df59d40b3bc8a802224968922ebde',1,'gridfire::approx8::Approx8Net']]] + ['isprecomputationenabled_19',['isPrecomputationEnabled',['../classgridfire_1_1_graph_engine.html#a015f8975701f028c29835d3a9794e00f',1,'gridfire::GraphEngine']]], + ['isstiff_20',['isStiff',['../classgridfire_1_1approx8_1_1_approx8_network.html#a5b17b2831389829533385900ce19a37a',1,'gridfire::approx8::Approx8Network::isStiff()'],['../classgridfire_1_1_network.html#ae93ad65deba79def4b77d420e7affa0b',1,'gridfire::Network::isStiff()']]], + ['itemp_21',['iTemp',['../structgridfire_1_1approx8_1_1_approx8_net.html#a010df59d40b3bc8a802224968922ebde',1,'gridfire::approx8::Approx8Net']]] ]; diff --git a/docs/html/search/all_b.js b/docs/html/search/all_b.js index 81a4b119..c889b20f 100644 --- a/docs/html/search/all_b.js +++ b/docs/html/search/all_b.js @@ -5,7 +5,7 @@ var searchData= ['m_5fbaseengine_2',['m_baseEngine',['../classgridfire_1_1_adaptive_engine_view.html#a4d38b46be9f25c7afe7ddd2b284253f8',1,'gridfire::AdaptiveEngineView::m_baseEngine'],['../classgridfire_1_1_file_defined_engine_view.html#ad8454c98fa9a4bb45dc81059bc51fc81',1,'gridfire::FileDefinedEngineView::m_baseEngine']]], ['m_5fchapter_3',['m_chapter',['../classgridfire_1_1reaction_1_1_reaction.html#a16f9cbb6269817099d3dc07d4e63da7b',1,'gridfire::reaction::Reaction']]], ['m_5fconfig_4',['m_config',['../classgridfire_1_1_graph_engine.html#a3b17102b143435ddfdc015d7a50c4b18',1,'gridfire::GraphEngine::m_config'],['../classgridfire_1_1_adaptive_engine_view.html#a14171a9ccc45a63996a967c72983de30',1,'gridfire::AdaptiveEngineView::m_config'],['../classgridfire_1_1_file_defined_engine_view.html#a7a80966c023ae722239491af58609362',1,'gridfire::FileDefinedEngineView::m_config'],['../classgridfire_1_1io_1_1_simple_reaction_list_file_parser.html#a4061e99bd77a3de0d6d9e317bfc74874',1,'gridfire::io::SimpleReactionListFileParser::m_config'],['../classgridfire_1_1io_1_1_m_e_s_a_network_file_parser.html#aea206c3a7600db8d657666fef88fa20d',1,'gridfire::io::MESANetworkFileParser::m_config'],['../classgridfire_1_1_network.html#a9f8802012728ef5fea0e8cd465044e09',1,'gridfire::Network::m_config'],['../classgridfire_1_1solver_1_1_q_s_e_network_solver.html#a7d19b6e50db34d38c81afec76bbedee1',1,'gridfire::solver::QSENetworkSolver::m_config'],['../classgridfire_1_1solver_1_1_direct_network_solver.html#a0d1b52d06b0521e7c556d75cd8d2ffe6',1,'gridfire::solver::DirectNetworkSolver::m_config']]], - ['m_5fconstants_5',['m_constants',['../classgridfire_1_1_graph_engine.html#a0837bab6dcd111d9075c9343b90d64f1',1,'gridfire::GraphEngine::m_constants'],['../classgridfire_1_1_network.html#adf7002883160101c9f9d1b376b265410',1,'gridfire::Network::m_constants']]], + ['m_5fconstants_5',['m_constants',['../classgridfire_1_1_graph_engine.html#a10c01bc20ae668c2857efb2a1783098e',1,'gridfire::GraphEngine::m_constants'],['../classgridfire_1_1_network.html#adf7002883160101c9f9d1b376b265410',1,'gridfire::Network::m_constants']]], ['m_5fdt0_6',['m_dt0',['../classgridfire_1_1approx8_1_1_approx8_network.html#a6ed8022834e9541b3e547dd867648b0f',1,'gridfire::approx8::Approx8Network']]], ['m_5fdynamicspeciesindices_7',['m_dynamicSpeciesIndices',['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_r_h_s_functor.html#a3ac1ef529627d21f7d1ad718dc87f7f9',1,'gridfire::solver::QSENetworkSolver::RHSFunctor::m_dynamicSpeciesIndices'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_jacobian_functor.html#a2071ce797f94ae1a3ea6d934748672ce',1,'gridfire::solver::QSENetworkSolver::JacobianFunctor::m_dynamicSpeciesIndices'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a08ce53701b152f3ce108c1c18ce64de2',1,'gridfire::solver::QSENetworkSolver::EigenFunctor::m_dynamicSpeciesIndices']]], ['m_5fengine_8',['m_engine',['../classgridfire_1_1solver_1_1_network_solver_strategy.html#a724924d94eaf82b67d9988a55c3261e8',1,'gridfire::solver::NetworkSolverStrategy::m_engine'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_r_h_s_functor.html#a0d8d28a6559cfed5e7cd683523d49b2c',1,'gridfire::solver::QSENetworkSolver::RHSFunctor::m_engine'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_jacobian_functor.html#aaaa82eff96e6127a6de05444f730e43a',1,'gridfire::solver::QSENetworkSolver::JacobianFunctor::m_engine'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a93b46ca95ddf9e4d21d02700621e6285',1,'gridfire::solver::QSENetworkSolver::EigenFunctor::m_engine'],['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_r_h_s_functor.html#a04f8c84e46e6fbd0977e50fda4829d1a',1,'gridfire::solver::DirectNetworkSolver::RHSFunctor::m_engine'],['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_jacobian_functor.html#a56f8b2b222fb2a7dac190ead0babfdd0',1,'gridfire::solver::DirectNetworkSolver::JacobianFunctor::m_engine']]], @@ -24,46 +24,48 @@ var searchData= ['m_5fnumspecies_21',['m_numSpecies',['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_r_h_s_functor.html#ac4a1af03d2a4fbc5cc2407b8a6833147',1,'gridfire::solver::DirectNetworkSolver::RHSFunctor::m_numSpecies'],['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_jacobian_functor.html#a3f624142212b5e6ff65f5706953fe353',1,'gridfire::solver::DirectNetworkSolver::JacobianFunctor::m_numSpecies']]], ['m_5fparser_22',['m_parser',['../classgridfire_1_1_file_defined_engine_view.html#a0a9b07176cb93b54c677b6ce71fda500',1,'gridfire::FileDefinedEngineView']]], ['m_5fpename_23',['m_peName',['../classgridfire_1_1reaction_1_1_reaction.html#a6124aa9fc2306349e1dd879a37923248',1,'gridfire::reaction::Reaction']]], - ['m_5fproducts_24',['m_products',['../classgridfire_1_1reaction_1_1_reaction.html#a4b5607ed413acdf29539b8a57461e49e',1,'gridfire::reaction::Reaction']]], - ['m_5fqsespeciesindices_25',['m_QSESpeciesIndices',['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_r_h_s_functor.html#a6be7259897a47ce480b289144b06e269',1,'gridfire::solver::QSENetworkSolver::RHSFunctor::m_QSESpeciesIndices'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_jacobian_functor.html#a1b92391170eb46771bd499aa8d115334',1,'gridfire::solver::QSENetworkSolver::JacobianFunctor::m_QSESpeciesIndices'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#abaf28fdd93e881ef56c24f541be7492d',1,'gridfire::solver::QSENetworkSolver::EigenFunctor::m_QSESpeciesIndices']]], - ['m_5fqvalue_26',['m_qValue',['../classgridfire_1_1reaction_1_1_reaction.html#a59122a2898bb9af640cc3e9aeb49028b',1,'gridfire::reaction::Reaction']]], - ['m_5fratecoefficients_27',['m_rateCoefficients',['../classgridfire_1_1reaction_1_1_reaction.html#aa61a9a024d7c4ff66a351ccd0277ec72',1,'gridfire::reaction::Reaction']]], - ['m_5frates_28',['m_rates',['../classgridfire_1_1reaction_1_1_logical_reaction.html#a81f75f0085f8a5a45169f0b7240c809d',1,'gridfire::reaction::LogicalReaction']]], - ['m_5freactants_29',['m_reactants',['../classgridfire_1_1reaction_1_1_reaction.html#a87a065b3c7806bcdb5eadb7de2978a11',1,'gridfire::reaction::Reaction']]], - ['m_5freactionidmap_30',['m_reactionIDMap',['../classgridfire_1_1_graph_engine.html#a5d6cc63b99b467c2a976d1fbaaa1dfa3',1,'gridfire::GraphEngine']]], - ['m_5freactionindexmap_31',['m_reactionIndexMap',['../classgridfire_1_1_adaptive_engine_view.html#a21c6e33bbf8c18fd5b5eaabb469054de',1,'gridfire::AdaptiveEngineView::m_reactionIndexMap'],['../classgridfire_1_1_file_defined_engine_view.html#af0a77a4749a15aae87bdecfccbd1736e',1,'gridfire::FileDefinedEngineView::m_reactionIndexMap']]], - ['m_5freactionnamemap_32',['m_reactionNameMap',['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#a3a4c2448865580001fd3c797b9f56979',1,'gridfire::reaction::TemplatedReactionSet']]], - ['m_5freactions_33',['m_reactions',['../classgridfire_1_1_graph_engine.html#acb7c4f5108b0efeae48ad15598e808c3',1,'gridfire::GraphEngine::m_reactions'],['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#a5962968fe478c79250e9d88d80a87600',1,'gridfire::reaction::TemplatedReactionSet::m_reactions']]], - ['m_5freverse_34',['m_reverse',['../classgridfire_1_1reaction_1_1_reaction.html#a0b0b9ac498080aae91ffd466d1ae85a9',1,'gridfire::reaction::Reaction']]], - ['m_5frho_35',['m_rho',['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_r_h_s_functor.html#adc0f8e655af42f414dcb220a7224f261',1,'gridfire::solver::QSENetworkSolver::RHSFunctor::m_rho'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_jacobian_functor.html#a0907f7b6c1a87baf5e39fbc17a30df82',1,'gridfire::solver::QSENetworkSolver::JacobianFunctor::m_rho'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#ab0a0d4c166e97b971543cbbf2b0a1a2e',1,'gridfire::solver::QSENetworkSolver::EigenFunctor::m_rho'],['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_r_h_s_functor.html#a7d4f7f04c4ee6f0b519194f87aa265e7',1,'gridfire::solver::DirectNetworkSolver::RHSFunctor::m_rho'],['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_jacobian_functor.html#a932c41aa9f1aa38e56a03b27cd2ccda4',1,'gridfire::solver::DirectNetworkSolver::JacobianFunctor::m_rho']]], - ['m_5frhsadfun_36',['m_rhsADFun',['../classgridfire_1_1_graph_engine.html#a2e22b111f6d00ecc9e3804a71f1ce876',1,'gridfire::GraphEngine']]], - ['m_5fscreeningmodel_37',['m_screeningModel',['../classgridfire_1_1_graph_engine.html#af17cf3762abac3efcab9a8e87c961210',1,'gridfire::GraphEngine']]], - ['m_5fscreeningtype_38',['m_screeningType',['../classgridfire_1_1_graph_engine.html#a52edc3e88f1e8fc497e1e63972d63c80',1,'gridfire::GraphEngine']]], - ['m_5fsourcelabel_39',['m_sourceLabel',['../classgridfire_1_1reaction_1_1_reaction.html#a0185c6be5465d113f25e00aee1297cd6',1,'gridfire::reaction::Reaction']]], - ['m_5fsources_40',['m_sources',['../classgridfire_1_1reaction_1_1_logical_reaction.html#a7fe91d24e20ebc76d612f6ad742f476f',1,'gridfire::reaction::LogicalReaction']]], - ['m_5fspeciesindexmap_41',['m_speciesIndexMap',['../classgridfire_1_1_adaptive_engine_view.html#a5f66204a0ff5b27eed243afddecb0093',1,'gridfire::AdaptiveEngineView::m_speciesIndexMap'],['../classgridfire_1_1_file_defined_engine_view.html#aebd4a1a584f2784f1df3d503645be03b',1,'gridfire::FileDefinedEngineView::m_speciesIndexMap']]], - ['m_5fspeciestoindexmap_42',['m_speciesToIndexMap',['../classgridfire_1_1_graph_engine.html#ad8237c252145a75092202d00f5e1ddf7',1,'gridfire::GraphEngine']]], - ['m_5fstiff_43',['m_stiff',['../classgridfire_1_1approx8_1_1_approx8_network.html#a697cb49bebc8d0659eb791500c451c67',1,'gridfire::approx8::Approx8Network::m_stiff'],['../classgridfire_1_1_network.html#aefe364ae5af783e19e7b93bfd475566e',1,'gridfire::Network::m_stiff']]], - ['m_5fstoichiometrymatrix_44',['m_stoichiometryMatrix',['../classgridfire_1_1_graph_engine.html#ad1cb5fd32efc37668e2d9ecf0c72ad24',1,'gridfire::GraphEngine']]], - ['m_5ft9_45',['m_T9',['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_r_h_s_functor.html#a35026100163c7cc6fdb4c2e4d988b8cb',1,'gridfire::solver::QSENetworkSolver::RHSFunctor::m_T9'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_jacobian_functor.html#a85f88639447a9a706008efece82ff289',1,'gridfire::solver::QSENetworkSolver::JacobianFunctor::m_T9'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a6771ae56ddd9058954b42ee92a378309',1,'gridfire::solver::QSENetworkSolver::EigenFunctor::m_T9'],['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_r_h_s_functor.html#a082844f1eae0609e66620575210e8823',1,'gridfire::solver::DirectNetworkSolver::RHSFunctor::m_T9'],['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_jacobian_functor.html#a88f5fc48a555b369f1e2688d6bb67b83',1,'gridfire::solver::DirectNetworkSolver::JacobianFunctor::m_T9']]], - ['m_5ftmax_46',['m_tMax',['../classgridfire_1_1approx8_1_1_approx8_network.html#a6fadf388f07c160f1887a3cb72eaa869',1,'gridfire::approx8::Approx8Network']]], - ['m_5fy_47',['m_y',['../classgridfire_1_1approx8_1_1_approx8_network.html#abf9f13ff532917ddac4a7d987698836d',1,'gridfire::approx8::Approx8Network']]], - ['m_5fy_5fqse_48',['m_Y_QSE',['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_r_h_s_functor.html#a02c23ef20d616bf5a591a274b66cd75a',1,'gridfire::solver::QSENetworkSolver::RHSFunctor']]], - ['m_5fyfull_49',['m_YFull',['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a2dca32a9e0bea5aea2a565f94b99a8de',1,'gridfire::solver::QSENetworkSolver::EigenFunctor']]], - ['mainpage_2emd_50',['mainpage.md',['../mainpage_8md.html',1,'']]], - ['mapculledtofull_51',['mapCulledToFull',['../classgridfire_1_1_adaptive_engine_view.html#a68695f056b660e91285b7e5a931612e1',1,'gridfire::AdaptiveEngineView']]], - ['mapculledtofullreactionindex_52',['mapCulledToFullReactionIndex',['../classgridfire_1_1_adaptive_engine_view.html#a91e742642d8a8d9ec0620779927e5101',1,'gridfire::AdaptiveEngineView']]], - ['mapculledtofullspeciesindex_53',['mapCulledToFullSpeciesIndex',['../classgridfire_1_1_adaptive_engine_view.html#a256d14a333f9401039b826cc889761a8',1,'gridfire::AdaptiveEngineView']]], - ['mapfulltoculled_54',['mapFullToCulled',['../classgridfire_1_1_adaptive_engine_view.html#a3d9d8e862d1c2f0a8ba460c57f6a7f44',1,'gridfire::AdaptiveEngineView']]], - ['mapfulltoview_55',['mapFullToView',['../classgridfire_1_1_file_defined_engine_view.html#a97e5ee4651dbe6754678fe96e4702fee',1,'gridfire::FileDefinedEngineView']]], - ['mapviewtofull_56',['mapViewToFull',['../classgridfire_1_1_file_defined_engine_view.html#ac231044e37e0962f664f8465e1ccb022',1,'gridfire::FileDefinedEngineView']]], - ['mapviewtofullreactionindex_57',['mapViewToFullReactionIndex',['../classgridfire_1_1_file_defined_engine_view.html#ae7d6f0ff9076d59d1245c047bbd1bdb9',1,'gridfire::FileDefinedEngineView']]], - ['mapviewtofullspeciesindex_58',['mapViewToFullSpeciesIndex',['../classgridfire_1_1_file_defined_engine_view.html#a8d2c6b9a33b9c8c172bbd2c2e2e9ffaf',1,'gridfire::FileDefinedEngineView']]], - ['matrix_5ftype_59',['matrix_type',['../namespacegridfire_1_1approx8.html#a275aecf94e3145c2ff3d1756deda54ce',1,'gridfire::approx8']]], - ['mesanetworkfileparser_60',['MESANetworkFileParser',['../classgridfire_1_1io_1_1_m_e_s_a_network_file_parser.html',1,'gridfire::io::MESANetworkFileParser'],['../classgridfire_1_1io_1_1_m_e_s_a_network_file_parser.html#ac5963d0da6780de753df996b490f8d2c',1,'gridfire::io::MESANetworkFileParser::MESANetworkFileParser()']]], - ['min_5fabundance_5fthreshold_61',['MIN_ABUNDANCE_THRESHOLD',['../namespacegridfire.html#a96c062f94713921e5d7568ecedcdcb06',1,'gridfire']]], - ['min_5fdensity_5fthreshold_62',['MIN_DENSITY_THRESHOLD',['../namespacegridfire.html#ada3c137c014ecd8d06200fea2d1a9f50',1,'gridfire']]], - ['min_5fjacobian_5fthreshold_63',['MIN_JACOBIAN_THRESHOLD',['../namespacegridfire.html#ae01b1738df1921db565bcbd68dd6cf64',1,'gridfire']]], - ['mion_64',['mIon',['../structgridfire_1_1approx8_1_1_approx8_net.html#a928b7810cb2993d59d40aa73c2faef18',1,'gridfire::approx8::Approx8Net']]], - ['molarabundance_65',['MolarAbundance',['../structgridfire_1_1_net_in.html#a47781e8d5503e3b4f12d669e2cbcfb65',1,'gridfire::NetIn']]] + ['m_5fprecomputedreactions_24',['m_precomputedReactions',['../classgridfire_1_1_graph_engine.html#a5d431d5385b1219ba29689eb29601ea3',1,'gridfire::GraphEngine']]], + ['m_5fproducts_25',['m_products',['../classgridfire_1_1reaction_1_1_reaction.html#a4b5607ed413acdf29539b8a57461e49e',1,'gridfire::reaction::Reaction']]], + ['m_5fqsespeciesindices_26',['m_QSESpeciesIndices',['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_r_h_s_functor.html#a6be7259897a47ce480b289144b06e269',1,'gridfire::solver::QSENetworkSolver::RHSFunctor::m_QSESpeciesIndices'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_jacobian_functor.html#a1b92391170eb46771bd499aa8d115334',1,'gridfire::solver::QSENetworkSolver::JacobianFunctor::m_QSESpeciesIndices'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#abaf28fdd93e881ef56c24f541be7492d',1,'gridfire::solver::QSENetworkSolver::EigenFunctor::m_QSESpeciesIndices']]], + ['m_5fqvalue_27',['m_qValue',['../classgridfire_1_1reaction_1_1_reaction.html#a59122a2898bb9af640cc3e9aeb49028b',1,'gridfire::reaction::Reaction']]], + ['m_5fratecoefficients_28',['m_rateCoefficients',['../classgridfire_1_1reaction_1_1_reaction.html#aa61a9a024d7c4ff66a351ccd0277ec72',1,'gridfire::reaction::Reaction']]], + ['m_5frates_29',['m_rates',['../classgridfire_1_1reaction_1_1_logical_reaction.html#a81f75f0085f8a5a45169f0b7240c809d',1,'gridfire::reaction::LogicalReaction']]], + ['m_5freactants_30',['m_reactants',['../classgridfire_1_1reaction_1_1_reaction.html#a87a065b3c7806bcdb5eadb7de2978a11',1,'gridfire::reaction::Reaction']]], + ['m_5freactionidmap_31',['m_reactionIDMap',['../classgridfire_1_1_graph_engine.html#a5d6cc63b99b467c2a976d1fbaaa1dfa3',1,'gridfire::GraphEngine']]], + ['m_5freactionindexmap_32',['m_reactionIndexMap',['../classgridfire_1_1_adaptive_engine_view.html#a21c6e33bbf8c18fd5b5eaabb469054de',1,'gridfire::AdaptiveEngineView::m_reactionIndexMap'],['../classgridfire_1_1_file_defined_engine_view.html#af0a77a4749a15aae87bdecfccbd1736e',1,'gridfire::FileDefinedEngineView::m_reactionIndexMap']]], + ['m_5freactionnamemap_33',['m_reactionNameMap',['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#a3a4c2448865580001fd3c797b9f56979',1,'gridfire::reaction::TemplatedReactionSet']]], + ['m_5freactions_34',['m_reactions',['../classgridfire_1_1_graph_engine.html#acb7c4f5108b0efeae48ad15598e808c3',1,'gridfire::GraphEngine::m_reactions'],['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#a5962968fe478c79250e9d88d80a87600',1,'gridfire::reaction::TemplatedReactionSet::m_reactions']]], + ['m_5freverse_35',['m_reverse',['../classgridfire_1_1reaction_1_1_reaction.html#a0b0b9ac498080aae91ffd466d1ae85a9',1,'gridfire::reaction::Reaction']]], + ['m_5frho_36',['m_rho',['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_r_h_s_functor.html#adc0f8e655af42f414dcb220a7224f261',1,'gridfire::solver::QSENetworkSolver::RHSFunctor::m_rho'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_jacobian_functor.html#a0907f7b6c1a87baf5e39fbc17a30df82',1,'gridfire::solver::QSENetworkSolver::JacobianFunctor::m_rho'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#ab0a0d4c166e97b971543cbbf2b0a1a2e',1,'gridfire::solver::QSENetworkSolver::EigenFunctor::m_rho'],['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_r_h_s_functor.html#a7d4f7f04c4ee6f0b519194f87aa265e7',1,'gridfire::solver::DirectNetworkSolver::RHSFunctor::m_rho'],['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_jacobian_functor.html#a932c41aa9f1aa38e56a03b27cd2ccda4',1,'gridfire::solver::DirectNetworkSolver::JacobianFunctor::m_rho']]], + ['m_5frhsadfun_37',['m_rhsADFun',['../classgridfire_1_1_graph_engine.html#a2e22b111f6d00ecc9e3804a71f1ce876',1,'gridfire::GraphEngine']]], + ['m_5fscreeningmodel_38',['m_screeningModel',['../classgridfire_1_1_graph_engine.html#af17cf3762abac3efcab9a8e87c961210',1,'gridfire::GraphEngine']]], + ['m_5fscreeningtype_39',['m_screeningType',['../classgridfire_1_1_graph_engine.html#a52edc3e88f1e8fc497e1e63972d63c80',1,'gridfire::GraphEngine']]], + ['m_5fsourcelabel_40',['m_sourceLabel',['../classgridfire_1_1reaction_1_1_reaction.html#a0185c6be5465d113f25e00aee1297cd6',1,'gridfire::reaction::Reaction']]], + ['m_5fsources_41',['m_sources',['../classgridfire_1_1reaction_1_1_logical_reaction.html#a7fe91d24e20ebc76d612f6ad742f476f',1,'gridfire::reaction::LogicalReaction']]], + ['m_5fspeciesindexmap_42',['m_speciesIndexMap',['../classgridfire_1_1_adaptive_engine_view.html#a5f66204a0ff5b27eed243afddecb0093',1,'gridfire::AdaptiveEngineView::m_speciesIndexMap'],['../classgridfire_1_1_file_defined_engine_view.html#aebd4a1a584f2784f1df3d503645be03b',1,'gridfire::FileDefinedEngineView::m_speciesIndexMap']]], + ['m_5fspeciestoindexmap_43',['m_speciesToIndexMap',['../classgridfire_1_1_graph_engine.html#ad8237c252145a75092202d00f5e1ddf7',1,'gridfire::GraphEngine']]], + ['m_5fstiff_44',['m_stiff',['../classgridfire_1_1approx8_1_1_approx8_network.html#a697cb49bebc8d0659eb791500c451c67',1,'gridfire::approx8::Approx8Network::m_stiff'],['../classgridfire_1_1_network.html#aefe364ae5af783e19e7b93bfd475566e',1,'gridfire::Network::m_stiff']]], + ['m_5fstoichiometrymatrix_45',['m_stoichiometryMatrix',['../classgridfire_1_1_graph_engine.html#ad1cb5fd32efc37668e2d9ecf0c72ad24',1,'gridfire::GraphEngine']]], + ['m_5ft9_46',['m_T9',['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_r_h_s_functor.html#a35026100163c7cc6fdb4c2e4d988b8cb',1,'gridfire::solver::QSENetworkSolver::RHSFunctor::m_T9'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_jacobian_functor.html#a85f88639447a9a706008efece82ff289',1,'gridfire::solver::QSENetworkSolver::JacobianFunctor::m_T9'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a6771ae56ddd9058954b42ee92a378309',1,'gridfire::solver::QSENetworkSolver::EigenFunctor::m_T9'],['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_r_h_s_functor.html#a082844f1eae0609e66620575210e8823',1,'gridfire::solver::DirectNetworkSolver::RHSFunctor::m_T9'],['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_jacobian_functor.html#a88f5fc48a555b369f1e2688d6bb67b83',1,'gridfire::solver::DirectNetworkSolver::JacobianFunctor::m_T9']]], + ['m_5ftmax_47',['m_tMax',['../classgridfire_1_1approx8_1_1_approx8_network.html#a6fadf388f07c160f1887a3cb72eaa869',1,'gridfire::approx8::Approx8Network']]], + ['m_5fuseprecomputation_48',['m_usePrecomputation',['../classgridfire_1_1_graph_engine.html#a191cff35402d3c97c82c5c966a39d0de',1,'gridfire::GraphEngine']]], + ['m_5fy_49',['m_y',['../classgridfire_1_1approx8_1_1_approx8_network.html#abf9f13ff532917ddac4a7d987698836d',1,'gridfire::approx8::Approx8Network']]], + ['m_5fy_5fqse_50',['m_Y_QSE',['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_r_h_s_functor.html#a02c23ef20d616bf5a591a274b66cd75a',1,'gridfire::solver::QSENetworkSolver::RHSFunctor']]], + ['m_5fyfull_51',['m_YFull',['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a2dca32a9e0bea5aea2a565f94b99a8de',1,'gridfire::solver::QSENetworkSolver::EigenFunctor']]], + ['mainpage_2emd_52',['mainpage.md',['../mainpage_8md.html',1,'']]], + ['mapculledtofull_53',['mapCulledToFull',['../classgridfire_1_1_adaptive_engine_view.html#a68695f056b660e91285b7e5a931612e1',1,'gridfire::AdaptiveEngineView']]], + ['mapculledtofullreactionindex_54',['mapCulledToFullReactionIndex',['../classgridfire_1_1_adaptive_engine_view.html#a91e742642d8a8d9ec0620779927e5101',1,'gridfire::AdaptiveEngineView']]], + ['mapculledtofullspeciesindex_55',['mapCulledToFullSpeciesIndex',['../classgridfire_1_1_adaptive_engine_view.html#a256d14a333f9401039b826cc889761a8',1,'gridfire::AdaptiveEngineView']]], + ['mapfulltoculled_56',['mapFullToCulled',['../classgridfire_1_1_adaptive_engine_view.html#a3d9d8e862d1c2f0a8ba460c57f6a7f44',1,'gridfire::AdaptiveEngineView']]], + ['mapfulltoview_57',['mapFullToView',['../classgridfire_1_1_file_defined_engine_view.html#a97e5ee4651dbe6754678fe96e4702fee',1,'gridfire::FileDefinedEngineView']]], + ['mapviewtofull_58',['mapViewToFull',['../classgridfire_1_1_file_defined_engine_view.html#adba3c11b11a04b2907c1635210d73dee',1,'gridfire::FileDefinedEngineView']]], + ['mapviewtofullreactionindex_59',['mapViewToFullReactionIndex',['../classgridfire_1_1_file_defined_engine_view.html#a74217a1f8fd8e6daff969cb17885315c',1,'gridfire::FileDefinedEngineView']]], + ['mapviewtofullspeciesindex_60',['mapViewToFullSpeciesIndex',['../classgridfire_1_1_file_defined_engine_view.html#aa2373955ef5b0eabf7a57c7208e38bb1',1,'gridfire::FileDefinedEngineView']]], + ['matrix_5ftype_61',['matrix_type',['../namespacegridfire_1_1approx8.html#a275aecf94e3145c2ff3d1756deda54ce',1,'gridfire::approx8']]], + ['mesanetworkfileparser_62',['MESANetworkFileParser',['../classgridfire_1_1io_1_1_m_e_s_a_network_file_parser.html',1,'gridfire::io::MESANetworkFileParser'],['../classgridfire_1_1io_1_1_m_e_s_a_network_file_parser.html#ac5963d0da6780de753df996b490f8d2c',1,'gridfire::io::MESANetworkFileParser::MESANetworkFileParser()']]], + ['min_5fabundance_5fthreshold_63',['MIN_ABUNDANCE_THRESHOLD',['../namespacegridfire.html#a96c062f94713921e5d7568ecedcdcb06',1,'gridfire']]], + ['min_5fdensity_5fthreshold_64',['MIN_DENSITY_THRESHOLD',['../namespacegridfire.html#ada3c137c014ecd8d06200fea2d1a9f50',1,'gridfire']]], + ['min_5fjacobian_5fthreshold_65',['MIN_JACOBIAN_THRESHOLD',['../namespacegridfire.html#ae01b1738df1921db565bcbd68dd6cf64',1,'gridfire']]], + ['mion_66',['mIon',['../structgridfire_1_1approx8_1_1_approx8_net.html#a928b7810cb2993d59d40aa73c2faef18',1,'gridfire::approx8::Approx8Net']]], + ['molarabundance_67',['MolarAbundance',['../structgridfire_1_1_net_in.html#a47781e8d5503e3b4f12d669e2cbcfb65',1,'gridfire::NetIn']]] ]; diff --git a/docs/html/search/all_c.js b/docs/html/search/all_c.js index 469aba5e..be9e8abe 100644 --- a/docs/html/search/all_c.js +++ b/docs/html/search/all_c.js @@ -5,25 +5,26 @@ var searchData= ['n15pa_5frate_2',['n15pa_rate',['../namespacegridfire_1_1approx8.html#a9a90b83dd4aa2dcc928bd14f4678dcef',1,'gridfire::approx8']]], ['n15pg_5ffrac_3',['n15pg_frac',['../namespacegridfire_1_1approx8.html#ac309c160c806208bf01bebeb29c23896',1,'gridfire::approx8']]], ['n15pg_5frate_4',['n15pg_rate',['../namespacegridfire_1_1approx8.html#acdbb3ee2ef22bfd9c836324285d0da98',1,'gridfire::approx8']]], - ['ne20a_5frate_5',['ne20a_rate',['../namespacegridfire_1_1approx8.html#ad7a6f894fa4bdeebb4cae0eba3b2c210',1,'gridfire::approx8']]], - ['netin_6',['NetIn',['../structgridfire_1_1_net_in.html',1,'gridfire']]], - ['netout_7',['NetOut',['../structgridfire_1_1_net_out.html',1,'gridfire']]], - ['network_8',['Network',['../classgridfire_1_1_network.html',1,'gridfire::Network'],['../classgridfire_1_1_network.html#a20b631f2404bfdec2333f680a62abf55',1,'gridfire::Network::Network()']]], - ['network_20library_9',['GridFire: A Nuclear Reaction Network Library',['../index.html#autotoc_md0',1,'']]], - ['network_2ecpp_10',['network.cpp',['../network_8cpp.html',1,'']]], - ['network_2eh_11',['network.h',['../network_8h.html',1,'']]], - ['network_5ffile_2ecpp_12',['network_file.cpp',['../network__file_8cpp.html',1,'']]], - ['network_5ffile_2eh_13',['network_file.h',['../network__file_8h.html',1,'']]], - ['networkfileparser_14',['NetworkFileParser',['../classgridfire_1_1io_1_1_network_file_parser.html',1,'gridfire::io']]], - ['networkformat_15',['NetworkFormat',['../namespacegridfire.html#a3f3d6b3f9742b70e62049ccefbb60f37',1,'gridfire']]], - ['networksolverstrategy_16',['NetworkSolverStrategy',['../classgridfire_1_1solver_1_1_network_solver_strategy.html',1,'gridfire::solver::NetworkSolverStrategy< EngineT >'],['../classgridfire_1_1solver_1_1_network_solver_strategy.html#a01cbbec0eb5c3a60f50da38cdaf66505',1,'gridfire::solver::NetworkSolverStrategy::NetworkSolverStrategy()']]], - ['networksolverstrategy_3c_20adaptiveengineview_20_3e_17',['NetworkSolverStrategy< AdaptiveEngineView >',['../classgridfire_1_1solver_1_1_network_solver_strategy.html',1,'gridfire::solver']]], - ['networksolverstrategy_3c_20dynamicengine_20_3e_18',['NetworkSolverStrategy< DynamicEngine >',['../classgridfire_1_1solver_1_1_network_solver_strategy.html',1,'gridfire::solver']]], - ['networksolverstrategy_3c_20engine_20_3e_19',['NetworkSolverStrategy< Engine >',['../classgridfire_1_1solver_1_1_network_solver_strategy.html',1,'gridfire::solver']]], - ['niso_20',['nIso',['../structgridfire_1_1approx8_1_1_approx8_net.html#a31928b4041479da6515a90569322fc02',1,'gridfire::approx8::Approx8Net']]], - ['nuclear_20reaction_20network_20library_21',['GridFire: A Nuclear Reaction Network Library',['../index.html#autotoc_md0',1,'']]], - ['nuclearenergygenerationrate_22',['nuclearEnergyGenerationRate',['../structgridfire_1_1_step_derivatives.html#ab4aeb41be952c7b5844e1ee81fef9008',1,'gridfire::StepDerivatives']]], - ['num_5fspecies_23',['num_species',['../classgridfire_1_1reaction_1_1_reaction.html#a1d3c8ab6d55155f9a21ad80ed8b9ef97',1,'gridfire::reaction::Reaction']]], - ['num_5fsteps_24',['num_steps',['../structgridfire_1_1_net_out.html#a51c16703132cf739ec2fd89eae7badd6',1,'gridfire::NetOut']]], - ['nvar_25',['nVar',['../structgridfire_1_1approx8_1_1_approx8_net.html#a7218aa9b3dbe7c6eca52119e115692db',1,'gridfire::approx8::Approx8Net']]] + ['na_5',['Na',['../structgridfire_1_1_graph_engine_1_1constants.html#a5ccc874d6704615e0ce54c14dc67699d',1,'gridfire::GraphEngine::constants']]], + ['ne20a_5frate_6',['ne20a_rate',['../namespacegridfire_1_1approx8.html#ad7a6f894fa4bdeebb4cae0eba3b2c210',1,'gridfire::approx8']]], + ['netin_7',['NetIn',['../structgridfire_1_1_net_in.html',1,'gridfire']]], + ['netout_8',['NetOut',['../structgridfire_1_1_net_out.html',1,'gridfire']]], + ['network_9',['Network',['../classgridfire_1_1_network.html',1,'gridfire::Network'],['../classgridfire_1_1_network.html#a20b631f2404bfdec2333f680a62abf55',1,'gridfire::Network::Network()']]], + ['network_20library_10',['GridFire: A Nuclear Reaction Network Library',['../index.html#autotoc_md0',1,'']]], + ['network_2ecpp_11',['network.cpp',['../network_8cpp.html',1,'']]], + ['network_2eh_12',['network.h',['../network_8h.html',1,'']]], + ['network_5ffile_2ecpp_13',['network_file.cpp',['../network__file_8cpp.html',1,'']]], + ['network_5ffile_2eh_14',['network_file.h',['../network__file_8h.html',1,'']]], + ['networkfileparser_15',['NetworkFileParser',['../classgridfire_1_1io_1_1_network_file_parser.html',1,'gridfire::io']]], + ['networkformat_16',['NetworkFormat',['../namespacegridfire.html#a3f3d6b3f9742b70e62049ccefbb60f37',1,'gridfire']]], + ['networksolverstrategy_17',['NetworkSolverStrategy',['../classgridfire_1_1solver_1_1_network_solver_strategy.html',1,'gridfire::solver::NetworkSolverStrategy< EngineT >'],['../classgridfire_1_1solver_1_1_network_solver_strategy.html#a01cbbec0eb5c3a60f50da38cdaf66505',1,'gridfire::solver::NetworkSolverStrategy::NetworkSolverStrategy()']]], + ['networksolverstrategy_3c_20adaptiveengineview_20_3e_18',['NetworkSolverStrategy< AdaptiveEngineView >',['../classgridfire_1_1solver_1_1_network_solver_strategy.html',1,'gridfire::solver']]], + ['networksolverstrategy_3c_20dynamicengine_20_3e_19',['NetworkSolverStrategy< DynamicEngine >',['../classgridfire_1_1solver_1_1_network_solver_strategy.html',1,'gridfire::solver']]], + ['networksolverstrategy_3c_20engine_20_3e_20',['NetworkSolverStrategy< Engine >',['../classgridfire_1_1solver_1_1_network_solver_strategy.html',1,'gridfire::solver']]], + ['niso_21',['nIso',['../structgridfire_1_1approx8_1_1_approx8_net.html#a31928b4041479da6515a90569322fc02',1,'gridfire::approx8::Approx8Net']]], + ['nuclear_20reaction_20network_20library_22',['GridFire: A Nuclear Reaction Network Library',['../index.html#autotoc_md0',1,'']]], + ['nuclearenergygenerationrate_23',['nuclearEnergyGenerationRate',['../structgridfire_1_1_step_derivatives.html#ab4aeb41be952c7b5844e1ee81fef9008',1,'gridfire::StepDerivatives']]], + ['num_5fspecies_24',['num_species',['../classgridfire_1_1reaction_1_1_reaction.html#a1d3c8ab6d55155f9a21ad80ed8b9ef97',1,'gridfire::reaction::Reaction']]], + ['num_5fsteps_25',['num_steps',['../structgridfire_1_1_net_out.html#a51c16703132cf739ec2fd89eae7badd6',1,'gridfire::NetOut']]], + ['nvar_26',['nVar',['../structgridfire_1_1approx8_1_1_approx8_net.html#a7218aa9b3dbe7c6eca52119e115692db',1,'gridfire::approx8::Approx8Net']]] ]; diff --git a/docs/html/search/all_e.js b/docs/html/search/all_e.js index 8f4af3a7..4601bcaa 100644 --- a/docs/html/search/all_e.js +++ b/docs/html/search/all_e.js @@ -9,8 +9,10 @@ var searchData= ['populatereactionidmap_6',['populateReactionIDMap',['../classgridfire_1_1_graph_engine.html#a26602e1b3c610780a47b5a6511d6d567',1,'gridfire::GraphEngine']]], ['populatespeciestoindexmap_7',['populateSpeciesToIndexMap',['../classgridfire_1_1_graph_engine.html#a47202c43342b96480070874bffce1391',1,'gridfire::GraphEngine']]], ['pp_5frate_8',['pp_rate',['../namespacegridfire_1_1approx8.html#a16739298c01e56967ce784a9a957439f',1,'gridfire::approx8']]], - ['product_5fspecies_9',['product_species',['../classgridfire_1_1reaction_1_1_reaction.html#a01c67726efbaa2ff8e4d6f2c965f485c',1,'gridfire::reaction::Reaction']]], - ['products_10',['products',['../classgridfire_1_1reaction_1_1_reaction.html#a6e2ff61b9e8409f2a561663628b8ce02',1,'gridfire::reaction::Reaction']]], - ['products_5fstr_11',['products_str',['../structgridfire_1_1reaclib_1_1_reaction_record.html#af1b1d3b0308d965ef0697b247fcf9082',1,'gridfire::reaclib::ReactionRecord']]], - ['project_12',['Building the Project',['../index.html#autotoc_md9',1,'']]] + ['precomputedreaction_9',['PrecomputedReaction',['../structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html',1,'gridfire::GraphEngine']]], + ['precomputenetwork_10',['precomputeNetwork',['../classgridfire_1_1_graph_engine.html#a92644bc333bff69c5685be4552ca12fd',1,'gridfire::GraphEngine']]], + ['product_5fspecies_11',['product_species',['../classgridfire_1_1reaction_1_1_reaction.html#a01c67726efbaa2ff8e4d6f2c965f485c',1,'gridfire::reaction::Reaction']]], + ['products_12',['products',['../classgridfire_1_1reaction_1_1_reaction.html#a6e2ff61b9e8409f2a561663628b8ce02',1,'gridfire::reaction::Reaction']]], + ['products_5fstr_13',['products_str',['../structgridfire_1_1reaclib_1_1_reaction_record.html#af1b1d3b0308d965ef0697b247fcf9082',1,'gridfire::reaclib::ReactionRecord']]], + ['project_14',['Building the Project',['../index.html#autotoc_md9',1,'']]] ]; diff --git a/docs/html/search/classes_10.js b/docs/html/search/classes_10.js index 7d857f9a..491485fa 100644 --- a/docs/html/search/classes_10.js +++ b/docs/html/search/classes_10.js @@ -1,6 +1,6 @@ var searchData= [ - ['templatedreactionset_0',['TemplatedReactionSet',['../classgridfire_1_1reaction_1_1_templated_reaction_set.html',1,'gridfire::reaction']]], - ['templatedreactionset_3c_20logicalreaction_20_3e_1',['TemplatedReactionSet< LogicalReaction >',['../classgridfire_1_1reaction_1_1_templated_reaction_set.html',1,'gridfire::reaction']]], - ['templatedreactionset_3c_20reaction_20_3e_2',['TemplatedReactionSet< Reaction >',['../classgridfire_1_1reaction_1_1_templated_reaction_set.html',1,'gridfire::reaction']]] + ['screeningmodel_0',['ScreeningModel',['../classgridfire_1_1screening_1_1_screening_model.html',1,'gridfire::screening']]], + ['simplereactionlistfileparser_1',['SimpleReactionListFileParser',['../classgridfire_1_1io_1_1_simple_reaction_list_file_parser.html',1,'gridfire::io']]], + ['stepderivatives_2',['StepDerivatives',['../structgridfire_1_1_step_derivatives.html',1,'gridfire']]] ]; diff --git a/docs/html/search/classes_11.js b/docs/html/search/classes_11.js index 1dd77162..7d857f9a 100644 --- a/docs/html/search/classes_11.js +++ b/docs/html/search/classes_11.js @@ -1,4 +1,6 @@ var searchData= [ - ['weakscreeningmodel_0',['WeakScreeningModel',['../classgridfire_1_1screening_1_1_weak_screening_model.html',1,'gridfire::screening']]] + ['templatedreactionset_0',['TemplatedReactionSet',['../classgridfire_1_1reaction_1_1_templated_reaction_set.html',1,'gridfire::reaction']]], + ['templatedreactionset_3c_20logicalreaction_20_3e_1',['TemplatedReactionSet< LogicalReaction >',['../classgridfire_1_1reaction_1_1_templated_reaction_set.html',1,'gridfire::reaction']]], + ['templatedreactionset_3c_20reaction_20_3e_2',['TemplatedReactionSet< Reaction >',['../classgridfire_1_1reaction_1_1_templated_reaction_set.html',1,'gridfire::reaction']]] ]; diff --git a/docs/html/search/classes_12.js b/docs/html/search/classes_12.js new file mode 100644 index 00000000..1dd77162 --- /dev/null +++ b/docs/html/search/classes_12.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['weakscreeningmodel_0',['WeakScreeningModel',['../classgridfire_1_1screening_1_1_weak_screening_model.html',1,'gridfire::screening']]] +]; diff --git a/docs/html/search/classes_2.js b/docs/html/search/classes_2.js index 133c781d..593f55e9 100644 --- a/docs/html/search/classes_2.js +++ b/docs/html/search/classes_2.js @@ -1,6 +1,4 @@ var searchData= [ - ['directnetworksolver_0',['DirectNetworkSolver',['../classgridfire_1_1solver_1_1_direct_network_solver.html',1,'gridfire::solver']]], - ['dynamicengine_1',['DynamicEngine',['../classgridfire_1_1_dynamic_engine.html',1,'gridfire']]], - ['dynamicqsespeciesindices_2',['dynamicQSESpeciesIndices',['../structgridfire_1_1solver_1_1dynamic_q_s_e_species_indices.html',1,'gridfire::solver']]] + ['constants_0',['constants',['../structgridfire_1_1_graph_engine_1_1constants.html',1,'gridfire::GraphEngine']]] ]; diff --git a/docs/html/search/classes_3.js b/docs/html/search/classes_3.js index 2bf5a936..133c781d 100644 --- a/docs/html/search/classes_3.js +++ b/docs/html/search/classes_3.js @@ -1,7 +1,6 @@ var searchData= [ - ['eigenfunctor_0',['EigenFunctor',['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html',1,'gridfire::solver::QSENetworkSolver']]], - ['engine_1',['Engine',['../classgridfire_1_1_engine.html',1,'gridfire']]], - ['engineview_2',['EngineView',['../classgridfire_1_1_engine_view.html',1,'gridfire']]], - ['engineview_3c_20dynamicengine_20_3e_3',['EngineView< DynamicEngine >',['../classgridfire_1_1_engine_view.html',1,'gridfire']]] + ['directnetworksolver_0',['DirectNetworkSolver',['../classgridfire_1_1solver_1_1_direct_network_solver.html',1,'gridfire::solver']]], + ['dynamicengine_1',['DynamicEngine',['../classgridfire_1_1_dynamic_engine.html',1,'gridfire']]], + ['dynamicqsespeciesindices_2',['dynamicQSESpeciesIndices',['../structgridfire_1_1solver_1_1dynamic_q_s_e_species_indices.html',1,'gridfire::solver']]] ]; diff --git a/docs/html/search/classes_4.js b/docs/html/search/classes_4.js index ffbef3ed..2bf5a936 100644 --- a/docs/html/search/classes_4.js +++ b/docs/html/search/classes_4.js @@ -1,4 +1,7 @@ var searchData= [ - ['filedefinedengineview_0',['FileDefinedEngineView',['../classgridfire_1_1_file_defined_engine_view.html',1,'gridfire']]] + ['eigenfunctor_0',['EigenFunctor',['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html',1,'gridfire::solver::QSENetworkSolver']]], + ['engine_1',['Engine',['../classgridfire_1_1_engine.html',1,'gridfire']]], + ['engineview_2',['EngineView',['../classgridfire_1_1_engine_view.html',1,'gridfire']]], + ['engineview_3c_20dynamicengine_20_3e_3',['EngineView< DynamicEngine >',['../classgridfire_1_1_engine_view.html',1,'gridfire']]] ]; diff --git a/docs/html/search/classes_5.js b/docs/html/search/classes_5.js index f54c5004..ffbef3ed 100644 --- a/docs/html/search/classes_5.js +++ b/docs/html/search/classes_5.js @@ -1,4 +1,4 @@ var searchData= [ - ['graphengine_0',['GraphEngine',['../classgridfire_1_1_graph_engine.html',1,'gridfire']]] + ['filedefinedengineview_0',['FileDefinedEngineView',['../classgridfire_1_1_file_defined_engine_view.html',1,'gridfire']]] ]; diff --git a/docs/html/search/classes_6.js b/docs/html/search/classes_6.js index 3d2054be..f54c5004 100644 --- a/docs/html/search/classes_6.js +++ b/docs/html/search/classes_6.js @@ -1,6 +1,4 @@ var searchData= [ - ['hash_3c_20gridfire_3a_3areaction_3a_3alogicalreactionset_20_3e_0',['hash< gridfire::reaction::LogicalReactionSet >',['../structstd_1_1hash_3_01gridfire_1_1reaction_1_1_logical_reaction_set_01_4.html',1,'std']]], - ['hash_3c_20gridfire_3a_3areaction_3a_3areaction_20_3e_1',['hash< gridfire::reaction::Reaction >',['../structstd_1_1hash_3_01gridfire_1_1reaction_1_1_reaction_01_4.html',1,'std']]], - ['hash_3c_20gridfire_3a_3areaction_3a_3areactionset_20_3e_2',['hash< gridfire::reaction::ReactionSet >',['../structstd_1_1hash_3_01gridfire_1_1reaction_1_1_reaction_set_01_4.html',1,'std']]] + ['graphengine_0',['GraphEngine',['../classgridfire_1_1_graph_engine.html',1,'gridfire']]] ]; diff --git a/docs/html/search/classes_7.js b/docs/html/search/classes_7.js index 8ee9929d..3d2054be 100644 --- a/docs/html/search/classes_7.js +++ b/docs/html/search/classes_7.js @@ -1,5 +1,6 @@ var searchData= [ - ['jacobian_0',['Jacobian',['../structgridfire_1_1approx8_1_1_jacobian.html',1,'gridfire::approx8']]], - ['jacobianfunctor_1',['JacobianFunctor',['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_jacobian_functor.html',1,'gridfire::solver::DirectNetworkSolver::JacobianFunctor'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_jacobian_functor.html',1,'gridfire::solver::QSENetworkSolver::JacobianFunctor']]] + ['hash_3c_20gridfire_3a_3areaction_3a_3alogicalreactionset_20_3e_0',['hash< gridfire::reaction::LogicalReactionSet >',['../structstd_1_1hash_3_01gridfire_1_1reaction_1_1_logical_reaction_set_01_4.html',1,'std']]], + ['hash_3c_20gridfire_3a_3areaction_3a_3areaction_20_3e_1',['hash< gridfire::reaction::Reaction >',['../structstd_1_1hash_3_01gridfire_1_1reaction_1_1_reaction_01_4.html',1,'std']]], + ['hash_3c_20gridfire_3a_3areaction_3a_3areactionset_20_3e_2',['hash< gridfire::reaction::ReactionSet >',['../structstd_1_1hash_3_01gridfire_1_1reaction_1_1_reaction_set_01_4.html',1,'std']]] ]; diff --git a/docs/html/search/classes_8.js b/docs/html/search/classes_8.js index c677455b..8ee9929d 100644 --- a/docs/html/search/classes_8.js +++ b/docs/html/search/classes_8.js @@ -1,4 +1,5 @@ var searchData= [ - ['logicalreaction_0',['LogicalReaction',['../classgridfire_1_1reaction_1_1_logical_reaction.html',1,'gridfire::reaction']]] + ['jacobian_0',['Jacobian',['../structgridfire_1_1approx8_1_1_jacobian.html',1,'gridfire::approx8']]], + ['jacobianfunctor_1',['JacobianFunctor',['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_jacobian_functor.html',1,'gridfire::solver::DirectNetworkSolver::JacobianFunctor'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_jacobian_functor.html',1,'gridfire::solver::QSENetworkSolver::JacobianFunctor']]] ]; diff --git a/docs/html/search/classes_9.js b/docs/html/search/classes_9.js index 64be1fd6..c677455b 100644 --- a/docs/html/search/classes_9.js +++ b/docs/html/search/classes_9.js @@ -1,4 +1,4 @@ var searchData= [ - ['mesanetworkfileparser_0',['MESANetworkFileParser',['../classgridfire_1_1io_1_1_m_e_s_a_network_file_parser.html',1,'gridfire::io']]] + ['logicalreaction_0',['LogicalReaction',['../classgridfire_1_1reaction_1_1_logical_reaction.html',1,'gridfire::reaction']]] ]; diff --git a/docs/html/search/classes_a.js b/docs/html/search/classes_a.js index 8cc4de30..64be1fd6 100644 --- a/docs/html/search/classes_a.js +++ b/docs/html/search/classes_a.js @@ -1,11 +1,4 @@ var searchData= [ - ['netin_0',['NetIn',['../structgridfire_1_1_net_in.html',1,'gridfire']]], - ['netout_1',['NetOut',['../structgridfire_1_1_net_out.html',1,'gridfire']]], - ['network_2',['Network',['../classgridfire_1_1_network.html',1,'gridfire']]], - ['networkfileparser_3',['NetworkFileParser',['../classgridfire_1_1io_1_1_network_file_parser.html',1,'gridfire::io']]], - ['networksolverstrategy_4',['NetworkSolverStrategy',['../classgridfire_1_1solver_1_1_network_solver_strategy.html',1,'gridfire::solver']]], - ['networksolverstrategy_3c_20adaptiveengineview_20_3e_5',['NetworkSolverStrategy< AdaptiveEngineView >',['../classgridfire_1_1solver_1_1_network_solver_strategy.html',1,'gridfire::solver']]], - ['networksolverstrategy_3c_20dynamicengine_20_3e_6',['NetworkSolverStrategy< DynamicEngine >',['../classgridfire_1_1solver_1_1_network_solver_strategy.html',1,'gridfire::solver']]], - ['networksolverstrategy_3c_20engine_20_3e_7',['NetworkSolverStrategy< Engine >',['../classgridfire_1_1solver_1_1_network_solver_strategy.html',1,'gridfire::solver']]] + ['mesanetworkfileparser_0',['MESANetworkFileParser',['../classgridfire_1_1io_1_1_m_e_s_a_network_file_parser.html',1,'gridfire::io']]] ]; diff --git a/docs/html/search/classes_b.js b/docs/html/search/classes_b.js index 4b6e4f95..8cc4de30 100644 --- a/docs/html/search/classes_b.js +++ b/docs/html/search/classes_b.js @@ -1,4 +1,11 @@ var searchData= [ - ['ode_0',['ODE',['../structgridfire_1_1approx8_1_1_o_d_e.html',1,'gridfire::approx8']]] + ['netin_0',['NetIn',['../structgridfire_1_1_net_in.html',1,'gridfire']]], + ['netout_1',['NetOut',['../structgridfire_1_1_net_out.html',1,'gridfire']]], + ['network_2',['Network',['../classgridfire_1_1_network.html',1,'gridfire']]], + ['networkfileparser_3',['NetworkFileParser',['../classgridfire_1_1io_1_1_network_file_parser.html',1,'gridfire::io']]], + ['networksolverstrategy_4',['NetworkSolverStrategy',['../classgridfire_1_1solver_1_1_network_solver_strategy.html',1,'gridfire::solver']]], + ['networksolverstrategy_3c_20adaptiveengineview_20_3e_5',['NetworkSolverStrategy< AdaptiveEngineView >',['../classgridfire_1_1solver_1_1_network_solver_strategy.html',1,'gridfire::solver']]], + ['networksolverstrategy_3c_20dynamicengine_20_3e_6',['NetworkSolverStrategy< DynamicEngine >',['../classgridfire_1_1solver_1_1_network_solver_strategy.html',1,'gridfire::solver']]], + ['networksolverstrategy_3c_20engine_20_3e_7',['NetworkSolverStrategy< Engine >',['../classgridfire_1_1solver_1_1_network_solver_strategy.html',1,'gridfire::solver']]] ]; diff --git a/docs/html/search/classes_c.js b/docs/html/search/classes_c.js index 8cf5d300..4b6e4f95 100644 --- a/docs/html/search/classes_c.js +++ b/docs/html/search/classes_c.js @@ -1,4 +1,4 @@ var searchData= [ - ['parsednetworkdata_0',['ParsedNetworkData',['../structgridfire_1_1io_1_1_parsed_network_data.html',1,'gridfire::io']]] + ['ode_0',['ODE',['../structgridfire_1_1approx8_1_1_o_d_e.html',1,'gridfire::approx8']]] ]; diff --git a/docs/html/search/classes_d.js b/docs/html/search/classes_d.js index 15405506..eaf777ca 100644 --- a/docs/html/search/classes_d.js +++ b/docs/html/search/classes_d.js @@ -1,4 +1,5 @@ var searchData= [ - ['qsenetworksolver_0',['QSENetworkSolver',['../classgridfire_1_1solver_1_1_q_s_e_network_solver.html',1,'gridfire::solver']]] + ['parsednetworkdata_0',['ParsedNetworkData',['../structgridfire_1_1io_1_1_parsed_network_data.html',1,'gridfire::io']]], + ['precomputedreaction_1',['PrecomputedReaction',['../structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html',1,'gridfire::GraphEngine']]] ]; diff --git a/docs/html/search/classes_e.js b/docs/html/search/classes_e.js index 8d4f1cca..15405506 100644 --- a/docs/html/search/classes_e.js +++ b/docs/html/search/classes_e.js @@ -1,8 +1,4 @@ var searchData= [ - ['ratecoefficientset_0',['RateCoefficientSet',['../structgridfire_1_1reaction_1_1_rate_coefficient_set.html',1,'gridfire::reaction']]], - ['reaction_1',['Reaction',['../classgridfire_1_1reaction_1_1_reaction.html',1,'gridfire::reaction']]], - ['reactionflow_2',['ReactionFlow',['../structgridfire_1_1_adaptive_engine_view_1_1_reaction_flow.html',1,'gridfire::AdaptiveEngineView']]], - ['reactionrecord_3',['ReactionRecord',['../structgridfire_1_1reaclib_1_1_reaction_record.html',1,'gridfire::reaclib']]], - ['rhsfunctor_4',['RHSFunctor',['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_r_h_s_functor.html',1,'gridfire::solver::DirectNetworkSolver::RHSFunctor'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_r_h_s_functor.html',1,'gridfire::solver::QSENetworkSolver::RHSFunctor']]] + ['qsenetworksolver_0',['QSENetworkSolver',['../classgridfire_1_1solver_1_1_q_s_e_network_solver.html',1,'gridfire::solver']]] ]; diff --git a/docs/html/search/classes_f.js b/docs/html/search/classes_f.js index 491485fa..8d4f1cca 100644 --- a/docs/html/search/classes_f.js +++ b/docs/html/search/classes_f.js @@ -1,6 +1,8 @@ var searchData= [ - ['screeningmodel_0',['ScreeningModel',['../classgridfire_1_1screening_1_1_screening_model.html',1,'gridfire::screening']]], - ['simplereactionlistfileparser_1',['SimpleReactionListFileParser',['../classgridfire_1_1io_1_1_simple_reaction_list_file_parser.html',1,'gridfire::io']]], - ['stepderivatives_2',['StepDerivatives',['../structgridfire_1_1_step_derivatives.html',1,'gridfire']]] + ['ratecoefficientset_0',['RateCoefficientSet',['../structgridfire_1_1reaction_1_1_rate_coefficient_set.html',1,'gridfire::reaction']]], + ['reaction_1',['Reaction',['../classgridfire_1_1reaction_1_1_reaction.html',1,'gridfire::reaction']]], + ['reactionflow_2',['ReactionFlow',['../structgridfire_1_1_adaptive_engine_view_1_1_reaction_flow.html',1,'gridfire::AdaptiveEngineView']]], + ['reactionrecord_3',['ReactionRecord',['../structgridfire_1_1reaclib_1_1_reaction_record.html',1,'gridfire::reaclib']]], + ['rhsfunctor_4',['RHSFunctor',['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_r_h_s_functor.html',1,'gridfire::solver::DirectNetworkSolver::RHSFunctor'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_r_h_s_functor.html',1,'gridfire::solver::QSENetworkSolver::RHSFunctor']]] ]; diff --git a/docs/html/search/functions_11.js b/docs/html/search/functions_11.js index 5702d4a3..f1c9e5b8 100644 --- a/docs/html/search/functions_11.js +++ b/docs/html/search/functions_11.js @@ -3,14 +3,15 @@ var searchData= ['selectscreeningmodel_0',['selectScreeningModel',['../namespacegridfire_1_1screening.html#a6ca8556d27ac373e176f5b23437c416e',1,'gridfire::screening']]], ['setformat_1',['setFormat',['../classgridfire_1_1_network.html#a787c601f6e4bd06600bf946efbcc98d4',1,'gridfire::Network']]], ['setnetworkfile_2',['setNetworkFile',['../classgridfire_1_1_file_defined_engine_view.html#a92f14da849e99d07c1ff1347addb9263',1,'gridfire::FileDefinedEngineView']]], - ['setscreeningmodel_3',['setScreeningModel',['../classgridfire_1_1_dynamic_engine.html#a3fb44b6f55563a2f590f31916528f2bd',1,'gridfire::DynamicEngine::setScreeningModel()'],['../classgridfire_1_1_graph_engine.html#a8110e687844f921438bb517e1d8ce62f',1,'gridfire::GraphEngine::setScreeningModel()'],['../classgridfire_1_1_adaptive_engine_view.html#aae4ddbef1c4e2202fd236221a4bf376b',1,'gridfire::AdaptiveEngineView::setScreeningModel()'],['../classgridfire_1_1_file_defined_engine_view.html#ad96bbee6d3d37b50d9236a975ef704c0',1,'gridfire::FileDefinedEngineView::setScreeningModel()']]], - ['setstiff_4',['setStiff',['../classgridfire_1_1approx8_1_1_approx8_network.html#aefed972081514c29cdaaa1efd857ad8d',1,'gridfire::approx8::Approx8Network::setStiff()'],['../classgridfire_1_1_network.html#a84de2d691af06c4b62cfab5022b1e8fe',1,'gridfire::Network::setStiff()']]], - ['shouldupdateview_5',['shouldUpdateView',['../classgridfire_1_1solver_1_1_q_s_e_network_solver.html#a35f1f6ede393f15c8bb8862f3f1c3b07',1,'gridfire::solver::QSENetworkSolver']]], - ['simplereactionlistfileparser_6',['SimpleReactionListFileParser',['../classgridfire_1_1io_1_1_simple_reaction_list_file_parser.html#afc8ed91e8c98205c505e3d9f0cff1993',1,'gridfire::io::SimpleReactionListFileParser']]], - ['size_7',['size',['../classgridfire_1_1reaction_1_1_logical_reaction.html#afa41050855b842c63db16c94d2e9b897',1,'gridfire::reaction::LogicalReaction::size()'],['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#a6a1dc3c56690386ae9f6aa5c2aa37ba2',1,'gridfire::reaction::TemplatedReactionSet::size()']]], - ['sourcelabel_8',['sourceLabel',['../classgridfire_1_1reaction_1_1_reaction.html#a410e2ab0784ad751f82bbe55be603db0',1,'gridfire::reaction::Reaction']]], - ['sources_9',['sources',['../classgridfire_1_1reaction_1_1_logical_reaction.html#add094eda0e71126f8443698d7f3317f4',1,'gridfire::reaction::LogicalReaction']]], - ['stoichiometry_10',['stoichiometry',['../classgridfire_1_1reaction_1_1_reaction.html#aaf0c94db6536b4a9ac1ec08a5c8f01ac',1,'gridfire::reaction::Reaction::stoichiometry(const fourdst::atomic::Species &species) const'],['../classgridfire_1_1reaction_1_1_reaction.html#ad359c06d7196c1a7a955a7b66a51dbe3',1,'gridfire::reaction::Reaction::stoichiometry() const']]], - ['sum_5fproduct_11',['sum_product',['../namespacegridfire_1_1approx8.html#aafd24448743672021dd4507316060817',1,'gridfire::approx8']]], - ['syncinternalmaps_12',['syncInternalMaps',['../classgridfire_1_1_graph_engine.html#acdce8d87e23a2cd1504bc9472e538c0f',1,'gridfire::GraphEngine']]] + ['setprecomputation_3',['setPrecomputation',['../classgridfire_1_1_graph_engine.html#a6c5410878496abc349ba30b691cdf0f1',1,'gridfire::GraphEngine']]], + ['setscreeningmodel_4',['setScreeningModel',['../classgridfire_1_1_dynamic_engine.html#a3fb44b6f55563a2f590f31916528f2bd',1,'gridfire::DynamicEngine::setScreeningModel()'],['../classgridfire_1_1_graph_engine.html#a8110e687844f921438bb517e1d8ce62f',1,'gridfire::GraphEngine::setScreeningModel()'],['../classgridfire_1_1_adaptive_engine_view.html#aae4ddbef1c4e2202fd236221a4bf376b',1,'gridfire::AdaptiveEngineView::setScreeningModel()'],['../classgridfire_1_1_file_defined_engine_view.html#ad96bbee6d3d37b50d9236a975ef704c0',1,'gridfire::FileDefinedEngineView::setScreeningModel()']]], + ['setstiff_5',['setStiff',['../classgridfire_1_1approx8_1_1_approx8_network.html#aefed972081514c29cdaaa1efd857ad8d',1,'gridfire::approx8::Approx8Network::setStiff()'],['../classgridfire_1_1_network.html#a84de2d691af06c4b62cfab5022b1e8fe',1,'gridfire::Network::setStiff()']]], + ['shouldupdateview_6',['shouldUpdateView',['../classgridfire_1_1solver_1_1_q_s_e_network_solver.html#a35f1f6ede393f15c8bb8862f3f1c3b07',1,'gridfire::solver::QSENetworkSolver']]], + ['simplereactionlistfileparser_7',['SimpleReactionListFileParser',['../classgridfire_1_1io_1_1_simple_reaction_list_file_parser.html#afc8ed91e8c98205c505e3d9f0cff1993',1,'gridfire::io::SimpleReactionListFileParser']]], + ['size_8',['size',['../classgridfire_1_1reaction_1_1_logical_reaction.html#afa41050855b842c63db16c94d2e9b897',1,'gridfire::reaction::LogicalReaction::size()'],['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#a6a1dc3c56690386ae9f6aa5c2aa37ba2',1,'gridfire::reaction::TemplatedReactionSet::size()']]], + ['sourcelabel_9',['sourceLabel',['../classgridfire_1_1reaction_1_1_reaction.html#a410e2ab0784ad751f82bbe55be603db0',1,'gridfire::reaction::Reaction']]], + ['sources_10',['sources',['../classgridfire_1_1reaction_1_1_logical_reaction.html#add094eda0e71126f8443698d7f3317f4',1,'gridfire::reaction::LogicalReaction']]], + ['stoichiometry_11',['stoichiometry',['../classgridfire_1_1reaction_1_1_reaction.html#aaf0c94db6536b4a9ac1ec08a5c8f01ac',1,'gridfire::reaction::Reaction::stoichiometry(const fourdst::atomic::Species &species) const'],['../classgridfire_1_1reaction_1_1_reaction.html#ad359c06d7196c1a7a955a7b66a51dbe3',1,'gridfire::reaction::Reaction::stoichiometry() const']]], + ['sum_5fproduct_12',['sum_product',['../namespacegridfire_1_1approx8.html#aafd24448743672021dd4507316060817',1,'gridfire::approx8']]], + ['syncinternalmaps_13',['syncInternalMaps',['../classgridfire_1_1_graph_engine.html#acdce8d87e23a2cd1504bc9472e538c0f',1,'gridfire::GraphEngine']]] ]; diff --git a/docs/html/search/functions_2.js b/docs/html/search/functions_2.js index 43bb815a..cd40275c 100644 --- a/docs/html/search/functions_2.js +++ b/docs/html/search/functions_2.js @@ -6,21 +6,22 @@ var searchData= ['c12p_5frate_3',['c12p_rate',['../namespacegridfire_1_1approx8.html#a890ad24c2cdb15fb76a3ff8a7b8d77db',1,'gridfire::approx8']]], ['calculate_5frate_4',['calculate_rate',['../classgridfire_1_1reaction_1_1_reaction.html#ad81e9b2a1773470059ca6989c60556ec',1,'gridfire::reaction::Reaction::calculate_rate(const double T9) const'],['../classgridfire_1_1reaction_1_1_reaction.html#a735192a42f72cd68f289493753e1a616',1,'gridfire::reaction::Reaction::calculate_rate(const CppAD::AD< double > T9) const'],['../classgridfire_1_1reaction_1_1_reaction.html#a648b9ed6108bed2469dc028fb7e351af',1,'gridfire::reaction::Reaction::calculate_rate(const T T9) const'],['../classgridfire_1_1reaction_1_1_logical_reaction.html#a1d2fb3b6a6a1860ace98b32447d1dd1b',1,'gridfire::reaction::LogicalReaction::calculate_rate(const double T9) const override'],['../classgridfire_1_1reaction_1_1_logical_reaction.html#adad6f4297c1d8ce487eab092b73cdd32',1,'gridfire::reaction::LogicalReaction::calculate_rate(const CppAD::AD< double > T9) const override'],['../classgridfire_1_1reaction_1_1_logical_reaction.html#a019b721d83741acdb16036f00739f87c',1,'gridfire::reaction::LogicalReaction::calculate_rate(const T T9) const']]], ['calculateallderivatives_5',['calculateAllDerivatives',['../classgridfire_1_1_graph_engine.html#af41df9ce979b6410e12642cb093916c9',1,'gridfire::GraphEngine::calculateAllDerivatives(const std::vector< T > &Y_in, T T9, T rho) const'],['../classgridfire_1_1_graph_engine.html#aaf4d54e4b774ab8ec8eabec006579d31',1,'gridfire::GraphEngine::calculateAllDerivatives(const std::vector< double > &Y_in, const double T9, const double rho) const'],['../classgridfire_1_1_graph_engine.html#a71a3d1181b90c3becdc5d9a3da05b9c9',1,'gridfire::GraphEngine::calculateAllDerivatives(const std::vector< ADDouble > &Y_in, const ADDouble &T9, const ADDouble &rho) const']]], - ['calculateallreactionflows_6',['calculateAllReactionFlows',['../classgridfire_1_1_adaptive_engine_view.html#abdbaf4b87629efe43ac1255dad424c0c',1,'gridfire::AdaptiveEngineView']]], - ['calculatefactors_5fimpl_7',['calculateFactors_impl',['../classgridfire_1_1screening_1_1_bare_screening_model.html#a6c93b72c8ca34623127f0846d8dee50a',1,'gridfire::screening::BareScreeningModel::calculateFactors_impl()'],['../classgridfire_1_1screening_1_1_weak_screening_model.html#a2695206d46b9d2c2503f8e58c44df88f',1,'gridfire::screening::WeakScreeningModel::calculateFactors_impl()']]], - ['calculatemolarreactionflow_8',['calculateMolarReactionFlow',['../classgridfire_1_1_dynamic_engine.html#a6633b1757c41dd9e1c397333f4f9e785',1,'gridfire::DynamicEngine::calculateMolarReactionFlow()'],['../classgridfire_1_1_graph_engine.html#a9245642b741f215e52861d00e756fb3f',1,'gridfire::GraphEngine::calculateMolarReactionFlow(const reaction::Reaction &reaction, const std::vector< double > &Y, const double T9, const double rho) const override'],['../classgridfire_1_1_graph_engine.html#a5e96b5a0b34c8932f0e14eabda57f1a4',1,'gridfire::GraphEngine::calculateMolarReactionFlow(const reaction::Reaction &reaction, const std::vector< T > &Y, const T T9, const T rho) const'],['../classgridfire_1_1_adaptive_engine_view.html#a048d4b1d41ecb4125a558d1b9ed7cb31',1,'gridfire::AdaptiveEngineView::calculateMolarReactionFlow()'],['../classgridfire_1_1_file_defined_engine_view.html#ac371fb66fd0a76a04df204c9dd9a05ef',1,'gridfire::FileDefinedEngineView::calculateMolarReactionFlow()']]], - ['calculaterhsandenergy_9',['calculateRHSAndEnergy',['../classgridfire_1_1_engine.html#ac8b56124b6b49cd1802addb74a9a47c2',1,'gridfire::Engine::calculateRHSAndEnergy()'],['../classgridfire_1_1_graph_engine.html#a8b3baf29829c7ae0a61430ea70632bbf',1,'gridfire::GraphEngine::calculateRHSAndEnergy()'],['../classgridfire_1_1_adaptive_engine_view.html#a7b276b7210be588263395bdb0497fc6d',1,'gridfire::AdaptiveEngineView::calculateRHSAndEnergy()'],['../classgridfire_1_1_file_defined_engine_view.html#a2c1d88b06568f9ea4c65e794d012ebfb',1,'gridfire::FileDefinedEngineView::calculateRHSAndEnergy()']]], - ['calculatescreeningfactors_10',['calculateScreeningFactors',['../classgridfire_1_1screening_1_1_screening_model.html#aaec9184d80c86a2d8674e395dad81bde',1,'gridfire::screening::ScreeningModel::calculateScreeningFactors(const reaction::LogicalReactionSet &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< double > &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 &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< ADDouble > &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 &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< double > &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 &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< ADDouble > &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 &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< double > &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 &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< CppAD::AD< double > > &Y, const CppAD::AD< double > T9, const CppAD::AD< double > rho) const override']]], - ['calculatesteadystateabundances_11',['calculateSteadyStateAbundances',['../classgridfire_1_1solver_1_1_q_s_e_network_solver.html#a00d112f6087f6e3a93f4d40a519308d2',1,'gridfire::solver::QSENetworkSolver']]], - ['chapter_12',['chapter',['../classgridfire_1_1reaction_1_1_reaction.html#a5cb438adfefb640e4bc58e09053bd629',1,'gridfire::reaction::Reaction']]], - ['clear_13',['clear',['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#a05f71d318564d880079fd6c96d59ae21',1,'gridfire::reaction::TemplatedReactionSet']]], - ['collectnetworkspecies_14',['collectNetworkSpecies',['../classgridfire_1_1_graph_engine.html#aedf42d83bfcc28313b6b6454034d2efa',1,'gridfire::GraphEngine']]], - ['constructreactionindexmap_15',['constructReactionIndexMap',['../classgridfire_1_1_adaptive_engine_view.html#a89614f4a48f60c4170a0197f45303e7c',1,'gridfire::AdaptiveEngineView::constructReactionIndexMap()'],['../classgridfire_1_1_file_defined_engine_view.html#aebb3f3548f8781506f31580706810a4e',1,'gridfire::FileDefinedEngineView::constructReactionIndexMap()']]], - ['constructspeciesindexmap_16',['constructSpeciesIndexMap',['../classgridfire_1_1_adaptive_engine_view.html#a896d29325b4233e83d9298850b617a2d',1,'gridfire::AdaptiveEngineView::constructSpeciesIndexMap()'],['../classgridfire_1_1_file_defined_engine_view.html#a51ba09ff01fdcac1125d42f276c9a0a7',1,'gridfire::FileDefinedEngineView::constructSpeciesIndexMap()']]], - ['contains_17',['contains',['../classgridfire_1_1reaction_1_1_reaction.html#ab92785f331a446e51a0960b75d60b37b',1,'gridfire::reaction::Reaction::contains()'],['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#a7777ecd0f594fdf66ce57d22610fad3c',1,'gridfire::reaction::TemplatedReactionSet::contains(const std::string_view &id) const'],['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#ab8cb5fbce6b819b9e4e44b0c2db54c6f',1,'gridfire::reaction::TemplatedReactionSet::contains(const Reaction &reaction) const']]], - ['contains_5fproduct_18',['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()']]], - ['contains_5freactant_19',['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(const fourdst::atomic::Species &species) const']]], - ['contains_5fspecies_20',['contains_species',['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#ad870856d206d93f27125c88d44ff9e34',1,'gridfire::reaction::TemplatedReactionSet']]], - ['convert_5fnetin_21',['convert_netIn',['../classgridfire_1_1approx8_1_1_approx8_network.html#a56426da6f1af7eb8a6d1cc70bc8e742a',1,'gridfire::approx8::Approx8Network']]], - ['cullreactionsbyflow_22',['cullReactionsByFlow',['../classgridfire_1_1_adaptive_engine_view.html#a42417e96fe9fd623458af109401daf08',1,'gridfire::AdaptiveEngineView']]] + ['calculateallderivativesusingprecomputation_6',['calculateAllDerivativesUsingPrecomputation',['../classgridfire_1_1_graph_engine.html#a63639f4430d0889605c10839a6f32af9',1,'gridfire::GraphEngine']]], + ['calculateallreactionflows_7',['calculateAllReactionFlows',['../classgridfire_1_1_adaptive_engine_view.html#abdbaf4b87629efe43ac1255dad424c0c',1,'gridfire::AdaptiveEngineView']]], + ['calculatefactors_5fimpl_8',['calculateFactors_impl',['../classgridfire_1_1screening_1_1_bare_screening_model.html#a6c93b72c8ca34623127f0846d8dee50a',1,'gridfire::screening::BareScreeningModel::calculateFactors_impl()'],['../classgridfire_1_1screening_1_1_weak_screening_model.html#a2695206d46b9d2c2503f8e58c44df88f',1,'gridfire::screening::WeakScreeningModel::calculateFactors_impl()']]], + ['calculatemolarreactionflow_9',['calculateMolarReactionFlow',['../classgridfire_1_1_dynamic_engine.html#a6633b1757c41dd9e1c397333f4f9e785',1,'gridfire::DynamicEngine::calculateMolarReactionFlow()'],['../classgridfire_1_1_graph_engine.html#a9245642b741f215e52861d00e756fb3f',1,'gridfire::GraphEngine::calculateMolarReactionFlow(const reaction::Reaction &reaction, const std::vector< double > &Y, const double T9, const double rho) const override'],['../classgridfire_1_1_graph_engine.html#a5e96b5a0b34c8932f0e14eabda57f1a4',1,'gridfire::GraphEngine::calculateMolarReactionFlow(const reaction::Reaction &reaction, const std::vector< T > &Y, const T T9, const T rho) const'],['../classgridfire_1_1_adaptive_engine_view.html#a048d4b1d41ecb4125a558d1b9ed7cb31',1,'gridfire::AdaptiveEngineView::calculateMolarReactionFlow()'],['../classgridfire_1_1_file_defined_engine_view.html#ac371fb66fd0a76a04df204c9dd9a05ef',1,'gridfire::FileDefinedEngineView::calculateMolarReactionFlow()']]], + ['calculaterhsandenergy_10',['calculateRHSAndEnergy',['../classgridfire_1_1_engine.html#ac8b56124b6b49cd1802addb74a9a47c2',1,'gridfire::Engine::calculateRHSAndEnergy()'],['../classgridfire_1_1_graph_engine.html#a8b3baf29829c7ae0a61430ea70632bbf',1,'gridfire::GraphEngine::calculateRHSAndEnergy()'],['../classgridfire_1_1_adaptive_engine_view.html#a7b276b7210be588263395bdb0497fc6d',1,'gridfire::AdaptiveEngineView::calculateRHSAndEnergy()'],['../classgridfire_1_1_file_defined_engine_view.html#a2c1d88b06568f9ea4c65e794d012ebfb',1,'gridfire::FileDefinedEngineView::calculateRHSAndEnergy()']]], + ['calculatescreeningfactors_11',['calculateScreeningFactors',['../classgridfire_1_1screening_1_1_screening_model.html#aaec9184d80c86a2d8674e395dad81bde',1,'gridfire::screening::ScreeningModel::calculateScreeningFactors(const reaction::LogicalReactionSet &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< double > &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 &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< ADDouble > &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 &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< double > &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 &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< ADDouble > &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 &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< double > &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 &reactions, const std::vector< fourdst::atomic::Species > &species, const std::vector< CppAD::AD< double > > &Y, const CppAD::AD< double > T9, const CppAD::AD< double > rho) const override']]], + ['calculatesteadystateabundances_12',['calculateSteadyStateAbundances',['../classgridfire_1_1solver_1_1_q_s_e_network_solver.html#a00d112f6087f6e3a93f4d40a519308d2',1,'gridfire::solver::QSENetworkSolver']]], + ['chapter_13',['chapter',['../classgridfire_1_1reaction_1_1_reaction.html#a5cb438adfefb640e4bc58e09053bd629',1,'gridfire::reaction::Reaction']]], + ['clear_14',['clear',['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#a05f71d318564d880079fd6c96d59ae21',1,'gridfire::reaction::TemplatedReactionSet']]], + ['collectnetworkspecies_15',['collectNetworkSpecies',['../classgridfire_1_1_graph_engine.html#aedf42d83bfcc28313b6b6454034d2efa',1,'gridfire::GraphEngine']]], + ['constructreactionindexmap_16',['constructReactionIndexMap',['../classgridfire_1_1_adaptive_engine_view.html#a89614f4a48f60c4170a0197f45303e7c',1,'gridfire::AdaptiveEngineView::constructReactionIndexMap()'],['../classgridfire_1_1_file_defined_engine_view.html#aebb3f3548f8781506f31580706810a4e',1,'gridfire::FileDefinedEngineView::constructReactionIndexMap()']]], + ['constructspeciesindexmap_17',['constructSpeciesIndexMap',['../classgridfire_1_1_adaptive_engine_view.html#a896d29325b4233e83d9298850b617a2d',1,'gridfire::AdaptiveEngineView::constructSpeciesIndexMap()'],['../classgridfire_1_1_file_defined_engine_view.html#a51ba09ff01fdcac1125d42f276c9a0a7',1,'gridfire::FileDefinedEngineView::constructSpeciesIndexMap()']]], + ['contains_18',['contains',['../classgridfire_1_1reaction_1_1_reaction.html#ab92785f331a446e51a0960b75d60b37b',1,'gridfire::reaction::Reaction::contains()'],['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#a7777ecd0f594fdf66ce57d22610fad3c',1,'gridfire::reaction::TemplatedReactionSet::contains(const std::string_view &id) const'],['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#ab8cb5fbce6b819b9e4e44b0c2db54c6f',1,'gridfire::reaction::TemplatedReactionSet::contains(const Reaction &reaction) const']]], + ['contains_5fproduct_19',['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()']]], + ['contains_5freactant_20',['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(const fourdst::atomic::Species &species) const']]], + ['contains_5fspecies_21',['contains_species',['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#ad870856d206d93f27125c88d44ff9e34',1,'gridfire::reaction::TemplatedReactionSet']]], + ['convert_5fnetin_22',['convert_netIn',['../classgridfire_1_1approx8_1_1_approx8_network.html#a56426da6f1af7eb8a6d1cc70bc8e742a',1,'gridfire::approx8::Approx8Network']]], + ['cullreactionsbyflow_23',['cullReactionsByFlow',['../classgridfire_1_1_adaptive_engine_view.html#a42417e96fe9fd623458af109401daf08',1,'gridfire::AdaptiveEngineView']]] ]; diff --git a/docs/html/search/functions_6.js b/docs/html/search/functions_6.js index 7d7fcc45..02839e7c 100644 --- a/docs/html/search/functions_6.js +++ b/docs/html/search/functions_6.js @@ -14,5 +14,5 @@ var searchData= ['getscreeningmodel_11',['getScreeningModel',['../classgridfire_1_1_dynamic_engine.html#a7a203f8e0f3a6744ddc912dfbcfdbcc0',1,'gridfire::DynamicEngine::getScreeningModel()'],['../classgridfire_1_1_graph_engine.html#a697f2004e0d02c59e83c7890742d7c9a',1,'gridfire::GraphEngine::getScreeningModel()'],['../classgridfire_1_1_adaptive_engine_view.html#a0ab1199f900a58f309c3c36532c9164f',1,'gridfire::AdaptiveEngineView::getScreeningModel()'],['../classgridfire_1_1_file_defined_engine_view.html#adbc50f397445f92b810d80cf329b8626',1,'gridfire::FileDefinedEngineView::getScreeningModel()']]], ['getspeciestimescales_12',['getSpeciesTimescales',['../classgridfire_1_1_dynamic_engine.html#a5d8ba98b230d2849035ee2507728fa15',1,'gridfire::DynamicEngine::getSpeciesTimescales()'],['../classgridfire_1_1_graph_engine.html#a26215593544c3a52597194602e4e25dd',1,'gridfire::GraphEngine::getSpeciesTimescales()'],['../classgridfire_1_1_adaptive_engine_view.html#a93b38d0fdc4647f6f7340172dae17872',1,'gridfire::AdaptiveEngineView::getSpeciesTimescales()'],['../classgridfire_1_1_file_defined_engine_view.html#ace3c6ea4841318c08695973ab3dcddc6',1,'gridfire::FileDefinedEngineView::getSpeciesTimescales()']]], ['getstoichiometrymatrixentry_13',['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_file_defined_engine_view.html#a9da9224f5c99a5068f3d8cbf066e4693',1,'gridfire::FileDefinedEngineView::getStoichiometryMatrixEntry()']]], - ['graphengine_14',['GraphEngine',['../classgridfire_1_1_graph_engine.html#a9f74786ff930ab72664b31f29d05a30c',1,'gridfire::GraphEngine::GraphEngine(const fourdst::composition::Composition &composition)'],['../classgridfire_1_1_graph_engine.html#a9c285e3a38de6e73503a4e19666678e2',1,'gridfire::GraphEngine::GraphEngine(reaction::LogicalReactionSet reactions)']]] + ['graphengine_14',['GraphEngine',['../classgridfire_1_1_graph_engine.html#a9f74786ff930ab72664b31f29d05a30c',1,'gridfire::GraphEngine::GraphEngine(const fourdst::composition::Composition &composition)'],['../classgridfire_1_1_graph_engine.html#a1e7e851dfa21d41c2dc533ba56fc4c7b',1,'gridfire::GraphEngine::GraphEngine(const reaction::LogicalReactionSet &reactions)']]] ]; diff --git a/docs/html/search/functions_8.js b/docs/html/search/functions_8.js index b262959f..75dad2d3 100644 --- a/docs/html/search/functions_8.js +++ b/docs/html/search/functions_8.js @@ -6,5 +6,6 @@ var searchData= ['inputs_3',['inputs',['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a5ce08aab2f1976c9258dad2b67e1c5b6',1,'gridfire::solver::QSENetworkSolver::EigenFunctor']]], ['involvesspecies_4',['involvesSpecies',['../classgridfire_1_1_graph_engine.html#aa6202cee0c3c481eda77cc9a91bc126b',1,'gridfire::GraphEngine']]], ['is_5freverse_5',['is_reverse',['../classgridfire_1_1reaction_1_1_reaction.html#aa67d05dfabf007c1acad34052d9a1dba',1,'gridfire::reaction::Reaction']]], - ['isstiff_6',['isStiff',['../classgridfire_1_1approx8_1_1_approx8_network.html#a5b17b2831389829533385900ce19a37a',1,'gridfire::approx8::Approx8Network::isStiff()'],['../classgridfire_1_1_network.html#ae93ad65deba79def4b77d420e7affa0b',1,'gridfire::Network::isStiff()']]] + ['isprecomputationenabled_6',['isPrecomputationEnabled',['../classgridfire_1_1_graph_engine.html#a015f8975701f028c29835d3a9794e00f',1,'gridfire::GraphEngine']]], + ['isstiff_7',['isStiff',['../classgridfire_1_1approx8_1_1_approx8_network.html#a5b17b2831389829533385900ce19a37a',1,'gridfire::approx8::Approx8Network::isStiff()'],['../classgridfire_1_1_network.html#ae93ad65deba79def4b77d420e7affa0b',1,'gridfire::Network::isStiff()']]] ]; diff --git a/docs/html/search/functions_b.js b/docs/html/search/functions_b.js index 26d16564..88e947cd 100644 --- a/docs/html/search/functions_b.js +++ b/docs/html/search/functions_b.js @@ -5,9 +5,9 @@ var searchData= ['mapculledtofullspeciesindex_2',['mapCulledToFullSpeciesIndex',['../classgridfire_1_1_adaptive_engine_view.html#a256d14a333f9401039b826cc889761a8',1,'gridfire::AdaptiveEngineView']]], ['mapfulltoculled_3',['mapFullToCulled',['../classgridfire_1_1_adaptive_engine_view.html#a3d9d8e862d1c2f0a8ba460c57f6a7f44',1,'gridfire::AdaptiveEngineView']]], ['mapfulltoview_4',['mapFullToView',['../classgridfire_1_1_file_defined_engine_view.html#a97e5ee4651dbe6754678fe96e4702fee',1,'gridfire::FileDefinedEngineView']]], - ['mapviewtofull_5',['mapViewToFull',['../classgridfire_1_1_file_defined_engine_view.html#ac231044e37e0962f664f8465e1ccb022',1,'gridfire::FileDefinedEngineView']]], - ['mapviewtofullreactionindex_6',['mapViewToFullReactionIndex',['../classgridfire_1_1_file_defined_engine_view.html#ae7d6f0ff9076d59d1245c047bbd1bdb9',1,'gridfire::FileDefinedEngineView']]], - ['mapviewtofullspeciesindex_7',['mapViewToFullSpeciesIndex',['../classgridfire_1_1_file_defined_engine_view.html#a8d2c6b9a33b9c8c172bbd2c2e2e9ffaf',1,'gridfire::FileDefinedEngineView']]], + ['mapviewtofull_5',['mapViewToFull',['../classgridfire_1_1_file_defined_engine_view.html#adba3c11b11a04b2907c1635210d73dee',1,'gridfire::FileDefinedEngineView']]], + ['mapviewtofullreactionindex_6',['mapViewToFullReactionIndex',['../classgridfire_1_1_file_defined_engine_view.html#a74217a1f8fd8e6daff969cb17885315c',1,'gridfire::FileDefinedEngineView']]], + ['mapviewtofullspeciesindex_7',['mapViewToFullSpeciesIndex',['../classgridfire_1_1_file_defined_engine_view.html#aa2373955ef5b0eabf7a57c7208e38bb1',1,'gridfire::FileDefinedEngineView']]], ['mesanetworkfileparser_8',['MESANetworkFileParser',['../classgridfire_1_1io_1_1_m_e_s_a_network_file_parser.html#ac5963d0da6780de753df996b490f8d2c',1,'gridfire::io::MESANetworkFileParser']]], ['molarabundance_9',['MolarAbundance',['../structgridfire_1_1_net_in.html#a47781e8d5503e3b4f12d669e2cbcfb65',1,'gridfire::NetIn']]] ]; diff --git a/docs/html/search/functions_e.js b/docs/html/search/functions_e.js index c26acaca..870c77ac 100644 --- a/docs/html/search/functions_e.js +++ b/docs/html/search/functions_e.js @@ -8,6 +8,7 @@ var searchData= ['populatereactionidmap_5',['populateReactionIDMap',['../classgridfire_1_1_graph_engine.html#a26602e1b3c610780a47b5a6511d6d567',1,'gridfire::GraphEngine']]], ['populatespeciestoindexmap_6',['populateSpeciesToIndexMap',['../classgridfire_1_1_graph_engine.html#a47202c43342b96480070874bffce1391',1,'gridfire::GraphEngine']]], ['pp_5frate_7',['pp_rate',['../namespacegridfire_1_1approx8.html#a16739298c01e56967ce784a9a957439f',1,'gridfire::approx8']]], - ['product_5fspecies_8',['product_species',['../classgridfire_1_1reaction_1_1_reaction.html#a01c67726efbaa2ff8e4d6f2c965f485c',1,'gridfire::reaction::Reaction']]], - ['products_9',['products',['../classgridfire_1_1reaction_1_1_reaction.html#a6e2ff61b9e8409f2a561663628b8ce02',1,'gridfire::reaction::Reaction']]] + ['precomputenetwork_8',['precomputeNetwork',['../classgridfire_1_1_graph_engine.html#a92644bc333bff69c5685be4552ca12fd',1,'gridfire::GraphEngine']]], + ['product_5fspecies_9',['product_species',['../classgridfire_1_1reaction_1_1_reaction.html#a01c67726efbaa2ff8e4d6f2c965f485c',1,'gridfire::reaction::Reaction']]], + ['products_10',['products',['../classgridfire_1_1reaction_1_1_reaction.html#a6e2ff61b9e8409f2a561663628b8ce02',1,'gridfire::reaction::Reaction']]] ]; diff --git a/docs/html/search/searchdata.js b/docs/html/search/searchdata.js index c53fea97..f2f52586 100644 --- a/docs/html/search/searchdata.js +++ b/docs/html/search/searchdata.js @@ -1,11 +1,11 @@ var indexSectionsWithContent = { 0: "abcdefghijlmnopqrstuvw~", - 1: "abdefghjlmnopqrstw", + 1: "abcdefghjlmnopqrstw", 2: "gs", 3: "elmnrs", 4: "abcdefghijlmnopqrstuv~", - 5: "acdefilmnpqrst", + 5: "acdefilmnpqrstu", 6: "acdijlmorsv", 7: "ns", 8: "abiruvw", diff --git a/docs/html/search/variables_0.js b/docs/html/search/variables_0.js index 4229f5c8..3fa690f6 100644 --- a/docs/html/search/variables_0.js +++ b/docs/html/search/variables_0.js @@ -7,5 +7,6 @@ var searchData= ['a4_4',['a4',['../structgridfire_1_1reaction_1_1_rate_coefficient_set.html#ae57b2eac71cb4ed9947f40c9cb8fc3ca',1,'gridfire::reaction::RateCoefficientSet']]], ['a5_5',['a5',['../structgridfire_1_1reaction_1_1_rate_coefficient_set.html#a8c79db4e649b4eb1d29c43ebe4e95458',1,'gridfire::reaction::RateCoefficientSet']]], ['a6_6',['a6',['../structgridfire_1_1reaction_1_1_rate_coefficient_set.html#adf8e6ed7f91cb9e15d1469a808b1877a',1,'gridfire::reaction::RateCoefficientSet']]], - ['aion_7',['aIon',['../structgridfire_1_1approx8_1_1_approx8_net.html#a296e54c1b22f0c5d4d07a13577c6e069',1,'gridfire::approx8::Approx8Net']]] + ['affected_5fspecies_5findices_7',['affected_species_indices',['../structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#a3e2e67e532970738d20491ea56b170f3',1,'gridfire::GraphEngine::PrecomputedReaction']]], + ['aion_8',['aIon',['../structgridfire_1_1approx8_1_1_approx8_net.html#a296e54c1b22f0c5d4d07a13577c6e069',1,'gridfire::approx8::Approx8Net']]] ]; diff --git a/docs/html/search/variables_1.js b/docs/html/search/variables_1.js index 4c82afed..6354858b 100644 --- a/docs/html/search/variables_1.js +++ b/docs/html/search/variables_1.js @@ -1,7 +1,8 @@ var searchData= [ - ['chapter_0',['chapter',['../structgridfire_1_1reaclib_1_1_reaction_record.html#a5c853b69a23b0a8c39ab4b55ac3fe3cc',1,'gridfire::reaclib::ReactionRecord']]], - ['coeffs_1',['coeffs',['../structgridfire_1_1reaclib_1_1_reaction_record.html#a80803f612e574859fde0a163bca84bc0',1,'gridfire::reaclib::ReactionRecord']]], - ['composition_2',['composition',['../structgridfire_1_1_net_in.html#a13058f4929e72c1187abbebcddb8aed1',1,'gridfire::NetIn::composition'],['../structgridfire_1_1_net_out.html#a073529511ae0e52f868b47cce0e8ac0a',1,'gridfire::NetOut::composition']]], - ['culling_3',['culling',['../structgridfire_1_1_net_in.html#a6a5e909b46094ffa20da9a3da906e43f',1,'gridfire::NetIn']]] + ['c_0',['c',['../structgridfire_1_1_graph_engine_1_1constants.html#a8bea6e348699c1aea93d17bb56739306',1,'gridfire::GraphEngine::constants']]], + ['chapter_1',['chapter',['../structgridfire_1_1reaclib_1_1_reaction_record.html#a5c853b69a23b0a8c39ab4b55ac3fe3cc',1,'gridfire::reaclib::ReactionRecord']]], + ['coeffs_2',['coeffs',['../structgridfire_1_1reaclib_1_1_reaction_record.html#a80803f612e574859fde0a163bca84bc0',1,'gridfire::reaclib::ReactionRecord']]], + ['composition_3',['composition',['../structgridfire_1_1_net_in.html#a13058f4929e72c1187abbebcddb8aed1',1,'gridfire::NetIn::composition'],['../structgridfire_1_1_net_out.html#a073529511ae0e52f868b47cce0e8ac0a',1,'gridfire::NetOut::composition']]], + ['culling_4',['culling',['../structgridfire_1_1_net_in.html#a6a5e909b46094ffa20da9a3da906e43f',1,'gridfire::NetIn']]] ]; diff --git a/docs/html/search/variables_7.js b/docs/html/search/variables_7.js index ec2841d1..da0773e5 100644 --- a/docs/html/search/variables_7.js +++ b/docs/html/search/variables_7.js @@ -5,7 +5,7 @@ var searchData= ['m_5fbaseengine_2',['m_baseEngine',['../classgridfire_1_1_adaptive_engine_view.html#a4d38b46be9f25c7afe7ddd2b284253f8',1,'gridfire::AdaptiveEngineView::m_baseEngine'],['../classgridfire_1_1_file_defined_engine_view.html#ad8454c98fa9a4bb45dc81059bc51fc81',1,'gridfire::FileDefinedEngineView::m_baseEngine']]], ['m_5fchapter_3',['m_chapter',['../classgridfire_1_1reaction_1_1_reaction.html#a16f9cbb6269817099d3dc07d4e63da7b',1,'gridfire::reaction::Reaction']]], ['m_5fconfig_4',['m_config',['../classgridfire_1_1_graph_engine.html#a3b17102b143435ddfdc015d7a50c4b18',1,'gridfire::GraphEngine::m_config'],['../classgridfire_1_1_adaptive_engine_view.html#a14171a9ccc45a63996a967c72983de30',1,'gridfire::AdaptiveEngineView::m_config'],['../classgridfire_1_1_file_defined_engine_view.html#a7a80966c023ae722239491af58609362',1,'gridfire::FileDefinedEngineView::m_config'],['../classgridfire_1_1io_1_1_simple_reaction_list_file_parser.html#a4061e99bd77a3de0d6d9e317bfc74874',1,'gridfire::io::SimpleReactionListFileParser::m_config'],['../classgridfire_1_1io_1_1_m_e_s_a_network_file_parser.html#aea206c3a7600db8d657666fef88fa20d',1,'gridfire::io::MESANetworkFileParser::m_config'],['../classgridfire_1_1_network.html#a9f8802012728ef5fea0e8cd465044e09',1,'gridfire::Network::m_config'],['../classgridfire_1_1solver_1_1_q_s_e_network_solver.html#a7d19b6e50db34d38c81afec76bbedee1',1,'gridfire::solver::QSENetworkSolver::m_config'],['../classgridfire_1_1solver_1_1_direct_network_solver.html#a0d1b52d06b0521e7c556d75cd8d2ffe6',1,'gridfire::solver::DirectNetworkSolver::m_config']]], - ['m_5fconstants_5',['m_constants',['../classgridfire_1_1_graph_engine.html#a0837bab6dcd111d9075c9343b90d64f1',1,'gridfire::GraphEngine::m_constants'],['../classgridfire_1_1_network.html#adf7002883160101c9f9d1b376b265410',1,'gridfire::Network::m_constants']]], + ['m_5fconstants_5',['m_constants',['../classgridfire_1_1_graph_engine.html#a10c01bc20ae668c2857efb2a1783098e',1,'gridfire::GraphEngine::m_constants'],['../classgridfire_1_1_network.html#adf7002883160101c9f9d1b376b265410',1,'gridfire::Network::m_constants']]], ['m_5fdt0_6',['m_dt0',['../classgridfire_1_1approx8_1_1_approx8_network.html#a6ed8022834e9541b3e547dd867648b0f',1,'gridfire::approx8::Approx8Network']]], ['m_5fdynamicspeciesindices_7',['m_dynamicSpeciesIndices',['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_r_h_s_functor.html#a3ac1ef529627d21f7d1ad718dc87f7f9',1,'gridfire::solver::QSENetworkSolver::RHSFunctor::m_dynamicSpeciesIndices'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_jacobian_functor.html#a2071ce797f94ae1a3ea6d934748672ce',1,'gridfire::solver::QSENetworkSolver::JacobianFunctor::m_dynamicSpeciesIndices'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a08ce53701b152f3ce108c1c18ce64de2',1,'gridfire::solver::QSENetworkSolver::EigenFunctor::m_dynamicSpeciesIndices']]], ['m_5fengine_8',['m_engine',['../classgridfire_1_1solver_1_1_network_solver_strategy.html#a724924d94eaf82b67d9988a55c3261e8',1,'gridfire::solver::NetworkSolverStrategy::m_engine'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_r_h_s_functor.html#a0d8d28a6559cfed5e7cd683523d49b2c',1,'gridfire::solver::QSENetworkSolver::RHSFunctor::m_engine'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_jacobian_functor.html#aaaa82eff96e6127a6de05444f730e43a',1,'gridfire::solver::QSENetworkSolver::JacobianFunctor::m_engine'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a93b46ca95ddf9e4d21d02700621e6285',1,'gridfire::solver::QSENetworkSolver::EigenFunctor::m_engine'],['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_r_h_s_functor.html#a04f8c84e46e6fbd0977e50fda4829d1a',1,'gridfire::solver::DirectNetworkSolver::RHSFunctor::m_engine'],['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_jacobian_functor.html#a56f8b2b222fb2a7dac190ead0babfdd0',1,'gridfire::solver::DirectNetworkSolver::JacobianFunctor::m_engine']]], @@ -24,34 +24,36 @@ var searchData= ['m_5fnumspecies_21',['m_numSpecies',['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_r_h_s_functor.html#ac4a1af03d2a4fbc5cc2407b8a6833147',1,'gridfire::solver::DirectNetworkSolver::RHSFunctor::m_numSpecies'],['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_jacobian_functor.html#a3f624142212b5e6ff65f5706953fe353',1,'gridfire::solver::DirectNetworkSolver::JacobianFunctor::m_numSpecies']]], ['m_5fparser_22',['m_parser',['../classgridfire_1_1_file_defined_engine_view.html#a0a9b07176cb93b54c677b6ce71fda500',1,'gridfire::FileDefinedEngineView']]], ['m_5fpename_23',['m_peName',['../classgridfire_1_1reaction_1_1_reaction.html#a6124aa9fc2306349e1dd879a37923248',1,'gridfire::reaction::Reaction']]], - ['m_5fproducts_24',['m_products',['../classgridfire_1_1reaction_1_1_reaction.html#a4b5607ed413acdf29539b8a57461e49e',1,'gridfire::reaction::Reaction']]], - ['m_5fqsespeciesindices_25',['m_QSESpeciesIndices',['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_r_h_s_functor.html#a6be7259897a47ce480b289144b06e269',1,'gridfire::solver::QSENetworkSolver::RHSFunctor::m_QSESpeciesIndices'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_jacobian_functor.html#a1b92391170eb46771bd499aa8d115334',1,'gridfire::solver::QSENetworkSolver::JacobianFunctor::m_QSESpeciesIndices'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#abaf28fdd93e881ef56c24f541be7492d',1,'gridfire::solver::QSENetworkSolver::EigenFunctor::m_QSESpeciesIndices']]], - ['m_5fqvalue_26',['m_qValue',['../classgridfire_1_1reaction_1_1_reaction.html#a59122a2898bb9af640cc3e9aeb49028b',1,'gridfire::reaction::Reaction']]], - ['m_5fratecoefficients_27',['m_rateCoefficients',['../classgridfire_1_1reaction_1_1_reaction.html#aa61a9a024d7c4ff66a351ccd0277ec72',1,'gridfire::reaction::Reaction']]], - ['m_5frates_28',['m_rates',['../classgridfire_1_1reaction_1_1_logical_reaction.html#a81f75f0085f8a5a45169f0b7240c809d',1,'gridfire::reaction::LogicalReaction']]], - ['m_5freactants_29',['m_reactants',['../classgridfire_1_1reaction_1_1_reaction.html#a87a065b3c7806bcdb5eadb7de2978a11',1,'gridfire::reaction::Reaction']]], - ['m_5freactionidmap_30',['m_reactionIDMap',['../classgridfire_1_1_graph_engine.html#a5d6cc63b99b467c2a976d1fbaaa1dfa3',1,'gridfire::GraphEngine']]], - ['m_5freactionindexmap_31',['m_reactionIndexMap',['../classgridfire_1_1_adaptive_engine_view.html#a21c6e33bbf8c18fd5b5eaabb469054de',1,'gridfire::AdaptiveEngineView::m_reactionIndexMap'],['../classgridfire_1_1_file_defined_engine_view.html#af0a77a4749a15aae87bdecfccbd1736e',1,'gridfire::FileDefinedEngineView::m_reactionIndexMap']]], - ['m_5freactionnamemap_32',['m_reactionNameMap',['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#a3a4c2448865580001fd3c797b9f56979',1,'gridfire::reaction::TemplatedReactionSet']]], - ['m_5freactions_33',['m_reactions',['../classgridfire_1_1_graph_engine.html#acb7c4f5108b0efeae48ad15598e808c3',1,'gridfire::GraphEngine::m_reactions'],['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#a5962968fe478c79250e9d88d80a87600',1,'gridfire::reaction::TemplatedReactionSet::m_reactions']]], - ['m_5freverse_34',['m_reverse',['../classgridfire_1_1reaction_1_1_reaction.html#a0b0b9ac498080aae91ffd466d1ae85a9',1,'gridfire::reaction::Reaction']]], - ['m_5frho_35',['m_rho',['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_r_h_s_functor.html#adc0f8e655af42f414dcb220a7224f261',1,'gridfire::solver::QSENetworkSolver::RHSFunctor::m_rho'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_jacobian_functor.html#a0907f7b6c1a87baf5e39fbc17a30df82',1,'gridfire::solver::QSENetworkSolver::JacobianFunctor::m_rho'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#ab0a0d4c166e97b971543cbbf2b0a1a2e',1,'gridfire::solver::QSENetworkSolver::EigenFunctor::m_rho'],['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_r_h_s_functor.html#a7d4f7f04c4ee6f0b519194f87aa265e7',1,'gridfire::solver::DirectNetworkSolver::RHSFunctor::m_rho'],['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_jacobian_functor.html#a932c41aa9f1aa38e56a03b27cd2ccda4',1,'gridfire::solver::DirectNetworkSolver::JacobianFunctor::m_rho']]], - ['m_5frhsadfun_36',['m_rhsADFun',['../classgridfire_1_1_graph_engine.html#a2e22b111f6d00ecc9e3804a71f1ce876',1,'gridfire::GraphEngine']]], - ['m_5fscreeningmodel_37',['m_screeningModel',['../classgridfire_1_1_graph_engine.html#af17cf3762abac3efcab9a8e87c961210',1,'gridfire::GraphEngine']]], - ['m_5fscreeningtype_38',['m_screeningType',['../classgridfire_1_1_graph_engine.html#a52edc3e88f1e8fc497e1e63972d63c80',1,'gridfire::GraphEngine']]], - ['m_5fsourcelabel_39',['m_sourceLabel',['../classgridfire_1_1reaction_1_1_reaction.html#a0185c6be5465d113f25e00aee1297cd6',1,'gridfire::reaction::Reaction']]], - ['m_5fsources_40',['m_sources',['../classgridfire_1_1reaction_1_1_logical_reaction.html#a7fe91d24e20ebc76d612f6ad742f476f',1,'gridfire::reaction::LogicalReaction']]], - ['m_5fspeciesindexmap_41',['m_speciesIndexMap',['../classgridfire_1_1_adaptive_engine_view.html#a5f66204a0ff5b27eed243afddecb0093',1,'gridfire::AdaptiveEngineView::m_speciesIndexMap'],['../classgridfire_1_1_file_defined_engine_view.html#aebd4a1a584f2784f1df3d503645be03b',1,'gridfire::FileDefinedEngineView::m_speciesIndexMap']]], - ['m_5fspeciestoindexmap_42',['m_speciesToIndexMap',['../classgridfire_1_1_graph_engine.html#ad8237c252145a75092202d00f5e1ddf7',1,'gridfire::GraphEngine']]], - ['m_5fstiff_43',['m_stiff',['../classgridfire_1_1approx8_1_1_approx8_network.html#a697cb49bebc8d0659eb791500c451c67',1,'gridfire::approx8::Approx8Network::m_stiff'],['../classgridfire_1_1_network.html#aefe364ae5af783e19e7b93bfd475566e',1,'gridfire::Network::m_stiff']]], - ['m_5fstoichiometrymatrix_44',['m_stoichiometryMatrix',['../classgridfire_1_1_graph_engine.html#ad1cb5fd32efc37668e2d9ecf0c72ad24',1,'gridfire::GraphEngine']]], - ['m_5ft9_45',['m_T9',['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_r_h_s_functor.html#a35026100163c7cc6fdb4c2e4d988b8cb',1,'gridfire::solver::QSENetworkSolver::RHSFunctor::m_T9'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_jacobian_functor.html#a85f88639447a9a706008efece82ff289',1,'gridfire::solver::QSENetworkSolver::JacobianFunctor::m_T9'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a6771ae56ddd9058954b42ee92a378309',1,'gridfire::solver::QSENetworkSolver::EigenFunctor::m_T9'],['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_r_h_s_functor.html#a082844f1eae0609e66620575210e8823',1,'gridfire::solver::DirectNetworkSolver::RHSFunctor::m_T9'],['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_jacobian_functor.html#a88f5fc48a555b369f1e2688d6bb67b83',1,'gridfire::solver::DirectNetworkSolver::JacobianFunctor::m_T9']]], - ['m_5ftmax_46',['m_tMax',['../classgridfire_1_1approx8_1_1_approx8_network.html#a6fadf388f07c160f1887a3cb72eaa869',1,'gridfire::approx8::Approx8Network']]], - ['m_5fy_47',['m_y',['../classgridfire_1_1approx8_1_1_approx8_network.html#abf9f13ff532917ddac4a7d987698836d',1,'gridfire::approx8::Approx8Network']]], - ['m_5fy_5fqse_48',['m_Y_QSE',['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_r_h_s_functor.html#a02c23ef20d616bf5a591a274b66cd75a',1,'gridfire::solver::QSENetworkSolver::RHSFunctor']]], - ['m_5fyfull_49',['m_YFull',['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a2dca32a9e0bea5aea2a565f94b99a8de',1,'gridfire::solver::QSENetworkSolver::EigenFunctor']]], - ['min_5fabundance_5fthreshold_50',['MIN_ABUNDANCE_THRESHOLD',['../namespacegridfire.html#a96c062f94713921e5d7568ecedcdcb06',1,'gridfire']]], - ['min_5fdensity_5fthreshold_51',['MIN_DENSITY_THRESHOLD',['../namespacegridfire.html#ada3c137c014ecd8d06200fea2d1a9f50',1,'gridfire']]], - ['min_5fjacobian_5fthreshold_52',['MIN_JACOBIAN_THRESHOLD',['../namespacegridfire.html#ae01b1738df1921db565bcbd68dd6cf64',1,'gridfire']]], - ['mion_53',['mIon',['../structgridfire_1_1approx8_1_1_approx8_net.html#a928b7810cb2993d59d40aa73c2faef18',1,'gridfire::approx8::Approx8Net']]] + ['m_5fprecomputedreactions_24',['m_precomputedReactions',['../classgridfire_1_1_graph_engine.html#a5d431d5385b1219ba29689eb29601ea3',1,'gridfire::GraphEngine']]], + ['m_5fproducts_25',['m_products',['../classgridfire_1_1reaction_1_1_reaction.html#a4b5607ed413acdf29539b8a57461e49e',1,'gridfire::reaction::Reaction']]], + ['m_5fqsespeciesindices_26',['m_QSESpeciesIndices',['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_r_h_s_functor.html#a6be7259897a47ce480b289144b06e269',1,'gridfire::solver::QSENetworkSolver::RHSFunctor::m_QSESpeciesIndices'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_jacobian_functor.html#a1b92391170eb46771bd499aa8d115334',1,'gridfire::solver::QSENetworkSolver::JacobianFunctor::m_QSESpeciesIndices'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#abaf28fdd93e881ef56c24f541be7492d',1,'gridfire::solver::QSENetworkSolver::EigenFunctor::m_QSESpeciesIndices']]], + ['m_5fqvalue_27',['m_qValue',['../classgridfire_1_1reaction_1_1_reaction.html#a59122a2898bb9af640cc3e9aeb49028b',1,'gridfire::reaction::Reaction']]], + ['m_5fratecoefficients_28',['m_rateCoefficients',['../classgridfire_1_1reaction_1_1_reaction.html#aa61a9a024d7c4ff66a351ccd0277ec72',1,'gridfire::reaction::Reaction']]], + ['m_5frates_29',['m_rates',['../classgridfire_1_1reaction_1_1_logical_reaction.html#a81f75f0085f8a5a45169f0b7240c809d',1,'gridfire::reaction::LogicalReaction']]], + ['m_5freactants_30',['m_reactants',['../classgridfire_1_1reaction_1_1_reaction.html#a87a065b3c7806bcdb5eadb7de2978a11',1,'gridfire::reaction::Reaction']]], + ['m_5freactionidmap_31',['m_reactionIDMap',['../classgridfire_1_1_graph_engine.html#a5d6cc63b99b467c2a976d1fbaaa1dfa3',1,'gridfire::GraphEngine']]], + ['m_5freactionindexmap_32',['m_reactionIndexMap',['../classgridfire_1_1_adaptive_engine_view.html#a21c6e33bbf8c18fd5b5eaabb469054de',1,'gridfire::AdaptiveEngineView::m_reactionIndexMap'],['../classgridfire_1_1_file_defined_engine_view.html#af0a77a4749a15aae87bdecfccbd1736e',1,'gridfire::FileDefinedEngineView::m_reactionIndexMap']]], + ['m_5freactionnamemap_33',['m_reactionNameMap',['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#a3a4c2448865580001fd3c797b9f56979',1,'gridfire::reaction::TemplatedReactionSet']]], + ['m_5freactions_34',['m_reactions',['../classgridfire_1_1_graph_engine.html#acb7c4f5108b0efeae48ad15598e808c3',1,'gridfire::GraphEngine::m_reactions'],['../classgridfire_1_1reaction_1_1_templated_reaction_set.html#a5962968fe478c79250e9d88d80a87600',1,'gridfire::reaction::TemplatedReactionSet::m_reactions']]], + ['m_5freverse_35',['m_reverse',['../classgridfire_1_1reaction_1_1_reaction.html#a0b0b9ac498080aae91ffd466d1ae85a9',1,'gridfire::reaction::Reaction']]], + ['m_5frho_36',['m_rho',['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_r_h_s_functor.html#adc0f8e655af42f414dcb220a7224f261',1,'gridfire::solver::QSENetworkSolver::RHSFunctor::m_rho'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_jacobian_functor.html#a0907f7b6c1a87baf5e39fbc17a30df82',1,'gridfire::solver::QSENetworkSolver::JacobianFunctor::m_rho'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#ab0a0d4c166e97b971543cbbf2b0a1a2e',1,'gridfire::solver::QSENetworkSolver::EigenFunctor::m_rho'],['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_r_h_s_functor.html#a7d4f7f04c4ee6f0b519194f87aa265e7',1,'gridfire::solver::DirectNetworkSolver::RHSFunctor::m_rho'],['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_jacobian_functor.html#a932c41aa9f1aa38e56a03b27cd2ccda4',1,'gridfire::solver::DirectNetworkSolver::JacobianFunctor::m_rho']]], + ['m_5frhsadfun_37',['m_rhsADFun',['../classgridfire_1_1_graph_engine.html#a2e22b111f6d00ecc9e3804a71f1ce876',1,'gridfire::GraphEngine']]], + ['m_5fscreeningmodel_38',['m_screeningModel',['../classgridfire_1_1_graph_engine.html#af17cf3762abac3efcab9a8e87c961210',1,'gridfire::GraphEngine']]], + ['m_5fscreeningtype_39',['m_screeningType',['../classgridfire_1_1_graph_engine.html#a52edc3e88f1e8fc497e1e63972d63c80',1,'gridfire::GraphEngine']]], + ['m_5fsourcelabel_40',['m_sourceLabel',['../classgridfire_1_1reaction_1_1_reaction.html#a0185c6be5465d113f25e00aee1297cd6',1,'gridfire::reaction::Reaction']]], + ['m_5fsources_41',['m_sources',['../classgridfire_1_1reaction_1_1_logical_reaction.html#a7fe91d24e20ebc76d612f6ad742f476f',1,'gridfire::reaction::LogicalReaction']]], + ['m_5fspeciesindexmap_42',['m_speciesIndexMap',['../classgridfire_1_1_adaptive_engine_view.html#a5f66204a0ff5b27eed243afddecb0093',1,'gridfire::AdaptiveEngineView::m_speciesIndexMap'],['../classgridfire_1_1_file_defined_engine_view.html#aebd4a1a584f2784f1df3d503645be03b',1,'gridfire::FileDefinedEngineView::m_speciesIndexMap']]], + ['m_5fspeciestoindexmap_43',['m_speciesToIndexMap',['../classgridfire_1_1_graph_engine.html#ad8237c252145a75092202d00f5e1ddf7',1,'gridfire::GraphEngine']]], + ['m_5fstiff_44',['m_stiff',['../classgridfire_1_1approx8_1_1_approx8_network.html#a697cb49bebc8d0659eb791500c451c67',1,'gridfire::approx8::Approx8Network::m_stiff'],['../classgridfire_1_1_network.html#aefe364ae5af783e19e7b93bfd475566e',1,'gridfire::Network::m_stiff']]], + ['m_5fstoichiometrymatrix_45',['m_stoichiometryMatrix',['../classgridfire_1_1_graph_engine.html#ad1cb5fd32efc37668e2d9ecf0c72ad24',1,'gridfire::GraphEngine']]], + ['m_5ft9_46',['m_T9',['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_r_h_s_functor.html#a35026100163c7cc6fdb4c2e4d988b8cb',1,'gridfire::solver::QSENetworkSolver::RHSFunctor::m_T9'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_jacobian_functor.html#a85f88639447a9a706008efece82ff289',1,'gridfire::solver::QSENetworkSolver::JacobianFunctor::m_T9'],['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a6771ae56ddd9058954b42ee92a378309',1,'gridfire::solver::QSENetworkSolver::EigenFunctor::m_T9'],['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_r_h_s_functor.html#a082844f1eae0609e66620575210e8823',1,'gridfire::solver::DirectNetworkSolver::RHSFunctor::m_T9'],['../structgridfire_1_1solver_1_1_direct_network_solver_1_1_jacobian_functor.html#a88f5fc48a555b369f1e2688d6bb67b83',1,'gridfire::solver::DirectNetworkSolver::JacobianFunctor::m_T9']]], + ['m_5ftmax_47',['m_tMax',['../classgridfire_1_1approx8_1_1_approx8_network.html#a6fadf388f07c160f1887a3cb72eaa869',1,'gridfire::approx8::Approx8Network']]], + ['m_5fuseprecomputation_48',['m_usePrecomputation',['../classgridfire_1_1_graph_engine.html#a191cff35402d3c97c82c5c966a39d0de',1,'gridfire::GraphEngine']]], + ['m_5fy_49',['m_y',['../classgridfire_1_1approx8_1_1_approx8_network.html#abf9f13ff532917ddac4a7d987698836d',1,'gridfire::approx8::Approx8Network']]], + ['m_5fy_5fqse_50',['m_Y_QSE',['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_r_h_s_functor.html#a02c23ef20d616bf5a591a274b66cd75a',1,'gridfire::solver::QSENetworkSolver::RHSFunctor']]], + ['m_5fyfull_51',['m_YFull',['../structgridfire_1_1solver_1_1_q_s_e_network_solver_1_1_eigen_functor.html#a2dca32a9e0bea5aea2a565f94b99a8de',1,'gridfire::solver::QSENetworkSolver::EigenFunctor']]], + ['min_5fabundance_5fthreshold_52',['MIN_ABUNDANCE_THRESHOLD',['../namespacegridfire.html#a96c062f94713921e5d7568ecedcdcb06',1,'gridfire']]], + ['min_5fdensity_5fthreshold_53',['MIN_DENSITY_THRESHOLD',['../namespacegridfire.html#ada3c137c014ecd8d06200fea2d1a9f50',1,'gridfire']]], + ['min_5fjacobian_5fthreshold_54',['MIN_JACOBIAN_THRESHOLD',['../namespacegridfire.html#ae01b1738df1921db565bcbd68dd6cf64',1,'gridfire']]], + ['mion_55',['mIon',['../structgridfire_1_1approx8_1_1_approx8_net.html#a928b7810cb2993d59d40aa73c2faef18',1,'gridfire::approx8::Approx8Net']]] ]; diff --git a/docs/html/search/variables_8.js b/docs/html/search/variables_8.js index f93502c7..b3f2e7b7 100644 --- a/docs/html/search/variables_8.js +++ b/docs/html/search/variables_8.js @@ -1,7 +1,8 @@ var searchData= [ - ['niso_0',['nIso',['../structgridfire_1_1approx8_1_1_approx8_net.html#a31928b4041479da6515a90569322fc02',1,'gridfire::approx8::Approx8Net']]], - ['nuclearenergygenerationrate_1',['nuclearEnergyGenerationRate',['../structgridfire_1_1_step_derivatives.html#ab4aeb41be952c7b5844e1ee81fef9008',1,'gridfire::StepDerivatives']]], - ['num_5fsteps_2',['num_steps',['../structgridfire_1_1_net_out.html#a51c16703132cf739ec2fd89eae7badd6',1,'gridfire::NetOut']]], - ['nvar_3',['nVar',['../structgridfire_1_1approx8_1_1_approx8_net.html#a7218aa9b3dbe7c6eca52119e115692db',1,'gridfire::approx8::Approx8Net']]] + ['na_0',['Na',['../structgridfire_1_1_graph_engine_1_1constants.html#a5ccc874d6704615e0ce54c14dc67699d',1,'gridfire::GraphEngine::constants']]], + ['niso_1',['nIso',['../structgridfire_1_1approx8_1_1_approx8_net.html#a31928b4041479da6515a90569322fc02',1,'gridfire::approx8::Approx8Net']]], + ['nuclearenergygenerationrate_2',['nuclearEnergyGenerationRate',['../structgridfire_1_1_step_derivatives.html#ab4aeb41be952c7b5844e1ee81fef9008',1,'gridfire::StepDerivatives']]], + ['num_5fsteps_3',['num_steps',['../structgridfire_1_1_net_out.html#a51c16703132cf739ec2fd89eae7badd6',1,'gridfire::NetOut']]], + ['nvar_4',['nVar',['../structgridfire_1_1approx8_1_1_approx8_net.html#a7218aa9b3dbe7c6eca52119e115692db',1,'gridfire::approx8::Approx8Net']]] ]; diff --git a/docs/html/search/variables_b.js b/docs/html/search/variables_b.js index 8502274a..e2eb89dd 100644 --- a/docs/html/search/variables_b.js +++ b/docs/html/search/variables_b.js @@ -2,9 +2,11 @@ var searchData= [ ['raw_5freactions_5fdata_0',['raw_reactions_data',['../reactions__data_8h.html#aeb44e2b3b67960dfd83ecd7136c7d38b',1,'reactions_data.h']]], ['raw_5freactions_5fdata_5flen_1',['raw_reactions_data_len',['../reactions__data_8h.html#a32dea82d95667c3df395d58fb469ce2a',1,'reactions_data.h']]], - ['reactants_5fstr_2',['reactants_str',['../structgridfire_1_1reaclib_1_1_reaction_record.html#a67afc513db8dbcc43d79733e22ca8d39',1,'gridfire::reaclib::ReactionRecord']]], - ['reactionpenames_3',['reactionPENames',['../structgridfire_1_1io_1_1_parsed_network_data.html#a5145c672877638e6113abf1f719b246d',1,'gridfire::io::ParsedNetworkData']]], - ['reactionptr_4',['reactionPtr',['../structgridfire_1_1_adaptive_engine_view_1_1_reaction_flow.html#a3bb21f20df8115d37108cf3c3be3bc6f',1,'gridfire::AdaptiveEngineView::ReactionFlow']]], - ['reverse_5',['reverse',['../structgridfire_1_1reaclib_1_1_reaction_record.html#aa1fd4f510d7c00d2e4197e9b9caf29fd',1,'gridfire::reaclib::ReactionRecord']]], - ['rpname_6',['rpName',['../structgridfire_1_1reaclib_1_1_reaction_record.html#a523b7cfb0a6d8ddccd785aef2f425ad1',1,'gridfire::reaclib::ReactionRecord']]] + ['reactant_5fpowers_2',['reactant_powers',['../structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#a03d596c88289e21e7bd18711e3a1f275',1,'gridfire::GraphEngine::PrecomputedReaction']]], + ['reactants_5fstr_3',['reactants_str',['../structgridfire_1_1reaclib_1_1_reaction_record.html#a67afc513db8dbcc43d79733e22ca8d39',1,'gridfire::reaclib::ReactionRecord']]], + ['reaction_5findex_4',['reaction_index',['../structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#a93635f6940d3534e949f402503c3d497',1,'gridfire::GraphEngine::PrecomputedReaction']]], + ['reactionpenames_5',['reactionPENames',['../structgridfire_1_1io_1_1_parsed_network_data.html#a5145c672877638e6113abf1f719b246d',1,'gridfire::io::ParsedNetworkData']]], + ['reactionptr_6',['reactionPtr',['../structgridfire_1_1_adaptive_engine_view_1_1_reaction_flow.html#a3bb21f20df8115d37108cf3c3be3bc6f',1,'gridfire::AdaptiveEngineView::ReactionFlow']]], + ['reverse_7',['reverse',['../structgridfire_1_1reaclib_1_1_reaction_record.html#aa1fd4f510d7c00d2e4197e9b9caf29fd',1,'gridfire::reaclib::ReactionRecord']]], + ['rpname_8',['rpName',['../structgridfire_1_1reaclib_1_1_reaction_record.html#a523b7cfb0a6d8ddccd785aef2f425ad1',1,'gridfire::reaclib::ReactionRecord']]] ]; diff --git a/docs/html/search/variables_c.js b/docs/html/search/variables_c.js index 3626f036..7aa4c609 100644 --- a/docs/html/search/variables_c.js +++ b/docs/html/search/variables_c.js @@ -1,5 +1,7 @@ var searchData= [ ['s_5fall_5freaclib_5freactions_5fptr_0',['s_all_reaclib_reactions_ptr',['../namespacegridfire_1_1reaclib.html#a5dba5efc372d2a9e9e846dfd6563f3c0',1,'gridfire::reaclib']]], - ['s_5finitialized_1',['s_initialized',['../namespacegridfire_1_1reaclib.html#af6ff0dfe7ffe34c73ba9acbab5ef8a66',1,'gridfire::reaclib']]] + ['s_5finitialized_1',['s_initialized',['../namespacegridfire_1_1reaclib.html#af6ff0dfe7ffe34c73ba9acbab5ef8a66',1,'gridfire::reaclib']]], + ['stoichiometric_5fcoefficients_2',['stoichiometric_coefficients',['../structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#a7a7e9167b19e339e0d69544b9c00e79c',1,'gridfire::GraphEngine::PrecomputedReaction']]], + ['symmetry_5ffactor_3',['symmetry_factor',['../structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#ac42504e868c0b9fd9ac9a405ea739f0e',1,'gridfire::GraphEngine::PrecomputedReaction']]] ]; diff --git a/docs/html/search/variables_e.js b/docs/html/search/variables_e.js new file mode 100644 index 00000000..2c0b9f2a --- /dev/null +++ b/docs/html/search/variables_e.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['u_0',['u',['../structgridfire_1_1_graph_engine_1_1constants.html#a3597bc632a5dd50aaa0044d8c18ca423',1,'gridfire::GraphEngine::constants']]], + ['unique_5freactant_5findices_1',['unique_reactant_indices',['../structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#a510e380116e2e6d9158cf00fedac2666',1,'gridfire::GraphEngine::PrecomputedReaction']]] +]; diff --git a/docs/html/solver_8cpp_source.html b/docs/html/solver_8cpp_source.html index 9b166733..32ebcea7 100644 --- a/docs/html/solver_8cpp_source.html +++ b/docs/html/solver_8cpp_source.html @@ -615,7 +615,7 @@ $(function(){initNavTree('solver_8cpp_source.html',''); initResizable(true); });
    NetOut initializeNetworkWithShortIgnition(const NetIn &netIn) const
    Initializes the network with a short ignition phase.
    Definition solver.cpp:264
    - +
    @ BARE
    No screening applied. The screening factor is always 1.0.
    static constexpr double MIN_ABUNDANCE_THRESHOLD
    Minimum abundance threshold below which species are ignored.
    diff --git a/docs/html/structgridfire_1_1_adaptive_engine_view_1_1_reaction_flow.html b/docs/html/structgridfire_1_1_adaptive_engine_view_1_1_reaction_flow.html index 9f76f7d8..bc410363 100644 --- a/docs/html/structgridfire_1_1_adaptive_engine_view_1_1_reaction_flow.html +++ b/docs/html/structgridfire_1_1_adaptive_engine_view_1_1_reaction_flow.html @@ -119,7 +119,7 @@ Public Attributes

    -

    Definition at line 253 of file engine_adaptive.h.

    +

    Definition at line 289 of file engine_adaptive.h.

    @@ -149,7 +149,7 @@ Public Attributes
    -

    Definition at line 252 of file engine_adaptive.h.

    +

    Definition at line 288 of file engine_adaptive.h.

    diff --git a/docs/html/structgridfire_1_1_graph_engine_1_1_precomputed_reaction-members.html b/docs/html/structgridfire_1_1_graph_engine_1_1_precomputed_reaction-members.html new file mode 100644 index 00000000..91a3cbc4 --- /dev/null +++ b/docs/html/structgridfire_1_1_graph_engine_1_1_precomputed_reaction-members.html @@ -0,0 +1,123 @@ + + + + + + + +GridFire: Member List + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    GridFire 0.0.1a +
    +
    General Purpose Nuclear Network
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    gridfire::GraphEngine::PrecomputedReaction Member List
    +
    + +
    + + + + diff --git a/docs/html/structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html b/docs/html/structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html new file mode 100644 index 00000000..71e5305d --- /dev/null +++ b/docs/html/structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html @@ -0,0 +1,237 @@ + + + + + + + +GridFire: gridfire::GraphEngine::PrecomputedReaction Struct Reference + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    GridFire 0.0.1a +
    +
    General Purpose Nuclear Network
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    gridfire::GraphEngine::PrecomputedReaction Struct Reference
    +
    +
    + + + + + + + + + + + + + + +

    +Public Attributes

    size_t reaction_index
     
    std::vector< size_t > unique_reactant_indices
     
    std::vector< int > reactant_powers
     
    double symmetry_factor
     
    std::vector< size_t > affected_species_indices
     
    std::vector< int > stoichiometric_coefficients
     
    +

    Detailed Description

    +
    +

    Definition at line 311 of file engine_graph.h.

    +

    Member Data Documentation

    + +

    ◆ affected_species_indices

    + +
    +
    + + + + +
    std::vector<size_t> gridfire::GraphEngine::PrecomputedReaction::affected_species_indices
    +
    + +

    Definition at line 316 of file engine_graph.h.

    + +
    +
    + +

    ◆ reactant_powers

    + +
    +
    + + + + +
    std::vector<int> gridfire::GraphEngine::PrecomputedReaction::reactant_powers
    +
    + +

    Definition at line 314 of file engine_graph.h.

    + +
    +
    + +

    ◆ reaction_index

    + +
    +
    + + + + +
    size_t gridfire::GraphEngine::PrecomputedReaction::reaction_index
    +
    + +

    Definition at line 312 of file engine_graph.h.

    + +
    +
    + +

    ◆ stoichiometric_coefficients

    + +
    +
    + + + + +
    std::vector<int> gridfire::GraphEngine::PrecomputedReaction::stoichiometric_coefficients
    +
    + +

    Definition at line 317 of file engine_graph.h.

    + +
    +
    + +

    ◆ symmetry_factor

    + +
    +
    + + + + +
    double gridfire::GraphEngine::PrecomputedReaction::symmetry_factor
    +
    + +

    Definition at line 315 of file engine_graph.h.

    + +
    +
    + +

    ◆ unique_reactant_indices

    + +
    +
    + + + + +
    std::vector<size_t> gridfire::GraphEngine::PrecomputedReaction::unique_reactant_indices
    +
    + +

    Definition at line 313 of file engine_graph.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/docs/html/structgridfire_1_1_graph_engine_1_1_precomputed_reaction.js b/docs/html/structgridfire_1_1_graph_engine_1_1_precomputed_reaction.js new file mode 100644 index 00000000..a0bb8408 --- /dev/null +++ b/docs/html/structgridfire_1_1_graph_engine_1_1_precomputed_reaction.js @@ -0,0 +1,9 @@ +var structgridfire_1_1_graph_engine_1_1_precomputed_reaction = +[ + [ "affected_species_indices", "structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#a3e2e67e532970738d20491ea56b170f3", null ], + [ "reactant_powers", "structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#a03d596c88289e21e7bd18711e3a1f275", null ], + [ "reaction_index", "structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#a93635f6940d3534e949f402503c3d497", null ], + [ "stoichiometric_coefficients", "structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#a7a7e9167b19e339e0d69544b9c00e79c", null ], + [ "symmetry_factor", "structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#ac42504e868c0b9fd9ac9a405ea739f0e", null ], + [ "unique_reactant_indices", "structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#a510e380116e2e6d9158cf00fedac2666", null ] +]; \ No newline at end of file diff --git a/docs/html/structgridfire_1_1_graph_engine_1_1constants-members.html b/docs/html/structgridfire_1_1_graph_engine_1_1constants-members.html new file mode 100644 index 00000000..adc7ff74 --- /dev/null +++ b/docs/html/structgridfire_1_1_graph_engine_1_1constants-members.html @@ -0,0 +1,120 @@ + + + + + + + +GridFire: Member List + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    GridFire 0.0.1a +
    +
    General Purpose Nuclear Network
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    gridfire::GraphEngine::constants Member List
    +
    +
    + +

    This is the complete list of members for gridfire::GraphEngine::constants, including all inherited members.

    + + + + +
    cgridfire::GraphEngine::constants
    Nagridfire::GraphEngine::constants
    ugridfire::GraphEngine::constants
    +
    + + + + diff --git a/docs/html/structgridfire_1_1_graph_engine_1_1constants.html b/docs/html/structgridfire_1_1_graph_engine_1_1constants.html new file mode 100644 index 00000000..13de895e --- /dev/null +++ b/docs/html/structgridfire_1_1_graph_engine_1_1constants.html @@ -0,0 +1,192 @@ + + + + + + + +GridFire: gridfire::GraphEngine::constants Struct Reference + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    GridFire 0.0.1a +
    +
    General Purpose Nuclear Network
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    gridfire::GraphEngine::constants Struct Reference
    +
    +
    + + + + + + + + + + + +

    +Public Attributes

    const double u = Constants::getInstance().get("u").value
     Atomic mass unit in g.
     
    const double Na = Constants::getInstance().get("N_a").value
     Avogadro's number.
     
    const double c = Constants::getInstance().get("c").value
     Speed of light in cm/s.
     
    +

    Detailed Description

    +
    +

    Definition at line 320 of file engine_graph.h.

    +

    Member Data Documentation

    + +

    ◆ c

    + +
    +
    + + + + +
    const double gridfire::GraphEngine::constants::c = Constants::getInstance().get("c").value
    +
    + +

    Speed of light in cm/s.

    + +

    Definition at line 323 of file engine_graph.h.

    + +
    +
    + +

    ◆ Na

    + +
    +
    + + + + +
    const double gridfire::GraphEngine::constants::Na = Constants::getInstance().get("N_a").value
    +
    + +

    Avogadro's number.

    + +

    Definition at line 322 of file engine_graph.h.

    + +
    +
    + +

    ◆ u

    + +
    +
    + + + + +
    const double gridfire::GraphEngine::constants::u = Constants::getInstance().get("u").value
    +
    + +

    Atomic mass unit in g.

    + +

    Definition at line 321 of file engine_graph.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/docs/html/structgridfire_1_1_graph_engine_1_1constants.js b/docs/html/structgridfire_1_1_graph_engine_1_1constants.js new file mode 100644 index 00000000..fe2d98ad --- /dev/null +++ b/docs/html/structgridfire_1_1_graph_engine_1_1constants.js @@ -0,0 +1,6 @@ +var structgridfire_1_1_graph_engine_1_1constants = +[ + [ "c", "structgridfire_1_1_graph_engine_1_1constants.html#a8bea6e348699c1aea93d17bb56739306", null ], + [ "Na", "structgridfire_1_1_graph_engine_1_1constants.html#a5ccc874d6704615e0ce54c14dc67699d", null ], + [ "u", "structgridfire_1_1_graph_engine_1_1constants.html#a3597bc632a5dd50aaa0044d8c18ca423", null ] +]; \ No newline at end of file diff --git a/docs/html/structgridfire_1_1io_1_1_parsed_network_data.html b/docs/html/structgridfire_1_1io_1_1_parsed_network_data.html index 4d7c6f65..e2b63970 100644 --- a/docs/html/structgridfire_1_1io_1_1_parsed_network_data.html +++ b/docs/html/structgridfire_1_1io_1_1_parsed_network_data.html @@ -106,16 +106,22 @@ $(function(){initNavTree('structgridfire_1_1io_1_1_parsed_network_data.html','')
    +

    Holds the data parsed from a network file. + More...

    +

    #include <network_file.h>

    +

    Public Attributes

    std::vector< std::string > reactionPENames
     A vector of reaction names in their PEN-style format.
     

    Detailed Description

    -
    -

    Definition at line 13 of file network_file.h.

    +

    Holds the data parsed from a network file.

    +

    This struct is used to return the results of parsing a reaction network file. It contains the list of reaction names that define the network.

    + +

    Definition at line 20 of file network_file.h.

    Member Data Documentation

    ◆ reactionPENames

    @@ -129,7 +135,10 @@ Public Attributes
    -

    Definition at line 14 of file network_file.h.

    +

    A vector of reaction names in their PEN-style format.

    +

    Projectile, Ejectile style names p(p,e+)d is a common format for representing nuclear reactions as strings.

    + +

    Definition at line 27 of file network_file.h.

    diff --git a/src/network/include/gridfire/engine/engine_abstract.h b/src/network/include/gridfire/engine/engine_abstract.h index a99ad8b2..69abdafe 100644 --- a/src/network/include/gridfire/engine/engine_abstract.h +++ b/src/network/include/gridfire/engine/engine_abstract.h @@ -214,10 +214,56 @@ namespace gridfire { double rho ) const = 0; + /** + * @brief Update the internal state of the engine. + * + * @param netIn A 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. + * + * @par Usage Example: + * @code + * NetIn input = { ... }; + * myEngine.update(input); + * @endcode + * + * @post The internal state of the engine is updated to reflect the new conditions. + */ virtual void update(const NetIn& netIn) = 0; + /** + * @brief Set the electron screening model. + * + * @param model The type of screening model to use for reaction rate calculations. + * + * This method allows changing the screening model at runtime. Screening corrections + * account for the electrostatic shielding of nuclei by electrons, which affects + * reaction rates in dense stellar plasmas. + * + * @par Usage Example: + * @code + * myEngine.setScreeningModel(screening::ScreeningType::WEAK); + * @endcode + * + * @post The engine will use the specified screening model for subsequent rate calculations. + */ virtual void setScreeningModel(screening::ScreeningType model) = 0; + /** + * @brief Get the current electron screening model. + * + * @return The currently active screening model type. + * + * @par Usage Example: + * @code + * screening::ScreeningType currentModel = myEngine.getScreeningModel(); + * @endcode + */ [[nodiscard]] virtual screening::ScreeningType getScreeningModel() const = 0; }; } \ No newline at end of file diff --git a/src/network/include/gridfire/engine/views/engine_adaptive.h b/src/network/include/gridfire/engine/views/engine_adaptive.h index 1cc8cb2f..da0d76ed 100644 --- a/src/network/include/gridfire/engine/views/engine_adaptive.h +++ b/src/network/include/gridfire/engine/views/engine_adaptive.h @@ -225,23 +225,59 @@ namespace gridfire { */ [[nodiscard]] const DynamicEngine& getBaseEngine() const override { return m_baseEngine; } + /** + * @brief Sets the screening model for the base engine. + * + * This method delegates the call to the base engine to set the electron screening model. + * + * @param model The electron screening model to set. + * + * @par Usage Example: + * @code + * AdaptiveEngineView engineView(...); + * engineView.setScreeningModel(screening::ScreeningType::WEAK); + * @endcode + * + * @post The screening model of the base engine is updated. + */ void setScreeningModel(screening::ScreeningType model) override; + /** + * @brief Gets the screening model from the base engine. + * + * This method delegates the call to the base engine to get the screening model. + * + * @return The current screening model type. + * + * @par Usage Example: + * @code + * AdaptiveEngineView engineView(...); + * screening::ScreeningType model = engineView.getScreeningModel(); + * @endcode + */ [[nodiscard]] screening::ScreeningType getScreeningModel() const override; private: using Config = fourdst::config::Config; using LogManager = fourdst::logging::LogManager; + /** @brief A reference to the singleton Config instance, used for retrieving configuration parameters. */ Config& m_config = Config::getInstance(); + /** @brief A pointer to the logger instance, used for logging messages. */ quill::Logger* m_logger = LogManager::getInstance().getLogger("log"); + /** @brief The underlying engine to which this view delegates calculations. */ DynamicEngine& m_baseEngine; + /** @brief The set of species that are currently active in the network. */ std::vector m_activeSpecies; + /** @brief The set of reactions that are currently active in the network. */ reaction::LogicalReactionSet m_activeReactions; + /** @brief A map from the indices of the active species to the indices of the corresponding species in the full network. */ std::vector m_speciesIndexMap; + /** @brief A map from the indices of the active reactions to the indices of the corresponding reactions in the full network. */ std::vector m_reactionIndexMap; + /** @brief A flag indicating whether the view is stale and needs to be updated. */ bool m_isStale = true; private: @@ -322,19 +358,92 @@ namespace gridfire { */ void validateState() const; + /** + * @brief Calculates the molar reaction flow rate for all reactions in the full network. + * + * This method iterates through all reactions in the base engine's network and calculates + * their molar flow rates based on the provided network input conditions (temperature, density, + * and composition). It also constructs a vector of molar abundances for all species in the + * full network. + * + * @param netIn The current network input, containing temperature, density, and composition. + * @param out_Y_Full A vector that will be populated with the molar abundances of all species in the full network. + * @return A vector of ReactionFlow structs, each containing a pointer to a reaction and its calculated flow rate. + * + * @par Algorithm: + * 1. Clears and reserves space in `out_Y_Full`. + * 2. Iterates through all species in the base engine's network. + * 3. For each species, it retrieves the molar abundance from `netIn.composition`. If the species is not found, its abundance is set to 0.0. + * 4. Converts the temperature from Kelvin to T9. + * 5. Iterates through all reactions in the base engine's network. + * 6. For each reaction, it calls the base engine's `calculateMolarReactionFlow` to get the flow rate. + * 7. Stores the reaction pointer and its flow rate in a `ReactionFlow` struct and adds it to the returned vector. + */ std::vector calculateAllReactionFlows( const NetIn& netIn, std::vector& out_Y_Full ) const; + /** + * @brief Finds all species that are reachable from the initial fuel through the reaction network. + * + * This method performs a connectivity analysis to identify all species that can be produced + * starting from the initial fuel species. A species is considered part of the initial fuel if its + * mass fraction is above a certain threshold (`ABUNDANCE_FLOOR`). + * + * @param netIn The current network input, containing the initial composition. + * @return An unordered set of all reachable species. + * + * @par Algorithm: + * 1. Initializes a set `reachable` and a queue `to_visit` with the initial fuel species. + * 2. Iteratively processes the reaction network until no new species can be reached. + * 3. In each pass, it iterates through all reactions in the base engine's network. + * 4. If all reactants of a reaction are in the `reachable` set, all products of that reaction are added to the `reachable` set. + * 5. The process continues until a full pass over all reactions does not add any new species to the `reachable` set. + */ [[nodiscard]] std::unordered_set findReachableSpecies( const NetIn& netIn ) const; + /** + * @brief Culls reactions from the network based on their flow rates. + * + * This method filters the list of all reactions, keeping only those with a flow rate + * above an absolute culling threshold. The threshold is calculated by multiplying the + * maximum flow rate by a relative culling threshold read from the configuration. + * + * @param allFlows A vector of all reactions and their flow rates. + * @param reachableSpecies A set of all species reachable from the initial fuel. + * @param Y_full A vector of molar abundances for all species in the full network. + * @param maxFlow The maximum reaction flow rate in the network. + * @return A vector of pointers to the reactions that have been kept after culling. + * + * @par Algorithm: + * 1. Retrieves the `RelativeCullingThreshold` from the configuration. + * 2. Calculates the `absoluteCullingThreshold` by multiplying `maxFlow` with the relative threshold. + * 3. Iterates through `allFlows`. + * 4. A reaction is kept if its `flowRate` is greater than the `absoluteCullingThreshold`. + * 5. The pointers to the kept reactions are stored in a vector and returned. + */ [[nodiscard]] std::vector cullReactionsByFlow( const std::vector& allFlows, const std::unordered_set& reachableSpecies, const std::vector& Y_full, double maxFlow ) const; + /** + * @brief Finalizes the set of active species and reactions. + * + * This method takes the final list of culled reactions and populates the + * `m_activeReactions` and `m_activeSpecies` members. The active species are + * determined by collecting all reactants and products from the final reactions. + * The active species list is then sorted by mass. + * + * @param finalReactions A vector of pointers to the reactions to be included in the active set. + * + * @post + * - `m_activeReactions` is cleared and populated with the reactions from `finalReactions`. + * - `m_activeSpecies` is cleared and populated with all unique species present in `finalReactions`. + * - `m_activeSpecies` is sorted by atomic mass. + */ void finalizeActiveSet( const std::vector& finalReactions ); diff --git a/src/network/include/gridfire/engine/views/engine_defined.h b/src/network/include/gridfire/engine/views/engine_defined.h index 90d61ffc..5ec910f4 100644 --- a/src/network/include/gridfire/engine/views/engine_defined.h +++ b/src/network/include/gridfire/engine/views/engine_defined.h @@ -13,8 +13,45 @@ #include namespace gridfire{ + /** + * @class FileDefinedEngineView + * @brief An engine view that uses a user-defined reaction network from a file. + * + * This class implements an EngineView that restricts the reaction network to a specific set of + * reactions defined in an external file. It acts as a filter or a view on a larger, more + * comprehensive base engine. The file provides a list of reaction identifiers, and this view + * will only consider those reactions and the species involved in them. + * + * This is useful for focusing on a specific sub-network for analysis, debugging, or performance + * reasons, without modifying the underlying full network. + * + * The view maintains mappings between the indices of its active (defined) species and reactions + * and the corresponding indices in the full network of the base engine. All calculations are + * delegated to the base engine after mapping the inputs from the view's context to the full + * network context, and the results are mapped back. + * + * @implements DynamicEngine + * @implements EngineView + */ class FileDefinedEngineView final: public DynamicEngine, public EngineView { public: + /** + * @brief Constructs a FileDefinedEngineView. + * + * @param baseEngine The underlying DynamicEngine to which this view delegates calculations. + * @param fileName The path to the file that defines the reaction network for this view. + * @param parser A reference to a parser object capable of parsing the network file. + * + * @par Usage Example: + * @code + * MyParser parser; + * DynamicEngine baseEngine(...); + * FileDefinedEngineView view(baseEngine, "my_network.net", parser); + * @endcode + * + * @post The view is initialized with the reactions and species from the specified file. + * @throws std::runtime_error If a reaction from the file is not found in the base engine. + */ explicit FileDefinedEngineView( DynamicEngine& baseEngine, const std::string& fileName, @@ -22,104 +59,246 @@ namespace gridfire{ ); // --- EngineView Interface --- + /** + * @brief Gets the base engine. + * @return A const reference to the base engine. + */ const DynamicEngine& getBaseEngine() const override; // --- Engine Interface --- + /** + * @brief Gets the list of active species in the network defined by the file. + * @return A const reference to the vector of active species. + */ const std::vector& getNetworkSpecies() const override; // --- DynamicEngine Interface --- + /** + * @brief Calculates the right-hand side (dY/dt) and energy generation for the active species. + * + * @param Y_defined A vector of abundances for the active species. + * @param T9 The temperature in units of 10^9 K. + * @param rho The density in g/cm^3. + * @return A StepDerivatives struct containing the derivatives of the active species and the + * nuclear energy generation rate. + * + * @throws std::runtime_error If the view is stale (i.e., `update()` has not been called after `setNetworkFile()`). + */ StepDerivatives calculateRHSAndEnergy( const std::vector& Y_defined, const double T9, const double rho ) const override; + /** + * @brief Generates the Jacobian matrix for the active species. + * + * @param Y_defined A vector of abundances for the active species. + * @param T9 The temperature in units of 10^9 K. + * @param rho The density in g/cm^3. + * + * @throws std::runtime_error If the view is stale. + */ void generateJacobianMatrix( const std::vector& Y_defined, const double T9, const double rho ) override; + /** + * @brief Gets an entry from the Jacobian matrix for the active species. + * + * @param i_defined The row index (species index) in the defined matrix. + * @param j_defined The column index (species index) in the defined matrix. + * @return The value of the Jacobian matrix at (i_defined, j_defined). + * + * @throws std::runtime_error If the view is stale. + * @throws std::out_of_range If an index is out of bounds. + */ double getJacobianMatrixEntry( const int i_defined, const int j_defined ) const override; + /** + * @brief Generates the stoichiometry matrix for the active reactions and species. + * + * @throws std::runtime_error If the view is stale. + */ void generateStoichiometryMatrix() override; + /** + * @brief Gets an entry from the stoichiometry matrix for the active species and reactions. + * + * @param speciesIndex_defined The index of the species in the defined species list. + * @param reactionIndex_defined The index of the reaction in the defined reaction list. + * @return The stoichiometric coefficient for the given species and reaction. + * + * @throws std::runtime_error If the view is stale. + * @throws std::out_of_range If an index is out of bounds. + */ int getStoichiometryMatrixEntry( const int speciesIndex_defined, const int reactionIndex_defined ) const override; + /** + * @brief Calculates the molar reaction flow for a given reaction in the active network. + * + * @param reaction The reaction for which to calculate the flow. + * @param Y_defined Vector of current abundances for the active species. + * @param T9 Temperature in units of 10^9 K. + * @param rho Density in g/cm^3. + * @return Molar flow rate for the reaction (e.g., mol/g/s). + * + * @throws std::runtime_error If the view is stale or if the reaction is not in the active set. + */ double calculateMolarReactionFlow( const reaction::Reaction& reaction, const std::vector& Y_defined, const double T9, const double rho ) const override; + /** + * @brief Gets the set of active logical reactions in the network. + * + * @return Reference to the LogicalReactionSet containing all active reactions. + * + * @throws std::runtime_error If the view is stale. + */ const reaction::LogicalReactionSet& getNetworkReactions() const override; + /** + * @brief Computes timescales for all active species in the network. + * + * @param Y_defined Vector of current abundances for the active species. + * @param T9 Temperature in units of 10^9 K. + * @param rho Density in g/cm^3. + * @return Map from Species to their characteristic timescales (s). + * + * @throws std::runtime_error If the view is stale. + */ std::unordered_map getSpeciesTimescales( const std::vector& Y_defined, const double T9, const double rho ) const override; + /** + * @brief 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. + * + * @param netIn The current network input (unused). + * + * @post If the view was stale, it is rebuilt and is no longer stale. + */ void update(const NetIn &netIn) override; + /** + * @brief Sets a new network file to define the active reactions. + * + * @param fileName The path to the new network definition file. + * + * @par Usage Example: + * @code + * view.setNetworkFile("another_network.net"); + * view.update(netIn); // Must be called before using the view again + * @endcode + * + * @post The view is marked as stale. `update()` must be called before further use. + */ void setNetworkFile(const std::string& fileName); + /** + * @brief Sets the screening model for the base engine. + * + * @param model The screening model to set. + */ void setScreeningModel(screening::ScreeningType model) override; + /** + * @brief Gets the screening model from the base engine. + * + * @return The current screening model type. + */ [[nodiscard]] screening::ScreeningType getScreeningModel() const override; private: using Config = fourdst::config::Config; using LogManager = fourdst::logging::LogManager; + /** @brief A reference to the singleton Config instance. */ Config& m_config = Config::getInstance(); + /** @brief A pointer to the logger instance. */ quill::Logger* m_logger = LogManager::getInstance().getLogger("log"); + /** @brief The underlying engine to which this view delegates calculations. */ DynamicEngine& m_baseEngine; - std::string m_fileName; ///< Name of the file defining the reaction set considered by the engine view. - const io::NetworkFileParser& m_parser; ///< Parser for the network file. + ///< Name of the file defining the reaction set considered by the engine view. + std::string m_fileName; + ///< Parser for the network file. + const io::NetworkFileParser& m_parser; - std::vector m_activeSpecies; ///< Active species in the defined engine. - reaction::LogicalReactionSet m_activeReactions; ///< Active reactions in the defined engine. + ///< Active species in the defined engine. + std::vector m_activeSpecies; + ///< Active reactions in the defined engine. + reaction::LogicalReactionSet m_activeReactions; - std::vector m_speciesIndexMap; ///< Maps indices of active species to indices in the full network. - std::vector m_reactionIndexMap; ///< Maps indices of active reactions to indices in the full network. + ///< Maps indices of active species to indices in the full network. + std::vector m_speciesIndexMap; + ///< Maps indices of active reactions to indices in the full network. + std::vector m_reactionIndexMap; + /** @brief A flag indicating whether the view is stale and needs to be updated. */ bool m_isStale = true; private: + /** + * @brief Builds the active species and reaction sets from a file. + * + * This method uses the provided parser to read reaction names from the given file. + * It then finds these reactions in the base engine's full network and populates + * the `m_activeReactions` and `m_activeSpecies` members. Finally, it constructs + * the index maps for the active sets. + * + * @param fileName The path to the network definition file. + * + * @post + * - `m_activeReactions` and `m_activeSpecies` are populated. + * - `m_speciesIndexMap` and `m_reactionIndexMap` are constructed. + * - `m_isStale` is set to false. + * + * @throws std::runtime_error If a reaction from the file is not found in the base engine. + */ void buildFromFile(const std::string& fileName); /** * @brief Constructs the species index map. * - * @return A vector mapping culled species indices to full species indices. + * @return 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. * - * @see AdaptiveEngineView::update() + * @throws std::runtime_error If an active species is not found in the base engine's species list. */ std::vector constructSpeciesIndexMap() const; /** * @brief Constructs the reaction index map. * - * @return A vector mapping culled reaction indices to full reaction indices. + * @return 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. * - * @see AdaptiveEngineView::update() + * @throws std::runtime_error If an active reaction is not found in the base engine's reaction list. */ std::vector constructReactionIndexMap() const; /** * @brief Maps a vector of culled abundances to a vector of full abundances. * - * @param culled A vector of abundances for the active species. + * @param defined A vector of abundances for the active species. * @return A vector of abundances for the full network, with the abundances of the active - * species copied from the culled vector. + * species copied from the defined vector. */ - std::vector mapViewToFull(const std::vector& culled) const; + std::vector mapViewToFull(const std::vector& defined) const; /** * @brief Maps a vector of full abundances to a vector of culled abundances. @@ -133,23 +312,28 @@ namespace gridfire{ /** * @brief Maps a culled species index to a full species index. * - * @param culledSpeciesIndex The index of the species in the culled species list. + * @param definedSpeciesIndex The index of the species in the defined species list. * @return The index of the corresponding species in the full network. * - * @throws std::out_of_range If the culled index is out of bounds for the species index map. + * @throws std::out_of_range If the defined index is out of bounds for the species index map. */ - size_t mapViewToFullSpeciesIndex(size_t culledSpeciesIndex) const; + size_t mapViewToFullSpeciesIndex(size_t definedSpeciesIndex) const; /** * @brief Maps a culled reaction index to a full reaction index. * - * @param culledReactionIndex The index of the reaction in the culled reaction list. + * @param definedReactionIndex The index of the reaction in the defined reaction list. * @return The index of the corresponding reaction in the full network. * - * @throws std::out_of_range If the culled index is out of bounds for the reaction index map. + * @throws std::out_of_range If the defined index is out of bounds for the reaction index map. */ - size_t mapViewToFullReactionIndex(size_t culledReactionIndex) const; + size_t mapViewToFullReactionIndex(size_t definedReactionIndex) const; + /** + * @brief Validates that the FileDefinedEngineView is not stale. + * + * @throws std::runtime_error If the view is stale (i.e., `update()` has not been called after the view was made stale). + */ void validateNetworkState() const; }; } \ No newline at end of file diff --git a/src/network/include/gridfire/io/network_file.h b/src/network/include/gridfire/io/network_file.h index 4ed81f00..d742ec7b 100644 --- a/src/network/include/gridfire/io/network_file.h +++ b/src/network/include/gridfire/io/network_file.h @@ -10,21 +10,111 @@ namespace gridfire::io { + /** + * @struct ParsedNetworkData + * @brief Holds the data parsed from a network file. + * + * This struct is used to return the results of parsing a reaction network + * file. It contains the list of reaction names that define the network. + */ struct ParsedNetworkData { + /** + * @brief A vector of reaction names in their PEN-style format. + * + * Projectile, Ejectile style names p(p,e+)d is a common format for representing + * nuclear reactions as strings. + */ std::vector reactionPENames; }; + /** + * @class NetworkFileParser + * @brief An abstract base class for network file parsers. + * + * This class defines the interface for parsing files that contain + * reaction network definitions. Derived classes must implement the `parse` + * method to handle specific file formats. + */ class NetworkFileParser { public: + /** + * @brief Virtual destructor for the base class. + */ virtual ~NetworkFileParser() = default; + /** + * @brief Parses a network file and returns the parsed data. + * + * This is a pure virtual function that must be implemented by derived + * classes. It takes a filename as input and returns a `ParsedNetworkData` + * struct containing the information extracted from the file. + * + * @param filename The path to the network file to parse. + * @return A `ParsedNetworkData` struct containing the parsed reaction data. + * + * @throws std::runtime_error If the file cannot be opened or a parsing + * error occurs. + * + * @b Usage + * @code + * std::unique_ptr parser = std::make_unique(); + * try { + * ParsedNetworkData data = parser->parse("my_reactions.txt"); + * for (const auto& reaction_name : data.reactionPENames) { + * // ... process reaction name + * } + * } catch (const std::runtime_error& e) { + * // ... handle error + * } + * @endcode + */ [[nodiscard]] virtual ParsedNetworkData parse(const std::string& filename) const = 0; }; + /** + * @class SimpleReactionListFileParser + * @brief A parser for simple text files containing a list of reactions. + * + * This parser reads a file where each line contains a single reaction name. + * It supports comments (lines starting with '#') and ignores empty lines. + * + * @implements NetworkFileParser + */ class SimpleReactionListFileParser final : public NetworkFileParser { public: + /** + * @brief Constructs a SimpleReactionListFileParser. + * + * @post The parser is initialized and ready to parse files. + */ explicit SimpleReactionListFileParser(); + /** + * @brief Parses a simple reaction list file. + * + * This method reads the specified file line by line. It trims whitespace + * from each line, ignores lines that are empty or start with a '#' + * comment character, and stores the remaining lines as reaction names. + * + * @param filename The path to the simple reaction list file. + * @return A `ParsedNetworkData` struct containing the list of reaction names. + * + * @throws std::runtime_error If the file cannot be opened for reading. + * + * @b Algorithm + * 1. Opens the specified file. + * 2. Reads the file line by line. + * 3. For each line, it removes any trailing comments (starting with '#'). + * 4. Trims leading and trailing whitespace. + * 5. If the line is not empty, it is added to the list of reaction names. + * 6. Returns the populated `ParsedNetworkData` struct. + * + * @b Usage + * @code + * SimpleReactionListFileParser parser; + * ParsedNetworkData data = parser.parse("reactions.txt"); + * @endcode + */ ParsedNetworkData parse(const std::string& filename) const override; private: using Config = fourdst::config::Config; @@ -33,9 +123,38 @@ namespace gridfire::io { quill::Logger* m_logger = LogManager::getInstance().getLogger("log"); }; + /** + * @class MESANetworkFileParser + * @brief A parser for MESA-format network files. + * + * This class is designed to parse reaction network files that follow the + * format used by the MESA stellar evolution code. + * + * @implements NetworkFileParser + */ class MESANetworkFileParser final : public NetworkFileParser { public: + /** + * @brief Constructs a MESANetworkFileParser. + * + * @param filename The path to the MESA network file. This may be used + * to pre-configure the parser. + * + * @post The parser is initialized with the context of the given file. + */ explicit MESANetworkFileParser(const std::string& filename); + /** + * @brief Parses a MESA-format network file. + * + * This method will read and interpret the structure of a MESA network + * file to extract the list of reactions. + * + * @param filename The path to the MESA network file. + * @return A `ParsedNetworkData` struct containing the list of reaction names. + * + * @throws std::runtime_error If the file cannot be opened or if it + * contains formatting errors. + */ ParsedNetworkData parse(const std::string& filename) const override; private: using Config = fourdst::config::Config; diff --git a/src/network/include/gridfire/screening/screening_abstract.h b/src/network/include/gridfire/screening/screening_abstract.h index 0529fcda..0a03ce89 100644 --- a/src/network/include/gridfire/screening/screening_abstract.h +++ b/src/network/include/gridfire/screening/screening_abstract.h @@ -9,11 +9,67 @@ #include namespace gridfire::screening { + /** + * @class ScreeningModel + * @brief An abstract base class for plasma screening models. + * + * This class defines the interface for models that calculate the enhancement + * factor for nuclear reaction rates due to the electrostatic screening of + * interacting nuclei by the surrounding plasma. Concrete implementations of + * this class will provide specific screening prescriptions (e.g., WEAK, + * BARE, STRONG, etc.). + * + * The interface provides methods for calculating screening factors for both + * standard double-precision inputs and for CppAD's automatic differentiation + * types, allowing the screening contributions to be included in Jacobian + * calculations. + */ class ScreeningModel { public: + /// @brief Alias for CppAD Automatic Differentiation type for double precision. using ADDouble = CppAD::AD; + /** + * @brief Virtual destructor. + * + * Ensures that derived class destructors are called correctly. + */ virtual ~ScreeningModel() = default; + /** + * @brief Calculates screening factors for a set of reactions. + * + * This is a pure virtual function that must be implemented by derived + * classes. It computes the screening enhancement factor for each reaction + * in the provided set based on the given plasma conditions. + * + * @param reactions The set of logical reactions in the network. + * @param species A vector of all atomic species involved in the network. + * @param Y A vector of the molar abundances (mol/g) for each species. + * @param T9 The temperature in units of 10^9 K. + * @param rho The plasma density in g/cm^3. + * @return A vector of screening factors (dimensionless), one for each reaction + * in the `reactions` set, in the same order. + * + * @b Pre-conditions + * - The size of the `Y` vector must match the size of the `species` vector. + * - `T9` and `rho` must be positive. + * + * @b Post-conditions + * - The returned vector will have the same size as the `reactions` set. + * - Each element in the returned vector will be >= 1.0. + * + * @b Usage + * @code + * // Assume 'model' is a std::unique_ptr to a concrete implementation + * // and other parameters (reactions, species, Y, T9, rho) are initialized. + * std::vector screening_factors = model->calculateScreeningFactors( + * reactions, species, Y, T9, rho + * ); + * for (size_t i = 0; i < reactions.size(); ++i) { + * // ... use screening_factors[i] ... + * } + * @endcode + */ virtual std::vector calculateScreeningFactors( const reaction::LogicalReactionSet& reactions, const std::vector& species, @@ -22,6 +78,25 @@ namespace gridfire::screening { const double rho ) const = 0; + /** + * @brief Calculates screening factors using CppAD types for automatic differentiation. + * + * This is a pure virtual function that provides an overload of + * `calculateScreeningFactors` for use with CppAD. It allows the derivatives + * of the screening factors with respect to abundances, temperature, and + * density to be computed automatically. + * + * @param reactions The set of logical reactions in the network. + * @param species A vector of all atomic species involved in the network. + * @param Y A vector of the molar abundances (mol/g) for each species, as AD types. + * @param T9 The temperature in units of 10^9 K, as an AD type. + * @param rho The plasma density in g/cm^3, as an AD type. + * @return A vector of screening factors (dimensionless), as AD types. + * + * @b Note + * This method is essential for including the effects of screening in the + * Jacobian matrix of the reaction network. + */ virtual std::vector calculateScreeningFactors( const reaction::LogicalReactionSet& reactions, const std::vector& species, diff --git a/src/network/include/gridfire/screening/screening_bare.h b/src/network/include/gridfire/screening/screening_bare.h index 52bff705..f1a66682 100644 --- a/src/network/include/gridfire/screening/screening_bare.h +++ b/src/network/include/gridfire/screening/screening_bare.h @@ -6,9 +6,51 @@ #include "cppad/cppad.hpp" namespace gridfire::screening { + /** + * @class BareScreeningModel + * @brief A screening model that applies no screening effect. + * + * This class implements the `ScreeningModel` interface but returns a + * screening factor of 1.0 for all reactions, regardless of the plasma + * conditions. It represents the case of bare, unscreened nuclei and serves + * as a baseline or can be used when screening effects are negligible or + * intentionally ignored. + * + * @implements ScreeningModel + */ class BareScreeningModel final : public ScreeningModel { + /// @brief Alias for CppAD Automatic Differentiation type for double precision. using ADDouble = CppAD::AD; public: + /** + * @brief Calculates screening factors, which are always 1.0. + * + * This implementation returns a vector of screening factors where every + * element is 1.0, effectively applying no screening correction to the + * reaction rates. + * + * @param reactions The set of logical reactions in the network. + * @param species A vector of all atomic species (unused). + * @param Y A vector of the molar abundances (unused). + * @param T9 The temperature (unused). + * @param rho The plasma density (unused). + * @return A vector of doubles, with each element being 1.0, of the same + * size as the `reactions` set. + * + * @b Algorithm + * The function simply creates and returns a `std::vector` of the + * same size as the input `reactions` set, with all elements initialized to 1.0. + * + * @b Usage + * @code + * BareScreeningModel bare_model; + * // ... (initialize reactions, species, Y, T9, rho) + * std::vector factors = bare_model.calculateScreeningFactors( + * reactions, species, Y, T9, rho + * ); + * // 'factors' will contain [1.0, 1.0, ...] + * @endcode + */ [[nodiscard]] std::vector calculateScreeningFactors( const reaction::LogicalReactionSet& reactions, const std::vector& species, @@ -17,6 +59,21 @@ namespace gridfire::screening { const double rho ) const override; + /** + * @brief Calculates screening factors for AD types, which are always 1.0. + * + * This implementation returns a vector of AD-typed screening factors where + * every element is 1.0. This is the automatic differentiation-compatible + * version. + * + * @param reactions The set of logical reactions in the network. + * @param species A vector of all atomic species (unused). + * @param Y A vector of the molar abundances as AD types (unused). + * @param T9 The temperature as an AD type (unused). + * @param rho The plasma density as an AD type (unused). + * @return A vector of ADDouble, with each element being 1.0, of the same + * size as the `reactions` set. + */ [[nodiscard]] std::vector calculateScreeningFactors( const reaction::LogicalReactionSet& reactions, const std::vector& species, @@ -25,6 +82,21 @@ namespace gridfire::screening { const ADDouble rho ) const override; private: + /** + * @brief Template implementation for calculating screening factors. + * + * This private helper function contains the core logic for both the `double` + * and `ADDouble` versions of `calculateScreeningFactors`. It is templated + * to handle both numeric types seamlessly. + * + * @tparam T The numeric type, either `double` or `CppAD::AD`. + * @param reactions The set of reactions for which to calculate factors. + * @param species A vector of all atomic species (unused). + * @param Y A vector of molar abundances (unused). + * @param T9 The temperature (unused). + * @param rho The density (unused). + * @return A vector of type `T` with all elements initialized to 1.0. + */ template [[nodiscard]] std::vector calculateFactors_impl( const reaction::LogicalReactionSet& reactions, @@ -35,6 +107,21 @@ namespace gridfire::screening { ) const; }; + /** + * @brief Template implementation for the bare screening model. + * + * This function provides the actual implementation for `calculateFactors_impl`. + * It creates a vector of the appropriate numeric type (`T`) and size, and + * initializes all its elements to 1.0, representing no screening. + * + * @tparam T The numeric type, either `double` or `CppAD::AD`. + * @param reactions The set of reactions, used to determine the size of the output vector. + * @param species Unused parameter. + * @param Y Unused parameter. + * @param T9 Unused parameter. + * @param rho Unused parameter. + * @return A `std::vector` of the same size as `reactions`, with all elements set to 1.0. + */ template std::vector BareScreeningModel::calculateFactors_impl( const reaction::LogicalReactionSet &reactions, diff --git a/src/network/include/gridfire/screening/screening_types.h b/src/network/include/gridfire/screening/screening_types.h index 77c2168e..1e850790 100644 --- a/src/network/include/gridfire/screening/screening_types.h +++ b/src/network/include/gridfire/screening/screening_types.h @@ -5,10 +5,66 @@ #include namespace gridfire::screening { + /** + * @enum ScreeningType + * @brief Enumerates the available plasma screening models. + * + * This enum provides a set of identifiers for the different screening + * prescriptions that can be used in the reaction rate calculations. + */ enum class ScreeningType { - BARE, ///< No screening applied - WEAK, ///< Weak screening model + BARE, ///< No screening applied. The screening factor is always 1.0. + /** + * @brief Weak screening model (Salpeter, 1954). + * + * This model is suitable for non-degenerate, non-relativistic plasmas + * where the electrostatic potential energy between ions is small compared + * to their thermal kinetic energy. The screening enhancement factor is + * calculated as `exp(H_12)`. + * + * @b Algorithm + * 1. A composition-dependent term, `ζ = ∑(Z_i^2 + Z_i) * Y_i`, is calculated, + * where Z_i is the charge and Y_i is the molar abundance of each species. + * 2. A prefactor is computed: `prefactor = 0.188 * sqrt(ρ / T₇³) * sqrt(ζ)`, + * where ρ is the density and T₇ is the temperature in 10^7 K. + * 3. For a reaction between two nuclei with charges Z₁ and Z₂, the enhancement + * term is `H_12 = prefactor * Z₁ * Z₂`. + * 4. The final screening factor is `exp(H_12)`. + * A special calculation is performed for the triple-alpha reaction. + */ + WEAK, }; + /** + * @brief A factory function to select and create a screening model. + * + * This function returns a `std::unique_ptr` to a concrete implementation of + * the `ScreeningModel` abstract base class, based on the specified `ScreeningType`. + * This allows for easy switching between different screening prescriptions at runtime. + * + * @param type The `ScreeningType` enum value specifying which model to create. + * @return A `std::unique_ptr` holding an instance of the + * requested screening model. + * + * @b Algorithm + * The function uses a `switch` statement to determine which concrete model to + * instantiate. If the provided `type` does not match a known case, it defaults + * to creating a `BareScreeningModel` to ensure safe behavior. + * + * @b Post-conditions + * - A non-null `std::unique_ptr` is always returned. + * + * @b Usage + * @code + * // Select the weak screening model + * auto screening_model = gridfire::screening::selectScreeningModel(gridfire::screening::ScreeningType::WEAK); + * + * // Use the model to calculate screening factors + * // (assuming other parameters are initialized) + * std::vector factors = screening_model->calculateScreeningFactors( + * reactions, species, Y, T9, rho + * ); + * @endcode + */ std::unique_ptr selectScreeningModel(ScreeningType type); } \ No newline at end of file diff --git a/src/network/include/gridfire/screening/screening_weak.h b/src/network/include/gridfire/screening/screening_weak.h index a1c1286a..94c82e4f 100644 --- a/src/network/include/gridfire/screening/screening_weak.h +++ b/src/network/include/gridfire/screening/screening_weak.h @@ -10,8 +10,43 @@ #include "cppad/cppad.hpp" namespace gridfire::screening { + /** + * @class WeakScreeningModel + * @brief Implements the weak screening model based on the Debye-Hückel approximation. + * + * This class provides a concrete implementation of the `ScreeningModel` + * interface for the weak screening regime, following the formulation of + * Salpeter (1954). This approach applies the Debye-Hückel theory to model the + * electrostatic shielding of nuclei in a plasma. It is applicable to + * non-degenerate, non-relativistic plasmas where thermal energy dominates + * the electrostatic potential energy. + * + * @implements ScreeningModel + */ class WeakScreeningModel final : public ScreeningModel { public: + /** + * @brief Calculates weak screening factors for a set of reactions. + * + * This method computes the screening enhancement factor for each reaction + * based on the Salpeter (1954) formula. + * + * @param reactions The set of logical reactions in the network. + * @param species A vector of all atomic species involved in the network. + * @param Y A vector of the molar abundances (mol/g) for each species. + * @param T9 The temperature in units of 10^9 K. + * @param rho The plasma density in g/cm^3. + * @return A vector of screening factors (dimensionless), one for each reaction. + * + * @b Usage + * @code + * WeakScreeningModel weak_model; + * // ... (initialize reactions, species, Y, T9, rho) + * std::vector factors = weak_model.calculateScreeningFactors( + * reactions, species, Y, T9, rho + * ); + * @endcode + */ [[nodiscard]] std::vector calculateScreeningFactors( const reaction::LogicalReactionSet& reactions, const std::vector& species, @@ -20,6 +55,20 @@ namespace gridfire::screening { const double rho ) const override; + /** + * @brief Calculates weak screening factors using CppAD types. + * + * This is the automatic differentiation-compatible version of the method. + * It allows the derivatives of the screening factors to be computed with + * respect to plasma conditions. + * + * @param reactions The set of logical reactions in the network. + * @param species A vector of all atomic species involved in the network. + * @param Y A vector of the molar abundances as AD types. + * @param T9 The temperature as an AD type. + * @param rho The plasma density as an AD type. + * @return A vector of screening factors as AD types. + */ [[nodiscard]] std::vector> calculateScreeningFactors( const reaction::LogicalReactionSet& reactions, const std::vector& species, @@ -28,9 +77,25 @@ namespace gridfire::screening { const CppAD::AD rho ) const override; private: + /// @brief Logger instance for recording trace and debug information. quill::Logger* m_logger = fourdst::logging::LogManager::getInstance().getLogger("log"); private: + /** + * @brief Template implementation for calculating weak screening factors. + * + * This private helper function contains the core logic for calculating + * weak screening factors. It is templated to handle both `double` and + * `CppAD::AD` numeric types, avoiding code duplication. + * + * @tparam T The numeric type, either `double` or `CppAD::AD`. + * @param reactions The set of reactions. + * @param species A vector of all species in the network. + * @param Y A vector of molar abundances. + * @param T9 The temperature in 10^9 K. + * @param rho The density in g/cm^3. + * @return A vector of screening factors of type `T`. + */ template [[nodiscard]] std::vector calculateFactors_impl( const reaction::LogicalReactionSet& reactions, @@ -41,6 +106,37 @@ namespace gridfire::screening { ) const; }; + /** + * @brief Core implementation of the weak screening calculation (Debye-Hückel model). + * + * This function calculates the screening factor `exp(H_12)` for each reaction, + * based on the Debye-Hückel approximation as formulated by Salpeter (1954). + * + * @tparam T The numeric type (`double` or `CppAD::AD`). + * @param reactions The set of reactions to be screened. + * @param species The list of all species in the network. + * @param Y The molar abundances of the species. + * @param T9 The temperature in 10^9 K. + * @param rho The density in g/cm^3. + * @return A vector of screening factors, one for each reaction. + * + * @b Algorithm + * 1. **Low-Temperature Cutoff**: If T9 is below a small threshold (1e-9), + * screening is effectively turned off to prevent numerical instability. + * 2. **Zeta Factor (ζ)**: A composition-dependent term is calculated: + * `ζ = ∑(Z_i² + Z_i) * Y_i`, where Z_i is the charge and Y_i is the + * molar abundance of species i. + * 3. **Prefactor**: A key prefactor is computed: + * `prefactor = 0.188 * sqrt(ρ / T₇³) * sqrt(ζ)`, + * where T₇ is the temperature in units of 10^7 K. + * 4. **Screening Term (H_12)**: For each reaction, the term H_12 is calculated: + * - For a two-body reaction (reactants Z₁ and Z₂): `H_12 = prefactor * Z₁ * Z₂`. + * - For the triple-alpha reaction (3 * He4): `H_12 = 3 * (prefactor * Z_α * Z_α)`. + * - For one-body reactions (decays), H_12 is 0, so the factor is 1. + * 5. **Capping**: The value of H_12 is capped at 2.0 to prevent excessively large + * and unphysical screening factors (exp(2) ≈ 7.4). + * 6. **Final Factor**: The screening factor for the reaction is `exp(H_12)`. + */ template std::vector WeakScreeningModel::calculateFactors_impl( const reaction::LogicalReactionSet& reactions, diff --git a/src/network/include/gridfire/utils/logging.h b/src/network/include/gridfire/utils/logging.h index e3e6f96f..c1b8d0b4 100644 --- a/src/network/include/gridfire/utils/logging.h +++ b/src/network/include/gridfire/utils/logging.h @@ -6,6 +6,56 @@ #include namespace gridfire::utils { + /** + * @brief Formats a map of nuclear species timescales into a human-readable string. + * + * This function takes a reaction network engine and the current plasma + * conditions to calculate the characteristic timescales for each species. + * It then formats this information into a neatly aligned ASCII table, which + * is suitable for logging or printing to the console. + * + * @param engine A constant reference to a `DynamicEngine` object, used to + * calculate the species timescales. + * @param Y A vector of the molar abundances (mol/g) for each species. + * @param T9 The temperature in units of 10^9 K. + * @param rho The plasma density in g/cm^3. + * @return A std::string containing the formatted table of species and their + * timescales. + * + * @b Pre-conditions + * - The `engine` must be in a valid state. + * - The size of the `Y` vector must be consistent with the number of species + * expected by the `engine`. + * + * @b Algorithm + * 1. Calls the `getSpeciesTimescales` method on the provided `engine` to get + * the timescale for each species under the given conditions. + * 2. Determines the maximum length of the species names to dynamically set the + * width of the "Species" column for proper alignment. + * 3. Uses a `std::ostringstream` to build the output string. + * 4. Constructs a header for the table with titles "Species" and "Timescale (s)". + * 5. Iterates through the map of timescales, adding a row to the table for + * each species. + * 6. Timescales are formatted in scientific notation with 3 digits of precision. + * 7. Special handling is included to print "inf" for infinite timescales. + * 8. The final string, including header and footer lines, is returned. + * + * @b Usage + * @code + * // Assume 'my_engine' is a valid DynamicEngine object and Y, T9, rho are initialized. + * std::string log_output = gridfire::utils::formatNuclearTimescaleLogString(my_engine, Y, T9, rho); + * std::cout << log_output; + * + * // Example Output: + * // == Timescales (s) == + * // Species Timescale (s) + * // ========================== + * // h1 1.234e+05 + * // he4 inf + * // c12 8.765e-02 + * // ========================== + * @endcode + */ std::string formatNuclearTimescaleLogString( const DynamicEngine& engine, const std::vector& Y,