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" / >
2025-07-24 11:10:45 -04:00
< title > GridFire: src/include/gridfire/screening/screening_weak.h Source File< / title >
2025-07-01 11:40:58 -04:00
< 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" >   0.0.1a< / 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& dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
< / script >
< script type = "text/javascript" >
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699& 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& 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& dn=expat.txt MIT */
$(function(){initNavTree('screening__weak_8h_source.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 = "headertitle" > < div class = "title" > screening_weak.h< / div > < / div >
< / div > <!-- header -->
< div class = "contents" >
< a href = "screening__weak_8h.html" > Go to the documentation of this file.< / a > < div class = "fragment" > < div class = "line" > < a id = "l00001" name = "l00001" > < / a > < span class = "lineno" > 1< / span > < span class = "preprocessor" > #pragma once< / span > < / div >
< div class = "line" > < a id = "l00002" name = "l00002" > < / a > < span class = "lineno" > 2< / span > < / div >
< div class = "line" > < a id = "l00003" name = "l00003" > < / a > < span class = "lineno" > 3< / span > < span class = "preprocessor" > #include " < a class = "code" href = "screening__abstract_8h.html" > gridfire/screening/screening_abstract.h< / a > " < / span > < / div >
< div class = "line" > < a id = "l00004" name = "l00004" > < / a > < span class = "lineno" > 4< / span > < span class = "preprocessor" > #include " < a class = "code" href = "reaction_8h.html" > gridfire/reaction/reaction.h< / a > " < / span > < / div >
< div class = "line" > < a id = "l00005" name = "l00005" > < / a > < span class = "lineno" > 5< / span > < / div >
< div class = "line" > < a id = "l00006" name = "l00006" > < / a > < span class = "lineno" > 6< / span > < span class = "preprocessor" > #include " fourdst/logging/logging.h" < / span > < / div >
< div class = "line" > < a id = "l00007" name = "l00007" > < / a > < span class = "lineno" > 7< / span > < span class = "preprocessor" > #include " quill/Logger.h" < / span > < / div >
< div class = "line" > < a id = "l00008" name = "l00008" > < / a > < span class = "lineno" > 8< / span > < span class = "preprocessor" > #include " quill/LogMacros.h" < / span > < / div >
< div class = "line" > < a id = "l00009" name = "l00009" > < / a > < span class = "lineno" > 9< / span > < / div >
< div class = "line" > < a id = "l00010" name = "l00010" > < / a > < span class = "lineno" > 10< / span > < span class = "preprocessor" > #include " cppad/cppad.hpp" < / span > < / div >
< div class = "line" > < a id = "l00011" name = "l00011" > < / a > < span class = "lineno" > 11< / span > < / div >
< div class = "line" > < a id = "l00012" name = "l00012" > < / a > < span class = "lineno" > 12< / span > < span class = "keyword" > namespace < / span > < a class = "code hl_namespace" href = "namespacegridfire_1_1screening.html" > gridfire::screening< / a > {< / div >
2025-07-01 15:06:22 -04:00
< div class = "foldopen" id = "foldopen00026" data-start = "{" data-end = "};" >
< div class = "line" > < a id = "l00026" name = "l00026" > < / a > < span class = "lineno" > < a class = "line" href = "classgridfire_1_1screening_1_1_weak_screening_model.html" > 26< / a > < / span > < span class = "keyword" > class < / span > < a class = "code hl_class" href = "classgridfire_1_1screening_1_1_weak_screening_model.html" > WeakScreeningModel< / a > final : < span class = "keyword" > public< / span > < a class = "code hl_class" href = "classgridfire_1_1screening_1_1_screening_model.html" > ScreeningModel< / a > {< / div >
< div class = "line" > < a id = "l00027" name = "l00027" > < / a > < span class = "lineno" > 27< / span > < span class = "keyword" > public< / span > :< / div >
< div class = "line" > < a id = "l00050" name = "l00050" > < / a > < span class = "lineno" > 50< / span > [[nodiscard]] std::vector< double> < a class = "code hl_function" href = "classgridfire_1_1screening_1_1_weak_screening_model.html#afbaeaefe6b3ab3ecf81889ddc1cff76c" > calculateScreeningFactors< / a > (< / div >
< div class = "line" > < a id = "l00051" name = "l00051" > < / a > < span class = "lineno" > 51< / span > < span class = "keyword" > const< / span > < a class = "code hl_typedef" href = "namespacegridfire_1_1reaction.html#aa86f08712565f278adacc7cd2361eb31" > reaction::LogicalReactionSet< / a > & reactions,< / div >
< div class = "line" > < a id = "l00052" name = "l00052" > < / a > < span class = "lineno" > 52< / span > < span class = "keyword" > const< / span > std::vector< fourdst::atomic::Species> & species,< / div >
< div class = "line" > < a id = "l00053" name = "l00053" > < / a > < span class = "lineno" > 53< / span > < span class = "keyword" > const< / span > std::vector< double> & Y,< / div >
< div class = "line" > < a id = "l00054" name = "l00054" > < / a > < span class = "lineno" > 54< / span > < span class = "keyword" > const< / span > < span class = "keywordtype" > double< / span > T9,< / div >
< div class = "line" > < a id = "l00055" name = "l00055" > < / a > < span class = "lineno" > 55< / span > < span class = "keyword" > const< / span > < span class = "keywordtype" > double< / span > rho< / div >
< div class = "line" > < a id = "l00056" name = "l00056" > < / a > < span class = "lineno" > 56< / span > ) < span class = "keyword" > const override< / span > ;< / div >
< div class = "line" > < a id = "l00057" name = "l00057" > < / a > < span class = "lineno" > 57< / span > < / div >
< div class = "line" > < a id = "l00072" name = "l00072" > < / a > < span class = "lineno" > 72< / span > [[nodiscard]] std::vector< CppAD::AD< double> > < a class = "code hl_function" href = "classgridfire_1_1screening_1_1_weak_screening_model.html#afbaeaefe6b3ab3ecf81889ddc1cff76c" > calculateScreeningFactors< / a > (< / div >
< div class = "line" > < a id = "l00073" name = "l00073" > < / a > < span class = "lineno" > 73< / span > < span class = "keyword" > const< / span > < a class = "code hl_typedef" href = "namespacegridfire_1_1reaction.html#aa86f08712565f278adacc7cd2361eb31" > reaction::LogicalReactionSet< / a > & reactions,< / div >
< div class = "line" > < a id = "l00074" name = "l00074" > < / a > < span class = "lineno" > 74< / span > < span class = "keyword" > const< / span > std::vector< fourdst::atomic::Species> & species,< / div >
< div class = "line" > < a id = "l00075" name = "l00075" > < / a > < span class = "lineno" > 75< / span > < span class = "keyword" > const< / span > std::vector< CppAD::AD< double> > & Y,< / div >
< div class = "line" > < a id = "l00076" name = "l00076" > < / a > < span class = "lineno" > 76< / span > < span class = "keyword" > const< / span > CppAD::AD< double> T9,< / div >
< div class = "line" > < a id = "l00077" name = "l00077" > < / a > < span class = "lineno" > 77< / span > < span class = "keyword" > const< / span > CppAD::AD< double> rho< / div >
< div class = "line" > < a id = "l00078" name = "l00078" > < / a > < span class = "lineno" > 78< / span > ) < span class = "keyword" > const override< / span > ;< / div >
< div class = "line" > < a id = "l00079" name = "l00079" > < / a > < span class = "lineno" > 79< / span > < span class = "keyword" > private< / span > :< / div >
2025-07-24 11:10:45 -04:00
< div class = "line" > < a id = "l00081" name = "l00081" > < / a > < span class = "lineno" > < a class = "line" href = "classgridfire_1_1screening_1_1_weak_screening_model.html#a0a4d7d6d36dbe7b764b613d34f18386f" > 81< / a > < / span > [[maybe_unused]] quill::Logger* < a class = "code hl_variable" href = "classgridfire_1_1screening_1_1_weak_screening_model.html#a0a4d7d6d36dbe7b764b613d34f18386f" > m_logger< / a > = fourdst::logging::LogManager::getInstance().getLogger(< span class = "stringliteral" > " log" < / span > );< / div >
2025-07-01 15:06:22 -04:00
< div class = "line" > < a id = "l00082" name = "l00082" > < / a > < span class = "lineno" > 82< / span > < / div >
< div class = "line" > < a id = "l00083" name = "l00083" > < / a > < span class = "lineno" > 83< / span > < span class = "keyword" > private< / span > :< / div >
< div class = "line" > < a id = "l00099" name = "l00099" > < / a > < span class = "lineno" > 99< / span > < span class = "keyword" > template< / span > < < span class = "keyword" > typename< / span > T> < / div >
< div class = "line" > < a id = "l00100" name = "l00100" > < / a > < span class = "lineno" > 100< / span > [[nodiscard]] std::vector< T> < a class = "code hl_function" href = "classgridfire_1_1screening_1_1_weak_screening_model.html#a2695206d46b9d2c2503f8e58c44df88f" > calculateFactors_impl< / a > (< / div >
< div class = "line" > < a id = "l00101" name = "l00101" > < / a > < span class = "lineno" > 101< / span > < span class = "keyword" > const< / span > < a class = "code hl_typedef" href = "namespacegridfire_1_1reaction.html#aa86f08712565f278adacc7cd2361eb31" > reaction::LogicalReactionSet< / a > & reactions,< / div >
< div class = "line" > < a id = "l00102" name = "l00102" > < / a > < span class = "lineno" > 102< / span > < span class = "keyword" > const< / span > std::vector< fourdst::atomic::Species> & species,< / div >
< div class = "line" > < a id = "l00103" name = "l00103" > < / a > < span class = "lineno" > 103< / span > < span class = "keyword" > const< / span > std::vector< T> & Y,< / div >
< div class = "line" > < a id = "l00104" name = "l00104" > < / a > < span class = "lineno" > 104< / span > < span class = "keyword" > const< / span > T T9,< / div >
< div class = "line" > < a id = "l00105" name = "l00105" > < / a > < span class = "lineno" > 105< / span > < span class = "keyword" > const< / span > T rho< / div >
< div class = "line" > < a id = "l00106" name = "l00106" > < / a > < span class = "lineno" > 106< / span > ) < span class = "keyword" > const< / span > ;< / div >
< div class = "line" > < a id = "l00107" name = "l00107" > < / a > < span class = "lineno" > 107< / span > };< / div >
2025-07-01 11:40:58 -04:00
< / div >
2025-07-01 15:06:22 -04:00
< div class = "line" > < a id = "l00108" name = "l00108" > < / a > < span class = "lineno" > 108< / span > < / div >
< div class = "line" > < a id = "l00140" name = "l00140" > < / a > < span class = "lineno" > 140< / span > < span class = "keyword" > template< / span > < < span class = "keyword" > typename< / span > T> < / div >
< div class = "foldopen" id = "foldopen00141" data-start = "{" data-end = "}" >
< div class = "line" > < a id = "l00141" name = "l00141" > < / a > < span class = "lineno" > < a class = "line" href = "classgridfire_1_1screening_1_1_weak_screening_model.html#a2695206d46b9d2c2503f8e58c44df88f" > 141< / a > < / span > std::vector< T> < a class = "code hl_function" href = "classgridfire_1_1screening_1_1_weak_screening_model.html#a2695206d46b9d2c2503f8e58c44df88f" > WeakScreeningModel::calculateFactors_impl< / a > (< / div >
< div class = "line" > < a id = "l00142" name = "l00142" > < / a > < span class = "lineno" > 142< / span > < span class = "keyword" > const< / span > < a class = "code hl_typedef" href = "namespacegridfire_1_1reaction.html#aa86f08712565f278adacc7cd2361eb31" > reaction::LogicalReactionSet< / a > & reactions,< / div >
< div class = "line" > < a id = "l00143" name = "l00143" > < / a > < span class = "lineno" > 143< / span > < span class = "keyword" > const< / span > std::vector< fourdst::atomic::Species> & species,< / div >
< div class = "line" > < a id = "l00144" name = "l00144" > < / a > < span class = "lineno" > 144< / span > < span class = "keyword" > const< / span > std::vector< T> & Y,< / div >
< div class = "line" > < a id = "l00145" name = "l00145" > < / a > < span class = "lineno" > 145< / span > < span class = "keyword" > const< / span > T T9,< / div >
< div class = "line" > < a id = "l00146" name = "l00146" > < / a > < span class = "lineno" > 146< / span > < span class = "keyword" > const< / span > T rho< / div >
< div class = "line" > < a id = "l00147" name = "l00147" > < / a > < span class = "lineno" > 147< / span > )< span class = "keyword" > const < / span > {< / div >
2025-07-24 11:10:45 -04:00
< div class = "line" > < a id = "l00148" name = "l00148" > < / a > < span class = "lineno" > 148< / span > LOG_TRACE_L3(< / div >
2025-07-01 15:06:22 -04:00
< div class = "line" > < a id = "l00149" name = "l00149" > < / a > < span class = "lineno" > 149< / span > < a class = "code hl_variable" href = "classgridfire_1_1screening_1_1_weak_screening_model.html#a0a4d7d6d36dbe7b764b613d34f18386f" > m_logger< / a > ,< / div >
< div class = "line" > < a id = "l00150" name = "l00150" > < / a > < span class = "lineno" > 150< / span > < span class = "stringliteral" > " Calculating weak screening factors for {} reactions..." < / span > ,< / div >
< div class = "line" > < a id = "l00151" name = "l00151" > < / a > < span class = "lineno" > 151< / span > reactions.< a class = "code hl_function" href = "classgridfire_1_1reaction_1_1_templated_reaction_set.html#a6a1dc3c56690386ae9f6aa5c2aa37ba2" > size< / a > ()< / div >
< div class = "line" > < a id = "l00152" name = "l00152" > < / a > < span class = "lineno" > 152< / span > );< / div >
< div class = "line" > < a id = "l00153" name = "l00153" > < / a > < span class = "lineno" > 153< / span > < span class = "comment" > // --- CppAD Safe low temp checking ---< / span > < / div >
< div class = "line" > < a id = "l00154" name = "l00154" > < / a > < span class = "lineno" > 154< / span > < span class = "keyword" > const< / span > T zero(0.0);< / div >
< div class = "line" > < a id = "l00155" name = "l00155" > < / a > < span class = "lineno" > 155< / span > < span class = "keyword" > const< / span > T one(1.0);< / div >
< div class = "line" > < a id = "l00156" name = "l00156" > < / a > < span class = "lineno" > 156< / span > < span class = "keyword" > const< / span > T low_temp_threshold(1e-9);< / div >
< div class = "line" > < a id = "l00157" name = "l00157" > < / a > < span class = "lineno" > 157< / span > < / div >
< div class = "line" > < a id = "l00158" name = "l00158" > < / a > < span class = "lineno" > 158< / span > < span class = "keyword" > const< / span > T low_T_flag = CppAD::CondExpLt(T9, low_temp_threshold, zero, one);< / div >
< div class = "line" > < a id = "l00159" name = "l00159" > < / a > < span class = "lineno" > 159< / span > < / div >
< div class = "line" > < a id = "l00160" name = "l00160" > < / a > < span class = "lineno" > 160< / span > < span class = "comment" > // --- Calculate composition-dependent terms ---< / span > < / div >
< div class = "line" > < a id = "l00161" name = "l00161" > < / a > < span class = "lineno" > 161< / span > < span class = "comment" > // ζ = ∑(Z_i^2 + Z_i) * X_i / A_i< / span > < / div >
< div class = "line" > < a id = "l00162" name = "l00162" > < / a > < span class = "lineno" > 162< / span > < span class = "comment" > // This simplifies somewhat to ζ = ∑ (Z_i^2 + Z_i) * Y_i< / span > < / div >
< div class = "line" > < a id = "l00163" name = "l00163" > < / a > < span class = "lineno" > 163< / span > < span class = "comment" > // Where Y_i is the molar abundance (mol/g)< / span > < / div >
< div class = "line" > < a id = "l00164" name = "l00164" > < / a > < span class = "lineno" > 164< / span > T zeta(0.0);< / div >
< div class = "line" > < a id = "l00165" name = "l00165" > < / a > < span class = "lineno" > 165< / span > < span class = "keywordflow" > for< / span > (< span class = "keywordtype" > size_t< / span > i = 0; i < species.size(); ++i) {< / div >
< div class = "line" > < a id = "l00166" name = "l00166" > < / a > < span class = "lineno" > 166< / span > < span class = "keyword" > const< / span > T Z = species[i].m_z;< / div >
< div class = "line" > < a id = "l00167" name = "l00167" > < / a > < span class = "lineno" > 167< / span > zeta += (Z * Z + Z) * Y[i];< / div >
< div class = "line" > < a id = "l00168" name = "l00168" > < / a > < span class = "lineno" > 168< / span > }< / div >
< div class = "line" > < a id = "l00169" name = "l00169" > < / a > < span class = "lineno" > 169< / span > < / div >
< div class = "line" > < a id = "l00170" name = "l00170" > < / a > < span class = "lineno" > 170< / span > < span class = "comment" > // --- Constant prefactors ---< / span > < / div >
< div class = "line" > < a id = "l00171" name = "l00171" > < / a > < span class = "lineno" > 171< / span > < span class = "keyword" > const< / span > T T7 = T9 * < span class = "keyword" > static_cast< < / span > T< span class = "keyword" > > < / span > (100.00);< / div >
< div class = "line" > < a id = "l00172" name = "l00172" > < / a > < span class = "lineno" > 172< / span > < span class = "keyword" > const< / span > T T7_safe = CppAD::CondExpLe(T7, low_temp_threshold, low_temp_threshold, T7);< / div >
< div class = "line" > < a id = "l00173" name = "l00173" > < / a > < span class = "lineno" > 173< / span > < span class = "keyword" > const< / span > T prefactor = < span class = "keyword" > static_cast< < / span > T< span class = "keyword" > > < / span > (0.188) * CppAD::sqrt(rho / (T7_safe * T7_safe * T7_safe)) * CppAD::sqrt(zeta);< / div >
< div class = "line" > < a id = "l00174" name = "l00174" > < / a > < span class = "lineno" > 174< / span > < / div >
< div class = "line" > < a id = "l00175" name = "l00175" > < / a > < span class = "lineno" > 175< / span > < span class = "comment" > // --- Loop through reactions and calculate screening factors for each ---< / span > < / div >
< div class = "line" > < a id = "l00176" name = "l00176" > < / a > < span class = "lineno" > 176< / span > std::vector< T> factors;< / div >
< div class = "line" > < a id = "l00177" name = "l00177" > < / a > < span class = "lineno" > 177< / span > factors.reserve(reactions.< a class = "code hl_function" href = "classgridfire_1_1reaction_1_1_templated_reaction_set.html#a6a1dc3c56690386ae9f6aa5c2aa37ba2" > size< / a > ());< / div >
< div class = "line" > < a id = "l00178" name = "l00178" > < / a > < span class = "lineno" > 178< / span > < span class = "keywordflow" > for< / span > (< span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > & < a class = "code hl_namespace" href = "namespacegridfire_1_1reaction.html" > reaction< / a > : reactions) {< / div >
< div class = "line" > < a id = "l00179" name = "l00179" > < / a > < span class = "lineno" > 179< / span > T H_12(0.0); < span class = "comment" > // screening abundance term< / span > < / div >
< div class = "line" > < a id = "l00180" name = "l00180" > < / a > < span class = "lineno" > 180< / span > < span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > & reactants = < a class = "code hl_namespace" href = "namespacegridfire_1_1reaction.html" > reaction< / a > .reactants();< / div >
< div class = "line" > < a id = "l00181" name = "l00181" > < / a > < span class = "lineno" > 181< / span > < span class = "keyword" > const< / span > < span class = "keywordtype" > bool< / span > isTripleAlpha = (< / div >
< div class = "line" > < a id = "l00182" name = "l00182" > < / a > < span class = "lineno" > 182< / span > reactants.size() == 3 & & < / div >
< div class = "line" > < a id = "l00183" name = "l00183" > < / a > < span class = "lineno" > 183< / span > reactants[0].m_z == 2 & & < / div >
< div class = "line" > < a id = "l00184" name = "l00184" > < / a > < span class = "lineno" > 184< / span > reactants[1].m_z == 2 & & < / div >
< div class = "line" > < a id = "l00185" name = "l00185" > < / a > < span class = "lineno" > 185< / span > reactants[2].m_z == 2 & & < / div >
< div class = "line" > < a id = "l00186" name = "l00186" > < / a > < span class = "lineno" > 186< / span > reactants[0] == reactants[1] & & < / div >
< div class = "line" > < a id = "l00187" name = "l00187" > < / a > < span class = "lineno" > 187< / span > reactants[1] == reactants[2]< / div >
< div class = "line" > < a id = "l00188" name = "l00188" > < / a > < span class = "lineno" > 188< / span > );< / div >
< div class = "line" > < a id = "l00189" name = "l00189" > < / a > < span class = "lineno" > 189< / span > < span class = "keywordflow" > if< / span > (reactants.size() == 2) {< / div >
< div class = "line" > < a id = "l00190" name = "l00190" > < / a > < span class = "lineno" > 190< / span > LOG_TRACE_L3(< a class = "code hl_variable" href = "classgridfire_1_1screening_1_1_weak_screening_model.html#a0a4d7d6d36dbe7b764b613d34f18386f" > m_logger< / a > , < span class = "stringliteral" > " Calculating screening factor for reaction: {}" < / span > , < a class = "code hl_namespace" href = "namespacegridfire_1_1reaction.html" > reaction< / a > .peName());< / div >
< div class = "line" > < a id = "l00191" name = "l00191" > < / a > < span class = "lineno" > 191< / span > < span class = "keyword" > const< / span > T Z1 = < span class = "keyword" > static_cast< < / span > T< span class = "keyword" > > < / span > (reactants[0].m_z);< / div >
< div class = "line" > < a id = "l00192" name = "l00192" > < / a > < span class = "lineno" > 192< / span > < span class = "keyword" > const< / span > T Z2 = < span class = "keyword" > static_cast< < / span > T< span class = "keyword" > > < / span > (reactants[1].m_z);< / div >
< div class = "line" > < a id = "l00193" name = "l00193" > < / a > < span class = "lineno" > 193< / span > H_12 = prefactor * Z1 * Z2;< / div >
< div class = "line" > < a id = "l00194" name = "l00194" > < / a > < span class = "lineno" > 194< / span > }< / div >
< div class = "line" > < a id = "l00195" name = "l00195" > < / a > < span class = "lineno" > 195< / span > < span class = "keywordflow" > else< / span > < span class = "keywordflow" > if< / span > (isTripleAlpha) {< / div >
< div class = "line" > < a id = "l00196" name = "l00196" > < / a > < span class = "lineno" > 196< / span > LOG_TRACE_L3(< a class = "code hl_variable" href = "classgridfire_1_1screening_1_1_weak_screening_model.html#a0a4d7d6d36dbe7b764b613d34f18386f" > m_logger< / a > , < span class = "stringliteral" > " Special case for triple alpha process in reaction: {}" < / span > , < a class = "code hl_namespace" href = "namespacegridfire_1_1reaction.html" > reaction< / a > .peName());< / div >
< div class = "line" > < a id = "l00197" name = "l00197" > < / a > < span class = "lineno" > 197< / span > < span class = "comment" > // Special case for triple alpha process< / span > < / div >
< div class = "line" > < a id = "l00198" name = "l00198" > < / a > < span class = "lineno" > 198< / span > < span class = "keyword" > const< / span > T Z_alpha = < span class = "keyword" > static_cast< < / span > T< span class = "keyword" > > < / span > (2.0);< / div >
< div class = "line" > < a id = "l00199" name = "l00199" > < / a > < span class = "lineno" > 199< / span > < span class = "keyword" > const< / span > T H_alpha_alpha = prefactor * Z_alpha * Z_alpha;< / div >
< div class = "line" > < a id = "l00200" name = "l00200" > < / a > < span class = "lineno" > 200< / span > H_12 = < span class = "keyword" > static_cast< < / span > T< span class = "keyword" > > < / span > (3.0) * H_alpha_alpha; < span class = "comment" > // Triple alpha process< / span > < / div >
< div class = "line" > < a id = "l00201" name = "l00201" > < / a > < span class = "lineno" > 201< / span > }< / div >
< div class = "line" > < a id = "l00202" name = "l00202" > < / a > < span class = "lineno" > 202< / span > < span class = "comment" > // For 1 body reactions H_12 remains 0 so e^H_12 will be 1.0 (screening does not apply)< / span > < / div >
< div class = "line" > < a id = "l00203" name = "l00203" > < / a > < span class = "lineno" > 203< / span > < span class = "comment" > // Aside from triple alpha, all other astrophysically relevant reactions are 2-body in the weak screening regime< / span > < / div >
< div class = "line" > < a id = "l00204" name = "l00204" > < / a > < span class = "lineno" > 204< / span > < / div >
< div class = "line" > < a id = "l00205" name = "l00205" > < / a > < span class = "lineno" > 205< / span > H_12 *= low_T_flag; < span class = "comment" > // Apply low temperature flag to screening factor< / span > < / div >
< div class = "line" > < a id = "l00206" name = "l00206" > < / a > < span class = "lineno" > 206< / span > H_12 = CppAD::CondExpGe(H_12, < span class = "keyword" > static_cast< < / span > T< span class = "keyword" > > < / span > (2.0), < span class = "keyword" > static_cast< < / span > T< span class = "keyword" > > < / span > (2.0), H_12); < span class = "comment" > // Caps the screening factor at 10 to avoid numerical issues< / span > < / div >
< div class = "line" > < a id = "l00207" name = "l00207" > < / a > < span class = "lineno" > 207< / span > factors.push_back(CppAD::exp(H_12));< / div >
< div class = "line" > < a id = "l00208" name = "l00208" > < / a > < span class = "lineno" > 208< / span > < span class = "comment" > // std::cout < < " Screening factor: " < < reaction.peName() < < " : " < < factors.back() < < " (" < < H_12 < < " )" < < std::endl;< / span > < / div >
< div class = "line" > < a id = "l00209" name = "l00209" > < / a > < span class = "lineno" > 209< / span > }< / div >
< div class = "line" > < a id = "l00210" name = "l00210" > < / a > < span class = "lineno" > 210< / span > < span class = "keywordflow" > return< / span > factors;< / div >
< div class = "line" > < a id = "l00211" name = "l00211" > < / a > < span class = "lineno" > 211< / span > }< / div >
2025-07-01 11:40:58 -04:00
< / div >
2025-07-01 15:06:22 -04:00
< div class = "line" > < a id = "l00212" name = "l00212" > < / a > < span class = "lineno" > 212< / span > < / div >
< div class = "line" > < a id = "l00213" name = "l00213" > < / a > < span class = "lineno" > 213< / span > }< / div >
2025-07-24 11:10:45 -04:00
< div class = "ttc" id = "aclassgridfire_1_1reaction_1_1_templated_reaction_set_html_a6a1dc3c56690386ae9f6aa5c2aa37ba2" > < div class = "ttname" > < a href = "classgridfire_1_1reaction_1_1_templated_reaction_set.html#a6a1dc3c56690386ae9f6aa5c2aa37ba2" > gridfire::reaction::TemplatedReactionSet::size< / a > < / div > < div class = "ttdeci" > size_t size() const< / div > < div class = "ttdoc" > Gets the number of reactions in the set.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "reaction_8h_source.html#l00459" > reaction.h:459< / a > < / div > < / div >
2025-07-01 15:06:22 -04:00
< div class = "ttc" id = "aclassgridfire_1_1screening_1_1_screening_model_html" > < div class = "ttname" > < a href = "classgridfire_1_1screening_1_1_screening_model.html" > gridfire::screening::ScreeningModel< / a > < / div > < div class = "ttdoc" > An abstract base class for plasma screening models.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "screening__abstract_8h_source.html#l00027" > screening_abstract.h:27< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1screening_1_1_weak_screening_model_html" > < div class = "ttname" > < a href = "classgridfire_1_1screening_1_1_weak_screening_model.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 > < a href = "#l00026" > screening_weak.h:26< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1screening_1_1_weak_screening_model_html_a0a4d7d6d36dbe7b764b613d34f18386f" > < div class = "ttname" > < a href = "classgridfire_1_1screening_1_1_weak_screening_model.html#a0a4d7d6d36dbe7b764b613d34f18386f" > gridfire::screening::WeakScreeningModel::m_logger< / a > < / div > < div class = "ttdeci" > quill::Logger * m_logger< / div > < div class = "ttdoc" > Logger instance for recording trace and debug information.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "#l00081" > screening_weak.h:81< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1screening_1_1_weak_screening_model_html_a2695206d46b9d2c2503f8e58c44df88f" > < div class = "ttname" > < a href = "classgridfire_1_1screening_1_1_weak_screening_model.html#a2695206d46b9d2c2503f8e58c44df88f" > gridfire::screening::WeakScreeningModel::calculateFactors_impl< / a > < / div > < div class = "ttdeci" > std::vector< T > calculateFactors_impl(const reaction::LogicalReactionSet & reactions, const std::vector< fourdst::atomic::Species > & species, const std::vector< T > & Y, const T T9, const T rho) const< / div > < div class = "ttdoc" > Template implementation for calculating weak screening factors.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "#l00141" > screening_weak.h:141< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1screening_1_1_weak_screening_model_html_afbaeaefe6b3ab3ecf81889ddc1cff76c" > < div class = "ttname" > < a href = "classgridfire_1_1screening_1_1_weak_screening_model.html#afbaeaefe6b3ab3ecf81889ddc1cff76c" > gridfire::screening::WeakScreeningModel::calculateScreeningFactors< / a > < / div > < div class = "ttdeci" > std::vector< double > calculateScreeningFactors(const reaction::LogicalReactionSet & reactions, const std::vector< fourdst::atomic::Species > & species, const std::vector< double > & Y, const double T9, const double rho) const override< / div > < div class = "ttdoc" > Calculates weak screening factors for a set of reactions.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "screening__weak_8cpp_source.html#l00022" > screening_weak.cpp:22< / a > < / div > < / div >
2025-07-01 11:40:58 -04:00
< div class = "ttc" id = "anamespacegridfire_1_1reaction_html" > < div class = "ttname" > < a href = "namespacegridfire_1_1reaction.html" > gridfire::reaction< / a > < / div > < div class = "ttdef" > < b > Definition< / b > < a href = "reaction_8h_source.html#l00025" > reaction.h:25< / a > < / div > < / div >
2025-07-24 11:10:45 -04:00
< div class = "ttc" id = "anamespacegridfire_1_1reaction_html_aa86f08712565f278adacc7cd2361eb31" > < div class = "ttname" > < a href = "namespacegridfire_1_1reaction.html#aa86f08712565f278adacc7cd2361eb31" > gridfire::reaction::LogicalReactionSet< / a > < / div > < div class = "ttdeci" > TemplatedReactionSet< LogicalReaction > LogicalReactionSet< / div > < div class = "ttdoc" > A set of logical reactions.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "reaction_8h_source.html#l00563" > reaction.h:563< / a > < / div > < / div >
2025-07-01 11:40:58 -04:00
< div class = "ttc" id = "anamespacegridfire_1_1screening_html" > < div class = "ttname" > < a href = "namespacegridfire_1_1screening.html" > gridfire::screening< / a > < / div > < div class = "ttdef" > < b > Definition< / b > < a href = "screening__abstract_8h_source.html#l00011" > screening_abstract.h:11< / a > < / div > < / div >
< div class = "ttc" id = "areaction_8h_html" > < div class = "ttname" > < a href = "reaction_8h.html" > reaction.h< / a > < / div > < div class = "ttdoc" > Defines classes for representing and managing nuclear reactions.< / div > < / div >
< div class = "ttc" id = "ascreening__abstract_8h_html" > < div class = "ttname" > < a href = "screening__abstract_8h.html" > screening_abstract.h< / a > < / div > < / div >
< / div > <!-- fragment --> < / div > <!-- contents -->
< / div > <!-- doc - content -->
<!-- start footer part -->
< div id = "nav-path" class = "navpath" > <!-- id is needed for treeview function! -->
< ul >
2025-07-24 11:10:45 -04:00
< li class = "navelem" > < a class = "el" href = "dir_68267d1309a1af8e8297ef4c3efbcdba.html" > src< / a > < / li > < li class = "navelem" > < a class = "el" href = "dir_b0856f6b0d80ccb263b2f415c91f9e17.html" > include< / a > < / li > < li class = "navelem" > < a class = "el" href = "dir_3626e0c0e3c5d7812d6b277dfa4ec364.html" > gridfire< / a > < / li > < li class = "navelem" > < a class = "el" href = "dir_ad59de2d6f32552fa0ecb4acca2fbb0b.html" > screening< / a > < / li > < li class = "navelem" > < a class = "el" href = "screening__weak_8h.html" > screening_weak.h< / a > < / li >
2025-07-01 11:40:58 -04:00
< 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 >