Files
GridFire/docs/html/classgridfire_1_1reaction_1_1_reaction.html

1150 lines
70 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>GridFire: gridfire::reaction::Reaction Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">GridFire<span id="projectnumber">&#160;0.6.0</span>
</div>
<div id="projectbrief">General Purpose Nuclear Network</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search',true);
$(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classgridfire_1_1reaction_1_1_reaction.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#friends">Friends</a> &#124;
<a href="classgridfire_1_1reaction_1_1_reaction-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">gridfire::reaction::Reaction Class Reference<span class="mlabels"><span class="mlabel abstract">abstract</span></span></div></div>
</div><!--header-->
<div class="contents">
<p>Represents a single nuclear reaction from a specific data source.
<a href="#details">More...</a></p>
<p><code>#include &lt;reaction.h&gt;</code></p>
<div class="dynheader">
Inheritance diagram for gridfire::reaction::Reaction:</div>
<div class="dyncontent">
<div class="center">
<img src="classgridfire_1_1reaction_1_1_reaction.png" usemap="#gridfire::reaction::Reaction_map" alt=""/>
<map id="gridfire::reaction::Reaction_map" name="gridfire::reaction::Reaction_map">
<area href="classgridfire_1_1rates_1_1weak_1_1_weak_reaction.html" title="Concrete Reaction representing a single weak process (beta±, e/e+ capture)." alt="gridfire::rates::weak::WeakReaction" shape="rect" coords="0,56,243,80"/>
<area href="classgridfire_1_1reaction_1_1_reaclib_reaction.html" alt="gridfire::reaction::ReaclibReaction" shape="rect" coords="253,56,496,80"/>
<area href="classgridfire_1_1reaction_1_1_logical_reaclib_reaction.html" title="Represents a &quot;logical&quot; reaction that aggregates rates from multiple sources." alt="gridfire::reaction::LogicalReaclibReaction" shape="rect" coords="253,112,496,136"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ab1860df84843be70f97469761e11ab6a" id="r_ab1860df84843be70f97469761e11ab6a"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab1860df84843be70f97469761e11ab6a">~Reaction</a> ()=default</td></tr>
<tr class="memdesc:ab1860df84843be70f97469761e11ab6a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Virtual destructor for correct polymorphic cleanup. <br /></td></tr>
<tr class="separator:ab1860df84843be70f97469761e11ab6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83c121480533593adfd68c4a67a649f1" id="r_a83c121480533593adfd68c4a67a649f1"><td class="memItemLeft" align="right" valign="top">virtual double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a83c121480533593adfd68c4a67a649f1">calculate_rate</a> (double T9, double rho, double Ye, double mue, const std::vector&lt; double &gt; &amp;Y, const std::unordered_map&lt; size_t, fourdst::atomic::Species &gt; &amp;index_to_species_map) const =0</td></tr>
<tr class="memdesc:a83c121480533593adfd68c4a67a649f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute the temperature- and composition-dependent reaction rate. <br /></td></tr>
<tr class="separator:a83c121480533593adfd68c4a67a649f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af8303d67df61fc9e31ce054f0e8a3e14" id="r_af8303d67df61fc9e31ce054f0e8a3e14"><td class="memItemLeft" align="right" valign="top">virtual CppAD::AD&lt; double &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#af8303d67df61fc9e31ce054f0e8a3e14">calculate_rate</a> (CppAD::AD&lt; double &gt; T9, CppAD::AD&lt; double &gt; rho, CppAD::AD&lt; double &gt; Ye, CppAD::AD&lt; double &gt; mue, const std::vector&lt; CppAD::AD&lt; double &gt; &gt; &amp;Y, const std::unordered_map&lt; size_t, fourdst::atomic::Species &gt; &amp;index_to_species_map) const =0</td></tr>
<tr class="memdesc:af8303d67df61fc9e31ce054f0e8a3e14"><td class="mdescLeft">&#160;</td><td class="mdescRight">AD-enabled reaction rate for algorithmic differentiation. <br /></td></tr>
<tr class="separator:af8303d67df61fc9e31ce054f0e8a3e14"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a94b92308b9619ec20c690e55157786ba" id="r_a94b92308b9619ec20c690e55157786ba"><td class="memItemLeft" align="right" valign="top">virtual std::string_view&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a94b92308b9619ec20c690e55157786ba">id</a> () const =0</td></tr>
<tr class="memdesc:a94b92308b9619ec20c690e55157786ba"><td class="mdescLeft">&#160;</td><td class="mdescRight">A stable, unique identifier for this reaction instance. <br /></td></tr>
<tr class="separator:a94b92308b9619ec20c690e55157786ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac7b08c61cdc97268b9442afec4d08dad" id="r_ac7b08c61cdc97268b9442afec4d08dad"><td class="memItemLeft" align="right" valign="top">virtual const std::vector&lt; fourdst::atomic::Species &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ac7b08c61cdc97268b9442afec4d08dad">reactants</a> () const =0</td></tr>
<tr class="memdesc:ac7b08c61cdc97268b9442afec4d08dad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Ordered list of reactant species. <br /></td></tr>
<tr class="separator:ac7b08c61cdc97268b9442afec4d08dad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3d7451045d8df41ea98b5e419e0e5ab0" id="r_a3d7451045d8df41ea98b5e419e0e5ab0"><td class="memItemLeft" align="right" valign="top">virtual const std::vector&lt; fourdst::atomic::Species &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3d7451045d8df41ea98b5e419e0e5ab0">products</a> () const =0</td></tr>
<tr class="memdesc:a3d7451045d8df41ea98b5e419e0e5ab0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Ordered list of product species. <br /></td></tr>
<tr class="separator:a3d7451045d8df41ea98b5e419e0e5ab0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a768db057d358240d4825c21869af0792" id="r_a768db057d358240d4825c21869af0792"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a768db057d358240d4825c21869af0792">contains</a> (const fourdst::atomic::Species &amp;species) const =0</td></tr>
<tr class="memdesc:a768db057d358240d4825c21869af0792"><td class="mdescLeft">&#160;</td><td class="mdescRight">True if the species appears as a reactant or a product. <br /></td></tr>
<tr class="separator:a768db057d358240d4825c21869af0792"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab28bf4f9417ecabcc8350bae449fedd5" id="r_ab28bf4f9417ecabcc8350bae449fedd5"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab28bf4f9417ecabcc8350bae449fedd5">contains_reactant</a> (const fourdst::atomic::Species &amp;species) const =0</td></tr>
<tr class="memdesc:ab28bf4f9417ecabcc8350bae449fedd5"><td class="mdescLeft">&#160;</td><td class="mdescRight">True if the species appears among the reactants. <br /></td></tr>
<tr class="separator:ab28bf4f9417ecabcc8350bae449fedd5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2708d2e8f42159df6605a5948b13c4c5" id="r_a2708d2e8f42159df6605a5948b13c4c5"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2708d2e8f42159df6605a5948b13c4c5">contains_product</a> (const fourdst::atomic::Species &amp;species) const =0</td></tr>
<tr class="memdesc:a2708d2e8f42159df6605a5948b13c4c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">True if the species appears among the products. <br /></td></tr>
<tr class="separator:a2708d2e8f42159df6605a5948b13c4c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3906a668410e02239f9031b5fc580214" id="r_a3906a668410e02239f9031b5fc580214"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3906a668410e02239f9031b5fc580214">is_reverse</a> () const =0</td></tr>
<tr class="memdesc:a3906a668410e02239f9031b5fc580214"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether this object represents a reverse (backward) rate. <br /></td></tr>
<tr class="separator:a3906a668410e02239f9031b5fc580214"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa13cd9097229fcc99128d9286b8f17e6" id="r_aa13cd9097229fcc99128d9286b8f17e6"><td class="memItemLeft" align="right" valign="top">virtual std::unordered_set&lt; fourdst::atomic::Species &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa13cd9097229fcc99128d9286b8f17e6">all_species</a> () const =0</td></tr>
<tr class="memdesc:aa13cd9097229fcc99128d9286b8f17e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set of all unique species appearing in the reaction. <br /></td></tr>
<tr class="separator:aa13cd9097229fcc99128d9286b8f17e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a82c14096308cdc9126ab6d9667febcd2" id="r_a82c14096308cdc9126ab6d9667febcd2"><td class="memItemLeft" align="right" valign="top">virtual std::unordered_set&lt; fourdst::atomic::Species &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a82c14096308cdc9126ab6d9667febcd2">reactant_species</a> () const =0</td></tr>
<tr class="memdesc:a82c14096308cdc9126ab6d9667febcd2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set of unique reactant species. <br /></td></tr>
<tr class="separator:a82c14096308cdc9126ab6d9667febcd2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0d16572ae2b664374d32ee6c4e22123a" id="r_a0d16572ae2b664374d32ee6c4e22123a"><td class="memItemLeft" align="right" valign="top">virtual std::unordered_set&lt; fourdst::atomic::Species &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a0d16572ae2b664374d32ee6c4e22123a">product_species</a> () const =0</td></tr>
<tr class="memdesc:a0d16572ae2b664374d32ee6c4e22123a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set of unique product species. <br /></td></tr>
<tr class="separator:a0d16572ae2b664374d32ee6c4e22123a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae2a1b0395ac127c792a8049cd0bcc249" id="r_ae2a1b0395ac127c792a8049cd0bcc249"><td class="memItemLeft" align="right" valign="top">virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae2a1b0395ac127c792a8049cd0bcc249">num_species</a> () const =0</td></tr>
<tr class="memdesc:ae2a1b0395ac127c792a8049cd0bcc249"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of unique species involved in the reaction. <br /></td></tr>
<tr class="separator:ae2a1b0395ac127c792a8049cd0bcc249"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad49f4cad024db72c966d949c75f1ce4d" id="r_ad49f4cad024db72c966d949c75f1ce4d"><td class="memItemLeft" align="right" valign="top">virtual std::unordered_map&lt; fourdst::atomic::Species, int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad49f4cad024db72c966d949c75f1ce4d">stoichiometry</a> () const =0</td></tr>
<tr class="memdesc:ad49f4cad024db72c966d949c75f1ce4d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Full stoichiometry map for this reaction. <br /></td></tr>
<tr class="separator:ad49f4cad024db72c966d949c75f1ce4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab7888b57507d6d27de6e5fcaea40fff5" id="r_ab7888b57507d6d27de6e5fcaea40fff5"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab7888b57507d6d27de6e5fcaea40fff5">stoichiometry</a> (const fourdst::atomic::Species &amp;species) const =0</td></tr>
<tr class="memdesc:ab7888b57507d6d27de6e5fcaea40fff5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stoichiometric coefficient for a particular species. <br /></td></tr>
<tr class="separator:ab7888b57507d6d27de6e5fcaea40fff5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7ba8c18cd5445aa3499a6fd351183f7a" id="r_a7ba8c18cd5445aa3499a6fd351183f7a"><td class="memItemLeft" align="right" valign="top">virtual uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7ba8c18cd5445aa3499a6fd351183f7a">hash</a> (uint64_t seed) const =0</td></tr>
<tr class="memdesc:a7ba8c18cd5445aa3499a6fd351183f7a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stable content-based hash for this reaction. <br /></td></tr>
<tr class="separator:a7ba8c18cd5445aa3499a6fd351183f7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7e06936f9e8bb74e68eaa10e708e5d3c" id="r_a7e06936f9e8bb74e68eaa10e708e5d3c"><td class="memItemLeft" align="right" valign="top">virtual double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7e06936f9e8bb74e68eaa10e708e5d3c">qValue</a> () const =0</td></tr>
<tr class="memdesc:a7e06936f9e8bb74e68eaa10e708e5d3c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Q-value of the reaction (typically MeV), positive if exothermic. <br /></td></tr>
<tr class="separator:a7e06936f9e8bb74e68eaa10e708e5d3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae66b446c98add7e00a1d960f4e7c60dd" id="r_ae66b446c98add7e00a1d960f4e7c60dd"><td class="memItemLeft" align="right" valign="top">virtual double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae66b446c98add7e00a1d960f4e7c60dd">calculate_energy_generation_rate</a> (const double T9, const double rho, const double Ye, double mue, const std::vector&lt; double &gt; &amp;Y, const std::unordered_map&lt; size_t, fourdst::atomic::Species &gt; &amp;index_to_species_map) const</td></tr>
<tr class="memdesc:ae66b446c98add7e00a1d960f4e7c60dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convenience: energy generation rate from this reaction (double version). <br /></td></tr>
<tr class="separator:ae66b446c98add7e00a1d960f4e7c60dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4282f85c34d6db1994c07e7a40f66d80" id="r_a4282f85c34d6db1994c07e7a40f66d80"><td class="memItemLeft" align="right" valign="top">virtual CppAD::AD&lt; double &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a4282f85c34d6db1994c07e7a40f66d80">calculate_energy_generation_rate</a> (const CppAD::AD&lt; double &gt; &amp;T9, const CppAD::AD&lt; double &gt; &amp;rho, const CppAD::AD&lt; double &gt; &amp;Ye, const CppAD::AD&lt; double &gt; &amp;mue, const std::vector&lt; CppAD::AD&lt; double &gt; &gt; &amp;Y, const std::unordered_map&lt; size_t, fourdst::atomic::Species &gt; &amp;index_to_species_map) const</td></tr>
<tr class="memdesc:a4282f85c34d6db1994c07e7a40f66d80"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convenience: AD-enabled energy generation rate (AD version). <br /></td></tr>
<tr class="separator:a4282f85c34d6db1994c07e7a40f66d80"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2b615e764bb005e526ca9327319c735" id="r_aa2b615e764bb005e526ca9327319c735"><td class="memItemLeft" align="right" valign="top">virtual double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa2b615e764bb005e526ca9327319c735">calculate_log_rate_partial_deriv_wrt_T9</a> (double T9, double rho, double Ye, double mue, const fourdst::composition::Composition &amp;comp) const =0</td></tr>
<tr class="memdesc:aa2b615e764bb005e526ca9327319c735"><td class="mdescLeft">&#160;</td><td class="mdescRight">Logarithmic partial derivative of the rate with respect to temperature. <br /></td></tr>
<tr class="separator:aa2b615e764bb005e526ca9327319c735"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7f2590eee9f0dfb7b73cd92170a844b7" id="r_a7f2590eee9f0dfb7b73cd92170a844b7"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="namespacegridfire_1_1reaction.html#a026997f11e811fa7754ac9121c4ba74e">ReactionType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7f2590eee9f0dfb7b73cd92170a844b7">type</a> () const =0</td></tr>
<tr class="memdesc:a7f2590eee9f0dfb7b73cd92170a844b7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Category of this reaction (e.g., REACLIB, WEAK, LOGICAL_REACLIB). <br /></td></tr>
<tr class="separator:a7f2590eee9f0dfb7b73cd92170a844b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab95ce7fb022a9432bdc77f14679221ee" id="r_ab95ce7fb022a9432bdc77f14679221ee"><td class="memItemLeft" align="right" valign="top">virtual std::unique_ptr&lt; <a class="el" href="classgridfire_1_1reaction_1_1_reaction.html">Reaction</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab95ce7fb022a9432bdc77f14679221ee">clone</a> () const =0</td></tr>
<tr class="memdesc:ab95ce7fb022a9432bdc77f14679221ee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Polymorphic deep copy. <br /></td></tr>
<tr class="separator:ab95ce7fb022a9432bdc77f14679221ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="friends" name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:a2b05ab608187216fc751bd2e42e8b7d8" id="r_a2b05ab608187216fc751bd2e42e8b7d8"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2b05ab608187216fc751bd2e42e8b7d8">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classgridfire_1_1reaction_1_1_reaction.html">Reaction</a> &amp;r)</td></tr>
<tr class="separator:a2b05ab608187216fc751bd2e42e8b7d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Represents a single nuclear reaction from a specific data source. </p>
<p>This class encapsulates all properties of a single nuclear reaction as defined in formats like REACLIB, including reactants, products, Q-value, and rate coefficients from a particular evaluation (source).</p>
<p>Example: </p><div class="fragment"><div class="line"><span class="comment">// Assuming species and rate coefficients are defined</span></div>
<div class="line"><a class="code hl_class" href="classgridfire_1_1reaction_1_1_reaction.html">Reaction</a> p_gamma_d(</div>
<div class="line"> <span class="stringliteral">&quot;H_1_H_1_to_H_2&quot;</span>, <span class="stringliteral">&quot;p(p,g)d&quot;</span>, 1, {H_1, H_1}, {H_2}, 5.493, <span class="stringliteral">&quot;st08&quot;</span>, rate_coeffs</div>
<div class="line">);</div>
<div class="line"><span class="keywordtype">double</span> rate = p_gamma_d.<a class="code hl_function" href="#a83c121480533593adfd68c4a67a649f1">calculate_rate</a>(0.1); <span class="comment">// T9 = 0.1</span></div>
<div class="ttc" id="aclassgridfire_1_1reaction_1_1_reaction_html"><div class="ttname"><a href="classgridfire_1_1reaction_1_1_reaction.html">gridfire::reaction::Reaction</a></div><div class="ttdoc">Represents a single nuclear reaction from a specific data source.</div><div class="ttdef"><b>Definition</b> reaction.h:78</div></div>
<div class="ttc" id="aclassgridfire_1_1reaction_1_1_reaction_html_a83c121480533593adfd68c4a67a649f1"><div class="ttname"><a href="#a83c121480533593adfd68c4a67a649f1">gridfire::reaction::Reaction::calculate_rate</a></div><div class="ttdeci">virtual double calculate_rate(double T9, double rho, double Ye, double mue, const std::vector&lt; double &gt; &amp;Y, const std::unordered_map&lt; size_t, fourdst::atomic::Species &gt; &amp;index_to_species_map) const =0</div><div class="ttdoc">Compute the temperature- and composition-dependent reaction rate.</div></div>
</div><!-- fragment --> </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="ab1860df84843be70f97469761e11ab6a" name="ab1860df84843be70f97469761e11ab6a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab1860df84843be70f97469761e11ab6a">&#9670;&#160;</a></span>~Reaction()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual gridfire::reaction::Reaction::~Reaction </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel virtual">virtual</span><span class="mlabel default">default</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Virtual destructor for correct polymorphic cleanup. </p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="aa13cd9097229fcc99128d9286b8f17e6" name="aa13cd9097229fcc99128d9286b8f17e6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa13cd9097229fcc99128d9286b8f17e6">&#9670;&#160;</a></span>all_species()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual std::unordered_set&lt; fourdst::atomic::Species &gt; gridfire::reaction::Reaction::all_species </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel nodiscard">nodiscard</span><span class="mlabel pure-virtual">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Set of all unique species appearing in the reaction. </p>
<dl class="section return"><dt>Returns</dt><dd>Unordered set of all reactants and products (no duplicates). </dd></dl>
<p>Implemented in <a class="el" href="classgridfire_1_1rates_1_1weak_1_1_weak_reaction.html#a6e567323ca019eadcbb9dbb814ebeb0b">gridfire::rates::weak::WeakReaction</a>, and <a class="el" href="classgridfire_1_1reaction_1_1_reaclib_reaction.html#a445777acbbee2032d83a256181a90e3c">gridfire::reaction::ReaclibReaction</a>.</p>
</div>
</div>
<a id="a4282f85c34d6db1994c07e7a40f66d80" name="a4282f85c34d6db1994c07e7a40f66d80"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4282f85c34d6db1994c07e7a40f66d80">&#9670;&#160;</a></span>calculate_energy_generation_rate() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual CppAD::AD&lt; double &gt; gridfire::reaction::Reaction::calculate_energy_generation_rate </td>
<td>(</td>
<td class="paramtype">const CppAD::AD&lt; double &gt; &amp;</td> <td class="paramname"><span class="paramname"><em>T9</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const CppAD::AD&lt; double &gt; &amp;</td> <td class="paramname"><span class="paramname"><em>rho</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const CppAD::AD&lt; double &gt; &amp;</td> <td class="paramname"><span class="paramname"><em>Ye</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const CppAD::AD&lt; double &gt; &amp;</td> <td class="paramname"><span class="paramname"><em>mue</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; CppAD::AD&lt; double &gt; &gt; &amp;</td> <td class="paramname"><span class="paramname"><em>Y</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::unordered_map&lt; size_t, fourdst::atomic::Species &gt; &amp;</td> <td class="paramname"><span class="paramname"><em>index_to_species_map</em></span>&#160;) const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span><span class="mlabel nodiscard">nodiscard</span><span class="mlabel virtual">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Convenience: AD-enabled energy generation rate (AD version). </p>
<p>Default implementation multiplies the AD rate by the reaction Q-value. Electron quantities (Ye, mue) are ignored in this default, so override if they contribute.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">T9</td><td>Temperature in GK as CppAD::AD&lt;double&gt;. </td></tr>
<tr><td class="paramname">rho</td><td>Mass density as CppAD::AD&lt;double&gt;. </td></tr>
<tr><td class="paramname">Ye</td><td>Electron fraction as CppAD::AD&lt;double&gt; (ignored by default). </td></tr>
<tr><td class="paramname">mue</td><td>Electron chemical potential as CppAD::AD&lt;double&gt; (ignored by default). </td></tr>
<tr><td class="paramname">Y</td><td>Composition vector as CppAD::AD&lt;double&gt; values. </td></tr>
<tr><td class="paramname">index_to_species_map</td><td>Mapping from state-vector index to Species. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Energy generation rate as CppAD::AD&lt;double&gt;. </dd></dl>
<p>Reimplemented in <a class="el" href="classgridfire_1_1rates_1_1weak_1_1_weak_reaction.html#af515e3587a1050c4bc59657696be5f9b">gridfire::rates::weak::WeakReaction</a>.</p>
</div>
</div>
<a id="ae66b446c98add7e00a1d960f4e7c60dd" name="ae66b446c98add7e00a1d960f4e7c60dd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae66b446c98add7e00a1d960f4e7c60dd">&#9670;&#160;</a></span>calculate_energy_generation_rate() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual double gridfire::reaction::Reaction::calculate_energy_generation_rate </td>
<td>(</td>
<td class="paramtype">const double</td> <td class="paramname"><span class="paramname"><em>T9</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const double</td> <td class="paramname"><span class="paramname"><em>rho</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const double</td> <td class="paramname"><span class="paramname"><em>Ye</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double</td> <td class="paramname"><span class="paramname"><em>mue</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; double &gt; &amp;</td> <td class="paramname"><span class="paramname"><em>Y</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::unordered_map&lt; size_t, fourdst::atomic::Species &gt; &amp;</td> <td class="paramname"><span class="paramname"><em>index_to_species_map</em></span>&#160;) const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span><span class="mlabel nodiscard">nodiscard</span><span class="mlabel virtual">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Convenience: energy generation rate from this reaction (double version). </p>
<p>Default implementation multiplies the scalar rate by the reaction Q-value. Electron quantities (Ye, mue) are ignored in this default, so override in derived classes if needed. Sign convention follows <a class="el" href="#a7e06936f9e8bb74e68eaa10e708e5d3c" title="Q-value of the reaction (typically MeV), positive if exothermic.">qValue()</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">T9</td><td>Temperature in GK (10^9 K). </td></tr>
<tr><td class="paramname">rho</td><td>Mass density (g cm^-3). </td></tr>
<tr><td class="paramname">Ye</td><td>Electron fraction (ignored by default implementation). </td></tr>
<tr><td class="paramname">mue</td><td>Electron chemical potential (ignored by default implementation). </td></tr>
<tr><td class="paramname">Y</td><td>Composition vector. </td></tr>
<tr><td class="paramname">index_to_species_map</td><td>Mapping from state-vector index to Species. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Energy generation rate, typically rate * <a class="el" href="#a7e06936f9e8bb74e68eaa10e708e5d3c" title="Q-value of the reaction (typically MeV), positive if exothermic.">qValue()</a>. </dd></dl>
<p>Reimplemented in <a class="el" href="classgridfire_1_1rates_1_1weak_1_1_weak_reaction.html#a091d6d4aa59f788c97f9b5481f46f1b5">gridfire::rates::weak::WeakReaction</a>.</p>
</div>
</div>
<a id="aa2b615e764bb005e526ca9327319c735" name="aa2b615e764bb005e526ca9327319c735"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa2b615e764bb005e526ca9327319c735">&#9670;&#160;</a></span>calculate_log_rate_partial_deriv_wrt_T9()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual double gridfire::reaction::Reaction::calculate_log_rate_partial_deriv_wrt_T9 </td>
<td>(</td>
<td class="paramtype">double</td> <td class="paramname"><span class="paramname"><em>T9</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double</td> <td class="paramname"><span class="paramname"><em>rho</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double</td> <td class="paramname"><span class="paramname"><em>Ye</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double</td> <td class="paramname"><span class="paramname"><em>mue</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const fourdst::composition::Composition &amp;</td> <td class="paramname"><span class="paramname"><em>comp</em></span>&#160;) const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel nodiscard">nodiscard</span><span class="mlabel pure-virtual">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Logarithmic partial derivative of the rate with respect to temperature. </p>
<p>Implementations return d(ln rate)/d(ln T9) or an equivalent measure (as documented by the concrete class), evaluated at the provided state.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">T9</td><td>Temperature in GK (10^9 K). </td></tr>
<tr><td class="paramname">rho</td><td>Mass density (g cm^-3). </td></tr>
<tr><td class="paramname">Ye</td><td>Electron fraction. </td></tr>
<tr><td class="paramname">mue</td><td>Electron chemical potential. </td></tr>
<tr><td class="paramname">comp</td><td>Composition object providing composition in a convenient form. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The logarithmic temperature derivative of the rate. </dd></dl>
<p>Implemented in <a class="el" href="classgridfire_1_1rates_1_1weak_1_1_weak_reaction.html#ac2d5366d4b5766413db34558dbce3cb3">gridfire::rates::weak::WeakReaction</a>, <a class="el" href="classgridfire_1_1reaction_1_1_logical_reaclib_reaction.html#a9b1363314159eaf9c56aaa233f5eebd6">gridfire::reaction::LogicalReaclibReaction</a>, and <a class="el" href="classgridfire_1_1reaction_1_1_reaclib_reaction.html#ada6ec1ae05b9a92b58e6a4ecdf5a1656">gridfire::reaction::ReaclibReaction</a>.</p>
</div>
</div>
<a id="af8303d67df61fc9e31ce054f0e8a3e14" name="af8303d67df61fc9e31ce054f0e8a3e14"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af8303d67df61fc9e31ce054f0e8a3e14">&#9670;&#160;</a></span>calculate_rate() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual CppAD::AD&lt; double &gt; gridfire::reaction::Reaction::calculate_rate </td>
<td>(</td>
<td class="paramtype">CppAD::AD&lt; double &gt;</td> <td class="paramname"><span class="paramname"><em>T9</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">CppAD::AD&lt; double &gt;</td> <td class="paramname"><span class="paramname"><em>rho</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">CppAD::AD&lt; double &gt;</td> <td class="paramname"><span class="paramname"><em>Ye</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">CppAD::AD&lt; double &gt;</td> <td class="paramname"><span class="paramname"><em>mue</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; CppAD::AD&lt; double &gt; &gt; &amp;</td> <td class="paramname"><span class="paramname"><em>Y</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::unordered_map&lt; size_t, fourdst::atomic::Species &gt; &amp;</td> <td class="paramname"><span class="paramname"><em>index_to_species_map</em></span>&#160;) const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel nodiscard">nodiscard</span><span class="mlabel pure-virtual">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>AD-enabled reaction rate for algorithmic differentiation. </p>
<p>This overload mirrors calculate_rate(double, ...) but operates on CppAD types to enable derivative calculations w.r.t. its inputs.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">T9</td><td>Temperature in GK as CppAD::AD&lt;double&gt;. </td></tr>
<tr><td class="paramname">rho</td><td>Mass density as CppAD::AD&lt;double&gt;. </td></tr>
<tr><td class="paramname">Ye</td><td>Electron fraction as CppAD::AD&lt;double&gt;. </td></tr>
<tr><td class="paramname">mue</td><td>Electron chemical potential as CppAD::AD&lt;double&gt;. </td></tr>
<tr><td class="paramname">Y</td><td>Composition vector as CppAD::AD&lt;double&gt; values. </td></tr>
<tr><td class="paramname">index_to_species_map</td><td>Mapping from state-vector index to Species, used to interpret Y. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The reaction rate as a CppAD::AD&lt;double&gt; value. </dd></dl>
<p>Implemented in <a class="el" href="classgridfire_1_1rates_1_1weak_1_1_weak_reaction.html#a90ca346e2321516656b83d863416671e">gridfire::rates::weak::WeakReaction</a>, <a class="el" href="classgridfire_1_1reaction_1_1_logical_reaclib_reaction.html#ab5bdbe13239f1180f32fb0a14a60d0a9">gridfire::reaction::LogicalReaclibReaction</a>, and <a class="el" href="classgridfire_1_1reaction_1_1_reaclib_reaction.html#afec5ccf7a8fb1ba56c8cc852ce858c5e">gridfire::reaction::ReaclibReaction</a>.</p>
</div>
</div>
<a id="a83c121480533593adfd68c4a67a649f1" name="a83c121480533593adfd68c4a67a649f1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a83c121480533593adfd68c4a67a649f1">&#9670;&#160;</a></span>calculate_rate() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual double gridfire::reaction::Reaction::calculate_rate </td>
<td>(</td>
<td class="paramtype">double</td> <td class="paramname"><span class="paramname"><em>T9</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double</td> <td class="paramname"><span class="paramname"><em>rho</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double</td> <td class="paramname"><span class="paramname"><em>Ye</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double</td> <td class="paramname"><span class="paramname"><em>mue</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; double &gt; &amp;</td> <td class="paramname"><span class="paramname"><em>Y</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::unordered_map&lt; size_t, fourdst::atomic::Species &gt; &amp;</td> <td class="paramname"><span class="paramname"><em>index_to_species_map</em></span>&#160;) const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel nodiscard">nodiscard</span><span class="mlabel pure-virtual">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Compute the temperature- and composition-dependent reaction rate. </p>
<p>This is the primary interface used by the network to obtain the rate of a single reaction at the given thermodynamic state and composition. The exact units and normalization are defined by the concrete implementation (e.g., REACLIB typically provides NA&lt;sigma v&gt; with units depending on the reaction order). Implementations may use density/electron properties for weak processes or screening, and the composition vector for multi-body reactions.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">T9</td><td>Temperature in GK (10^9 K). </td></tr>
<tr><td class="paramname">rho</td><td>Mass density (g cm^-3). May be unused for some reaction types. </td></tr>
<tr><td class="paramname">Ye</td><td>Electron fraction. May be unused depending on the reaction type. </td></tr>
<tr><td class="paramname">mue</td><td>Electron chemical potential. May be unused depending on the reaction type. </td></tr>
<tr><td class="paramname">Y</td><td>Composition vector (molar abundances or number fractions) indexed consistently with index_to_species_map. </td></tr>
<tr><td class="paramname">index_to_species_map</td><td>Mapping from state-vector index to Species, used to interpret Y. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The reaction rate for the forward direction, with units/normalization defined by the specific model (implementation must document its convention). </dd></dl>
<p>Implemented in <a class="el" href="classgridfire_1_1rates_1_1weak_1_1_weak_reaction.html#a05df0657efed55eb4262c7834d81400a">gridfire::rates::weak::WeakReaction</a>, <a class="el" href="classgridfire_1_1reaction_1_1_logical_reaclib_reaction.html#ac21a726884930e6a00792e7c3eb43f42">gridfire::reaction::LogicalReaclibReaction</a>, and <a class="el" href="classgridfire_1_1reaction_1_1_reaclib_reaction.html#acd16b1daf13456b3523362a37b1bf9b0">gridfire::reaction::ReaclibReaction</a>.</p>
</div>
</div>
<a id="ab95ce7fb022a9432bdc77f14679221ee" name="ab95ce7fb022a9432bdc77f14679221ee"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab95ce7fb022a9432bdc77f14679221ee">&#9670;&#160;</a></span>clone()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual std::unique_ptr&lt; <a class="el" href="classgridfire_1_1reaction_1_1_reaction.html">Reaction</a> &gt; gridfire::reaction::Reaction::clone </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel nodiscard">nodiscard</span><span class="mlabel pure-virtual">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Polymorphic deep copy. </p>
<dl class="section return"><dt>Returns</dt><dd>A std::unique_ptr owning a new <a class="el" href="classgridfire_1_1reaction_1_1_reaction.html" title="Represents a single nuclear reaction from a specific data source.">Reaction</a> equal to this one. </dd></dl>
<p>Implemented in <a class="el" href="classgridfire_1_1rates_1_1weak_1_1_weak_reaction.html#ac10e1451d20876f6eab199e127f213c7">gridfire::rates::weak::WeakReaction</a>, <a class="el" href="classgridfire_1_1reaction_1_1_logical_reaclib_reaction.html#ad113b9cb64c449f9449c4cce4fa64076">gridfire::reaction::LogicalReaclibReaction</a>, and <a class="el" href="classgridfire_1_1reaction_1_1_reaclib_reaction.html#a54fde02e7010e806136f976ab64b1740">gridfire::reaction::ReaclibReaction</a>.</p>
</div>
</div>
<a id="a768db057d358240d4825c21869af0792" name="a768db057d358240d4825c21869af0792"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a768db057d358240d4825c21869af0792">&#9670;&#160;</a></span>contains()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool gridfire::reaction::Reaction::contains </td>
<td>(</td>
<td class="paramtype">const fourdst::atomic::Species &amp;</td> <td class="paramname"><span class="paramname"><em>species</em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel nodiscard">nodiscard</span><span class="mlabel pure-virtual">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>True if the species appears as a reactant or a product. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">species</td><td>Species to test. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Whether the species participates in the reaction (either side). </dd></dl>
<p>Implemented in <a class="el" href="classgridfire_1_1rates_1_1weak_1_1_weak_reaction.html#a745b161968f37873b5d40fe6bf9d2118">gridfire::rates::weak::WeakReaction</a>, and <a class="el" href="classgridfire_1_1reaction_1_1_reaclib_reaction.html#a171b690e1abaf23f11a94c39e9f8c944">gridfire::reaction::ReaclibReaction</a>.</p>
</div>
</div>
<a id="a2708d2e8f42159df6605a5948b13c4c5" name="a2708d2e8f42159df6605a5948b13c4c5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2708d2e8f42159df6605a5948b13c4c5">&#9670;&#160;</a></span>contains_product()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool gridfire::reaction::Reaction::contains_product </td>
<td>(</td>
<td class="paramtype">const fourdst::atomic::Species &amp;</td> <td class="paramname"><span class="paramname"><em>species</em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel nodiscard">nodiscard</span><span class="mlabel pure-virtual">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>True if the species appears among the products. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">species</td><td>Species to test. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Whether the species is a product. </dd></dl>
<p>Implemented in <a class="el" href="classgridfire_1_1rates_1_1weak_1_1_weak_reaction.html#a957b5bfe70e536290ef677a7c5b6643f">gridfire::rates::weak::WeakReaction</a>, and <a class="el" href="classgridfire_1_1reaction_1_1_reaclib_reaction.html#a4e4811436d09afaa4a14c51d9af71f88">gridfire::reaction::ReaclibReaction</a>.</p>
</div>
</div>
<a id="ab28bf4f9417ecabcc8350bae449fedd5" name="ab28bf4f9417ecabcc8350bae449fedd5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab28bf4f9417ecabcc8350bae449fedd5">&#9670;&#160;</a></span>contains_reactant()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool gridfire::reaction::Reaction::contains_reactant </td>
<td>(</td>
<td class="paramtype">const fourdst::atomic::Species &amp;</td> <td class="paramname"><span class="paramname"><em>species</em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel nodiscard">nodiscard</span><span class="mlabel pure-virtual">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>True if the species appears among the reactants. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">species</td><td>Species to test. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Whether the species is a reactant. </dd></dl>
<p>Implemented in <a class="el" href="classgridfire_1_1rates_1_1weak_1_1_weak_reaction.html#a98095e6536d9a6434c5955f4c169d505">gridfire::rates::weak::WeakReaction</a>, and <a class="el" href="classgridfire_1_1reaction_1_1_reaclib_reaction.html#a65a12e5f6180873866cfaaf130fd1156">gridfire::reaction::ReaclibReaction</a>.</p>
</div>
</div>
<a id="a7ba8c18cd5445aa3499a6fd351183f7a" name="a7ba8c18cd5445aa3499a6fd351183f7a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7ba8c18cd5445aa3499a6fd351183f7a">&#9670;&#160;</a></span>hash()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual uint64_t gridfire::reaction::Reaction::hash </td>
<td>(</td>
<td class="paramtype">uint64_t</td> <td class="paramname"><span class="paramname"><em>seed</em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel nodiscard">nodiscard</span><span class="mlabel pure-virtual">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Stable content-based hash for this reaction. </p>
<p>Intended for use in caches, sets, and order-independent hashing of <a class="el" href="classgridfire_1_1reaction_1_1_reaction.html" title="Represents a single nuclear reaction from a specific data source.">Reaction</a> collections. Implementations should produce the same value across processes for the same content and seed. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">seed</td><td>Seed value to initialize/mix into the hash. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>64-bit hash value. </dd></dl>
<p>Implemented in <a class="el" href="classgridfire_1_1rates_1_1weak_1_1_weak_reaction.html#ad2ba6b584cb2df7c15633fca81ce6af1">gridfire::rates::weak::WeakReaction</a>, and <a class="el" href="classgridfire_1_1reaction_1_1_reaclib_reaction.html#a661dd461e51c37133f7f9931389fd3cc">gridfire::reaction::ReaclibReaction</a>.</p>
</div>
</div>
<a id="a94b92308b9619ec20c690e55157786ba" name="a94b92308b9619ec20c690e55157786ba"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a94b92308b9619ec20c690e55157786ba">&#9670;&#160;</a></span>id()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual std::string_view gridfire::reaction::Reaction::id </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel nodiscard">nodiscard</span><span class="mlabel pure-virtual">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>A stable, unique identifier for this reaction instance. </p>
<dl class="section return"><dt>Returns</dt><dd>String view of the reaction ID (stable across runs and suitable for lookups). </dd></dl>
<p>Implemented in <a class="el" href="classgridfire_1_1rates_1_1weak_1_1_weak_reaction.html#ad01a15d95878c9edbf57cd9045c4413b">gridfire::rates::weak::WeakReaction</a>, and <a class="el" href="classgridfire_1_1reaction_1_1_reaclib_reaction.html#a06312f834439ccf93012dea53cab47ce">gridfire::reaction::ReaclibReaction</a>.</p>
</div>
</div>
<a id="a3906a668410e02239f9031b5fc580214" name="a3906a668410e02239f9031b5fc580214"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3906a668410e02239f9031b5fc580214">&#9670;&#160;</a></span>is_reverse()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool gridfire::reaction::Reaction::is_reverse </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel nodiscard">nodiscard</span><span class="mlabel pure-virtual">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Whether this object represents a reverse (backward) rate. </p>
<p>Implementations may pair forward/reverse rates for detailed balance. This flag indicates that the parameterization corresponds to the reverse direction. </p><dl class="section return"><dt>Returns</dt><dd>True for a reverse rate, false for a forward rate. </dd></dl>
<p>Implemented in <a class="el" href="classgridfire_1_1rates_1_1weak_1_1_weak_reaction.html#a90b62d922d91832859516450cf8e3876">gridfire::rates::weak::WeakReaction</a>, and <a class="el" href="classgridfire_1_1reaction_1_1_reaclib_reaction.html#a181b2c75af1f2701c43594c5bb2bac2d">gridfire::reaction::ReaclibReaction</a>.</p>
</div>
</div>
<a id="ae2a1b0395ac127c792a8049cd0bcc249" name="ae2a1b0395ac127c792a8049cd0bcc249"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae2a1b0395ac127c792a8049cd0bcc249">&#9670;&#160;</a></span>num_species()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual size_t gridfire::reaction::Reaction::num_species </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel nodiscard">nodiscard</span><span class="mlabel pure-virtual">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Number of unique species involved in the reaction. </p>
<dl class="section return"><dt>Returns</dt><dd>Count of distinct species across reactants and products. </dd></dl>
<p>Implemented in <a class="el" href="classgridfire_1_1rates_1_1weak_1_1_weak_reaction.html#a1210917ca1727ea474bb606cf8279edb">gridfire::rates::weak::WeakReaction</a>, and <a class="el" href="classgridfire_1_1reaction_1_1_reaclib_reaction.html#a9205126955ad38f56e8aca3112bc150a">gridfire::reaction::ReaclibReaction</a>.</p>
</div>
</div>
<a id="a0d16572ae2b664374d32ee6c4e22123a" name="a0d16572ae2b664374d32ee6c4e22123a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0d16572ae2b664374d32ee6c4e22123a">&#9670;&#160;</a></span>product_species()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual std::unordered_set&lt; fourdst::atomic::Species &gt; gridfire::reaction::Reaction::product_species </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel nodiscard">nodiscard</span><span class="mlabel pure-virtual">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Set of unique product species. </p>
<dl class="section return"><dt>Returns</dt><dd>Unordered set of product species (no duplicates). </dd></dl>
<p>Implemented in <a class="el" href="classgridfire_1_1rates_1_1weak_1_1_weak_reaction.html#a5c60feacb0ac48b35323d9f688315316">gridfire::rates::weak::WeakReaction</a>, and <a class="el" href="classgridfire_1_1reaction_1_1_reaclib_reaction.html#a67c8fa4d5929c7a8cbca9b3d9dd2b704">gridfire::reaction::ReaclibReaction</a>.</p>
</div>
</div>
<a id="a3d7451045d8df41ea98b5e419e0e5ab0" name="a3d7451045d8df41ea98b5e419e0e5ab0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3d7451045d8df41ea98b5e419e0e5ab0">&#9670;&#160;</a></span>products()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual const std::vector&lt; fourdst::atomic::Species &gt; &amp; gridfire::reaction::Reaction::products </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel nodiscard">nodiscard</span><span class="mlabel pure-virtual">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Ordered list of product species. </p>
<p>Multiplicity is represented by duplicates if applicable. </p><dl class="section return"><dt>Returns</dt><dd>Const reference to the vector of products. </dd></dl>
<p>Implemented in <a class="el" href="classgridfire_1_1rates_1_1weak_1_1_weak_reaction.html#aed0ea28ed3ba96a9f86aa9db947ec01c">gridfire::rates::weak::WeakReaction</a>, and <a class="el" href="classgridfire_1_1reaction_1_1_reaclib_reaction.html#a5f563b99bb550d5bafa2a989502de019">gridfire::reaction::ReaclibReaction</a>.</p>
</div>
</div>
<a id="a7e06936f9e8bb74e68eaa10e708e5d3c" name="a7e06936f9e8bb74e68eaa10e708e5d3c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7e06936f9e8bb74e68eaa10e708e5d3c">&#9670;&#160;</a></span>qValue()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual double gridfire::reaction::Reaction::qValue </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel nodiscard">nodiscard</span><span class="mlabel pure-virtual">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Q-value of the reaction (typically MeV), positive if exothermic. </p>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="classgridfire_1_1reaction_1_1_reaction.html" title="Represents a single nuclear reaction from a specific data source.">Reaction</a> Q-value used for energy accounting. </dd></dl>
<p>Implemented in <a class="el" href="classgridfire_1_1rates_1_1weak_1_1_weak_reaction.html#afedb724bf9f1c8fc91d853f2bedb10cb">gridfire::rates::weak::WeakReaction</a>, and <a class="el" href="classgridfire_1_1reaction_1_1_reaclib_reaction.html#ae47931948f12816eb890c0db4fff4d68">gridfire::reaction::ReaclibReaction</a>.</p>
</div>
</div>
<a id="a82c14096308cdc9126ab6d9667febcd2" name="a82c14096308cdc9126ab6d9667febcd2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a82c14096308cdc9126ab6d9667febcd2">&#9670;&#160;</a></span>reactant_species()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual std::unordered_set&lt; fourdst::atomic::Species &gt; gridfire::reaction::Reaction::reactant_species </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel nodiscard">nodiscard</span><span class="mlabel pure-virtual">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Set of unique reactant species. </p>
<dl class="section return"><dt>Returns</dt><dd>Unordered set of reactant species (no duplicates). </dd></dl>
<p>Implemented in <a class="el" href="classgridfire_1_1rates_1_1weak_1_1_weak_reaction.html#aae06ff559026e3ce242a42cdd888c5a0">gridfire::rates::weak::WeakReaction</a>, and <a class="el" href="classgridfire_1_1reaction_1_1_reaclib_reaction.html#ad85ca288289b25d482cbb8e3ff270028">gridfire::reaction::ReaclibReaction</a>.</p>
</div>
</div>
<a id="ac7b08c61cdc97268b9442afec4d08dad" name="ac7b08c61cdc97268b9442afec4d08dad"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac7b08c61cdc97268b9442afec4d08dad">&#9670;&#160;</a></span>reactants()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual const std::vector&lt; fourdst::atomic::Species &gt; &amp; gridfire::reaction::Reaction::reactants </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel nodiscard">nodiscard</span><span class="mlabel pure-virtual">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Ordered list of reactant species. </p>
<p>Multiplicity is represented by duplicates, e.g., (p, p) would list H1 twice. </p><dl class="section return"><dt>Returns</dt><dd>Const reference to the vector of reactants. </dd></dl>
<p>Implemented in <a class="el" href="classgridfire_1_1rates_1_1weak_1_1_weak_reaction.html#a1362d46630f30203027093e35883d1b1">gridfire::rates::weak::WeakReaction</a>, and <a class="el" href="classgridfire_1_1reaction_1_1_reaclib_reaction.html#ad095aba46860fec0e68386bf04f7f142">gridfire::reaction::ReaclibReaction</a>.</p>
</div>
</div>
<a id="ad49f4cad024db72c966d949c75f1ce4d" name="ad49f4cad024db72c966d949c75f1ce4d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad49f4cad024db72c966d949c75f1ce4d">&#9670;&#160;</a></span>stoichiometry() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual std::unordered_map&lt; fourdst::atomic::Species, int &gt; gridfire::reaction::Reaction::stoichiometry </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel nodiscard">nodiscard</span><span class="mlabel pure-virtual">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Full stoichiometry map for this reaction. </p>
<p>Coefficients are negative for reactants and positive for products; multiplicity is reflected in the magnitude (e.g., 2H -&gt; He gives H: -2, He: +1). </p><dl class="section return"><dt>Returns</dt><dd>Map from Species to integer stoichiometric coefficient. </dd></dl>
<p>Implemented in <a class="el" href="classgridfire_1_1rates_1_1weak_1_1_weak_reaction.html#a8bf7dc26d9f1375625df99bceba08a44">gridfire::rates::weak::WeakReaction</a>, and <a class="el" href="classgridfire_1_1reaction_1_1_reaclib_reaction.html#a0f629cbfe95dc5643b5e3724be0db2f9">gridfire::reaction::ReaclibReaction</a>.</p>
</div>
</div>
<a id="ab7888b57507d6d27de6e5fcaea40fff5" name="ab7888b57507d6d27de6e5fcaea40fff5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab7888b57507d6d27de6e5fcaea40fff5">&#9670;&#160;</a></span>stoichiometry() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual int gridfire::reaction::Reaction::stoichiometry </td>
<td>(</td>
<td class="paramtype">const fourdst::atomic::Species &amp;</td> <td class="paramname"><span class="paramname"><em>species</em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel nodiscard">nodiscard</span><span class="mlabel pure-virtual">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Stoichiometric coefficient for a particular species. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">species</td><td>Species for which to query the coefficient. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Negative for reactants, positive for products, zero if absent. </dd></dl>
<p>Implemented in <a class="el" href="classgridfire_1_1rates_1_1weak_1_1_weak_reaction.html#a1f4acfdb39bb861aaee9f3f28cfc406e">gridfire::rates::weak::WeakReaction</a>, and <a class="el" href="classgridfire_1_1reaction_1_1_reaclib_reaction.html#a57b2695d152360a6ba08776cc760e3a1">gridfire::reaction::ReaclibReaction</a>.</p>
</div>
</div>
<a id="a7f2590eee9f0dfb7b73cd92170a844b7" name="a7f2590eee9f0dfb7b73cd92170a844b7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7f2590eee9f0dfb7b73cd92170a844b7">&#9670;&#160;</a></span>type()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="namespacegridfire_1_1reaction.html#a026997f11e811fa7754ac9121c4ba74e">ReactionType</a> gridfire::reaction::Reaction::type </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel nodiscard">nodiscard</span><span class="mlabel pure-virtual">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Category of this reaction (e.g., REACLIB, WEAK, LOGICAL_REACLIB). </p>
<dl class="section return"><dt>Returns</dt><dd>Enumerated reaction type for runtime dispatch and filtering. </dd></dl>
<p>Implemented in <a class="el" href="classgridfire_1_1rates_1_1weak_1_1_weak_reaction.html#aade329265a26bdc005c0793ba7a36ab2">gridfire::rates::weak::WeakReaction</a>, <a class="el" href="classgridfire_1_1reaction_1_1_logical_reaclib_reaction.html#acbfa2d4e23dff6641be21cc1e754be15">gridfire::reaction::LogicalReaclibReaction</a>, and <a class="el" href="classgridfire_1_1reaction_1_1_reaclib_reaction.html#a3c0fbdd07f9a837bd031c5bdc58e0e8f">gridfire::reaction::ReaclibReaction</a>.</p>
</div>
</div>
<h2 class="groupheader">Friends And Related Symbol Documentation</h2>
<a id="a2b05ab608187216fc751bd2e42e8b7d8" name="a2b05ab608187216fc751bd2e42e8b7d8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2b05ab608187216fc751bd2e42e8b7d8">&#9670;&#160;</a></span>operator&lt;&lt;</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::ostream &amp; operator&lt;&lt; </td>
<td>(</td>
<td class="paramtype">std::ostream &amp;</td> <td class="paramname"><span class="paramname"><em>os</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classgridfire_1_1reaction_1_1_reaction.html">Reaction</a> &amp;</td> <td class="paramname"><span class="paramname"><em>r</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel friend">friend</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>src/include/gridfire/reaction/<a class="el" href="reaction_8h.html">reaction.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespacegridfire.html">gridfire</a></li><li class="navelem"><a class="el" href="namespacegridfire_1_1reaction.html">reaction</a></li><li class="navelem"><a class="el" href="classgridfire_1_1reaction_1_1_reaction.html">Reaction</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
</ul>
</div>
</body>
</html>