<ahref="engine__graph_8h.html">Go to the documentation of this file.</a><divclass="fragment"><divclass="line"><aid="l00001"name="l00001"></a><spanclass="lineno"> 1</span><spanclass="preprocessor">#pragma once</span></div>
<divclass="line"><aid="l00033"name="l00033"></a><spanclass="lineno"> 33</span><spanclass="comment">// PERF: The function getNetReactionStoichiometry returns a map of species to their stoichiometric coefficients for a given reaction.</span></div>
<divclass="line"><aid="l00034"name="l00034"></a><spanclass="lineno"> 34</span><spanclass="comment">// this makes extra copies of the species, which is not ideal and could be optimized further.</span></div>
<divclass="line"><aid="l00035"name="l00035"></a><spanclass="lineno"> 35</span><spanclass="comment">// Even more relevant is the member m_reactionIDMap which makes copies of a REACLIBReaction for each reaction ID.</span></div>
<divclass="line"><aid="l00036"name="l00036"></a><spanclass="lineno"> 36</span><spanclass="comment">// REACLIBReactions are quite large data structures, so this could be a performance bottleneck.</span></div>
<divclass="line"><aid="l00039"name="l00039"></a><spanclass="lineno"><aclass="line"href="namespacegridfire.html#afd6f117eb2da3bab3873edc09d0926cf"> 39</a></span><spanclass="keyword">static</span><spanclass="keywordtype">bool</span><aclass="code hl_variable"href="namespacegridfire.html#afd6f117eb2da3bab3873edc09d0926cf">s_debug</a> = <spanclass="keyword">false</span>; <spanclass="comment">// Global debug flag for the GraphEngine</span></div>
<divclass="line"><aid="l00591"name="l00591"></a><spanclass="lineno"> 591</span> T <aclass="code hl_function"href="classgridfire_1_1_graph_engine.html#a9245642b741f215e52861d00e756fb3f">calculateMolarReactionFlow</a>(</div>
<divclass="line"><aid="l00599"name="l00599"></a><spanclass="lineno"> 599</span> T <aclass="code hl_function"href="classgridfire_1_1_graph_engine.html#a17774cd9ffcf1ba94019df766a0984a0">calculateReverseMolarReactionFlow</a>(</div>
<divclass="line"><aid="l00600"name="l00600"></a><spanclass="lineno"> 600</span> T T9,</div>
<divclass="line"><aid="l00601"name="l00601"></a><spanclass="lineno"> 601</span> T rho,</div>
<divclass="line"><aid="l00667"name="l00667"></a><spanclass="lineno"><aclass="line"href="classgridfire_1_1_graph_engine.html#a17774cd9ffcf1ba94019df766a0984a0"> 667</a></span> T <aclass="code hl_function"href="classgridfire_1_1_graph_engine.html#a17774cd9ffcf1ba94019df766a0984a0">GraphEngine::calculateReverseMolarReactionFlow</a>(</div>
<divclass="line"><aid="l00668"name="l00668"></a><spanclass="lineno"> 668</span> T T9,</div>
<divclass="line"><aid="l00669"name="l00669"></a><spanclass="lineno"> 669</span> T rho,</div>
<divclass="line"><aid="l00676"name="l00676"></a><spanclass="lineno"> 676</span><spanclass="keywordflow">return</span><spanclass="keyword">static_cast<</span>T<spanclass="keyword">></span>(0.0); <spanclass="comment">// If reverse reactions are not used, return zero</span></div>
<divclass="line"><aid="l00689"name="l00689"></a><spanclass="lineno"> 689</span> T reverseRateConstant = <spanclass="keyword">static_cast<</span>T<spanclass="keyword">></span>(0.0);</div>
<divclass="line"><aid="l00690"name="l00690"></a><spanclass="lineno"> 690</span><spanclass="keywordflow">if</span><spanclass="keyword">constexpr</span> (std::is_same_v<T, ADDouble>) { <spanclass="comment">// Check if T is an AD type at compile time</span></div>
<divclass="line"><aid="l00693"name="l00693"></a><spanclass="lineno"> 693</span><spanclass="comment">// A. Instantiate the atomic operator for the specific reaction</span></div>
<divclass="line"><aid="l00694"name="l00694"></a><spanclass="lineno"> 694</span><spanclass="comment">// B. Marshal the input vector</span></div>
<divclass="line"><aid="l00701"name="l00701"></a><spanclass="lineno"> 701</span><spanclass="keywordflow">return</span> reverseMolarFlow; <spanclass="comment">// If no atomic function is available, return zero</span></div>
<divclass="line"><aid="l00704"name="l00704"></a><spanclass="lineno"> 704</span><spanclass="comment">// A,B If not calling with an AD type, calculate the reverse rate directly</span></div>
<divclass="line"><aid="l00730"name="l00730"></a><spanclass="lineno"> 730</span><spanclass="comment">// F. Determine the power for the density term</span></div>
<divclass="line"><aid="l00732"name="l00732"></a><spanclass="lineno"> 732</span><spanclass="keyword">const</span> T rho_power = CppAD::pow(rho, <spanclass="keyword">static_cast<</span>T<spanclass="keyword">></span>(num_products > 1 ? num_products - 1 : 0)); <spanclass="comment">// Density raised to the power of (N-1) for N products</span></div>
<divclass="line"><aid="l00734"name="l00734"></a><spanclass="lineno"> 734</span><spanclass="comment">// G. Assemble the reverse molar flow rate</span></div>
<divclass="line"><aid="l00746"name="l00746"></a><spanclass="lineno"> 746</span><spanclass="keyword">const</span> std::vector<T>&Y_in, T T9, T rho)<spanclass="keyword"> const </span>{</div>
<divclass="line"><aid="l00759"name="l00759"></a><spanclass="lineno"> 759</span><spanclass="comment">// --- AD Pre-setup (flags to control conditionals in an AD safe / branch aware manner) ---</span></div>
<divclass="line"><aid="l00760"name="l00760"></a><spanclass="lineno"> 760</span><spanclass="comment">// ----- Constants for AD safe calculations ---</span></div>
<divclass="line"><aid="l00761"name="l00761"></a><spanclass="lineno"> 761</span><spanclass="keyword">const</span> T zero = <spanclass="keyword">static_cast<</span>T<spanclass="keyword">></span>(0.0);</div>
<divclass="line"><aid="l00762"name="l00762"></a><spanclass="lineno"> 762</span><spanclass="keyword">const</span> T one = <spanclass="keyword">static_cast<</span>T<spanclass="keyword">></span>(1.0);</div>
<divclass="line"><aid="l00764"name="l00764"></a><spanclass="lineno"> 764</span><spanclass="comment">// ----- Initialize variables for molar concentration product and thresholds ---</span></div>
<divclass="line"><aid="l00765"name="l00765"></a><spanclass="lineno"> 765</span><spanclass="comment">// Note: the logic here is that we use CppAD::CondExprLt to test thresholds and if they are less we set the flag</span></div>
<divclass="line"><aid="l00766"name="l00766"></a><spanclass="lineno"> 766</span><spanclass="comment">// to zero so that the final returned reaction flow is 0. This is as opposed to standard if statements</span></div>
<divclass="line"><aid="l00767"name="l00767"></a><spanclass="lineno"> 767</span><spanclass="comment">// which create branches that break the AD tape.</span></div>
<divclass="line"><aid="l00768"name="l00768"></a><spanclass="lineno"> 768</span><spanclass="keyword">const</span> T rho_threshold = <spanclass="keyword">static_cast<</span>T<spanclass="keyword">></span>(<aclass="code hl_variable"href="namespacegridfire.html#ada3c137c014ecd8d06200fea2d1a9f50">MIN_DENSITY_THRESHOLD</a>);</div>
<divclass="line"><aid="l00770"name="l00770"></a><spanclass="lineno"> 770</span><spanclass="comment">// --- Check if the density is below the threshold where we ignore reactions ---</span></div>
<divclass="line"><aid="l00771"name="l00771"></a><spanclass="lineno"> 771</span> T threshold_flag = CppAD::CondExpLt(rho, rho_threshold, zero, one); <spanclass="comment">// If rho < threshold, set flag to 0</span></div>
<divclass="line"><aid="l00773"name="l00773"></a><spanclass="lineno"> 773</span> std::vector<T> Y = Y_in;</div>
<divclass="line"><aid="l00774"name="l00774"></a><spanclass="lineno"> 774</span><spanclass="keywordflow">for</span> (<spanclass="keywordtype">size_t</span> i = 0; i <<aclass="code hl_variable"href="classgridfire_1_1_graph_engine.html#a92d26068ba139e47d335f5fe9e2814cc">m_networkSpecies</a>.size(); ++i) {</div>
<divclass="line"><aid="l00775"name="l00775"></a><spanclass="lineno"> 775</span><spanclass="comment">// We use CppAD::CondExpLt to handle AD taping and prevent branching</span></div>
<divclass="line"><aid="l00776"name="l00776"></a><spanclass="lineno"> 776</span><spanclass="comment">// Note that while this is syntactically more complex this is equivalent to</span></div>
<divclass="line"><aid="l00777"name="l00777"></a><spanclass="lineno"> 777</span><spanclass="comment">// if (Y[i] < 0) {Y[i] = 0;}</span></div>
<divclass="line"><aid="l00778"name="l00778"></a><spanclass="lineno"> 778</span><spanclass="comment">// The issue is that this would introduce a branch which would require the auto diff tape to be re-recorded</span></div>
<divclass="line"><aid="l00779"name="l00779"></a><spanclass="lineno"> 779</span><spanclass="comment">// each timestep, which is very inefficient.</span></div>
<divclass="line"><aid="l00783"name="l00783"></a><spanclass="lineno"> 783</span><spanclass="keyword">const</span> T u = <spanclass="keyword">static_cast<</span>T<spanclass="keyword">></span>(<aclass="code hl_variable"href="classgridfire_1_1_graph_engine.html#a10c01bc20ae668c2857efb2a1783098e">m_constants</a>.u); <spanclass="comment">// Atomic mass unit in grams</span></div>
<divclass="line"><aid="l00784"name="l00784"></a><spanclass="lineno"> 784</span><spanclass="keyword">const</span> T N_A = <spanclass="keyword">static_cast<</span>T<spanclass="keyword">></span>(<aclass="code hl_variable"href="classgridfire_1_1_graph_engine.html#a10c01bc20ae668c2857efb2a1783098e">m_constants</a>.Na); <spanclass="comment">// Avogadro's number in mol^-1</span></div>
<divclass="line"><aid="l00785"name="l00785"></a><spanclass="lineno"> 785</span><spanclass="keyword">const</span> T c = <spanclass="keyword">static_cast<</span>T<spanclass="keyword">></span>(<aclass="code hl_variable"href="classgridfire_1_1_graph_engine.html#a10c01bc20ae668c2857efb2a1783098e">m_constants</a>.c); <spanclass="comment">// Speed of light in cm/s</span></div>
<divclass="line"><aid="l00787"name="l00787"></a><spanclass="lineno"> 787</span><spanclass="comment">// --- SINGLE LOOP OVER ALL REACTIONS ---</span></div>
<divclass="line"><aid="l00807"name="l00807"></a><spanclass="lineno"> 807</span><spanclass="comment">// 3. Use the rate to update all relevant species derivatives (dY/dt)</span></div>
<divclass="line"><aid="l00826"name="l00826"></a><spanclass="lineno"><aclass="line"href="classgridfire_1_1_graph_engine.html#a5e96b5a0b34c8932f0e14eabda57f1a4"> 826</a></span> T <aclass="code hl_function"href="classgridfire_1_1_graph_engine.html#a9245642b741f215e52861d00e756fb3f">GraphEngine::calculateMolarReactionFlow</a>(</div>
<divclass="line"><aid="l00833"name="l00833"></a><spanclass="lineno"> 833</span><spanclass="comment">// --- Pre-setup (flags to control conditionals in an AD safe / branch aware manner) ---</span></div>
<divclass="line"><aid="l00834"name="l00834"></a><spanclass="lineno"> 834</span><spanclass="comment">// ----- Constants for AD safe calculations ---</span></div>
<divclass="line"><aid="l00835"name="l00835"></a><spanclass="lineno"> 835</span><spanclass="keyword">const</span> T zero = <spanclass="keyword">static_cast<</span>T<spanclass="keyword">></span>(0.0);</div>
<divclass="line"><aid="l00837"name="l00837"></a><spanclass="lineno"> 837</span><spanclass="comment">// --- Calculate the molar reaction rate (in units of [s^-1][cm^3(N-1)][mol^(1-N)] for N reactants) ---</span></div>
<divclass="line"><aid="l00838"name="l00838"></a><spanclass="lineno"> 838</span><spanclass="keyword">const</span> T k_reaction = <aclass="code hl_namespace"href="namespacegridfire_1_1reaction.html">reaction</a>.calculate_rate(T9);</div>
<divclass="line"><aid="l00840"name="l00840"></a><spanclass="lineno"> 840</span><spanclass="comment">// --- Cound the number of each reactant species to account for species multiplicity ---</span></div>
<divclass="line"><aid="l00848"name="l00848"></a><spanclass="lineno"> 848</span><spanclass="comment">// --- Accumulator for the molar concentration ---</span></div>
<divclass="line"><aid="l00851"name="l00851"></a><spanclass="lineno"> 851</span><spanclass="comment">// --- Loop through each unique reactant species and calculate the molar concentration for that species then multiply that into the accumulator ---</span></div>
<divclass="line"><aid="l00853"name="l00853"></a><spanclass="lineno"> 853</span><spanclass="comment">// --- Resolve species to molar abundance ---</span></div>
<divclass="line"><aid="l00854"name="l00854"></a><spanclass="lineno"> 854</span><spanclass="comment">// PERF: Could probably optimize out this lookup</span></div>
<divclass="line"><aid="l00859"name="l00859"></a><spanclass="lineno"> 859</span><spanclass="comment">// --- 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 ---</span></div>
<divclass="line"><aid="l00867"name="l00867"></a><spanclass="lineno"> 867</span><spanclass="comment">// --- Final reaction flow calculation [mol][s^-1][g^-1] ---</span></div>
<divclass="line"><aid="l00868"name="l00868"></a><spanclass="lineno"> 868</span><spanclass="comment">// Note: If the threshold flag ever gets set to zero this will return zero.</span></div>
<divclass="line"><aid="l00869"name="l00869"></a><spanclass="lineno"> 869</span><spanclass="comment">// This will result basically in multiple branches being written to the AD tape, which will make</span></div>
<divclass="line"><aid="l00870"name="l00870"></a><spanclass="lineno"> 870</span><spanclass="comment">// the tape more expensive to record, but it will also mean that we only need to record it once for</span></div>
<divclass="line"><aid="l00871"name="l00871"></a><spanclass="lineno"> 871</span><spanclass="comment">// the entire network.</span></div>
<divclass="line"><aid="l00872"name="l00872"></a><spanclass="lineno"> 872</span><spanclass="keyword">const</span> T densityTerm = CppAD::pow(rho, totalReactants > 1 ? <spanclass="keyword">static_cast<</span>T<spanclass="keyword">></span>(totalReactants - 1) : zero); <spanclass="comment">// Density raised to the power of (N-1) for N reactants</span></div>
<divclass="ttc"id="aclassgridfire_1_1_dynamic_engine_html"><divclass="ttname"><ahref="classgridfire_1_1_dynamic_engine.html">gridfire::DynamicEngine</a></div><divclass="ttdoc">Abstract class for engines supporting Jacobian and stoichiometry operations.</div><divclass="ttdef"><b>Definition</b><ahref="engine__abstract_8h_source.html#l00130">engine_abstract.h:130</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_1_1_atomic_reverse_rate_html_a75d355a0bef27217165644affd0cca4d"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine_1_1_atomic_reverse_rate.html#a75d355a0bef27217165644affd0cca4d">gridfire::GraphEngine::AtomicReverseRate::m_engine</a></div><divclass="ttdeci">const GraphEngine & m_engine</div><divclass="ttdef"><b>Definition</b><ahref="#l00445">engine_graph.h:445</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_1_1_atomic_reverse_rate_html_a98ed8b450f7868f55e8362a848a4710d"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine_1_1_atomic_reverse_rate.html#a98ed8b450f7868f55e8362a848a4710d">gridfire::GraphEngine::AtomicReverseRate::m_reaction</a></div><divclass="ttdeci">const reaction::Reaction & m_reaction</div><divclass="ttdef"><b>Definition</b><ahref="#l00444">engine_graph.h:444</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_a0ed390f3e598ebba4e245ac90bb78767"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#a0ed390f3e598ebba4e245ac90bb78767">gridfire::GraphEngine::getNetworkSpecies</a></div><divclass="ttdeci">const std::vector< fourdst::atomic::Species >& getNetworkSpecies() const override</div><divclass="ttdoc">Gets the list of species in the network.</div><divclass="ttdef"><b>Definition</b><ahref="engine__graph_8cpp_source.html#l00162">engine_graph.cpp:162</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_a17774cd9ffcf1ba94019df766a0984a0"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#a17774cd9ffcf1ba94019df766a0984a0">gridfire::GraphEngine::calculateReverseMolarReactionFlow</a></div><divclass="ttdeci">T calculateReverseMolarReactionFlow(T T9, T rho, std::vector< T > screeningFactors, std::vector< T > Y, size_t reactionIndex, const reaction::LogicalReaction &reaction) const</div><divclass="ttdef"><b>Definition</b><ahref="#l00667">engine_graph.h:667</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_a191cff35402d3c97c82c5c966a39d0de"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#a191cff35402d3c97c82c5c966a39d0de">gridfire::GraphEngine::m_usePrecomputation</a></div><divclass="ttdeci">bool m_usePrecomputation</div><divclass="ttdoc">Flag to enable or disable using precomputed reactions for efficiency. Mathematically,...</div><divclass="ttdef"><b>Definition</b><ahref="#l00472">engine_graph.h:472</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_a19b2eea0e8d05ac90f9fd7120bdc6e06"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#a19b2eea0e8d05ac90f9fd7120bdc6e06">gridfire::GraphEngine::m_full_jacobian_sparsity_pattern</a></div><divclass="ttdeci">CppAD::sparse_rc< std::vector< size_t >> m_full_jacobian_sparsity_pattern</div><divclass="ttdoc">Full sparsity pattern for the Jacobian matrix.</div><divclass="ttdef"><b>Definition</b><ahref="#l00465">engine_graph.h:465</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_a250cc6350dc052fbdfdf9a02066e7891"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#a250cc6350dc052fbdfdf9a02066e7891">gridfire::GraphEngine::m_jac_work</a></div><divclass="ttdeci">CppAD::sparse_jac_work m_jac_work</div><divclass="ttdoc">Work object for sparse Jacobian calculations.</div><divclass="ttdef"><b>Definition</b><ahref="#l00464">engine_graph.h:464</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_a26602e1b3c610780a47b5a6511d6d567"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#a26602e1b3c610780a47b5a6511d6d567">gridfire::GraphEngine::populateReactionIDMap</a></div><divclass="ttdeci">void populateReactionIDMap()</div><divclass="ttdoc">Populates the reaction ID map.</div><divclass="ttdef"><b>Definition</b><ahref="engine__graph_8cpp_source.html#l00135">engine_graph.cpp:135</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_a2e22b111f6d00ecc9e3804a71f1ce876"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#a2e22b111f6d00ecc9e3804a71f1ce876">gridfire::GraphEngine::m_rhsADFun</a></div><divclass="ttdeci">CppAD::ADFun< double > m_rhsADFun</div><divclass="ttdoc">CppAD function for the right-hand side of the ODE.</div><divclass="ttdef"><b>Definition</b><ahref="#l00463">engine_graph.h:463</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_a2f1718c89d4aaad028102724d18fa910"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#a2f1718c89d4aaad028102724d18fa910">gridfire::GraphEngine::m_jacobianMatrix</a></div><divclass="ttdeci">boost::numeric::ublas::compressed_matrix< double > m_jacobianMatrix</div><divclass="ttdoc">Jacobian matrix (species x species).</div><divclass="ttdef"><b>Definition</b><ahref="#l00462">engine_graph.h:462</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_a303e6093591cde91430f866a04a8be7c"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#a303e6093591cde91430f866a04a8be7c">gridfire::GraphEngine::getJacobianMatrixEntry</a></div><divclass="ttdeci">double getJacobianMatrixEntry(const int i, const int j) const override</div><divclass="ttdoc">Gets an entry from the previously generated Jacobian matrix.</div><divclass="ttdef"><b>Definition</b><ahref="engine__graph_8cpp_source.html#l00744">engine_graph.cpp:744</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_a30e09ed0bce6aa5fc89beaa316a7b827"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#a30e09ed0bce6aa5fc89beaa316a7b827">gridfire::GraphEngine::m_networkSpeciesMap</a></div><divclass="ttdeci">std::unordered_map< std::string_view, fourdst::atomic::Species > m_networkSpeciesMap</div><divclass="ttdoc">Map from species name to Species object.</div><divclass="ttdef"><b>Definition</b><ahref="#l00457">engine_graph.h:457</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_a32d3efbf4c3d5158f87c0c732cdc26dc"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#a32d3efbf4c3d5158f87c0c732cdc26dc">gridfire::GraphEngine::m_useReverseReactions</a></div><divclass="ttdeci">bool m_useReverseReactions</div><divclass="ttdoc">Flag to enable or disable reverse reactions. If false, only forward reactions are considered.</div><divclass="ttdef"><b>Definition</b><ahref="#l00474">engine_graph.h:474</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_a3621f36d77ea8c738ad7de6e5b35ca3e"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#a3621f36d77ea8c738ad7de6e5b35ca3e">gridfire::GraphEngine::m_partitionFunction</a></div><divclass="ttdeci">std::unique_ptr< partition::PartitionFunction > m_partitionFunction</div><divclass="ttdoc">Partition function for the network.</div><divclass="ttdef"><b>Definition</b><ahref="#l00479">engine_graph.h:479</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_a3b17102b143435ddfdc015d7a50c4b18"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#a3b17102b143435ddfdc015d7a50c4b18">gridfire::GraphEngine::m_config</a></div><divclass="ttdeci">Config & m_config</div><divclass="ttdef"><b>Definition</b><ahref="#l00448">engine_graph.h:448</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_a47202c43342b96480070874bffce1391"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#a47202c43342b96480070874bffce1391">gridfire::GraphEngine::populateSpeciesToIndexMap</a></div><divclass="ttdeci">void populateSpeciesToIndexMap()</div><divclass="ttdoc">Populates the species-to-index map.</div><divclass="ttdef"><b>Definition</b><ahref="engine__graph_8cpp_source.html#l00144">engine_graph.cpp:144</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_a52edc3e88f1e8fc497e1e63972d63c80"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#a52edc3e88f1e8fc497e1e63972d63c80">gridfire::GraphEngine::m_screeningType</a></div><divclass="ttdeci">screening::ScreeningType m_screeningType</div><divclass="ttdoc">Screening type for the reaction network. Default to no screening.</div><divclass="ttdef"><b>Definition</b><ahref="#l00469">engine_graph.h:469</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_a5ac7cff23e70bd07ba7e510b753e2ab6"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#a5ac7cff23e70bd07ba7e510b753e2ab6">gridfire::GraphEngine::update</a></div><divclass="ttdeci">fourdst::composition::Composition update(const NetIn &netIn) override</div><divclass="ttdoc">Update the internal state of the engine.</div><divclass="ttdef"><b>Definition</b><ahref="engine__graph_8cpp_source.html#l00908">engine_graph.cpp:908</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_a5d431d5385b1219ba29689eb29601ea3"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#a5d431d5385b1219ba29689eb29601ea3">gridfire::GraphEngine::m_precomputedReactions</a></div><divclass="ttdeci">std::vector< PrecomputedReaction > m_precomputedReactions</div><divclass="ttdoc">Precomputed reactions for efficiency.</div><divclass="ttdef"><b>Definition</b><ahref="#l00478">engine_graph.h:478</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_a5d6cc63b99b467c2a976d1fbaaa1dfa3"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#a5d6cc63b99b467c2a976d1fbaaa1dfa3">gridfire::GraphEngine::m_reactionIDMap</a></div><divclass="ttdeci">std::unordered_map< std::string_view, reaction::Reaction * > m_reactionIDMap</div><divclass="ttdoc">Map from reaction ID to REACLIBReaction. //PERF: This makes copies of REACLIBReaction and could be a ...</div><divclass="ttdef"><b>Definition</b><ahref="#l00454">engine_graph.h:454</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_a65f9f33cddb0bbd1da7c9d0cff23d581"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#a65f9f33cddb0bbd1da7c9d0cff23d581">gridfire::GraphEngine::getSpeciesTimescales</a></div><divclass="ttdeci">std::expected< std::unordered_map< fourdst::atomic::Species, double >, expectations::StaleEngineError > getSpeciesTimescales(const std::vector< double >&Y, double T9, double rho) const override</div><divclass="ttdoc">Computes timescales for all species in the network.</div><divclass="ttdef"><b>Definition</b><ahref="engine__graph_8cpp_source.html#l00864">engine_graph.cpp:864</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_a697f2004e0d02c59e83c7890742d7c9a"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#a697f2004e0d02c59e83c7890742d7c9a">gridfire::GraphEngine::getScreeningModel</a></div><divclass="ttdeci">screening::ScreeningType getScreeningModel() const override</div><divclass="ttdoc">Get the current electron screening model.</div><divclass="ttdef"><b>Definition</b><ahref="engine__graph_8cpp_source.html#l00629">engine_graph.cpp:629</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_a6b5feaf788bade212b7c8df7ac8c8152"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#a6b5feaf788bade212b7c8df7ac8c8152">gridfire::GraphEngine::getStoichiometryMatrixEntry</a></div><divclass="ttdeci">int getStoichiometryMatrixEntry(const int speciesIndex, const int reactionIndex) const override</div><divclass="ttdoc">Gets an entry from the stoichiometry matrix.</div><divclass="ttdef"><b>Definition</b><ahref="engine__graph_8cpp_source.html#l00755">engine_graph.cpp:755</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_a8110e687844f921438bb517e1d8ce62f"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#a8110e687844f921438bb517e1d8ce62f">gridfire::GraphEngine::setScreeningModel</a></div><divclass="ttdeci">void setScreeningModel(screening::ScreeningType) override</div><divclass="ttdoc">Set the electron screening model.</div><divclass="ttdef"><b>Definition</b><ahref="engine__graph_8cpp_source.html#l00624">engine_graph.cpp:624</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_a832e2fe066381811a3e0464806ff5e95"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#a832e2fe066381811a3e0464806ff5e95">gridfire::GraphEngine::exportToCSV</a></div><divclass="ttdeci">void exportToCSV(const std::string &filename) const</div><divclass="ttdoc">Exports the network to a CSV file for analysis.</div><divclass="ttdef"><b>Definition</b><ahref="engine__graph_8cpp_source.html#l00810">engine_graph.cpp:810</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_a8c29d8bbde407e913be5eb77efb2c0c9"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#a8c29d8bbde407e913be5eb77efb2c0c9">gridfire::GraphEngine::getNetReactionStoichiometry</a></div><divclass="ttdeci">static std::unordered_map< fourdst::atomic::Species, int > getNetReactionStoichiometry(const reaction::Reaction &reaction)</div><divclass="ttdoc">Gets the net stoichiometry for a given reaction.</div><divclass="ttdef"><b>Definition</b><ahref="engine__graph_8cpp_source.html#l00749">engine_graph.cpp:749</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_a8d0c0bd54a2908cff62dae7af0c149b5"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#a8d0c0bd54a2908cff62dae7af0c149b5">gridfire::GraphEngine::reserveJacobianMatrix</a></div><divclass="ttdeci">void reserveJacobianMatrix() const</div><divclass="ttdoc">Reserves space for the Jacobian matrix.</div><divclass="ttdef"><b>Definition</b><ahref="engine__graph_8cpp_source.html#l00151">engine_graph.cpp:151</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_a92d26068ba139e47d335f5fe9e2814cc"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#a92d26068ba139e47d335f5fe9e2814cc">gridfire::GraphEngine::m_networkSpecies</a></div><divclass="ttdeci">std::vector< fourdst::atomic::Species > m_networkSpecies</div><divclass="ttdoc">Vector of unique species in the network.</div><divclass="ttdef"><b>Definition</b><ahref="#l00456">engine_graph.h:456</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_a95563f6bc86007d9ee053a0f1e15b889"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#a95563f6bc86007d9ee053a0f1e15b889">gridfire::GraphEngine::recordADTape</a></div><divclass="ttdeci">void recordADTape()</div><divclass="ttdoc">Records the AD tape for the right-hand side of the ODE.</div><divclass="ttdef"><b>Definition</b><ahref="engine__graph_8cpp_source.html#l00924">engine_graph.cpp:924</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_aa6202cee0c3c481eda77cc9a91bc126b"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#aa6202cee0c3c481eda77cc9a91bc126b">gridfire::GraphEngine::involvesSpecies</a></div><divclass="ttdeci">bool involvesSpecies(const fourdst::atomic::Species &species) const</div><divclass="ttdoc">Checks if a given species is involved in the network.</div><divclass="ttdef"><b>Definition</b><ahref="engine__graph_8cpp_source.html#l00179">engine_graph.cpp:179</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_aaed3743a52246b0f7bf03995e1c12081"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#aaed3743a52246b0f7bf03995e1c12081">gridfire::GraphEngine::calculateRHSAndEnergy</a></div><divclass="ttdeci">std::expected< StepDerivatives< double >, expectations::StaleEngineError > calculateRHSAndEnergy(const std::vector< double >&Y, const double T9, const double rho) const override</div><divclass="ttdoc">Calculates the right-hand side (dY/dt) and energy generation rate.</div><divclass="ttdef"><b>Definition</b><ahref="engine__graph_8cpp_source.html#l00057">engine_graph.cpp:57</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_acb7c4f5108b0efeae48ad15598e808c3"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#acb7c4f5108b0efeae48ad15598e808c3">gridfire::GraphEngine::m_reactions</a></div><divclass="ttdeci">reaction::LogicalReactionSet m_reactions</div><divclass="ttdoc">Set of REACLIB reactions in the network.</div><divclass="ttdef"><b>Definition</b><ahref="#l00453">engine_graph.h:453</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_acdce8d87e23a2cd1504bc9472e538c0f"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#acdce8d87e23a2cd1504bc9472e538c0f">gridfire::GraphEngine::syncInternalMaps</a></div><divclass="ttdeci">void syncInternalMaps()</div><divclass="ttdoc">Synchronizes the internal maps.</div><divclass="ttdef"><b>Definition</b><ahref="engine__graph_8cpp_source.html#l00081">engine_graph.cpp:81</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_acf4cfccea20f5cb31c9886bf233a28be"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#acf4cfccea20f5cb31c9886bf233a28be">gridfire::GraphEngine::validateConservation</a></div><divclass="ttdeci">bool validateConservation() const</div><divclass="ttdoc">Validates mass and charge conservation across all reactions.</div><divclass="ttdef"><b>Definition</b><ahref="engine__graph_8cpp_source.html#l00187">engine_graph.cpp:187</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_ad049a295e2bb0f3e97b76d5742875119"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#ad049a295e2bb0f3e97b76d5742875119">gridfire::GraphEngine::generateJacobianMatrix</a></div><divclass="ttdeci">void generateJacobianMatrix(const std::vector< double >&Y_dynamic, const double T9, const double rho) const override</div><divclass="ttdoc">Generates the Jacobian matrix for the current state.</div><divclass="ttdef"><b>Definition</b><ahref="engine__graph_8cpp_source.html#l00654">engine_graph.cpp:654</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_ad1cb5fd32efc37668e2d9ecf0c72ad24"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#ad1cb5fd32efc37668e2d9ecf0c72ad24">gridfire::GraphEngine::m_stoichiometryMatrix</a></div><divclass="ttdeci">boost::numeric::ublas::compressed_matrix< int > m_stoichiometryMatrix</div><divclass="ttdoc">Stoichiometry matrix (species x reactions).</div><divclass="ttdef"><b>Definition</b><ahref="#l00460">engine_graph.h:460</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_ad45650d10fc5dff1673ae3f806d067da"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#ad45650d10fc5dff1673ae3f806d067da">gridfire::GraphEngine::getNetworkReactions</a></div><divclass="ttdeci">const reaction::LogicalReactionSet & getNetworkReactions() const override</div><divclass="ttdoc">Gets the set of logical reactions in the network.</div><divclass="ttdef"><b>Definition</b><ahref="engine__graph_8cpp_source.html#l00168">engine_graph.cpp:168</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_ad8237c252145a75092202d00f5e1ddf7"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#ad8237c252145a75092202d00f5e1ddf7">gridfire::GraphEngine::m_speciesToIndexMap</a></div><divclass="ttdeci">std::unordered_map< fourdst::atomic::Species, size_t > m_speciesToIndexMap</div><divclass="ttdoc">Map from species to their index in the stoichiometry matrix.</div><divclass="ttdef"><b>Definition</b><ahref="#l00458">engine_graph.h:458</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_adac8c7d62bae76e17fc060e86dadd929"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#adac8c7d62bae76e17fc060e86dadd929">gridfire::GraphEngine::exportToDot</a></div><divclass="ttdeci">void exportToDot(const std::string &filename) const</div><divclass="ttdoc">Exports the network to a DOT file for visualization.</div><divclass="ttdef"><b>Definition</b><ahref="engine__graph_8cpp_source.html#l00762">engine_graph.cpp:762</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_add98ece49ec5c538bddf3cc77004fe44"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#add98ece49ec5c538bddf3cc77004fe44">gridfire::GraphEngine::getPartitionFunction</a></div><divclass="ttdeci">const partition::PartitionFunction & getPartitionFunction() const</div><divclass="ttdef"><b>Definition</b><ahref="engine__graph_8cpp_source.html#l00641">engine_graph.cpp:641</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_aed726d36ee2b3796beff6067a1e4db38"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#aed726d36ee2b3796beff6067a1e4db38">gridfire::GraphEngine::generateStoichiometryMatrix</a></div><divclass="ttdeci">void generateStoichiometryMatrix() override</div><divclass="ttdoc">Generates the stoichiometry matrix for the network.</div><divclass="ttdef"><b>Definition</b><ahref="engine__graph_8cpp_source.html#l00567">engine_graph.cpp:567</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_aedf42d83bfcc28313b6b6454034d2efa"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#aedf42d83bfcc28313b6b6454034d2efa">gridfire::GraphEngine::collectNetworkSpecies</a></div><divclass="ttdeci">void collectNetworkSpecies()</div><divclass="ttdoc">Collects the unique species in the network.</div><divclass="ttdef"><b>Definition</b><ahref="engine__graph_8cpp_source.html#l00106">engine_graph.cpp:106</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_aeeafeab40a5f4dbfae78bdc87e25e93f"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#aeeafeab40a5f4dbfae78bdc87e25e93f">gridfire::GraphEngine::validateComposition</a></div><divclass="ttdeci">void validateComposition(const fourdst::composition::Composition &composition, double culling, double T9)</div><divclass="ttdoc">Validates the composition against the current reaction set.</div><divclass="ttdef"><b>Definition</b><ahref="engine__graph_8cpp_source.html#l00242">engine_graph.cpp:242</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_af41df9ce979b6410e12642cb093916c9"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#af41df9ce979b6410e12642cb093916c9">gridfire::GraphEngine::calculateAllDerivatives</a></div><divclass="ttdeci">StepDerivatives< T > calculateAllDerivatives(const std::vector< T >&Y_in, T T9, T rho) const</div><divclass="ttdoc">Calculates all derivatives (dY/dt) and the energy generation rate.</div><divclass="ttdef"><b>Definition</b><ahref="#l00745">engine_graph.h:745</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1_graph_engine_html_afad967546b611d9c005268760feb75d5"><divclass="ttname"><ahref="classgridfire_1_1_graph_engine.html#afad967546b611d9c005268760feb75d5">gridfire::GraphEngine::GraphEngine</a></div><divclass="ttdeci">GraphEngine(const fourdst::composition::Composition &composition, const BuildDepthType=NetworkBuildDepth::Full)</div><divclass="ttdoc">Constructs a GraphEngine from a composition.</div><divclass="ttdef"><b>Definition</b><ahref="engine__graph_8cpp_source.html#l00034">engine_graph.cpp:34</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1partition_1_1_partition_function_html"><divclass="ttname"><ahref="classgridfire_1_1partition_1_1_partition_function.html">gridfire::partition::PartitionFunction</a></div><divclass="ttdoc">Abstract interface for evaluating nuclear partition functions.</div><divclass="ttdef"><b>Definition</b><ahref="partition__abstract_8h_source.html#l00017">partition_abstract.h:17</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1reaction_1_1_logical_reaction_html"><divclass="ttname"><ahref="classgridfire_1_1reaction_1_1_logical_reaction.html">gridfire::reaction::LogicalReaction</a></div><divclass="ttdoc">Represents a "logical" reaction that aggregates rates from multiple sources.</div><divclass="ttdef"><b>Definition</b><ahref="reaction_8h_source.html#l00310">reaction.h:310</a></div></div>
<divclass="ttc"id="aclassgridfire_1_1reaction_1_1_reaction_html"><divclass="ttname"><ahref="classgridfire_1_1reaction_1_1_reaction.html">gridfire::reaction::Reaction</a></div><divclass="ttdoc">Represents a single nuclear reaction from a specific data source.</div><divclass="ttdef"><b>Definition</b><ahref="reaction_8h_source.html#l00072">reaction.h:72</a></div></div>
<divclass="ttc"id="aengine__abstract_8h_html"><divclass="ttname"><ahref="engine__abstract_8h.html">engine_abstract.h</a></div><divclass="ttdoc">Abstract interfaces for reaction network engines in GridFire.</div></div>
<divclass="ttc"id="anamespacegridfire_1_1reaction_html_aa86f08712565f278adacc7cd2361eb31"><divclass="ttname"><ahref="namespacegridfire_1_1reaction.html#aa86f08712565f278adacc7cd2361eb31">gridfire::reaction::LogicalReactionSet</a></div><divclass="ttdeci">TemplatedReactionSet< LogicalReaction > LogicalReactionSet</div><divclass="ttdoc">A set of logical reactions.</div><divclass="ttdef"><b>Definition</b><ahref="reaction_8h_source.html#l00563">reaction.h:563</a></div></div>
<divclass="ttc"id="anamespacegridfire_1_1screening_html_a6ca8556d27ac373e176f5b23437c416e"><divclass="ttname"><ahref="namespacegridfire_1_1screening.html#a6ca8556d27ac373e176f5b23437c416e">gridfire::screening::selectScreeningModel</a></div><divclass="ttdeci">std::unique_ptr< ScreeningModel > selectScreeningModel(ScreeningType type)</div><divclass="ttdoc">A factory function to select and create a screening model.</div><divclass="ttdef"><b>Definition</b><ahref="screening__types_8cpp_source.html#l00009">screening_types.cpp:9</a></div></div>
<divclass="ttc"id="anamespacegridfire_1_1screening_html_aa82aafbc4f8c28d0a75b60798e3a7d25"><divclass="ttname"><ahref="namespacegridfire_1_1screening.html#aa82aafbc4f8c28d0a75b60798e3a7d25">gridfire::screening::ScreeningType</a></div><divclass="ttdeci">ScreeningType</div><divclass="ttdoc">Enumerates the available plasma screening models.</div><divclass="ttdef"><b>Definition</b><ahref="screening__types_8h_source.html#l00015">screening_types.h:15</a></div></div>
<divclass="ttc"id="anamespacegridfire_1_1screening_html_aa82aafbc4f8c28d0a75b60798e3a7d25ad80b95b1abb9c8659fa4cc9d3d29bb71"><divclass="ttname"><ahref="namespacegridfire_1_1screening.html#aa82aafbc4f8c28d0a75b60798e3a7d25ad80b95b1abb9c8659fa4cc9d3d29bb71">gridfire::screening::ScreeningType::BARE</a></div><divclass="ttdeci">@ BARE</div><divclass="ttdoc">No screening applied. The screening factor is always 1.0.</div><divclass="ttdef"><b>Definition</b><ahref="screening__types_8h_source.html#l00016">screening_types.h:16</a></div></div>
<divclass="ttc"id="anamespacegridfire_html_a1121d0b2d005195333412559fa29d3cc"><divclass="ttname"><ahref="namespacegridfire.html#a1121d0b2d005195333412559fa29d3cc">gridfire::ADDouble</a></div><divclass="ttdeci">CppAD::AD< double > ADDouble</div><divclass="ttdoc">Alias for CppAD AD type for double precision.</div><divclass="ttdef"><b>Definition</b><ahref="#l00045">engine_graph.h:45</a></div></div>
<divclass="ttc"id="anamespacegridfire_html_a3b1f70dc7ff5b501809330a97079e4f6"><divclass="ttname"><ahref="namespacegridfire.html#a3b1f70dc7ff5b501809330a97079e4f6">gridfire::BuildDepthType</a></div><divclass="ttdeci">std::variant< NetworkBuildDepth, int > BuildDepthType</div><divclass="ttdoc">Variant specifying either a predefined NetworkBuildDepth or a custom integer depth.</div><divclass="ttdef"><b>Definition</b><ahref="building_8h_source.html#l00037">building.h:37</a></div></div>
<divclass="ttc"id="anamespacegridfire_html_a96c062f94713921e5d7568ecedcdcb06"><divclass="ttname"><ahref="namespacegridfire.html#a96c062f94713921e5d7568ecedcdcb06">gridfire::MIN_ABUNDANCE_THRESHOLD</a></div><divclass="ttdeci">static constexpr double MIN_ABUNDANCE_THRESHOLD</div><divclass="ttdoc">Minimum abundance threshold below which species are ignored.</div><divclass="ttdef"><b>Definition</b><ahref="#l00067">engine_graph.h:67</a></div></div>
<divclass="ttc"id="anamespacegridfire_html_ada3c137c014ecd8d06200fea2d1a9f50"><divclass="ttname"><ahref="namespacegridfire.html#ada3c137c014ecd8d06200fea2d1a9f50">gridfire::MIN_DENSITY_THRESHOLD</a></div><divclass="ttdeci">static constexpr double MIN_DENSITY_THRESHOLD</div><divclass="ttdoc">Minimum density threshold below which reactions are ignored.</div><divclass="ttdef"><b>Definition</b><ahref="#l00058">engine_graph.h:58</a></div></div>
<divclass="ttc"id="anamespacegridfire_html_ae01b1738df1921db565bcbd68dd6cf64"><divclass="ttname"><ahref="namespacegridfire.html#ae01b1738df1921db565bcbd68dd6cf64">gridfire::MIN_JACOBIAN_THRESHOLD</a></div><divclass="ttdeci">static constexpr double MIN_JACOBIAN_THRESHOLD</div><divclass="ttdoc">Minimum value for Jacobian matrix entries.</div><divclass="ttdef"><b>Definition</b><ahref="#l00075">engine_graph.h:75</a></div></div>
<divclass="ttc"id="areaction_8h_html"><divclass="ttname"><ahref="reaction_8h.html">reaction.h</a></div><divclass="ttdoc">Defines classes for representing and managing nuclear reactions.</div></div>
<divclass="ttc"id="astructgridfire_1_1_graph_engine_1_1_precomputed_reaction_html_a03d596c88289e21e7bd18711e3a1f275"><divclass="ttname"><ahref="structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#a03d596c88289e21e7bd18711e3a1f275">gridfire::GraphEngine::PrecomputedReaction::reactant_powers</a></div><divclass="ttdeci">std::vector< int > reactant_powers</div><divclass="ttdef"><b>Definition</b><ahref="#l00389">engine_graph.h:389</a></div></div>
<divclass="ttc"id="astructgridfire_1_1_graph_engine_1_1_precomputed_reaction_html_a3ce63aa3ad88568f4eb0d3ca2414209f"><divclass="ttname"><ahref="structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#a3ce63aa3ad88568f4eb0d3ca2414209f">gridfire::GraphEngine::PrecomputedReaction::product_powers</a></div><divclass="ttdeci">std::vector< int > product_powers</div><divclass="ttdoc">Powers of each unique product in the reverse reaction.</div><divclass="ttdef"><b>Definition</b><ahref="#l00396">engine_graph.h:396</a></div></div>
<divclass="ttc"id="astructgridfire_1_1_graph_engine_1_1_precomputed_reaction_html_a6bcfe2230dd54b088180d34389266b07"><divclass="ttname"><ahref="structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#a6bcfe2230dd54b088180d34389266b07">gridfire::GraphEngine::PrecomputedReaction::reverse_symmetry_factor</a></div><divclass="ttdeci">double reverse_symmetry_factor</div><divclass="ttdoc">Symmetry factor for reverse reactions.</div><divclass="ttdef"><b>Definition</b><ahref="#l00397">engine_graph.h:397</a></div></div>
<divclass="ttc"id="astructgridfire_1_1_graph_engine_1_1_precomputed_reaction_html_a7a7e9167b19e339e0d69544b9c00e79c"><divclass="ttname"><ahref="structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#a7a7e9167b19e339e0d69544b9c00e79c">gridfire::GraphEngine::PrecomputedReaction::stoichiometric_coefficients</a></div><divclass="ttdeci">std::vector< int > stoichiometric_coefficients</div><divclass="ttdef"><b>Definition</b><ahref="#l00392">engine_graph.h:392</a></div></div>
<divclass="ttc"id="astructgridfire_1_1_graph_engine_1_1_precomputed_reaction_html_a9974f944a2cf5179baabebe09d60cf18"><divclass="ttname"><ahref="structgridfire_1_1_graph_engine_1_1_precomputed_reaction.html#a9974f944a2cf5179baabebe09d60cf18">gridfire::GraphEngine::PrecomputedReaction::unique_product_indices</a></div><divclass="ttdeci">std::vector< size_t > unique_product_indices</div><divclass="ttdoc">Unique product indices for reverse reactions.</div><divclass="ttdef"><b>Definition</b><ahref="#l00395">engine_graph.h:395</a></div></div>
<divclass="ttc"id="astructgridfire_1_1_graph_engine_1_1constants_html_a29c8ae2b5c1d5fecd25c4fde2b623f7f"><divclass="ttname"><ahref="structgridfire_1_1_graph_engine_1_1constants.html#a29c8ae2b5c1d5fecd25c4fde2b623f7f">gridfire::GraphEngine::constants::kB</a></div><divclass="ttdeci">const double kB</div><divclass="ttdoc">Boltzmann constant in erg/K.</div><divclass="ttdef"><b>Definition</b><ahref="#l00404">engine_graph.h:404</a></div></div>
<divclass="ttc"id="astructgridfire_1_1_graph_engine_1_1constants_html_a3597bc632a5dd50aaa0044d8c18ca423"><divclass="ttname"><ahref="structgridfire_1_1_graph_engine_1_1constants.html#a3597bc632a5dd50aaa0044d8c18ca423">gridfire::GraphEngine::constants::u</a></div><divclass="ttdeci">const double u</div><divclass="ttdoc">Atomic mass unit in g.</div><divclass="ttdef"><b>Definition</b><ahref="#l00401">engine_graph.h:401</a></div></div>
<divclass="ttc"id="astructgridfire_1_1_graph_engine_1_1constants_html_a8bea6e348699c1aea93d17bb56739306"><divclass="ttname"><ahref="structgridfire_1_1_graph_engine_1_1constants.html#a8bea6e348699c1aea93d17bb56739306">gridfire::GraphEngine::constants::c</a></div><divclass="ttdeci">const double c</div><divclass="ttdoc">Speed of light in cm/s.</div><divclass="ttdef"><b>Definition</b><ahref="#l00403">engine_graph.h:403</a></div></div>
<divclass="ttc"id="astructgridfire_1_1_priming_report_html"><divclass="ttname"><ahref="structgridfire_1_1_priming_report.html">gridfire::PrimingReport</a></div><divclass="ttdoc">Captures the result of a network priming operation.</div><divclass="ttdef"><b>Definition</b><ahref="reporting_8h_source.html#l00067">reporting.h:67</a></div></div>
<divclass="ttc"id="astructgridfire_1_1_step_derivatives_html"><divclass="ttname"><ahref="structgridfire_1_1_step_derivatives.html">gridfire::StepDerivatives</a></div><divclass="ttdoc">Structure holding derivatives and energy generation for a network step.</div><divclass="ttdef"><b>Definition</b><ahref="engine__abstract_8h_source.html#l00060">engine_abstract.h:60</a></div></div>
<divclass="ttc"id="astructgridfire_1_1_step_derivatives_html_ab4aeb41be952c7b5844e1ee81fef9008"><divclass="ttname"><ahref="structgridfire_1_1_step_derivatives.html#ab4aeb41be952c7b5844e1ee81fef9008">gridfire::StepDerivatives::nuclearEnergyGenerationRate</a></div><divclass="ttdeci">T nuclearEnergyGenerationRate</div><divclass="ttdoc">Specific energy generation rate (e.g., erg/g/s).</div><divclass="ttdef"><b>Definition</b><ahref="engine__abstract_8h_source.html#l00062">engine_abstract.h:62</a></div></div>
<divclass="ttc"id="astructgridfire_1_1_step_derivatives_html_ae0de268b86c2404379409c4feae0b34d"><divclass="ttname"><ahref="structgridfire_1_1_step_derivatives.html#ae0de268b86c2404379409c4feae0b34d">gridfire::StepDerivatives::dydt</a></div><divclass="ttdeci">std::vector< T > dydt</div><divclass="ttdoc">Derivatives of abundances (dY/dt for each species).</div><divclass="ttdef"><b>Definition</b><ahref="engine__abstract_8h_source.html#l00061">engine_abstract.h:61</a></div></div>
<liclass="footer">Generated by <ahref="https://www.doxygen.org/index.html"><imgclass="footer"src="doxygen.svg"width="104"height="31"alt="doxygen"/></a> 1.13.2 </li>