Files
GridFire/docs/html/classgridfire_1_1screening_1_1WeakScreeningModel.html

451 lines
28 KiB
HTML
Raw Permalink 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.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>GridFire: gridfire::screening::WeakScreeningModel 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>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.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;v0.7.1_rc2</span>
</div>
<div id="projectbrief">General Purpose Nuclear Network</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<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" 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');
$(document).ready(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 */
$(document).ready(function(){initNavTree('classgridfire_1_1screening_1_1WeakScreeningModel.html',''); initResizable(); });
/* @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="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="classgridfire_1_1screening_1_1WeakScreeningModel-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">gridfire::screening::WeakScreeningModel Class Reference<span class="mlabels"><span class="mlabel">final</span></span></div></div>
</div><!--header-->
<div class="contents">
<p>Implements the weak screening model based on the Debye-Hückel approximation.
<a href="classgridfire_1_1screening_1_1WeakScreeningModel.html#details">More...</a></p>
<p><code>#include &lt;screening_weak.h&gt;</code></p>
<div class="dynheader">
Inheritance diagram for gridfire::screening::WeakScreeningModel:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classgridfire_1_1screening_1_1WeakScreeningModel__inherit__graph.svg" width="182" height="139"><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>
<div class="dynheader">
Collaboration diagram for gridfire::screening::WeakScreeningModel:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classgridfire_1_1screening_1_1WeakScreeningModel__coll__graph.svg" width="182" height="139"><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>
<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:a6a215d082b0d05126fb2b19fd1983446" id="r_a6a215d082b0d05126fb2b19fd1983446"><td class="memItemLeft" align="right" valign="top">std::vector&lt; double &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1screening_1_1WeakScreeningModel.html#a6a215d082b0d05126fb2b19fd1983446">calculateScreeningFactors</a> (const <a class="el" href="classgridfire_1_1reaction_1_1ReactionSet.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 override</td></tr>
<tr class="memdesc:a6a215d082b0d05126fb2b19fd1983446"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates weak screening factors for a set of reactions. <br /></td></tr>
<tr class="separator:a6a215d082b0d05126fb2b19fd1983446"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b0590814e7058b4ff3f0cd6f4124773" id="r_a8b0590814e7058b4ff3f0cd6f4124773"><td class="memItemLeft" align="right" valign="top">std::vector&lt; CppAD::AD&lt; double &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1screening_1_1WeakScreeningModel.html#a8b0590814e7058b4ff3f0cd6f4124773">calculateScreeningFactors</a> (const <a class="el" href="classgridfire_1_1reaction_1_1ReactionSet.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, CppAD::AD&lt; double &gt; T9, CppAD::AD&lt; double &gt; rho) const override</td></tr>
<tr class="memdesc:a8b0590814e7058b4ff3f0cd6f4124773"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates weak screening factors using CppAD types. <br /></td></tr>
<tr class="separator:a8b0590814e7058b4ff3f0cd6f4124773"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classgridfire_1_1screening_1_1ScreeningModel"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classgridfire_1_1screening_1_1ScreeningModel')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classgridfire_1_1screening_1_1ScreeningModel.html">gridfire::screening::ScreeningModel</a></td></tr>
<tr class="memitem:adef175acdbd911527f56a1f1592579a7 inherit pub_methods_classgridfire_1_1screening_1_1ScreeningModel" id="r_adef175acdbd911527f56a1f1592579a7"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1screening_1_1ScreeningModel.html#adef175acdbd911527f56a1f1592579a7">~ScreeningModel</a> ()=default</td></tr>
<tr class="memdesc:adef175acdbd911527f56a1f1592579a7 inherit pub_methods_classgridfire_1_1screening_1_1ScreeningModel"><td class="mdescLeft">&#160;</td><td class="mdescRight">Virtual destructor. <br /></td></tr>
<tr class="separator:adef175acdbd911527f56a1f1592579a7 inherit pub_methods_classgridfire_1_1screening_1_1ScreeningModel"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-methods" name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:aa9f95ba8c052dacb72295775516b7e5f" id="r_aa9f95ba8c052dacb72295775516b7e5f"><td class="memTemplParams" colspan="2">template&lt;IsArithmeticOrAD T&gt; </td></tr>
<tr class="memitem:aa9f95ba8c052dacb72295775516b7e5f"><td class="memTemplItemLeft" align="right" valign="top">std::vector&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classgridfire_1_1screening_1_1WeakScreeningModel.html#aa9f95ba8c052dacb72295775516b7e5f">calculateFactors_impl</a> (const <a class="el" href="classgridfire_1_1reaction_1_1ReactionSet.html">reaction::ReactionSet</a> &amp;reactions, const std::vector&lt; fourdst::atomic::Species &gt; &amp;species, const std::vector&lt; T &gt; &amp;Y, T T9, T rho) const</td></tr>
<tr class="memdesc:aa9f95ba8c052dacb72295775516b7e5f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Template implementation for calculating weak screening factors. <br /></td></tr>
<tr class="separator:aa9f95ba8c052dacb72295775516b7e5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-attribs" name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:a0a4d7d6d36dbe7b764b613d34f18386f" id="r_a0a4d7d6d36dbe7b764b613d34f18386f"><td class="memItemLeft" align="right" valign="top">quill::Logger *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1screening_1_1WeakScreeningModel.html#a0a4d7d6d36dbe7b764b613d34f18386f">m_logger</a> = fourdst::logging::LogManager::getInstance().getLogger(&quot;log&quot;)</td></tr>
<tr class="memdesc:a0a4d7d6d36dbe7b764b613d34f18386f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Logger instance for recording trace and debug information. <br /></td></tr>
<tr class="separator:a0a4d7d6d36dbe7b764b613d34f18386f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="inherited" name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pub_types_classgridfire_1_1screening_1_1ScreeningModel"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classgridfire_1_1screening_1_1ScreeningModel')"><img src="closed.png" alt="-"/>&#160;Public Types inherited from <a class="el" href="classgridfire_1_1screening_1_1ScreeningModel.html">gridfire::screening::ScreeningModel</a></td></tr>
<tr class="memitem:a107ff2897f040d6f27f69d56a0bdd28d inherit pub_types_classgridfire_1_1screening_1_1ScreeningModel" id="r_a107ff2897f040d6f27f69d56a0bdd28d"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1screening_1_1ScreeningModel.html#a107ff2897f040d6f27f69d56a0bdd28d">ADDouble</a> = CppAD::AD&lt; double &gt;</td></tr>
<tr class="memdesc:a107ff2897f040d6f27f69d56a0bdd28d inherit pub_types_classgridfire_1_1screening_1_1ScreeningModel"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alias for CppAD Automatic Differentiation type for double precision. <br /></td></tr>
<tr class="separator:a107ff2897f040d6f27f69d56a0bdd28d inherit pub_types_classgridfire_1_1screening_1_1ScreeningModel"><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>Implements the weak screening model based on the Debye-Hückel approximation. </p>
<p>This class provides a concrete implementation of the <code><a class="el" href="classgridfire_1_1screening_1_1ScreeningModel.html" title="An abstract base class for plasma screening models.">ScreeningModel</a></code> interface for the weak screening regime, following the formulation of Salpeter (1954). This approach applies the Debye-Hückel theory to model the electrostatic shielding of nuclei in a plasma. It is applicable to non-degenerate, non-relativistic plasmas where thermal energy dominates the electrostatic potential energy. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="aa9f95ba8c052dacb72295775516b7e5f" name="aa9f95ba8c052dacb72295775516b7e5f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa9f95ba8c052dacb72295775516b7e5f">&#9670;&#160;</a></span>calculateFactors_impl()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;IsArithmeticOrAD T&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::vector&lt; T &gt; gridfire::screening::WeakScreeningModel::calculateFactors_impl </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgridfire_1_1reaction_1_1ReactionSet.html">reaction::ReactionSet</a> &amp;&#160;</td>
<td class="paramname"><em>reactions</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; fourdst::atomic::Species &gt; &amp;&#160;</td>
<td class="paramname"><em>species</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>Y</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>T9</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>rho</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Template implementation for calculating weak screening factors. </p>
<p>Core implementation of the weak screening calculation (Debye-Hückel model).</p>
<p>This private helper function contains the core logic for calculating weak screening factors. It is templated to handle both <code>double</code> and <code>CppAD::AD&lt;double&gt;</code> numeric types, avoiding code duplication.</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">T</td><td>The numeric type, either <code>double</code> or <code>CppAD::AD&lt;double&gt;</code>. </td></tr>
</table>
</dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">reactions</td><td>The set of reactions. </td></tr>
<tr><td class="paramname">species</td><td>A vector of all species in the network. </td></tr>
<tr><td class="paramname">Y</td><td>The composition object with current molar abundances. </td></tr>
<tr><td class="paramname">T9</td><td>The temperature in 10^9 K. </td></tr>
<tr><td class="paramname">rho</td><td>The density in g/cm^3. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A vector of screening factors of type <code>T</code>.</dd></dl>
<p>This function calculates the screening factor <code>exp(H_12)</code> for each reaction, based on the Debye-Hückel approximation as formulated by Salpeter (1954).</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">T</td><td>The numeric type (<code>double</code> or <code>CppAD::AD&lt;double&gt;</code>). </td></tr>
</table>
</dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">reactions</td><td>The set of reactions to be screened. </td></tr>
<tr><td class="paramname">species</td><td>The list of all species in the network. </td></tr>
<tr><td class="paramname">Y</td><td>The composition object providing current molar abundances. </td></tr>
<tr><td class="paramname">T9</td><td>The temperature in 10^9 K. </td></tr>
<tr><td class="paramname">rho</td><td>The density in g/cm^3. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A vector of screening factors, one for each reaction.</dd></dl>
<p><b>Algorithm</b> </p><ol type="1">
<li><b>Low-Temperature Cutoff</b>: If T9 is below a small threshold (1e-9), screening is effectively turned off to prevent numerical instability.</li>
<li><b>Zeta Factor (ζ)</b>: A composition-dependent term is calculated: <code>ζ = ∑(Z_i² + Z_i) * Y_i</code>, where Z_i is the charge and Y_i is the molar abundance of species i.</li>
<li><b>Prefactor</b>: A key prefactor is computed: <code>prefactor = 0.188 * sqrt(ρ / T₇³) * sqrt(ζ)</code>, where T₇ is the temperature in units of 10^7 K.</li>
<li><b>Screening Term (H_12)</b>: For each reaction, the term H_12 is calculated:<ul>
<li>For a two-body reaction (reactants Z₁ and Z₂): <code>H_12 = prefactor * Z₁ * Z₂</code>.</li>
<li>For the triple-alpha reaction (3 * He4): <code>H_12 = 3 * (prefactor * Z_α * Z_α)</code>.</li>
<li>For one-body reactions (decays), H_12 is 0, so the factor is 1.</li>
</ul>
</li>
<li><b>Capping</b>: The value of H_12 is capped at 2.0 to prevent excessively large and unphysical screening factors (exp(2) ≈ 7.4).</li>
<li><b>Final Factor</b>: The screening factor for the reaction is <code>exp(H_12)</code>. </li>
</ol>
</div>
</div>
<a id="a8b0590814e7058b4ff3f0cd6f4124773" name="a8b0590814e7058b4ff3f0cd6f4124773"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8b0590814e7058b4ff3f0cd6f4124773">&#9670;&#160;</a></span>calculateScreeningFactors() <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">std::vector&lt; <a class="el" href="classgridfire_1_1screening_1_1ScreeningModel.html#a107ff2897f040d6f27f69d56a0bdd28d">ADDouble</a> &gt; gridfire::screening::WeakScreeningModel::calculateScreeningFactors </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgridfire_1_1reaction_1_1ReactionSet.html">reaction::ReactionSet</a> &amp;&#160;</td>
<td class="paramname"><em>reactions</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; fourdst::atomic::Species &gt; &amp;&#160;</td>
<td class="paramname"><em>species</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; CppAD::AD&lt; double &gt; &gt; &amp;&#160;</td>
<td class="paramname"><em>Y</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">CppAD::AD&lt; double &gt;&#160;</td>
<td class="paramname"><em>T9</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">CppAD::AD&lt; double &gt;&#160;</td>
<td class="paramname"><em>rho</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Calculates weak screening factors using CppAD types. </p>
<p>This is the automatic differentiation-compatible version of the method. It allows the derivatives of the screening factors to be computed with respect to plasma conditions.</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 composition object giving the current molar abundances. </td></tr>
<tr><td class="paramname">T9</td><td>The temperature as an AD type. </td></tr>
<tr><td class="paramname">rho</td><td>The plasma density as an AD type. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A vector of screening factors as AD types. </dd></dl>
<p>Implements <a class="el" href="classgridfire_1_1screening_1_1ScreeningModel.html#a1da8242c7591ab32453d1e0109999d6c">gridfire::screening::ScreeningModel</a>.</p>
</div>
</div>
<a id="a6a215d082b0d05126fb2b19fd1983446" name="a6a215d082b0d05126fb2b19fd1983446"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6a215d082b0d05126fb2b19fd1983446">&#9670;&#160;</a></span>calculateScreeningFactors() <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">std::vector&lt; double &gt; gridfire::screening::WeakScreeningModel::calculateScreeningFactors </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgridfire_1_1reaction_1_1ReactionSet.html">reaction::ReactionSet</a> &amp;&#160;</td>
<td class="paramname"><em>reactions</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; fourdst::atomic::Species &gt; &amp;&#160;</td>
<td class="paramname"><em>species</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; double &gt; &amp;&#160;</td>
<td class="paramname"><em>Y</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>T9</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>rho</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Calculates weak screening factors for a set of reactions. </p>
<p>This method computes the screening enhancement factor for each reaction based on the Salpeter (1954) formula.</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 composition object giving the current molar abundances. </td></tr>
<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.</dd></dl>
<p><b>Usage</b> </p><div class="fragment"><div class="line"><a class="code hl_class" href="classgridfire_1_1screening_1_1WeakScreeningModel.html">WeakScreeningModel</a> weak_model;</div>
<div class="line"><span class="comment">// ... (initialize reactions, species, Y, T9, rho)</span></div>
<div class="line">std::vector&lt;double&gt; factors = weak_model.<a class="code hl_function" href="classgridfire_1_1screening_1_1WeakScreeningModel.html#a6a215d082b0d05126fb2b19fd1983446">calculateScreeningFactors</a>(</div>
<div class="line"> reactions, species, Y, T9, rho</div>
<div class="line">);</div>
<div class="ttc" id="aclassgridfire_1_1screening_1_1WeakScreeningModel_html"><div class="ttname"><a href="classgridfire_1_1screening_1_1WeakScreeningModel.html">gridfire::screening::WeakScreeningModel</a></div><div class="ttdoc">Implements the weak screening model based on the Debye-Hückel approximation.</div><div class="ttdef"><b>Definition</b> screening_weak.h:27</div></div>
<div class="ttc" id="aclassgridfire_1_1screening_1_1WeakScreeningModel_html_a6a215d082b0d05126fb2b19fd1983446"><div class="ttname"><a href="classgridfire_1_1screening_1_1WeakScreeningModel.html#a6a215d082b0d05126fb2b19fd1983446">gridfire::screening::WeakScreeningModel::calculateScreeningFactors</a></div><div class="ttdeci">std::vector&lt; double &gt; calculateScreeningFactors(const reaction::ReactionSet &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 override</div><div class="ttdoc">Calculates weak screening factors for a set of reactions.</div><div class="ttdef"><b>Definition</b> screening_weak.cpp:22</div></div>
</div><!-- fragment -->
<p>Implements <a class="el" href="classgridfire_1_1screening_1_1ScreeningModel.html#ab08c4490f9da18254a7c6f29be1f62ce">gridfire::screening::ScreeningModel</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a0a4d7d6d36dbe7b764b613d34f18386f" name="a0a4d7d6d36dbe7b764b613d34f18386f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0a4d7d6d36dbe7b764b613d34f18386f">&#9670;&#160;</a></span>m_logger</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">quill::Logger* gridfire::screening::WeakScreeningModel::m_logger = fourdst::logging::LogManager::getInstance().getLogger(&quot;log&quot;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Logger instance for recording trace and debug information. </p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>src/include/gridfire/screening/<a class="el" href="screening__weak_8h.html">screening_weak.h</a></li>
<li>src/lib/screening/<a class="el" href="screening__weak_8cpp.html">screening_weak.cpp</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_1screening.html">screening</a></li><li class="navelem"><a class="el" href="classgridfire_1_1screening_1_1WeakScreeningModel.html">WeakScreeningModel</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.9.8 </li>
</ul>
</div>
</body>
</html>