Files
GridFire/docs/html/namespacegridfire_1_1screening.html
2025-11-25 14:31:59 -05:00

251 lines
17 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::screening Namespace 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;v0.7.0_rc1</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('namespacegridfire_1_1screening.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="#nested-classes">Classes</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle"><div class="title">gridfire::screening Namespace Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1screening_1_1_bare_screening_model.html">BareScreeningModel</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A screening model that applies no screening effect. <a href="classgridfire_1_1screening_1_1_bare_screening_model.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1screening_1_1_intermediate_screening_model.html">IntermediateScreeningModel</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1screening_1_1_screening_model.html">ScreeningModel</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">An abstract base class for plasma screening models. <a href="classgridfire_1_1screening_1_1_screening_model.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1screening_1_1_weak_screening_model.html">WeakScreeningModel</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements the weak screening model based on the Debye-Hückel approximation. <a href="classgridfire_1_1screening_1_1_weak_screening_model.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:ae7dd1a7ccb7bf3c05084094ab008d8a3" id="r_ae7dd1a7ccb7bf3c05084094ab008d8a3"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae7dd1a7ccb7bf3c05084094ab008d8a3">ADDouble</a> = CppAD::AD&lt;double&gt;</td></tr>
<tr class="separator:ae7dd1a7ccb7bf3c05084094ab008d8a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="enum-members" name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:aa82aafbc4f8c28d0a75b60798e3a7d25" id="r_aa82aafbc4f8c28d0a75b60798e3a7d25"><td class="memItemLeft" align="right" valign="top">enum class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa82aafbc4f8c28d0a75b60798e3a7d25">ScreeningType</a> { <a class="el" href="#aa82aafbc4f8c28d0a75b60798e3a7d25ad80b95b1abb9c8659fa4cc9d3d29bb71">BARE</a>
, <a class="el" href="#aa82aafbc4f8c28d0a75b60798e3a7d25a32c7d8943bec86a6d7d5e03598670ca8">WEAK</a>
}</td></tr>
<tr class="memdesc:aa82aafbc4f8c28d0a75b60798e3a7d25"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enumerates the available plasma screening models. <a href="#aa82aafbc4f8c28d0a75b60798e3a7d25">More...</a><br /></td></tr>
<tr class="separator:aa82aafbc4f8c28d0a75b60798e3a7d25"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a6ca8556d27ac373e176f5b23437c416e" id="r_a6ca8556d27ac373e176f5b23437c416e"><td class="memItemLeft" align="right" valign="top">std::unique_ptr&lt; <a class="el" href="classgridfire_1_1screening_1_1_screening_model.html">ScreeningModel</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6ca8556d27ac373e176f5b23437c416e">selectScreeningModel</a> (<a class="el" href="#aa82aafbc4f8c28d0a75b60798e3a7d25">ScreeningType</a> type)</td></tr>
<tr class="memdesc:a6ca8556d27ac373e176f5b23437c416e"><td class="mdescLeft">&#160;</td><td class="mdescRight">A factory function to select and create a screening model. <br /></td></tr>
<tr class="separator:a6ca8556d27ac373e176f5b23437c416e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Typedef Documentation</h2>
<a id="ae7dd1a7ccb7bf3c05084094ab008d8a3" name="ae7dd1a7ccb7bf3c05084094ab008d8a3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae7dd1a7ccb7bf3c05084094ab008d8a3">&#9670;&#160;</a></span>ADDouble</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef CppAD::AD&lt; double &gt; <a class="el" href="#ae7dd1a7ccb7bf3c05084094ab008d8a3">gridfire::screening::ADDouble</a> = CppAD::AD&lt;double&gt;</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a id="aa82aafbc4f8c28d0a75b60798e3a7d25" name="aa82aafbc4f8c28d0a75b60798e3a7d25"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa82aafbc4f8c28d0a75b60798e3a7d25">&#9670;&#160;</a></span>ScreeningType</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">enum class <a class="el" href="#aa82aafbc4f8c28d0a75b60798e3a7d25">gridfire::screening::ScreeningType</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel strong">strong</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Enumerates the available plasma screening models. </p>
<p>This enum provides a set of identifiers for the different screening prescriptions that can be used in the reaction rate calculations. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="aa82aafbc4f8c28d0a75b60798e3a7d25ad80b95b1abb9c8659fa4cc9d3d29bb71" name="aa82aafbc4f8c28d0a75b60798e3a7d25ad80b95b1abb9c8659fa4cc9d3d29bb71"></a>BARE&#160;</td><td class="fielddoc"><p>No screening applied. The screening factor is always 1.0. </p>
</td></tr>
<tr><td class="fieldname"><a id="aa82aafbc4f8c28d0a75b60798e3a7d25a32c7d8943bec86a6d7d5e03598670ca8" name="aa82aafbc4f8c28d0a75b60798e3a7d25a32c7d8943bec86a6d7d5e03598670ca8"></a>WEAK&#160;</td><td class="fielddoc"><p>Weak screening model (Salpeter, 1954). </p>
<p>This model is suitable for non-degenerate, non-relativistic plasmas where the electrostatic potential energy between ions is small compared to their thermal kinetic energy. The screening enhancement factor is calculated as <code>exp(H_12)</code>.</p>
<p><b>Algorithm</b> </p><ol type="1">
<li>A composition-dependent term, <code>ζ = ∑(Z_i^2 + Z_i) * Y_i</code>, is calculated, where Z_i is the charge and Y_i is the molar abundance of each species.</li>
<li>A prefactor is computed: <code>prefactor = 0.188 * sqrt(ρ / T₇³) * sqrt(ζ)</code>, where ρ is the density and T₇ is the temperature in 10^7 K.</li>
<li>For a reaction between two nuclei with charges Z₁ and Z₂, the enhancement term is <code>H_12 = prefactor * Z₁ * Z₂</code>.</li>
<li>The final screening factor is <code>exp(H_12)</code>. A special calculation is performed for the triple-alpha reaction. </li>
</ol>
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="a6ca8556d27ac373e176f5b23437c416e" name="a6ca8556d27ac373e176f5b23437c416e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6ca8556d27ac373e176f5b23437c416e">&#9670;&#160;</a></span>selectScreeningModel()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::unique_ptr&lt; <a class="el" href="classgridfire_1_1screening_1_1_screening_model.html">ScreeningModel</a> &gt; gridfire::screening::selectScreeningModel </td>
<td>(</td>
<td class="paramtype"><a class="el" href="#aa82aafbc4f8c28d0a75b60798e3a7d25">ScreeningType</a></td> <td class="paramname"><span class="paramname"><em>type</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>A factory function to select and create a screening model. </p>
<p>This function returns a <code>std::unique_ptr</code> to a concrete implementation of the <code><a class="el" href="classgridfire_1_1screening_1_1_screening_model.html" title="An abstract base class for plasma screening models.">ScreeningModel</a></code> abstract base class, based on the specified <code><a class="el" href="#aa82aafbc4f8c28d0a75b60798e3a7d25" title="Enumerates the available plasma screening models.">ScreeningType</a></code>. This allows for easy switching between different screening prescriptions at runtime.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">type</td><td>The <code><a class="el" href="#aa82aafbc4f8c28d0a75b60798e3a7d25" title="Enumerates the available plasma screening models.">ScreeningType</a></code> enum value specifying which model to create. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A <code>std::unique_ptr&lt;<a class="el" href="classgridfire_1_1screening_1_1_screening_model.html" title="An abstract base class for plasma screening models.">ScreeningModel</a>&gt;</code> holding an instance of the requested screening model.</dd></dl>
<p><b>Algorithm</b> The function uses a <code>switch</code> statement to determine which concrete model to instantiate. If the provided <code>type</code> does not match a known case, it defaults to creating a <code><a class="el" href="classgridfire_1_1screening_1_1_bare_screening_model.html" title="A screening model that applies no screening effect.">BareScreeningModel</a></code> to ensure safe behavior.</p>
<p><b>Post-conditions</b> </p><ul>
<li>A non-null <code>std::unique_ptr&lt;<a class="el" href="classgridfire_1_1screening_1_1_screening_model.html" title="An abstract base class for plasma screening models.">ScreeningModel</a>&gt;</code> is always returned.</li>
</ul>
<p><b>Usage</b> </p><div class="fragment"><div class="line"><span class="comment">// Select the weak screening model</span></div>
<div class="line"><span class="keyword">auto</span> screening_model = <a class="code hl_function" href="#a6ca8556d27ac373e176f5b23437c416e">gridfire::screening::selectScreeningModel</a>(<a class="code hl_enumvalue" href="#aa82aafbc4f8c28d0a75b60798e3a7d25a32c7d8943bec86a6d7d5e03598670ca8">gridfire::screening::ScreeningType::WEAK</a>);</div>
<div class="line"> </div>
<div class="line"><span class="comment">// Use the model to calculate screening factors</span></div>
<div class="line"><span class="comment">// (assuming other parameters are initialized)</span></div>
<div class="line">std::vector&lt;double&gt; factors = screening_model-&gt;calculateScreeningFactors(</div>
<div class="line"> reactions, species, Y, T9, rho</div>
<div class="line">);</div>
<div class="ttc" id="anamespacegridfire_1_1screening_html_a6ca8556d27ac373e176f5b23437c416e"><div class="ttname"><a href="#a6ca8556d27ac373e176f5b23437c416e">gridfire::screening::selectScreeningModel</a></div><div class="ttdeci">std::unique_ptr&lt; ScreeningModel &gt; selectScreeningModel(ScreeningType type)</div><div class="ttdoc">A factory function to select and create a screening model.</div><div class="ttdef"><b>Definition</b> screening_types.cpp:9</div></div>
<div class="ttc" id="anamespacegridfire_1_1screening_html_aa82aafbc4f8c28d0a75b60798e3a7d25a32c7d8943bec86a6d7d5e03598670ca8"><div class="ttname"><a href="#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 -->
</div>
</div>
</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="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>