feat(solver): added callback functions to solver in C++ and python

This commit is contained in:
2025-07-31 15:04:57 -04:00
parent 5b74155477
commit 24049b2658
482 changed files with 4318 additions and 1467 deletions

View File

@@ -29,7 +29,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">GridFire<span id="projectnumber">&#160;0.0.1a</span>
<div id="projectname">GridFire<span id="projectnumber">&#160;0.6.0</span>
</div>
<div id="projectbrief">General Purpose Nuclear Network</div>
</td>
@@ -191,37 +191,49 @@ Public Member Functions</h2></td></tr>
<tr class="memitem:a832e2fe066381811a3e0464806ff5e95" id="r_a832e2fe066381811a3e0464806ff5e95"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a832e2fe066381811a3e0464806ff5e95">exportToCSV</a> (const std::string &amp;filename) const</td></tr>
<tr class="memdesc:a832e2fe066381811a3e0464806ff5e95"><td class="mdescLeft">&#160;</td><td class="mdescRight">Exports the network to a CSV file for analysis. <br /></td></tr>
<tr class="separator:a832e2fe066381811a3e0464806ff5e95"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8110e687844f921438bb517e1d8ce62f" id="r_a8110e687844f921438bb517e1d8ce62f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a8110e687844f921438bb517e1d8ce62f">setScreeningModel</a> (<a class="el" href="namespacegridfire_1_1screening.html#aa82aafbc4f8c28d0a75b60798e3a7d25">screening::ScreeningType</a>) override</td></tr>
<tr class="memdesc:a8110e687844f921438bb517e1d8ce62f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the electron screening model. <br /></td></tr>
<tr class="separator:a8110e687844f921438bb517e1d8ce62f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9bc768ca8ca59d442c0d05cb04e36d7c" id="r_a9bc768ca8ca59d442c0d05cb04e36d7c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9bc768ca8ca59d442c0d05cb04e36d7c">setScreeningModel</a> (<a class="el" href="namespacegridfire_1_1screening.html#aa82aafbc4f8c28d0a75b60798e3a7d25">screening::ScreeningType</a> model) override</td></tr>
<tr class="memdesc:a9bc768ca8ca59d442c0d05cb04e36d7c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the electron screening model for reaction rate calculations. <br /></td></tr>
<tr class="separator:a9bc768ca8ca59d442c0d05cb04e36d7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a697f2004e0d02c59e83c7890742d7c9a" id="r_a697f2004e0d02c59e83c7890742d7c9a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacegridfire_1_1screening.html#aa82aafbc4f8c28d0a75b60798e3a7d25">screening::ScreeningType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a697f2004e0d02c59e83c7890742d7c9a">getScreeningModel</a> () const override</td></tr>
<tr class="memdesc:a697f2004e0d02c59e83c7890742d7c9a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the current electron screening model. <br /></td></tr>
<tr class="memdesc:a697f2004e0d02c59e83c7890742d7c9a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the current electron screening model. <br /></td></tr>
<tr class="separator:a697f2004e0d02c59e83c7890742d7c9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6c5410878496abc349ba30b691cdf0f1" id="r_a6c5410878496abc349ba30b691cdf0f1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6c5410878496abc349ba30b691cdf0f1">setPrecomputation</a> (bool precompute)</td></tr>
<tr class="memdesc:a6c5410878496abc349ba30b691cdf0f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets whether to precompute reaction rates. <br /></td></tr>
<tr class="separator:a6c5410878496abc349ba30b691cdf0f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a015f8975701f028c29835d3a9794e00f" id="r_a015f8975701f028c29835d3a9794e00f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a015f8975701f028c29835d3a9794e00f">isPrecomputationEnabled</a> () const</td></tr>
<tr class="memdesc:a015f8975701f028c29835d3a9794e00f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if precomputation of reaction rates is enabled. <br /></td></tr>
<tr class="separator:a015f8975701f028c29835d3a9794e00f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:add98ece49ec5c538bddf3cc77004fe44" id="r_add98ece49ec5c538bddf3cc77004fe44"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classgridfire_1_1partition_1_1_partition_function.html">partition::PartitionFunction</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#add98ece49ec5c538bddf3cc77004fe44">getPartitionFunction</a> () const</td></tr>
<tr class="memdesc:add98ece49ec5c538bddf3cc77004fe44"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the partition function used for reaction rate calculations. <br /></td></tr>
<tr class="separator:add98ece49ec5c538bddf3cc77004fe44"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0b7b85f824e1021ae6e56b644db53b28" id="r_a0b7b85f824e1021ae6e56b644db53b28"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a0b7b85f824e1021ae6e56b644db53b28">calculateReverseRate</a> (const <a class="el" href="classgridfire_1_1reaction_1_1_reaction.html">reaction::Reaction</a> &amp;reaction, double T9) const</td></tr>
<tr class="memdesc:a0b7b85f824e1021ae6e56b644db53b28"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates the reverse rate for a given reaction. <br /></td></tr>
<tr class="separator:a0b7b85f824e1021ae6e56b644db53b28"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01fc9fd5d576b66d07360d05e821c755" id="r_a01fc9fd5d576b66d07360d05e821c755"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a01fc9fd5d576b66d07360d05e821c755">calculateReverseRateTwoBody</a> (const <a class="el" href="classgridfire_1_1reaction_1_1_reaction.html">reaction::Reaction</a> &amp;reaction, const double T9, const double forwardRate, const double expFactor) const</td></tr>
<tr class="memdesc:a01fc9fd5d576b66d07360d05e821c755"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates the reverse rate for a two-body reaction. <br /></td></tr>
<tr class="separator:a01fc9fd5d576b66d07360d05e821c755"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af28950c5af3a92eb03a1a64ed0f913e7" id="r_af28950c5af3a92eb03a1a64ed0f913e7"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#af28950c5af3a92eb03a1a64ed0f913e7">calculateReverseRateTwoBodyDerivative</a> (const <a class="el" href="classgridfire_1_1reaction_1_1_reaction.html">reaction::Reaction</a> &amp;reaction, const double T9, const double reverseRate) const</td></tr>
<tr class="separator:af28950c5af3a92eb03a1a64ed0f913e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae7a210d9ab13ad5fb0c612f027acabd0" id="r_ae7a210d9ab13ad5fb0c612f027acabd0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae7a210d9ab13ad5fb0c612f027acabd0">isUsingReverseReactions</a> () const</td></tr>
<tr class="memdesc:ae7a210d9ab13ad5fb0c612f027acabd0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if reverse reactions are enabled. <br /></td></tr>
<tr class="separator:ae7a210d9ab13ad5fb0c612f027acabd0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a409991d527ea4d4b05d1af907fe5d197" id="r_a409991d527ea4d4b05d1af907fe5d197"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a409991d527ea4d4b05d1af907fe5d197">setUseReverseReactions</a> (bool useReverse)</td></tr>
<tr class="memdesc:a409991d527ea4d4b05d1af907fe5d197"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets whether to use reverse reactions in the engine. <br /></td></tr>
<tr class="separator:a409991d527ea4d4b05d1af907fe5d197"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a914f6abc61805cddaebcb8f3cf470dda" id="r_a914f6abc61805cddaebcb8f3cf470dda"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a914f6abc61805cddaebcb8f3cf470dda">getSpeciesIndex</a> (const fourdst::atomic::Species &amp;species) const override</td></tr>
<tr class="memdesc:a914f6abc61805cddaebcb8f3cf470dda"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the index of a species in the network. <br /></td></tr>
<tr class="separator:a914f6abc61805cddaebcb8f3cf470dda"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27f3a928e1f6bbe7e847cffed6db729f" id="r_a27f3a928e1f6bbe7e847cffed6db729f"><td class="memItemLeft" align="right" valign="top">std::vector&lt; double &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a27f3a928e1f6bbe7e847cffed6db729f">mapNetInToMolarAbundanceVector</a> (const <a class="el" href="structgridfire_1_1_net_in.html">NetIn</a> &amp;netIn) const override</td></tr>
<tr class="memdesc:a27f3a928e1f6bbe7e847cffed6db729f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maps the <a class="el" href="structgridfire_1_1_net_in.html">NetIn</a> object to a vector of molar abundances. <br /></td></tr>
<tr class="separator:a27f3a928e1f6bbe7e847cffed6db729f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae7a371be61ab09b3fa4a93f05bd44e5e" id="r_ae7a371be61ab09b3fa4a93f05bd44e5e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structgridfire_1_1_priming_report.html">PrimingReport</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae7a371be61ab09b3fa4a93f05bd44e5e">primeEngine</a> (const <a class="el" href="structgridfire_1_1_net_in.html">NetIn</a> &amp;netIn) override</td></tr>
<tr class="memdesc:ae7a371be61ab09b3fa4a93f05bd44e5e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prepares the engine for calculations with initial conditions. <br /></td></tr>
<tr class="separator:ae7a371be61ab09b3fa4a93f05bd44e5e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a166a5f4349580f9aa0b930afec73fcc4" id="r_a166a5f4349580f9aa0b930afec73fcc4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacegridfire.html#a3b1f70dc7ff5b501809330a97079e4f6">BuildDepthType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a166a5f4349580f9aa0b930afec73fcc4">getDepth</a> () const override</td></tr>
<tr class="memdesc:a166a5f4349580f9aa0b930afec73fcc4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the depth of the network. <br /></td></tr>
<tr class="separator:a166a5f4349580f9aa0b930afec73fcc4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad9d6c70ace5cbbf7f3aa7b31fce39490" id="r_ad9d6c70ace5cbbf7f3aa7b31fce39490"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad9d6c70ace5cbbf7f3aa7b31fce39490">rebuild</a> (const fourdst::composition::Composition &amp;comp, const <a class="el" href="namespacegridfire.html#a3b1f70dc7ff5b501809330a97079e4f6">BuildDepthType</a> depth) override</td></tr>
<tr class="memdesc:ad9d6c70ace5cbbf7f3aa7b31fce39490"><td class="mdescLeft">&#160;</td><td class="mdescRight">Rebuilds the reaction network based on a new composition. <br /></td></tr>
<tr class="separator:ad9d6c70ace5cbbf7f3aa7b31fce39490"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classgridfire_1_1_engine"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_classgridfire_1_1_engine')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classgridfire_1_1_engine.html">gridfire::Engine</a></td></tr>
<tr class="memitem:a2e7970bed2100699f226f4141d5db037 inherit pub_methods_classgridfire_1_1_engine" id="r_a2e7970bed2100699f226f4141d5db037"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1_engine.html#a2e7970bed2100699f226f4141d5db037">~Engine</a> ()=default</td></tr>
@@ -845,6 +857,17 @@ template&lt;IsArithmeticOrAD T&gt; </div>
</table>
</div><div class="memdoc">
<p>Calculates the reverse rate for a given reaction. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">reaction</td><td>The reaction for which to calculate the reverse rate. </td></tr>
<tr><td class="paramname">T9</td><td>Temperature in units of 10^9 K. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Reverse rate for the reaction (e.g., mol/g/s).</dd></dl>
<p>This method computes the reverse rate based on the forward rate and thermodynamic properties of the reaction. </p>
</div>
</div>
<a id="a01fc9fd5d576b66d07360d05e821c755" name="a01fc9fd5d576b66d07360d05e821c755"></a>
@@ -884,6 +907,19 @@ template&lt;IsArithmeticOrAD T&gt; </div>
</table>
</div><div class="memdoc">
<p>Calculates the reverse rate for a two-body reaction. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">reaction</td><td>The reaction for which to calculate the reverse rate. </td></tr>
<tr><td class="paramname">T9</td><td>Temperature in units of 10^9 K. </td></tr>
<tr><td class="paramname">forwardRate</td><td>The forward rate of the reaction. </td></tr>
<tr><td class="paramname">expFactor</td><td>Exponential factor for the reaction. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Reverse rate for the two-body reaction (e.g., mol/g/s).</dd></dl>
<p>This method computes the reverse rate using the forward rate and thermodynamic properties of the reaction. </p>
</div>
</div>
<a id="af28950c5af3a92eb03a1a64ed0f913e7" name="af28950c5af3a92eb03a1a64ed0f913e7"></a>
@@ -1230,6 +1266,10 @@ template&lt;IsArithmeticOrAD T&gt; </div>
</table>
</div><div class="memdoc">
<p>Gets the depth of the network. </p>
<dl class="section return"><dt>Returns</dt><dd>The build depth of the network.</dd></dl>
<p>This method returns the current build depth of the reaction network, which indicates how many levels of reactions are included in the network. </p>
<p>Reimplemented from <a class="el" href="classgridfire_1_1_dynamic_engine.html#a04317b66ef14d519264bc30ee69f5bf9">gridfire::DynamicEngine</a>.</p>
</div>
@@ -1394,6 +1434,10 @@ template&lt;IsArithmeticOrAD T&gt; </div>
</table>
</div><div class="memdoc">
<p>Gets the partition function used for reaction rate calculations. </p>
<dl class="section return"><dt>Returns</dt><dd>Reference to the PartitionFunction object.</dd></dl>
<p>This method provides access to the partition function used in the engine, which is essential for calculating thermodynamic properties and reaction rates. </p>
</div>
</div>
<a id="a697f2004e0d02c59e83c7890742d7c9a" name="a697f2004e0d02c59e83c7890742d7c9a"></a>
@@ -1419,12 +1463,11 @@ template&lt;IsArithmeticOrAD T&gt; </div>
</table>
</div><div class="memdoc">
<p>Get the current electron screening model. </p>
<p>Gets the current electron screening model. </p>
<dl class="section return"><dt>Returns</dt><dd>The currently active screening model type.</dd></dl>
<dl class="section user"><dt>Usage Example:</dt><dd><div class="fragment"><div class="line"><a class="code hl_enumeration" href="namespacegridfire_1_1screening.html#aa82aafbc4f8c28d0a75b60798e3a7d25">screening::ScreeningType</a> currentModel = myEngine.getScreeningModel();</div>
<p>Example usage: </p><div class="fragment"><div class="line"><a class="code hl_enumeration" href="namespacegridfire_1_1screening.html#aa82aafbc4f8c28d0a75b60798e3a7d25">screening::ScreeningType</a> currentModel = engine.getScreeningModel();</div>
<div class="ttc" id="anamespacegridfire_1_1screening_html_aa82aafbc4f8c28d0a75b60798e3a7d25"><div class="ttname"><a href="namespacegridfire_1_1screening.html#aa82aafbc4f8c28d0a75b60798e3a7d25">gridfire::screening::ScreeningType</a></div><div class="ttdeci">ScreeningType</div><div class="ttdoc">Enumerates the available plasma screening models.</div><div class="ttdef"><b>Definition</b> screening_types.h:15</div></div>
</div><!-- fragment --> </dd></dl>
</div><!-- fragment -->
<p>Implements <a class="el" href="classgridfire_1_1_dynamic_engine.html#a7a203f8e0f3a6744ddc912dfbcfdbcc0">gridfire::DynamicEngine</a>.</p>
</div>
@@ -1488,6 +1531,16 @@ template&lt;IsArithmeticOrAD T&gt; </div>
</table>
</div><div class="memdoc">
<p>Gets the index of a species in the network. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">species</td><td>The species for which to get the index. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Index of the species in the network, or -1 if not found.</dd></dl>
<p>This method returns the index of the given species in the network's species vector. If the species is not found, it returns -1. </p>
<p>Implements <a class="el" href="classgridfire_1_1_dynamic_engine.html#ad3d56a8b9161b9cc7f4da51f6bf7e8c9">gridfire::DynamicEngine</a>.</p>
</div>
@@ -1640,6 +1693,10 @@ template&lt;IsArithmeticOrAD T&gt; </div>
</table>
</div><div class="memdoc">
<p>Checks if precomputation of reaction rates is enabled. </p>
<dl class="section return"><dt>Returns</dt><dd>True if precomputation is enabled, false otherwise.</dd></dl>
<p>This method allows checking the current state of precomputation for reaction rates in the engine. </p>
</div>
</div>
<a id="af04a9f8a629d6f6c58c477af0f1ab9e5" name="af04a9f8a629d6f6c58c477af0f1ab9e5"></a>
@@ -1692,6 +1749,10 @@ template&lt;IsArithmeticOrAD T&gt; </div>
</table>
</div><div class="memdoc">
<p>Checks if reverse reactions are enabled. </p>
<dl class="section return"><dt>Returns</dt><dd>True if reverse reactions are enabled, false otherwise.</dd></dl>
<p>This method allows checking whether the engine is configured to use reverse reactions in its calculations. </p>
</div>
</div>
<a id="a27f3a928e1f6bbe7e847cffed6db729f" name="a27f3a928e1f6bbe7e847cffed6db729f"></a>
@@ -1717,6 +1778,16 @@ template&lt;IsArithmeticOrAD T&gt; </div>
</table>
</div><div class="memdoc">
<p>Maps the <a class="el" href="structgridfire_1_1_net_in.html">NetIn</a> object to a vector of molar abundances. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">netIn</td><td>The <a class="el" href="structgridfire_1_1_net_in.html">NetIn</a> object containing the input conditions. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Vector of molar abundances corresponding to the species in the network.</dd></dl>
<p>This method converts the <a class="el" href="structgridfire_1_1_net_in.html">NetIn</a> object into a vector of molar abundances for each species in the network, which can be used for further calculations. </p>
<p>Implements <a class="el" href="classgridfire_1_1_dynamic_engine.html#a55f1b7e5ebe2840e1d7c54665ca5411a">gridfire::DynamicEngine</a>.</p>
</div>
@@ -1825,6 +1896,16 @@ template&lt;IsArithmeticOrAD T&gt; </div>
</table>
</div><div class="memdoc">
<p>Prepares the engine for calculations with initial conditions. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">netIn</td><td>The input conditions for the network. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="structgridfire_1_1_priming_report.html" title="Captures the result of a network priming operation.">PrimingReport</a> containing information about the priming process.</dd></dl>
<p>This method initializes the engine with the provided input conditions, setting up reactions, species, and precomputing necessary data. </p>
<p>Implements <a class="el" href="classgridfire_1_1_dynamic_engine.html#a21c34f59c080a853fafa38a25175124e">gridfire::DynamicEngine</a>.</p>
</div>
@@ -1856,6 +1937,16 @@ template&lt;IsArithmeticOrAD T&gt; </div>
</table>
</div><div class="memdoc">
<p>Rebuilds the reaction network based on a new composition. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">comp</td><td>The new composition to use for rebuilding the network. </td></tr>
<tr><td class="paramname">depth</td><td>The build depth to use for the network.</td></tr>
</table>
</dd>
</dl>
<p>This method rebuilds the reaction network using the provided composition and build depth. It updates all internal data structures accordingly. </p>
<p>Reimplemented from <a class="el" href="classgridfire_1_1_dynamic_engine.html#a4e2c8b896661b7a89beffe0066cb21cf">gridfire::DynamicEngine</a>.</p>
</div>
@@ -1964,10 +2055,19 @@ template&lt;IsArithmeticOrAD T&gt; </div>
</table>
</div><div class="memdoc">
<p>Sets whether to precompute reaction rates. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">precompute</td><td>True to enable precomputation, false to disable.</td></tr>
</table>
</dd>
</dl>
<p>This method allows enabling or disabling precomputation of reaction rates for performance optimization. When enabled, reaction rates are computed once and stored for later use. </p>
</div>
</div>
<a id="a8110e687844f921438bb517e1d8ce62f" name="a8110e687844f921438bb517e1d8ce62f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8110e687844f921438bb517e1d8ce62f">&#9670;&#160;</a></span>setScreeningModel()</h2>
<a id="a9bc768ca8ca59d442c0d05cb04e36d7c" name="a9bc768ca8ca59d442c0d05cb04e36d7c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9bc768ca8ca59d442c0d05cb04e36d7c">&#9670;&#160;</a></span>setScreeningModel()</h2>
<div class="memitem">
<div class="memproto">
@@ -1989,18 +2089,14 @@ template&lt;IsArithmeticOrAD T&gt; </div>
</table>
</div><div class="memdoc">
<p>Set the electron screening model. </p>
<p>Sets the electron screening model for reaction rate calculations. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">model</td><td>The type of screening model to use for reaction rate calculations.</td></tr>
<tr><td class="paramname">model</td><td>The type of screening model to use.</td></tr>
</table>
</dd>
</dl>
<p>This method allows changing the screening model at runtime. Screening corrections account for the electrostatic shielding of nuclei by electrons, which affects reaction rates in dense stellar plasmas.</p>
<dl class="section user"><dt>Usage Example:</dt><dd><div class="fragment"><div class="line">myEngine.setScreeningModel(<a class="code hl_enumvalue" href="namespacegridfire_1_1screening.html#aa82aafbc4f8c28d0a75b60798e3a7d25a32c7d8943bec86a6d7d5e03598670ca8">screening::ScreeningType::WEAK</a>);</div>
<div class="ttc" id="anamespacegridfire_1_1screening_html_aa82aafbc4f8c28d0a75b60798e3a7d25a32c7d8943bec86a6d7d5e03598670ca8"><div class="ttname"><a href="namespacegridfire_1_1screening.html#aa82aafbc4f8c28d0a75b60798e3a7d25a32c7d8943bec86a6d7d5e03598670ca8">gridfire::screening::ScreeningType::WEAK</a></div><div class="ttdeci">@ WEAK</div><div class="ttdoc">Weak screening model (Salpeter, 1954).</div><div class="ttdef"><b>Definition</b> screening_types.h:35</div></div>
</div><!-- fragment --></dd></dl>
<dl class="section post"><dt>Postcondition</dt><dd>The engine will use the specified screening model for subsequent rate calculations. </dd></dl>
<p>This method allows changing the screening model at runtime. Screening corrections account for the electrostatic shielding of nuclei by electrons, which affects reaction rates in dense stellar plasmas. </p>
<p>Implements <a class="el" href="classgridfire_1_1_dynamic_engine.html#a3fb44b6f55563a2f590f31916528f2bd">gridfire::DynamicEngine</a>.</p>
@@ -2021,6 +2117,15 @@ template&lt;IsArithmeticOrAD T&gt; </div>
</table>
</div><div class="memdoc">
<p>Sets whether to use reverse reactions in the engine. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">useReverse</td><td>True to enable reverse reactions, false to disable.</td></tr>
</table>
</dd>
</dl>
<p>This method allows enabling or disabling reverse reactions in the engine. If disabled, only forward reactions will be considered in calculations. </p>
</div>
</div>
<a id="acdce8d87e23a2cd1504bc9472e538c0f" name="acdce8d87e23a2cd1504bc9472e538c0f"></a>