Files
GridFire/docs/html/classgridfire_1_1screening_1_1_screening_model.html

340 lines
20 KiB
HTML
Raw Normal View History

2025-07-01 11:40:58 -04:00
<!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::screening::ScreeningModel 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">
2025-11-04 14:04:26 -05:00
<div id="projectname">GridFire<span id="projectnumber">&#160;v0.7.0-alpha</span>
2025-07-01 11:40:58 -04:00
</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_1screening_1_1_screening_model.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-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classgridfire_1_1screening_1_1_screening_model-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">gridfire::screening::ScreeningModel Class Reference<span class="mlabels"><span class="mlabel abstract">abstract</span></span></div></div>
</div><!--header-->
<div class="contents">
2025-07-01 15:06:22 -04:00
<p>An abstract base class for plasma screening models.
<a href="#details">More...</a></p>
2025-07-31 10:54:31 -04:00
<p><code>#include &lt;screening_abstract.h&gt;</code></p>
2025-07-01 11:40:58 -04:00
<div class="dynheader">
Inheritance diagram for gridfire::screening::ScreeningModel:</div>
<div class="dyncontent">
2025-11-06 09:16:40 -05:00
<div class="center"><iframe scrolling="no" frameborder="0" src="classgridfire_1_1screening_1_1_screening_model__inherit__graph.svg" width="378" height="232"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
2025-07-01 11:40:58 -04:00
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-types" name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a107ff2897f040d6f27f69d56a0bdd28d" id="r_a107ff2897f040d6f27f69d56a0bdd28d"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a107ff2897f040d6f27f69d56a0bdd28d">ADDouble</a> = CppAD::AD&lt;double&gt;</td></tr>
2025-07-01 15:06:22 -04:00
<tr class="memdesc:a107ff2897f040d6f27f69d56a0bdd28d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alias for CppAD Automatic Differentiation type for double precision. <br /></td></tr>
2025-07-01 11:40:58 -04:00
<tr class="separator:a107ff2897f040d6f27f69d56a0bdd28d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><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:adef175acdbd911527f56a1f1592579a7" id="r_adef175acdbd911527f56a1f1592579a7"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#adef175acdbd911527f56a1f1592579a7">~ScreeningModel</a> ()=default</td></tr>
2025-07-01 15:06:22 -04:00
<tr class="memdesc:adef175acdbd911527f56a1f1592579a7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Virtual destructor. <br /></td></tr>
2025-07-01 11:40:58 -04:00
<tr class="separator:adef175acdbd911527f56a1f1592579a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab08c4490f9da18254a7c6f29be1f62ce" id="r_ab08c4490f9da18254a7c6f29be1f62ce"><td class="memItemLeft" align="right" valign="top">virtual std::vector&lt; double &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab08c4490f9da18254a7c6f29be1f62ce">calculateScreeningFactors</a> (const <a class="el" href="classgridfire_1_1reaction_1_1_reaction_set.html">reaction::ReactionSet</a> &amp;reactions, const std::vector&lt; fourdst::atomic::Species &gt; &amp;species, const std::vector&lt; double &gt; &amp;Y, double T9, double rho) const =0</td></tr>
<tr class="memdesc:ab08c4490f9da18254a7c6f29be1f62ce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates screening factors for a set of reactions. <br /></td></tr>
<tr class="separator:ab08c4490f9da18254a7c6f29be1f62ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1da8242c7591ab32453d1e0109999d6c" id="r_a1da8242c7591ab32453d1e0109999d6c"><td class="memItemLeft" align="right" valign="top">virtual std::vector&lt; <a class="el" href="#a107ff2897f040d6f27f69d56a0bdd28d">ADDouble</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a1da8242c7591ab32453d1e0109999d6c">calculateScreeningFactors</a> (const <a class="el" href="classgridfire_1_1reaction_1_1_reaction_set.html">reaction::ReactionSet</a> &amp;reactions, const std::vector&lt; fourdst::atomic::Species &gt; &amp;species, const std::vector&lt; CppAD::AD&lt; double &gt; &gt; &amp;Y, <a class="el" href="#a107ff2897f040d6f27f69d56a0bdd28d">ADDouble</a> T9, <a class="el" href="#a107ff2897f040d6f27f69d56a0bdd28d">ADDouble</a> rho) const =0</td></tr>
<tr class="memdesc:a1da8242c7591ab32453d1e0109999d6c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates screening factors using CppAD types for automatic differentiation. <br /></td></tr>
<tr class="separator:a1da8242c7591ab32453d1e0109999d6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2025-07-01 11:40:58 -04:00
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
2025-07-01 15:06:22 -04:00
<div class="textblock"><p>An abstract base class for plasma screening models. </p>
<p>This class defines the interface for models that calculate the enhancement factor for nuclear reaction rates due to the electrostatic screening of interacting nuclei by the surrounding plasma. Concrete implementations of this class will provide specific screening prescriptions (e.g., WEAK, BARE, STRONG, etc.).</p>
<p>The interface provides methods for calculating screening factors for both standard double-precision inputs and for CppAD's automatic differentiation types, allowing the screening contributions to be included in Jacobian calculations. </p>
2025-07-01 11:40:58 -04:00
</div><h2 class="groupheader">Member Typedef Documentation</h2>
<a id="a107ff2897f040d6f27f69d56a0bdd28d" name="a107ff2897f040d6f27f69d56a0bdd28d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a107ff2897f040d6f27f69d56a0bdd28d">&#9670;&#160;</a></span>ADDouble</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="#a107ff2897f040d6f27f69d56a0bdd28d">gridfire::screening::ScreeningModel::ADDouble</a> = CppAD::AD&lt;double&gt;</td>
</tr>
</table>
</div><div class="memdoc">
2025-07-01 15:06:22 -04:00
<p>Alias for CppAD Automatic Differentiation type for double precision. </p>
2025-07-01 11:40:58 -04:00
</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="adef175acdbd911527f56a1f1592579a7" name="adef175acdbd911527f56a1f1592579a7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adef175acdbd911527f56a1f1592579a7">&#9670;&#160;</a></span>~ScreeningModel()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual gridfire::screening::ScreeningModel::~ScreeningModel </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">
2025-07-01 15:06:22 -04:00
<p>Virtual destructor. </p>
<p>Ensures that derived class destructors are called correctly. </p>
2025-07-01 11:40:58 -04:00
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a1da8242c7591ab32453d1e0109999d6c" name="a1da8242c7591ab32453d1e0109999d6c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1da8242c7591ab32453d1e0109999d6c">&#9670;&#160;</a></span>calculateScreeningFactors() <span class="overload">[1/2]</span></h2>
2025-07-01 11:40:58 -04:00
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual std::vector&lt; <a class="el" href="#a107ff2897f040d6f27f69d56a0bdd28d">ADDouble</a> &gt; gridfire::screening::ScreeningModel::calculateScreeningFactors </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgridfire_1_1reaction_1_1_reaction_set.html">reaction::ReactionSet</a> &amp;</td> <td class="paramname"><span class="paramname"><em>reactions</em></span>, </td>
2025-07-01 11:40:58 -04:00
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; fourdst::atomic::Species &gt; &amp;</td> <td class="paramname"><span class="paramname"><em>species</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>
2025-07-01 11:40:58 -04:00
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="#a107ff2897f040d6f27f69d56a0bdd28d">ADDouble</a></td> <td class="paramname"><span class="paramname"><em>T9</em></span>, </td>
2025-07-01 11:40:58 -04:00
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="#a107ff2897f040d6f27f69d56a0bdd28d">ADDouble</a></td> <td class="paramname"><span class="paramname"><em>rho</em></span>&#160;) const</td>
2025-07-01 11:40:58 -04:00
</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>
2025-07-01 11:40:58 -04:00
</tr>
</table>
</div><div class="memdoc">
2025-07-01 15:06:22 -04:00
<p>Calculates screening factors using CppAD types for automatic differentiation. </p>
<p>This is a pure virtual function that provides an overload of <code>calculateScreeningFactors</code> for use with CppAD. It allows the derivatives of the screening factors with respect to abundances, temperature, and density to be computed automatically.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">reactions</td><td>The set of logical reactions in the network. </td></tr>
<tr><td class="paramname">species</td><td>A vector of all atomic species involved in the network. </td></tr>
<tr><td class="paramname">Y</td><td>The current composition, providing molar abundances (mol/g) for each species. </td></tr>
2025-07-01 15:06:22 -04:00
<tr><td class="paramname">T9</td><td>The temperature in units of 10^9 K, as an AD type. </td></tr>
<tr><td class="paramname">rho</td><td>The plasma density in g/cm^3, as an AD type. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A vector of screening factors (dimensionless), as AD types.</dd></dl>
<p><b>Note</b> This method is essential for including the effects of screening in the Jacobian matrix of the reaction network. </p>
<p>Implemented in <a class="el" href="classgridfire_1_1screening_1_1_bare_screening_model.html#a0ac3685a90c1e65a84e03cfb2fed29e5">gridfire::screening::BareScreeningModel</a>, <a class="el" href="classgridfire_1_1screening_1_1_intermediate_screening_model.html#a765e369256282f0f25e66e13c33dcbd9">gridfire::screening::IntermediateScreeningModel</a>, <a class="el" href="classgridfire_1_1screening_1_1_weak_screening_model.html#a8b0590814e7058b4ff3f0cd6f4124773">gridfire::screening::WeakScreeningModel</a>, and <a class="el" href="class_py_screening.html#a68a126de903e1a87a1d7d1cfec8add0f">PyScreening</a>.</p>
2025-07-01 11:40:58 -04:00
</div>
</div>
<a id="ab08c4490f9da18254a7c6f29be1f62ce" name="ab08c4490f9da18254a7c6f29be1f62ce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab08c4490f9da18254a7c6f29be1f62ce">&#9670;&#160;</a></span>calculateScreeningFactors() <span class="overload">[2/2]</span></h2>
2025-07-01 11:40:58 -04:00
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual std::vector&lt; double &gt; gridfire::screening::ScreeningModel::calculateScreeningFactors </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgridfire_1_1reaction_1_1_reaction_set.html">reaction::ReactionSet</a> &amp;</td> <td class="paramname"><span class="paramname"><em>reactions</em></span>, </td>
2025-07-01 11:40:58 -04:00
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; fourdst::atomic::Species &gt; &amp;</td> <td class="paramname"><span class="paramname"><em>species</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">double</td> <td class="paramname"><span class="paramname"><em>T9</em></span>, </td>
2025-07-01 11:40:58 -04:00
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double</td> <td class="paramname"><span class="paramname"><em>rho</em></span>&#160;) const</td>
2025-07-01 11:40:58 -04:00
</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>
2025-07-01 11:40:58 -04:00
</tr>
</table>
</div><div class="memdoc">
2025-07-01 15:06:22 -04:00
<p>Calculates screening factors for a set of reactions. </p>
<p>This is a pure virtual function that must be implemented by derived classes. It computes the screening enhancement factor for each reaction in the provided set based on the given plasma conditions.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">reactions</td><td>The set of logical reactions in the network. </td></tr>
<tr><td class="paramname">species</td><td>A vector of all atomic species involved in the network. </td></tr>
<tr><td class="paramname">Y</td><td>The current composition, providing molar abundances (mol/g) for each species. </td></tr>
2025-07-01 15:06:22 -04:00
<tr><td class="paramname">T9</td><td>The temperature in units of 10^9 K. </td></tr>
<tr><td class="paramname">rho</td><td>The plasma density in g/cm^3. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A vector of screening factors (dimensionless), one for each reaction in the <code>reactions</code> set, in the same order.</dd></dl>
<p><b>Pre-conditions</b> </p><ul>
<li>The size of the <code>Y</code> vector must match the size of the <code>species</code> vector.</li>
<li><code>T9</code> and <code>rho</code> must be positive.</li>
</ul>
<p><b>Post-conditions</b> </p><ul>
<li>The returned vector will have the same size as the <code>reactions</code> set.</li>
<li>Each element in the returned vector will be &gt;= 1.0.</li>
</ul>
<p><b>Usage</b> </p><div class="fragment"><div class="line"><span class="comment">// Assume &#39;model&#39; is a std::unique_ptr&lt;ScreeningModel&gt; to a concrete implementation</span></div>
<div class="line"><span class="comment">// and other parameters (reactions, species, Y, T9, rho) are initialized.</span></div>
<div class="line">std::vector&lt;double&gt; screening_factors = model-&gt;calculateScreeningFactors(</div>
<div class="line"> reactions, species, Y, T9, rho</div>
<div class="line">);</div>
<div class="line"><span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; reactions.size(); ++i) {</div>
<div class="line"> <span class="comment">// ... use screening_factors[i] ...</span></div>
<div class="line">}</div>
</div><!-- fragment -->
<p>Implemented in <a class="el" href="classgridfire_1_1screening_1_1_bare_screening_model.html#ad252ce1de82401bab24747aabf0c8a3a">gridfire::screening::BareScreeningModel</a>, <a class="el" href="classgridfire_1_1screening_1_1_intermediate_screening_model.html#a86a218ce82306ed582296cbeb3de0250">gridfire::screening::IntermediateScreeningModel</a>, <a class="el" href="classgridfire_1_1screening_1_1_weak_screening_model.html#a6a215d082b0d05126fb2b19fd1983446">gridfire::screening::WeakScreeningModel</a>, and <a class="el" href="class_py_screening.html#aa67b5f0528006d9c742033b8c5ab3a05">PyScreening</a>.</p>
2025-07-01 11:40:58 -04:00
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
2025-07-31 10:54:31 -04:00
<li>src/include/gridfire/screening/<a class="el" href="screening__abstract_8h.html">screening_abstract.h</a></li>
2025-07-01 11:40:58 -04:00
</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_1screening.html">screening</a></li><li class="navelem"><a class="el" href="classgridfire_1_1screening_1_1_screening_model.html">ScreeningModel</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>