2025-07-01 07:24:18 -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/lib/engine/views/engine_adaptive.cpp Source File< / title >
2025-07-01 07:24:18 -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('engine__adaptive_8cpp_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" > engine_adaptive.cpp< / div > < / div >
< / div > <!-- header -->
< div class = "contents" >
2025-07-24 11:10:45 -04:00
< a href = "engine__adaptive_8cpp.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" > #include " < a class = "code" href = "engine__adaptive_8h.html" > gridfire/engine/views/engine_adaptive.h< / a > " < / span > < / div >
2025-07-01 07:24:18 -04:00
< 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 < ranges> < / span > < / div >
< div class = "line" > < a id = "l00004" name = "l00004" > < / a > < span class = "lineno" > 4< / span > < span class = "preprocessor" > #include < queue> < / span > < / div >
2025-07-24 11:10:45 -04:00
< div class = "line" > < a id = "l00005" name = "l00005" > < / a > < span class = "lineno" > 5< / span > < span class = "preprocessor" > #include < algorithm> < / span > < / div >
< div class = "line" > < a id = "l00006" name = "l00006" > < / a > < span class = "lineno" > 6< / span > < / div >
2025-07-01 07:24:18 -04:00
< div class = "line" > < a id = "l00007" name = "l00007" > < / a > < span class = "lineno" > 7< / span > < / div >
2025-07-24 11:10:45 -04:00
< div class = "line" > < a id = "l00008" name = "l00008" > < / a > < span class = "lineno" > 8< / span > < span class = "preprocessor" > #include " < a class = "code" href = "network_8h.html" > gridfire/network.h< / a > " < / span > < / div >
< div class = "line" > < a id = "l00009" name = "l00009" > < / a > < span class = "lineno" > 9< / span > < span class = "preprocessor" > #include " < a class = "code" href = "error__engine_8h.html" > gridfire/exceptions/error_engine.h< / a > " < / span > < / div >
2025-07-01 07:24:18 -04:00
< div class = "line" > < a id = "l00010" name = "l00010" > < / a > < span class = "lineno" > 10< / span > < / div >
2025-07-24 11:10:45 -04:00
< div class = "line" > < a id = "l00011" name = "l00011" > < / a > < span class = "lineno" > 11< / span > < span class = "preprocessor" > #include " quill/LogMacros.h" < / span > < / div >
< div class = "line" > < a id = "l00012" name = "l00012" > < / a > < span class = "lineno" > 12< / span > < span class = "preprocessor" > #include " quill/Logger.h" < / span > < / div >
< div class = "line" > < a id = "l00013" name = "l00013" > < / a > < span class = "lineno" > 13< / span > < / div >
< div class = "line" > < a id = "l00014" name = "l00014" > < / a > < span class = "lineno" > 14< / span > < span class = "keyword" > namespace < / span > < a class = "code hl_namespace" href = "namespacegridfire.html" > gridfire< / a > {< / div >
< div class = "line" > < a id = "l00015" name = "l00015" > < / a > < span class = "lineno" > 15< / span > < span class = "keyword" > using < / span > fourdst::atomic::Species;< / div >
< div class = "foldopen" id = "foldopen00016" data-start = "{" data-end = "}" >
< div class = "line" > < a id = "l00016" name = "l00016" > < / a > < span class = "lineno" > < a class = "line" href = "classgridfire_1_1_adaptive_engine_view.html#ad599363cdd457e72e2e2937b0222c455" > 16< / a > < / span > < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#ad599363cdd457e72e2e2937b0222c455" > AdaptiveEngineView::AdaptiveEngineView< / a > (< / div >
< div class = "line" > < a id = "l00017" name = "l00017" > < / a > < span class = "lineno" > 17< / span > < a class = "code hl_class" href = "classgridfire_1_1_dynamic_engine.html" > DynamicEngine< / a > & baseEngine< / div >
< div class = "line" > < a id = "l00018" name = "l00018" > < / a > < span class = "lineno" > 18< / span > ) :< / div >
< div class = "line" > < a id = "l00019" name = "l00019" > < / a > < span class = "lineno" > 19< / span > < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a4d38b46be9f25c7afe7ddd2b284253f8" > m_baseEngine< / a > (baseEngine),< / div >
< div class = "line" > < a id = "l00020" name = "l00020" > < / a > < span class = "lineno" > 20< / span > < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#af4bc9fc6e4afcd6a53c49ca6e2a95940" > m_activeSpecies< / a > (baseEngine.< a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#ac83a8efe25c0e5b9bf7756ac3a500bb1" > getNetworkSpecies< / a > ()),< / div >
< div class = "line" > < a id = "l00021" name = "l00021" > < / a > < span class = "lineno" > 21< / span > < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a19fc7e02e216b797aa643fa35e429800" > m_activeReactions< / a > (baseEngine.< a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a12cc2f352678fba9688363ba1876ab9c" > getNetworkReactions< / a > ()),< / div >
< div class = "line" > < a id = "l00022" name = "l00022" > < / a > < span class = "lineno" > 22< / span > < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a5f66204a0ff5b27eed243afddecb0093" > m_speciesIndexMap< / a > (< a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a896d29325b4233e83d9298850b617a2d" > constructSpeciesIndexMap< / a > ()),< / div >
< div class = "line" > < a id = "l00023" name = "l00023" > < / a > < span class = "lineno" > 23< / span > < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a21c6e33bbf8c18fd5b5eaabb469054de" > m_reactionIndexMap< / a > (< a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a89614f4a48f60c4170a0197f45303e7c" > constructReactionIndexMap< / a > ())< / div >
< div class = "line" > < a id = "l00024" name = "l00024" > < / a > < span class = "lineno" > 24< / span > {< / div >
< div class = "line" > < a id = "l00025" name = "l00025" > < / a > < span class = "lineno" > 25< / span > }< / div >
< / div >
< div class = "line" > < a id = "l00026" name = "l00026" > < / a > < span class = "lineno" > 26< / span > < / div >
< div class = "foldopen" id = "foldopen00027" data-start = "{" data-end = "}" >
< div class = "line" > < a id = "l00027" name = "l00027" > < / a > < span class = "lineno" > < a class = "line" href = "classgridfire_1_1_adaptive_engine_view.html#a896d29325b4233e83d9298850b617a2d" > 27< / a > < / span > std::vector< size_t> < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a896d29325b4233e83d9298850b617a2d" > AdaptiveEngineView::constructSpeciesIndexMap< / a > ()< span class = "keyword" > const < / span > {< / div >
< div class = "line" > < a id = "l00028" name = "l00028" > < / a > < span class = "lineno" > 28< / span > LOG_TRACE_L1(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > , < span class = "stringliteral" > " Constructing species index map for adaptive engine view..." < / span > );< / div >
< div class = "line" > < a id = "l00029" name = "l00029" > < / a > < span class = "lineno" > 29< / span > std::unordered_map< Species, size_t> fullSpeciesReverseMap;< / div >
< div class = "line" > < a id = "l00030" name = "l00030" > < / a > < span class = "lineno" > 30< / span > < span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > & fullSpeciesList = < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a4d38b46be9f25c7afe7ddd2b284253f8" > m_baseEngine< / a > .getNetworkSpecies();< / div >
< div class = "line" > < a id = "l00031" name = "l00031" > < / a > < span class = "lineno" > 31< / span > < / div >
< div class = "line" > < a id = "l00032" name = "l00032" > < / a > < span class = "lineno" > 32< / span > fullSpeciesReverseMap.reserve(fullSpeciesList.size());< / div >
< div class = "line" > < a id = "l00033" name = "l00033" > < / a > < span class = "lineno" > 33< / span > < / div >
< div class = "line" > < a id = "l00034" name = "l00034" > < / a > < span class = "lineno" > 34< / span > < span class = "keywordflow" > for< / span > (< span class = "keywordtype" > size_t< / span > i = 0; i < fullSpeciesList.size(); ++i) {< / div >
< div class = "line" > < a id = "l00035" name = "l00035" > < / a > < span class = "lineno" > 35< / span > fullSpeciesReverseMap[fullSpeciesList[i]] = i;< / div >
< div class = "line" > < a id = "l00036" name = "l00036" > < / a > < span class = "lineno" > 36< / span > }< / div >
2025-07-01 07:24:18 -04:00
< div class = "line" > < a id = "l00037" name = "l00037" > < / a > < span class = "lineno" > 37< / span > < / div >
2025-07-24 11:10:45 -04:00
< div class = "line" > < a id = "l00038" name = "l00038" > < / a > < span class = "lineno" > 38< / span > std::vector< size_t> speciesIndexMap;< / div >
< div class = "line" > < a id = "l00039" name = "l00039" > < / a > < span class = "lineno" > 39< / span > speciesIndexMap.reserve(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#af4bc9fc6e4afcd6a53c49ca6e2a95940" > m_activeSpecies< / a > .size());< / div >
< div class = "line" > < a id = "l00040" name = "l00040" > < / a > < span class = "lineno" > 40< / span > < / div >
< div class = "line" > < a id = "l00041" name = "l00041" > < / a > < span class = "lineno" > 41< / span > < span class = "keywordflow" > for< / span > (< span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > & active_species : < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#af4bc9fc6e4afcd6a53c49ca6e2a95940" > m_activeSpecies< / a > ) {< / div >
< div class = "line" > < a id = "l00042" name = "l00042" > < / a > < span class = "lineno" > 42< / span > < span class = "keyword" > auto< / span > it = fullSpeciesReverseMap.find(active_species);< / div >
< div class = "line" > < a id = "l00043" name = "l00043" > < / a > < span class = "lineno" > 43< / span > < span class = "keywordflow" > if< / span > (it != fullSpeciesReverseMap.end()) {< / div >
< div class = "line" > < a id = "l00044" name = "l00044" > < / a > < span class = "lineno" > 44< / span > speciesIndexMap.push_back(it-> second);< / div >
< div class = "line" > < a id = "l00045" name = "l00045" > < / a > < span class = "lineno" > 45< / span > } < span class = "keywordflow" > else< / span > {< / div >
< div class = "line" > < a id = "l00046" name = "l00046" > < / a > < span class = "lineno" > 46< / span > LOG_ERROR(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > , < span class = "stringliteral" > " Species ' {}' not found in full species map." < / span > , active_species.name());< / div >
< div class = "line" > < a id = "l00047" name = "l00047" > < / a > < span class = "lineno" > 47< / span > < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > -> flush_log();< / div >
< div class = "line" > < a id = "l00048" name = "l00048" > < / a > < span class = "lineno" > 48< / span > < span class = "keywordflow" > throw< / span > std::runtime_error(< span class = "stringliteral" > " Species not found in full species map: " < / span > + std::string(active_species.name()));< / div >
< div class = "line" > < a id = "l00049" name = "l00049" > < / a > < span class = "lineno" > 49< / span > }< / div >
< div class = "line" > < a id = "l00050" name = "l00050" > < / a > < span class = "lineno" > 50< / span > }< / div >
< div class = "line" > < a id = "l00051" name = "l00051" > < / a > < span class = "lineno" > 51< / span > LOG_TRACE_L1(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > , < span class = "stringliteral" > " Species index map constructed with {} entries." < / span > , speciesIndexMap.size());< / div >
< div class = "line" > < a id = "l00052" name = "l00052" > < / a > < span class = "lineno" > 52< / span > < span class = "keywordflow" > return< / span > speciesIndexMap;< / div >
< div class = "line" > < a id = "l00053" name = "l00053" > < / a > < span class = "lineno" > 53< / span > < / div >
< div class = "line" > < a id = "l00054" name = "l00054" > < / a > < span class = "lineno" > 54< / span > }< / div >
< / div >
2025-07-01 07:24:18 -04:00
< div class = "line" > < a id = "l00055" name = "l00055" > < / a > < span class = "lineno" > 55< / span > < / div >
2025-07-24 11:10:45 -04:00
< div class = "foldopen" id = "foldopen00056" data-start = "{" data-end = "}" >
< div class = "line" > < a id = "l00056" name = "l00056" > < / a > < span class = "lineno" > < a class = "line" href = "classgridfire_1_1_adaptive_engine_view.html#a89614f4a48f60c4170a0197f45303e7c" > 56< / a > < / span > std::vector< size_t> < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a89614f4a48f60c4170a0197f45303e7c" > AdaptiveEngineView::constructReactionIndexMap< / a > ()< span class = "keyword" > const < / span > {< / div >
< div class = "line" > < a id = "l00057" name = "l00057" > < / a > < span class = "lineno" > 57< / span > LOG_TRACE_L1(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > , < span class = "stringliteral" > " Constructing reaction index map for adaptive engine view..." < / span > );< / div >
< div class = "line" > < a id = "l00058" name = "l00058" > < / a > < span class = "lineno" > 58< / span > < / div >
< div class = "line" > < a id = "l00059" name = "l00059" > < / a > < span class = "lineno" > 59< / span > < span class = "comment" > // --- Step 1: Create a reverse map using the reaction' s unique ID as the key. ---< / span > < / div >
< div class = "line" > < a id = "l00060" name = "l00060" > < / a > < span class = "lineno" > 60< / span > std::unordered_map< std::string_view, size_t> fullReactionReverseMap;< / div >
< div class = "line" > < a id = "l00061" name = "l00061" > < / a > < span class = "lineno" > 61< / span > < span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > & fullReactionSet = < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a4d38b46be9f25c7afe7ddd2b284253f8" > m_baseEngine< / a > .getNetworkReactions();< / div >
< div class = "line" > < a id = "l00062" name = "l00062" > < / a > < span class = "lineno" > 62< / span > fullReactionReverseMap.reserve(fullReactionSet.size());< / div >
< div class = "line" > < a id = "l00063" name = "l00063" > < / a > < span class = "lineno" > 63< / span > < / div >
< div class = "line" > < a id = "l00064" name = "l00064" > < / a > < span class = "lineno" > 64< / span > < span class = "keywordflow" > for< / span > (< span class = "keywordtype" > size_t< / span > i_full = 0; i_full < fullReactionSet.size(); ++i_full) {< / div >
< div class = "line" > < a id = "l00065" name = "l00065" > < / a > < span class = "lineno" > 65< / span > fullReactionReverseMap[fullReactionSet[i_full].id()] = i_full;< / div >
< div class = "line" > < a id = "l00066" name = "l00066" > < / a > < span class = "lineno" > 66< / span > }< / div >
< div class = "line" > < a id = "l00067" name = "l00067" > < / a > < span class = "lineno" > 67< / span > < / div >
< div class = "line" > < a id = "l00068" name = "l00068" > < / a > < span class = "lineno" > 68< / span > < span class = "comment" > // --- Step 2: Build the final index map using the active reaction set. ---< / span > < / div >
< div class = "line" > < a id = "l00069" name = "l00069" > < / a > < span class = "lineno" > 69< / span > std::vector< size_t> reactionIndexMap;< / div >
< div class = "line" > < a id = "l00070" name = "l00070" > < / a > < span class = "lineno" > 70< / span > reactionIndexMap.reserve(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a19fc7e02e216b797aa643fa35e429800" > m_activeReactions< / a > .size());< / div >
2025-07-01 07:24:18 -04:00
< div class = "line" > < a id = "l00071" name = "l00071" > < / a > < span class = "lineno" > 71< / span > < / div >
2025-07-24 11:10:45 -04:00
< div class = "line" > < a id = "l00072" name = "l00072" > < / a > < span class = "lineno" > 72< / span > < span class = "keywordflow" > for< / span > (< span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > & active_reaction_ptr : < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a19fc7e02e216b797aa643fa35e429800" > m_activeReactions< / a > ) {< / div >
< div class = "line" > < a id = "l00073" name = "l00073" > < / a > < span class = "lineno" > 73< / span > < span class = "keyword" > auto< / span > it = fullReactionReverseMap.find(active_reaction_ptr.id());< / div >
< div class = "line" > < a id = "l00074" name = "l00074" > < / a > < span class = "lineno" > 74< / span > < / div >
< div class = "line" > < a id = "l00075" name = "l00075" > < / a > < span class = "lineno" > 75< / span > < span class = "keywordflow" > if< / span > (it != fullReactionReverseMap.end()) {< / div >
< div class = "line" > < a id = "l00076" name = "l00076" > < / a > < span class = "lineno" > 76< / span > reactionIndexMap.push_back(it-> second);< / div >
< div class = "line" > < a id = "l00077" name = "l00077" > < / a > < span class = "lineno" > 77< / span > } < span class = "keywordflow" > else< / span > {< / div >
< div class = "line" > < a id = "l00078" name = "l00078" > < / a > < span class = "lineno" > 78< / span > LOG_ERROR(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > , < span class = "stringliteral" > " Active reaction ' {}' not found in base engine during reaction index map construction." < / span > , active_reaction_ptr.id());< / div >
< div class = "line" > < a id = "l00079" name = "l00079" > < / a > < span class = "lineno" > 79< / span > < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > -> flush_log();< / div >
< div class = "line" > < a id = "l00080" name = "l00080" > < / a > < span class = "lineno" > 80< / span > < span class = "keywordflow" > throw< / span > std::runtime_error(< span class = "stringliteral" > " Mismatch between active reactions and base engine." < / span > );< / div >
< div class = "line" > < a id = "l00081" name = "l00081" > < / a > < span class = "lineno" > 81< / span > }< / div >
< 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 > < / div >
< div class = "line" > < a id = "l00084" name = "l00084" > < / a > < span class = "lineno" > 84< / span > LOG_TRACE_L1(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > , < span class = "stringliteral" > " Reaction index map constructed with {} entries." < / span > , reactionIndexMap.size());< / div >
< div class = "line" > < a id = "l00085" name = "l00085" > < / a > < span class = "lineno" > 85< / span > < span class = "keywordflow" > return< / span > reactionIndexMap;< / div >
< div class = "line" > < a id = "l00086" name = "l00086" > < / a > < span class = "lineno" > 86< / span > }< / div >
< / div >
2025-07-01 07:24:18 -04:00
< div class = "line" > < a id = "l00087" name = "l00087" > < / a > < span class = "lineno" > 87< / span > < / div >
2025-07-24 11:10:45 -04:00
< div class = "foldopen" id = "foldopen00088" data-start = "{" data-end = "}" >
< div class = "line" > < a id = "l00088" name = "l00088" > < / a > < span class = "lineno" > < a class = "line" href = "classgridfire_1_1_adaptive_engine_view.html#a2a7ecf985a326b4bea43e00cf9ee43dd" > 88< / a > < / span > fourdst::composition::Composition < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a2a7ecf985a326b4bea43e00cf9ee43dd" > AdaptiveEngineView::update< / a > (< span class = "keyword" > const< / span > < a class = "code hl_struct" href = "structgridfire_1_1_net_in.html" > NetIn< / a > & netIn) {< / div >
< div class = "line" > < a id = "l00089" name = "l00089" > < / a > < span class = "lineno" > 89< / span > fourdst::composition::Composition baseUpdatedComposition = < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a4d38b46be9f25c7afe7ddd2b284253f8" > m_baseEngine< / a > .update(netIn);< / div >
< div class = "line" > < a id = "l00090" name = "l00090" > < / a > < span class = "lineno" > 90< / span > < a class = "code hl_struct" href = "structgridfire_1_1_net_in.html" > NetIn< / a > updatedNetIn = netIn;< / div >
< div class = "line" > < a id = "l00091" name = "l00091" > < / a > < span class = "lineno" > 91< / span > < / div >
< div class = "line" > < a id = "l00092" name = "l00092" > < / a > < span class = "lineno" > 92< / span > < span class = "comment" > // for (const auto & entry: netIn.composition | std::views::values) {< / span > < / div >
< div class = "line" > < a id = "l00093" name = "l00093" > < / a > < span class = "lineno" > 93< / span > < span class = "comment" > // if (baseUpdatedComposition.contains(entry.isotope())) {< / span > < / div >
< div class = "line" > < a id = "l00094" name = "l00094" > < / a > < span class = "lineno" > 94< / span > < span class = "comment" > // updatedNetIn.composition.setMassFraction(entry.isotope(), baseUpdatedComposition.getMassFraction(entry.isotope()));< / span > < / div >
< div class = "line" > < a id = "l00095" name = "l00095" > < / a > < span class = "lineno" > 95< / span > < span class = "comment" > // }< / span > < / div >
< div class = "line" > < a id = "l00096" name = "l00096" > < / a > < span class = "lineno" > 96< / span > < span class = "comment" > // }< / span > < / div >
< div class = "line" > < a id = "l00097" name = "l00097" > < / a > < span class = "lineno" > 97< / span > updatedNetIn.< a class = "code hl_variable" href = "structgridfire_1_1_net_in.html#a13058f4929e72c1187abbebcddb8aed1" > composition< / a > = baseUpdatedComposition;< / div >
< div class = "line" > < a id = "l00098" name = "l00098" > < / a > < span class = "lineno" > 98< / span > < / div >
< div class = "line" > < a id = "l00099" name = "l00099" > < / a > < span class = "lineno" > 99< / span > updatedNetIn.< a class = "code hl_variable" href = "structgridfire_1_1_net_in.html#a13058f4929e72c1187abbebcddb8aed1" > composition< / a > .finalize(< span class = "keyword" > false< / span > );< / div >
< div class = "line" > < a id = "l00100" name = "l00100" > < / a > < span class = "lineno" > 100< / span > < / div >
< div class = "line" > < a id = "l00101" name = "l00101" > < / a > < span class = "lineno" > 101< / span > LOG_TRACE_L1(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > , < span class = "stringliteral" > " Updating AdaptiveEngineView with new network input..." < / span > );< / div >
2025-07-01 11:40:51 -04:00
< div class = "line" > < a id = "l00102" name = "l00102" > < / a > < span class = "lineno" > 102< / span > < / div >
2025-07-24 11:10:45 -04:00
< div class = "line" > < a id = "l00103" name = "l00103" > < / a > < span class = "lineno" > 103< / span > std::vector< double> Y_Full;< / div >
< div class = "line" > < a id = "l00104" name = "l00104" > < / a > < span class = "lineno" > 104< / span > std::vector< ReactionFlow> allFlows = < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#abdbaf4b87629efe43ac1255dad424c0c" > calculateAllReactionFlows< / a > (updatedNetIn, Y_Full);< / div >
< div class = "line" > < a id = "l00105" name = "l00105" > < / a > < span class = "lineno" > 105< / span > < / div >
< div class = "line" > < a id = "l00106" name = "l00106" > < / a > < span class = "lineno" > 106< / span > < span class = "keywordtype" > double< / span > maxFlow = 0.0;< / div >
2025-07-01 11:40:51 -04:00
< div class = "line" > < a id = "l00107" name = "l00107" > < / a > < span class = "lineno" > 107< / span > < / div >
2025-07-24 11:10:45 -04:00
< div class = "line" > < a id = "l00108" name = "l00108" > < / a > < span class = "lineno" > 108< / span > < span class = "keywordflow" > for< / span > (< span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > & [reactionPtr, flowRate]: allFlows) {< / div >
< div class = "line" > < a id = "l00109" name = "l00109" > < / a > < span class = "lineno" > 109< / span > < span class = "keywordflow" > if< / span > (flowRate > maxFlow) {< / div >
< div class = "line" > < a id = "l00110" name = "l00110" > < / a > < span class = "lineno" > 110< / span > maxFlow = flowRate;< / div >
< div class = "line" > < a id = "l00111" name = "l00111" > < / a > < span class = "lineno" > 111< / span > }< / div >
< div class = "line" > < a id = "l00112" name = "l00112" > < / a > < span class = "lineno" > 112< / span > }< / div >
< div class = "line" > < a id = "l00113" name = "l00113" > < / a > < span class = "lineno" > 113< / span > LOG_DEBUG(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > , < span class = "stringliteral" > " Maximum reaction flow rate in adaptive engine view: {:0.3E} [mol/s]" < / span > , maxFlow);< / div >
< div class = "line" > < a id = "l00114" name = "l00114" > < / a > < span class = "lineno" > 114< / span > < / div >
< div class = "line" > < a id = "l00115" name = "l00115" > < / a > < span class = "lineno" > 115< / span > < span class = "keyword" > const< / span > std::unordered_set< Species> reachableSpecies = < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a0ed21f7e7c1034fc87b40d4116c4221b" > findReachableSpecies< / a > (updatedNetIn);< / div >
< div class = "line" > < a id = "l00116" name = "l00116" > < / a > < span class = "lineno" > 116< / span > LOG_DEBUG(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > , < span class = "stringliteral" > " Found {} reachable species in adaptive engine view." < / span > , reachableSpecies.size());< / div >
< div class = "line" > < a id = "l00117" name = "l00117" > < / a > < span class = "lineno" > 117< / span > < / div >
< div class = "line" > < a id = "l00118" name = "l00118" > < / a > < span class = "lineno" > 118< / span > < span class = "keyword" > const< / span > std::vector< const reaction::LogicalReaction*> finalReactions = < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a42417e96fe9fd623458af109401daf08" > cullReactionsByFlow< / a > (allFlows, reachableSpecies, Y_Full, maxFlow);< / div >
2025-07-01 11:40:51 -04:00
< div class = "line" > < a id = "l00119" name = "l00119" > < / a > < span class = "lineno" > 119< / span > < / div >
2025-07-24 11:10:45 -04:00
< div class = "line" > < a id = "l00120" name = "l00120" > < / a > < span class = "lineno" > 120< / span > < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#aa79fb382c98461b02a2c30668491e6c5" > finalizeActiveSet< / a > (finalReactions);< / div >
< div class = "line" > < a id = "l00121" name = "l00121" > < / a > < span class = "lineno" > 121< / span > < / div >
< div class = "line" > < a id = "l00122" name = "l00122" > < / a > < span class = "lineno" > 122< / span > < span class = "keyword" > auto< / span > [rescuedReactions, rescuedSpecies] = < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a823c665ba89452aa2b3d5422fa5d313f" > rescueEdgeSpeciesDestructionChannel< / a > (Y_Full, netIn.< a class = "code hl_variable" href = "structgridfire_1_1_net_in.html#a5be0f5195a5cd1dd177b9fc5ab83a7be" > temperature< / a > /1e9, netIn.< a class = "code hl_variable" href = "structgridfire_1_1_net_in.html#a06f0dff9f8927b7cf2da3004c8fa1577" > density< / a > , < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#af4bc9fc6e4afcd6a53c49ca6e2a95940" > m_activeSpecies< / a > , < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a19fc7e02e216b797aa643fa35e429800" > m_activeReactions< / a > );< / div >
< div class = "line" > < a id = "l00123" name = "l00123" > < / a > < span class = "lineno" > 123< / span > < / div >
< div class = "line" > < a id = "l00124" name = "l00124" > < / a > < span class = "lineno" > 124< / span > < span class = "keywordflow" > for< / span > (< span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > & reactionPtr : rescuedReactions) {< / div >
< div class = "line" > < a id = "l00125" name = "l00125" > < / a > < span class = "lineno" > 125< / span > < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a19fc7e02e216b797aa643fa35e429800" > m_activeReactions< / a > .add_reaction(*reactionPtr);< / div >
< div class = "line" > < a id = "l00126" name = "l00126" > < / a > < span class = "lineno" > 126< / span > }< / div >
< div class = "line" > < a id = "l00127" name = "l00127" > < / a > < span class = "lineno" > 127< / span > < / div >
< div class = "line" > < a id = "l00128" name = "l00128" > < / a > < span class = "lineno" > 128< / span > < span class = "keywordflow" > for< / span > (< span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > & species : rescuedSpecies) {< / div >
< div class = "line" > < a id = "l00129" name = "l00129" > < / a > < span class = "lineno" > 129< / span > < span class = "keywordflow" > if< / span > (!std::ranges::contains(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#af4bc9fc6e4afcd6a53c49ca6e2a95940" > m_activeSpecies< / a > , species)) {< / div >
< div class = "line" > < a id = "l00130" name = "l00130" > < / a > < span class = "lineno" > 130< / span > < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#af4bc9fc6e4afcd6a53c49ca6e2a95940" > m_activeSpecies< / a > .push_back(species);< / div >
< div class = "line" > < a id = "l00131" name = "l00131" > < / a > < span class = "lineno" > 131< / span > }< / div >
< div class = "line" > < a id = "l00132" name = "l00132" > < / a > < span class = "lineno" > 132< / span > }< / div >
< div class = "line" > < a id = "l00133" name = "l00133" > < / a > < span class = "lineno" > 133< / span > < / div >
< div class = "line" > < a id = "l00134" name = "l00134" > < / a > < span class = "lineno" > 134< / span > < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a5f66204a0ff5b27eed243afddecb0093" > m_speciesIndexMap< / a > = < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a896d29325b4233e83d9298850b617a2d" > constructSpeciesIndexMap< / a > ();< / div >
< div class = "line" > < a id = "l00135" name = "l00135" > < / a > < span class = "lineno" > 135< / span > < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a21c6e33bbf8c18fd5b5eaabb469054de" > m_reactionIndexMap< / a > = < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a89614f4a48f60c4170a0197f45303e7c" > constructReactionIndexMap< / a > ();< / div >
< div class = "line" > < a id = "l00136" name = "l00136" > < / a > < span class = "lineno" > 136< / span > < / div >
< div class = "line" > < a id = "l00137" name = "l00137" > < / a > < span class = "lineno" > 137< / span > < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a63580db57e0f48f508906a11ccfd465e" > m_isStale< / a > = < span class = "keyword" > false< / span > ;< / div >
< div class = "line" > < a id = "l00138" name = "l00138" > < / a > < span class = "lineno" > 138< / span > < / div >
< div class = "line" > < a id = "l00139" name = "l00139" > < / a > < span class = "lineno" > 139< / span > LOG_INFO(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > , < span class = "stringliteral" > " AdaptiveEngineView updated successfully with {} active species and {} active reactions." < / span > , < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#af4bc9fc6e4afcd6a53c49ca6e2a95940" > m_activeSpecies< / a > .size(), < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a19fc7e02e216b797aa643fa35e429800" > m_activeReactions< / a > .size());< / div >
< div class = "line" > < a id = "l00140" name = "l00140" > < / a > < span class = "lineno" > 140< / span > < / div >
< div class = "line" > < a id = "l00141" name = "l00141" > < / a > < span class = "lineno" > 141< / span > < span class = "keywordflow" > return< / span > updatedNetIn.< a class = "code hl_variable" href = "structgridfire_1_1_net_in.html#a13058f4929e72c1187abbebcddb8aed1" > composition< / a > ;< / div >
< div class = "line" > < a id = "l00142" name = "l00142" > < / a > < span class = "lineno" > 142< / span > }< / div >
< / div >
< div class = "line" > < a id = "l00143" name = "l00143" > < / a > < span class = "lineno" > 143< / span > < / div >
< div class = "foldopen" id = "foldopen00144" data-start = "{" data-end = "}" >
< div class = "line" > < a id = "l00144" name = "l00144" > < / a > < span class = "lineno" > < a class = "line" href = "classgridfire_1_1_adaptive_engine_view.html#ad268c9942655e5c9605148fe07718e88" > 144< / a > < / span > < span class = "keywordtype" > bool< / span > < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#ad268c9942655e5c9605148fe07718e88" > AdaptiveEngineView::isStale< / a > (< span class = "keyword" > const< / span > < a class = "code hl_struct" href = "structgridfire_1_1_net_in.html" > NetIn< / a > & netIn) {< / div >
< div class = "line" > < a id = "l00145" name = "l00145" > < / a > < span class = "lineno" > 145< / span > < span class = "keywordflow" > return< / span > < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a63580db57e0f48f508906a11ccfd465e" > m_isStale< / a > || < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a4d38b46be9f25c7afe7ddd2b284253f8" > m_baseEngine< / a > .isStale(netIn);< / div >
< div class = "line" > < a id = "l00146" name = "l00146" > < / a > < span class = "lineno" > 146< / span > }< / div >
< / div >
< div class = "line" > < a id = "l00147" name = "l00147" > < / a > < span class = "lineno" > 147< / span > < / div >
< div class = "foldopen" id = "foldopen00148" data-start = "{" data-end = "}" >
< div class = "line" > < a id = "l00148" name = "l00148" > < / a > < span class = "lineno" > < a class = "line" href = "classgridfire_1_1_adaptive_engine_view.html#ac83a8efe25c0e5b9bf7756ac3a500bb1" > 148< / a > < / span > < span class = "keyword" > const< / span > std::vector< Species> & < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#ac83a8efe25c0e5b9bf7756ac3a500bb1" > AdaptiveEngineView::getNetworkSpecies< / a > ()< span class = "keyword" > const < / span > {< / div >
< div class = "line" > < a id = "l00149" name = "l00149" > < / a > < span class = "lineno" > 149< / span > < span class = "keywordflow" > return< / span > < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#af4bc9fc6e4afcd6a53c49ca6e2a95940" > m_activeSpecies< / a > ;< / div >
< div class = "line" > < a id = "l00150" name = "l00150" > < / a > < span class = "lineno" > 150< / span > }< / div >
< / div >
< div class = "line" > < a id = "l00151" name = "l00151" > < / a > < span class = "lineno" > 151< / span > < / div >
< div class = "foldopen" id = "foldopen00152" data-start = "{" data-end = "}" >
< div class = "line" > < a id = "l00152" name = "l00152" > < / a > < span class = "lineno" > < a class = "line" href = "classgridfire_1_1_adaptive_engine_view.html#af703ad17ea65ffff4b75bf8ccc00e5d5" > 152< / a > < / span > std::expected< StepDerivatives< double> , < a class = "code hl_struct" href = "structgridfire_1_1expectations_1_1_stale_engine_error.html" > expectations::StaleEngineError< / a > > < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#af703ad17ea65ffff4b75bf8ccc00e5d5" > AdaptiveEngineView::calculateRHSAndEnergy< / a > (< / div >
< div class = "line" > < a id = "l00153" name = "l00153" > < / a > < span class = "lineno" > 153< / span > < span class = "keyword" > const< / span > std::vector< double> & Y_culled,< / div >
< div class = "line" > < a id = "l00154" name = "l00154" > < / a > < span class = "lineno" > 154< / span > < span class = "keyword" > const< / span > < span class = "keywordtype" > double< / span > T9,< / div >
< div class = "line" > < a id = "l00155" name = "l00155" > < / a > < span class = "lineno" > 155< / span > < span class = "keyword" > const< / span > < span class = "keywordtype" > double< / span > rho< / div >
< div class = "line" > < a id = "l00156" name = "l00156" > < / a > < span class = "lineno" > 156< / span > )< span class = "keyword" > const < / span > {< / div >
< div class = "line" > < a id = "l00157" name = "l00157" > < / a > < span class = "lineno" > 157< / span > < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#aedc0dedb51c81e03f253cc409a5d5c40" > validateState< / a > ();< / div >
< div class = "line" > < a id = "l00158" name = "l00158" > < / a > < span class = "lineno" > 158< / span > < / div >
< div class = "line" > < a id = "l00159" name = "l00159" > < / a > < span class = "lineno" > 159< / span > < span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > Y_full = < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a68695f056b660e91285b7e5a931612e1" > mapCulledToFull< / a > (Y_culled);< / div >
< div class = "line" > < a id = "l00160" name = "l00160" > < / a > < span class = "lineno" > 160< / span > < / div >
< div class = "line" > < a id = "l00161" name = "l00161" > < / a > < span class = "lineno" > 161< / span > < span class = "keyword" > auto< / span > result = < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a4d38b46be9f25c7afe7ddd2b284253f8" > m_baseEngine< / a > .calculateRHSAndEnergy(Y_full, T9, rho);< / div >
< div class = "line" > < a id = "l00162" name = "l00162" > < / a > < span class = "lineno" > 162< / span > < / div >
< div class = "line" > < a id = "l00163" name = "l00163" > < / a > < span class = "lineno" > 163< / span > < span class = "keywordflow" > if< / span > (!result) {< / div >
< div class = "line" > < a id = "l00164" name = "l00164" > < / a > < span class = "lineno" > 164< / span > < span class = "keywordflow" > return< / span > std::unexpected{result.error()};< / div >
< div class = "line" > < a id = "l00165" name = "l00165" > < / a > < span class = "lineno" > 165< / span > }< / div >
< div class = "line" > < a id = "l00166" name = "l00166" > < / a > < span class = "lineno" > 166< / span > < / div >
< div class = "line" > < a id = "l00167" name = "l00167" > < / a > < span class = "lineno" > 167< / span > < span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > [dydt, nuclearEnergyGenerationRate] = result.value();< / div >
< div class = "line" > < a id = "l00168" name = "l00168" > < / a > < span class = "lineno" > 168< / span > < a class = "code hl_struct" href = "structgridfire_1_1_step_derivatives.html" > StepDerivatives< double> < / a > culledResults;< / div >
< div class = "line" > < a id = "l00169" name = "l00169" > < / a > < span class = "lineno" > 169< / span > culledResults.< a class = "code hl_variable" href = "structgridfire_1_1_step_derivatives.html#ab4aeb41be952c7b5844e1ee81fef9008" > nuclearEnergyGenerationRate< / a > = nuclearEnergyGenerationRate;< / div >
< div class = "line" > < a id = "l00170" name = "l00170" > < / a > < span class = "lineno" > 170< / span > culledResults.< a class = "code hl_variable" href = "structgridfire_1_1_step_derivatives.html#ae0de268b86c2404379409c4feae0b34d" > dydt< / a > = < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a3d9d8e862d1c2f0a8ba460c57f6a7f44" > mapFullToCulled< / a > (dydt);< / div >
< div class = "line" > < a id = "l00171" name = "l00171" > < / a > < span class = "lineno" > 171< / span > < / div >
< div class = "line" > < a id = "l00172" name = "l00172" > < / a > < span class = "lineno" > 172< / span > < span class = "keywordflow" > return< / span > culledResults;< / div >
2025-07-01 11:40:51 -04:00
< div class = "line" > < a id = "l00173" name = "l00173" > < / a > < span class = "lineno" > 173< / span > }< / div >
< / div >
< div class = "line" > < a id = "l00174" name = "l00174" > < / a > < span class = "lineno" > 174< / span > < / div >
< div class = "foldopen" id = "foldopen00175" data-start = "{" data-end = "}" >
2025-07-24 11:10:45 -04:00
< div class = "line" > < a id = "l00175" name = "l00175" > < / a > < span class = "lineno" > < a class = "line" href = "classgridfire_1_1_adaptive_engine_view.html#a03fc187d3d306b9058103b9522cbbaeb" > 175< / a > < / span > < span class = "keywordtype" > void< / span > < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a03fc187d3d306b9058103b9522cbbaeb" > AdaptiveEngineView::generateJacobianMatrix< / a > (< / div >
< div class = "line" > < a id = "l00176" name = "l00176" > < / a > < span class = "lineno" > 176< / span > < span class = "keyword" > const< / span > std::vector< double> & Y_dynamic,< / div >
< div class = "line" > < a id = "l00177" name = "l00177" > < / a > < span class = "lineno" > 177< / span > < span class = "keyword" > const< / span > < span class = "keywordtype" > double< / span > T9,< / div >
< div class = "line" > < a id = "l00178" name = "l00178" > < / a > < span class = "lineno" > 178< / span > < span class = "keyword" > const< / span > < span class = "keywordtype" > double< / span > rho< / div >
< div class = "line" > < a id = "l00179" name = "l00179" > < / a > < span class = "lineno" > 179< / span > )< span class = "keyword" > const < / span > {< / div >
< div class = "line" > < a id = "l00180" name = "l00180" > < / a > < span class = "lineno" > 180< / span > < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#aedc0dedb51c81e03f253cc409a5d5c40" > validateState< / a > ();< / div >
< div class = "line" > < a id = "l00181" name = "l00181" > < / a > < span class = "lineno" > 181< / span > < span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > Y_full = < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a68695f056b660e91285b7e5a931612e1" > mapCulledToFull< / a > (Y_dynamic);< / div >
< div class = "line" > < a id = "l00182" name = "l00182" > < / a > < span class = "lineno" > 182< / span > < / div >
< div class = "line" > < a id = "l00183" name = "l00183" > < / a > < span class = "lineno" > 183< / span > < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a4d38b46be9f25c7afe7ddd2b284253f8" > m_baseEngine< / a > .generateJacobianMatrix(Y_full, T9, rho);< / div >
< div class = "line" > < a id = "l00184" name = "l00184" > < / a > < span class = "lineno" > 184< / span > }< / div >
< / div >
< div class = "line" > < a id = "l00185" name = "l00185" > < / a > < span class = "lineno" > 185< / span > < / div >
< div class = "foldopen" id = "foldopen00186" data-start = "{" data-end = "}" >
< div class = "line" > < a id = "l00186" name = "l00186" > < / a > < span class = "lineno" > < a class = "line" href = "classgridfire_1_1_adaptive_engine_view.html#a4710d218c8a0fd161e994ecd60b48e58" > 186< / a > < / span > < span class = "keywordtype" > double< / span > < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a4710d218c8a0fd161e994ecd60b48e58" > AdaptiveEngineView::getJacobianMatrixEntry< / a > (< / div >
< div class = "line" > < a id = "l00187" name = "l00187" > < / a > < span class = "lineno" > 187< / span > < span class = "keyword" > const< / span > < span class = "keywordtype" > int< / span > i_culled,< / div >
< div class = "line" > < a id = "l00188" name = "l00188" > < / a > < span class = "lineno" > 188< / span > < span class = "keyword" > const< / span > < span class = "keywordtype" > int< / span > j_culled< / div >
< div class = "line" > < a id = "l00189" name = "l00189" > < / a > < span class = "lineno" > 189< / span > )< span class = "keyword" > const < / span > {< / div >
< div class = "line" > < a id = "l00190" name = "l00190" > < / a > < span class = "lineno" > 190< / span > < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#aedc0dedb51c81e03f253cc409a5d5c40" > validateState< / a > ();< / div >
< div class = "line" > < a id = "l00191" name = "l00191" > < / a > < span class = "lineno" > 191< / span > < span class = "keyword" > const< / span > < span class = "keywordtype" > size_t< / span > i_full = < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a256d14a333f9401039b826cc889761a8" > mapCulledToFullSpeciesIndex< / a > (i_culled);< / div >
< div class = "line" > < a id = "l00192" name = "l00192" > < / a > < span class = "lineno" > 192< / span > < span class = "keyword" > const< / span > < span class = "keywordtype" > size_t< / span > j_full = < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a256d14a333f9401039b826cc889761a8" > mapCulledToFullSpeciesIndex< / a > (j_culled);< / div >
< div class = "line" > < a id = "l00193" name = "l00193" > < / a > < span class = "lineno" > 193< / span > < / div >
< div class = "line" > < a id = "l00194" name = "l00194" > < / a > < span class = "lineno" > 194< / span > < span class = "keywordflow" > return< / span > < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a4d38b46be9f25c7afe7ddd2b284253f8" > m_baseEngine< / a > .getJacobianMatrixEntry(i_full, j_full);< / div >
< div class = "line" > < a id = "l00195" name = "l00195" > < / a > < span class = "lineno" > 195< / span > }< / div >
< / div >
< div class = "line" > < a id = "l00196" name = "l00196" > < / a > < span class = "lineno" > 196< / span > < / div >
< div class = "foldopen" id = "foldopen00197" data-start = "{" data-end = "}" >
< div class = "line" > < a id = "l00197" name = "l00197" > < / a > < span class = "lineno" > < a class = "line" href = "classgridfire_1_1_adaptive_engine_view.html#a231193a61ba5a31e8eb92b0d4ce69111" > 197< / a > < / span > < span class = "keywordtype" > void< / span > < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a231193a61ba5a31e8eb92b0d4ce69111" > AdaptiveEngineView::generateStoichiometryMatrix< / a > () {< / div >
< div class = "line" > < a id = "l00198" name = "l00198" > < / a > < span class = "lineno" > 198< / span > < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#aedc0dedb51c81e03f253cc409a5d5c40" > validateState< / a > ();< / div >
< div class = "line" > < a id = "l00199" name = "l00199" > < / a > < span class = "lineno" > 199< / span > < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a4d38b46be9f25c7afe7ddd2b284253f8" > m_baseEngine< / a > .generateStoichiometryMatrix();< / div >
< div class = "line" > < a id = "l00200" name = "l00200" > < / a > < span class = "lineno" > 200< / span > }< / div >
< / div >
< div class = "line" > < a id = "l00201" name = "l00201" > < / a > < span class = "lineno" > 201< / span > < / div >
< div class = "foldopen" id = "foldopen00202" data-start = "{" data-end = "}" >
< div class = "line" > < a id = "l00202" name = "l00202" > < / a > < span class = "lineno" > < a class = "line" href = "classgridfire_1_1_adaptive_engine_view.html#a67b4ea8cad115394bb4a42cc39d696f9" > 202< / a > < / span > < span class = "keywordtype" > int< / span > < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a67b4ea8cad115394bb4a42cc39d696f9" > AdaptiveEngineView::getStoichiometryMatrixEntry< / a > (< / div >
< div class = "line" > < a id = "l00203" name = "l00203" > < / a > < span class = "lineno" > 203< / span > < span class = "keyword" > const< / span > < span class = "keywordtype" > int< / span > speciesIndex_culled,< / div >
< div class = "line" > < a id = "l00204" name = "l00204" > < / a > < span class = "lineno" > 204< / span > < span class = "keyword" > const< / span > < span class = "keywordtype" > int< / span > reactionIndex_culled< / div >
< div class = "line" > < a id = "l00205" name = "l00205" > < / a > < span class = "lineno" > 205< / span > )< span class = "keyword" > const < / span > {< / div >
< div class = "line" > < a id = "l00206" name = "l00206" > < / a > < span class = "lineno" > 206< / span > < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#aedc0dedb51c81e03f253cc409a5d5c40" > validateState< / a > ();< / div >
< div class = "line" > < a id = "l00207" name = "l00207" > < / a > < span class = "lineno" > 207< / span > < span class = "keyword" > const< / span > < span class = "keywordtype" > size_t< / span > speciesIndex_full = < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a256d14a333f9401039b826cc889761a8" > mapCulledToFullSpeciesIndex< / a > (speciesIndex_culled);< / div >
< div class = "line" > < a id = "l00208" name = "l00208" > < / a > < span class = "lineno" > 208< / span > < span class = "keyword" > const< / span > < span class = "keywordtype" > size_t< / span > reactionIndex_full = < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a91e742642d8a8d9ec0620779927e5101" > mapCulledToFullReactionIndex< / a > (reactionIndex_culled);< / div >
< div class = "line" > < a id = "l00209" name = "l00209" > < / a > < span class = "lineno" > 209< / span > < span class = "keywordflow" > return< / span > < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a4d38b46be9f25c7afe7ddd2b284253f8" > m_baseEngine< / a > .getStoichiometryMatrixEntry(speciesIndex_full, reactionIndex_full);< / div >
< div class = "line" > < a id = "l00210" name = "l00210" > < / a > < span class = "lineno" > 210< / span > }< / div >
< / div >
< div class = "line" > < a id = "l00211" name = "l00211" > < / a > < span class = "lineno" > 211< / span > < / div >
< div class = "foldopen" id = "foldopen00212" data-start = "{" data-end = "}" >
< div class = "line" > < a id = "l00212" name = "l00212" > < / a > < span class = "lineno" > < a class = "line" href = "classgridfire_1_1_adaptive_engine_view.html#a048d4b1d41ecb4125a558d1b9ed7cb31" > 212< / a > < / span > < span class = "keywordtype" > double< / span > < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a048d4b1d41ecb4125a558d1b9ed7cb31" > AdaptiveEngineView::calculateMolarReactionFlow< / a > (< / div >
< div class = "line" > < a id = "l00213" name = "l00213" > < / a > < span class = "lineno" > 213< / span > < span class = "keyword" > const< / span > < a class = "code hl_class" href = "classgridfire_1_1reaction_1_1_reaction.html" > reaction::Reaction< / a > & < a class = "code hl_namespace" href = "namespacegridfire_1_1reaction.html" > reaction< / a > ,< / div >
< div class = "line" > < a id = "l00214" name = "l00214" > < / a > < span class = "lineno" > 214< / span > < span class = "keyword" > const< / span > std::vector< double> & Y_culled,< / div >
< div class = "line" > < a id = "l00215" name = "l00215" > < / a > < span class = "lineno" > 215< / span > < span class = "keyword" > const< / span > < span class = "keywordtype" > double< / span > T9,< / div >
< div class = "line" > < a id = "l00216" name = "l00216" > < / a > < span class = "lineno" > 216< / span > < span class = "keyword" > const< / span > < span class = "keywordtype" > double< / span > rho< / div >
< div class = "line" > < a id = "l00217" name = "l00217" > < / a > < span class = "lineno" > 217< / span > )< span class = "keyword" > const < / span > {< / div >
< div class = "line" > < a id = "l00218" name = "l00218" > < / a > < span class = "lineno" > 218< / span > < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#aedc0dedb51c81e03f253cc409a5d5c40" > validateState< / a > ();< / div >
< div class = "line" > < a id = "l00219" name = "l00219" > < / a > < span class = "lineno" > 219< / span > < span class = "keywordflow" > if< / span > (!< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a19fc7e02e216b797aa643fa35e429800" > m_activeReactions< / a > .contains(< a class = "code hl_namespace" href = "namespacegridfire_1_1reaction.html" > reaction< / a > )) {< / div >
< div class = "line" > < a id = "l00220" name = "l00220" > < / a > < span class = "lineno" > 220< / span > LOG_ERROR(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > , < span class = "stringliteral" > " Reaction ' {}' is not part of the active reactions in the adaptive engine view." < / span > , < a class = "code hl_namespace" href = "namespacegridfire_1_1reaction.html" > reaction< / a > .id());< / div >
< div class = "line" > < a id = "l00221" name = "l00221" > < / a > < span class = "lineno" > 221< / span > < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > -> flush_log();< / div >
< div class = "line" > < a id = "l00222" name = "l00222" > < / a > < span class = "lineno" > 222< / span > < span class = "keywordflow" > throw< / span > std::runtime_error(< span class = "stringliteral" > " Reaction not found in active reactions: " < / span > + std::string(< a class = "code hl_namespace" href = "namespacegridfire_1_1reaction.html" > reaction< / a > .id()));< / div >
< div class = "line" > < a id = "l00223" name = "l00223" > < / a > < span class = "lineno" > 223< / span > }< / div >
< div class = "line" > < a id = "l00224" name = "l00224" > < / a > < span class = "lineno" > 224< / span > < span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > Y = < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a68695f056b660e91285b7e5a931612e1" > mapCulledToFull< / a > (Y_culled);< / div >
< div class = "line" > < a id = "l00225" name = "l00225" > < / a > < span class = "lineno" > 225< / span > < / div >
< div class = "line" > < a id = "l00226" name = "l00226" > < / a > < span class = "lineno" > 226< / span > < span class = "keywordflow" > return< / span > < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a4d38b46be9f25c7afe7ddd2b284253f8" > m_baseEngine< / a > .calculateMolarReactionFlow(< a class = "code hl_namespace" href = "namespacegridfire_1_1reaction.html" > reaction< / a > , Y, T9, rho);< / div >
< div class = "line" > < a id = "l00227" name = "l00227" > < / a > < span class = "lineno" > 227< / span > }< / div >
< / div >
< div class = "line" > < a id = "l00228" name = "l00228" > < / a > < span class = "lineno" > 228< / span > < / div >
< div class = "foldopen" id = "foldopen00229" data-start = "{" data-end = "}" >
< div class = "line" > < a id = "l00229" name = "l00229" > < / a > < span class = "lineno" > < a class = "line" href = "classgridfire_1_1_adaptive_engine_view.html#a12cc2f352678fba9688363ba1876ab9c" > 229< / a > < / span > < span class = "keyword" > const< / span > < a class = "code hl_typedef" href = "namespacegridfire_1_1reaction.html#aa86f08712565f278adacc7cd2361eb31" > reaction::LogicalReactionSet< / a > & < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a12cc2f352678fba9688363ba1876ab9c" > AdaptiveEngineView::getNetworkReactions< / a > ()< span class = "keyword" > const < / span > {< / div >
< div class = "line" > < a id = "l00230" name = "l00230" > < / a > < span class = "lineno" > 230< / span > < span class = "keywordflow" > return< / span > < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a19fc7e02e216b797aa643fa35e429800" > m_activeReactions< / a > ;< / div >
2025-07-01 11:40:51 -04:00
< div class = "line" > < a id = "l00231" name = "l00231" > < / a > < span class = "lineno" > 231< / span > }< / div >
< / div >
< div class = "line" > < a id = "l00232" name = "l00232" > < / a > < span class = "lineno" > 232< / span > < / div >
< div class = "foldopen" id = "foldopen00233" data-start = "{" data-end = "}" >
2025-07-24 11:10:45 -04:00
< div class = "line" > < a id = "l00233" name = "l00233" > < / a > < span class = "lineno" > < a class = "line" href = "classgridfire_1_1_adaptive_engine_view.html#a7b3a6b3ab0a52f0f84d2b142e74ea672" > 233< / a > < / span > < span class = "keywordtype" > void< / span > < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a7b3a6b3ab0a52f0f84d2b142e74ea672" > AdaptiveEngineView::setNetworkReactions< / a > (< 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 = "l00234" name = "l00234" > < / a > < span class = "lineno" > 234< / span > LOG_CRITICAL(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > , < span class = "stringliteral" > " AdaptiveEngineView does not support setting network reactions directly. Use update() with NetIn instead. Perhaps you meant to call this on the base engine?" < / span > );< / div >
< div class = "line" > < a id = "l00235" name = "l00235" > < / a > < span class = "lineno" > 235< / span > < span class = "keywordflow" > throw< / span > < a class = "code hl_class" href = "classgridfire_1_1exceptions_1_1_unable_to_set_network_reactions_error.html" > exceptions::UnableToSetNetworkReactionsError< / a > (< span class = "stringliteral" > " AdaptiveEngineView does not support setting network reactions directly. Use update() with NetIn instead. Perhaps you meant to call this on the base engine?" < / span > );< / div >
< div class = "line" > < a id = "l00236" name = "l00236" > < / a > < span class = "lineno" > 236< / span > }< / div >
< / div >
< div class = "line" > < a id = "l00237" name = "l00237" > < / a > < span class = "lineno" > 237< / span > < / div >
< div class = "foldopen" id = "foldopen00238" data-start = "{" data-end = "}" >
< div class = "line" > < a id = "l00238" name = "l00238" > < / a > < span class = "lineno" > < a class = "line" href = "classgridfire_1_1_adaptive_engine_view.html#a4e856d6d4d2fc220952bbb7e6b2f85d9" > 238< / a > < / span > std::expected< std::unordered_map< Species, double> , < a class = "code hl_struct" href = "structgridfire_1_1expectations_1_1_stale_engine_error.html" > expectations::StaleEngineError< / a > > < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a4e856d6d4d2fc220952bbb7e6b2f85d9" > AdaptiveEngineView::getSpeciesTimescales< / a > (< / div >
< div class = "line" > < a id = "l00239" name = "l00239" > < / a > < span class = "lineno" > 239< / span > < span class = "keyword" > const< / span > std::vector< double> & Y_culled,< / div >
< div class = "line" > < a id = "l00240" name = "l00240" > < / a > < span class = "lineno" > 240< / span > < span class = "keyword" > const< / span > < span class = "keywordtype" > double< / span > T9,< / div >
< div class = "line" > < a id = "l00241" name = "l00241" > < / a > < span class = "lineno" > 241< / span > < span class = "keyword" > const< / span > < span class = "keywordtype" > double< / span > rho< / div >
< div class = "line" > < a id = "l00242" name = "l00242" > < / a > < span class = "lineno" > 242< / span > )< span class = "keyword" > const < / span > {< / div >
< div class = "line" > < a id = "l00243" name = "l00243" > < / a > < span class = "lineno" > 243< / span > < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#aedc0dedb51c81e03f253cc409a5d5c40" > validateState< / a > ();< / div >
< div class = "line" > < a id = "l00244" name = "l00244" > < / a > < span class = "lineno" > 244< / span > < span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > Y_full = < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a68695f056b660e91285b7e5a931612e1" > mapCulledToFull< / a > (Y_culled);< / div >
< div class = "line" > < a id = "l00245" name = "l00245" > < / a > < span class = "lineno" > 245< / span > < span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > result = < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a4d38b46be9f25c7afe7ddd2b284253f8" > m_baseEngine< / a > .getSpeciesTimescales(Y_full, T9, rho);< / div >
< div class = "line" > < a id = "l00246" name = "l00246" > < / a > < span class = "lineno" > 246< / span > < / div >
< div class = "line" > < a id = "l00247" name = "l00247" > < / a > < span class = "lineno" > 247< / span > < span class = "keywordflow" > if< / span > (!result) {< / div >
< div class = "line" > < a id = "l00248" name = "l00248" > < / a > < span class = "lineno" > 248< / span > < span class = "keywordflow" > return< / span > std::unexpected{result.error()};< / div >
< div class = "line" > < a id = "l00249" name = "l00249" > < / a > < span class = "lineno" > 249< / span > }< / div >
2025-07-01 11:40:51 -04:00
< div class = "line" > < a id = "l00250" name = "l00250" > < / a > < span class = "lineno" > 250< / span > < / div >
2025-07-24 11:10:45 -04:00
< div class = "line" > < a id = "l00251" name = "l00251" > < / a > < span class = "lineno" > 251< / span > < span class = "keyword" > const< / span > std::unordered_map< Species, double> fullTimescales = result.value();< / div >
< div class = "line" > < a id = "l00252" name = "l00252" > < / a > < span class = "lineno" > 252< / span > < / div >
< div class = "line" > < a id = "l00253" name = "l00253" > < / a > < span class = "lineno" > 253< / span > < / div >
< div class = "line" > < a id = "l00254" name = "l00254" > < / a > < span class = "lineno" > 254< / span > std::unordered_map< Species, double> culledTimescales;< / div >
< div class = "line" > < a id = "l00255" name = "l00255" > < / a > < span class = "lineno" > 255< / span > culledTimescales.reserve(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#af4bc9fc6e4afcd6a53c49ca6e2a95940" > m_activeSpecies< / a > .size());< / div >
< div class = "line" > < a id = "l00256" name = "l00256" > < / a > < span class = "lineno" > 256< / span > < span class = "keywordflow" > for< / span > (< span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > & active_species : < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#af4bc9fc6e4afcd6a53c49ca6e2a95940" > m_activeSpecies< / a > ) {< / div >
< div class = "line" > < a id = "l00257" name = "l00257" > < / a > < span class = "lineno" > 257< / span > < span class = "keywordflow" > if< / span > (fullTimescales.contains(active_species)) {< / div >
< div class = "line" > < a id = "l00258" name = "l00258" > < / a > < span class = "lineno" > 258< / span > culledTimescales[active_species] = fullTimescales.at(active_species);< / div >
< div class = "line" > < a id = "l00259" name = "l00259" > < / a > < span class = "lineno" > 259< / span > }< / div >
< div class = "line" > < a id = "l00260" name = "l00260" > < / a > < span class = "lineno" > 260< / span > }< / div >
< div class = "line" > < a id = "l00261" name = "l00261" > < / a > < span class = "lineno" > 261< / span > < span class = "keywordflow" > return< / span > culledTimescales;< / div >
< div class = "line" > < a id = "l00262" name = "l00262" > < / a > < span class = "lineno" > 262< / span > < / div >
< div class = "line" > < a id = "l00263" name = "l00263" > < / a > < span class = "lineno" > 263< / span > }< / div >
< / div >
< div class = "line" > < a id = "l00264" name = "l00264" > < / a > < span class = "lineno" > 264< / span > < / div >
< div class = "line" > < a id = "l00265" name = "l00265" > < / a > < span class = "lineno" > 265< / span > std::expected< std::unordered_map< fourdst::atomic::Species, double> , < a class = "code hl_struct" href = "structgridfire_1_1expectations_1_1_stale_engine_error.html" > expectations::StaleEngineError< / a > > < / div >
< div class = "foldopen" id = "foldopen00266" data-start = "{" data-end = "}" >
< div class = "line" > < a id = "l00266" name = "l00266" > < / a > < span class = "lineno" > < a class = "line" href = "classgridfire_1_1_adaptive_engine_view.html#a522e78bce9ff062939572248d57f8cea" > 266< / a > < / span > < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a522e78bce9ff062939572248d57f8cea" > AdaptiveEngineView::getSpeciesDestructionTimescales< / a > (< / div >
< div class = "line" > < a id = "l00267" name = "l00267" > < / a > < span class = "lineno" > 267< / span > < span class = "keyword" > const< / span > std::vector< double> & Y,< / div >
< div class = "line" > < a id = "l00268" name = "l00268" > < / a > < span class = "lineno" > 268< / span > < span class = "keywordtype" > double< / span > T9,< / div >
< div class = "line" > < a id = "l00269" name = "l00269" > < / a > < span class = "lineno" > 269< / span > < span class = "keywordtype" > double< / span > rho< / div >
< div class = "line" > < a id = "l00270" name = "l00270" > < / a > < span class = "lineno" > 270< / span > )< span class = "keyword" > const < / span > {< / div >
< div class = "line" > < a id = "l00271" name = "l00271" > < / a > < span class = "lineno" > 271< / span > < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#aedc0dedb51c81e03f253cc409a5d5c40" > validateState< / a > ();< / div >
< div class = "line" > < a id = "l00272" name = "l00272" > < / a > < span class = "lineno" > 272< / span > < / div >
< div class = "line" > < a id = "l00273" name = "l00273" > < / a > < span class = "lineno" > 273< / span > < span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > Y_full = < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a68695f056b660e91285b7e5a931612e1" > mapCulledToFull< / a > (Y);< / div >
< div class = "line" > < a id = "l00274" name = "l00274" > < / a > < span class = "lineno" > 274< / span > < span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > result = < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a4d38b46be9f25c7afe7ddd2b284253f8" > m_baseEngine< / a > .getSpeciesDestructionTimescales(Y_full, T9, rho);< / div >
2025-07-01 11:40:51 -04:00
< div class = "line" > < a id = "l00275" name = "l00275" > < / a > < span class = "lineno" > 275< / span > < / div >
2025-07-24 11:10:45 -04:00
< div class = "line" > < a id = "l00276" name = "l00276" > < / a > < span class = "lineno" > 276< / span > < span class = "keywordflow" > if< / span > (!result) {< / div >
< div class = "line" > < a id = "l00277" name = "l00277" > < / a > < span class = "lineno" > 277< / span > < span class = "keywordflow" > return< / span > std::unexpected{result.error()};< / div >
< div class = "line" > < a id = "l00278" name = "l00278" > < / a > < span class = "lineno" > 278< / span > }< / div >
< div class = "line" > < a id = "l00279" name = "l00279" > < / a > < span class = "lineno" > 279< / span > < / div >
< div class = "line" > < a id = "l00280" name = "l00280" > < / a > < span class = "lineno" > 280< / span > < span class = "keyword" > const< / span > std::unordered_map< Species, double> destructionTimescales = result.value();< / div >
< div class = "line" > < a id = "l00281" name = "l00281" > < / a > < span class = "lineno" > 281< / span > < / div >
< div class = "line" > < a id = "l00282" name = "l00282" > < / a > < span class = "lineno" > 282< / span > std::unordered_map< Species, double> culledTimescales;< / div >
< div class = "line" > < a id = "l00283" name = "l00283" > < / a > < span class = "lineno" > 283< / span > culledTimescales.reserve(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#af4bc9fc6e4afcd6a53c49ca6e2a95940" > m_activeSpecies< / a > .size());< / div >
< div class = "line" > < a id = "l00284" name = "l00284" > < / a > < span class = "lineno" > 284< / span > < span class = "keywordflow" > for< / span > (< span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > & active_species : < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#af4bc9fc6e4afcd6a53c49ca6e2a95940" > m_activeSpecies< / a > ) {< / div >
< div class = "line" > < a id = "l00285" name = "l00285" > < / a > < span class = "lineno" > 285< / span > < span class = "keywordflow" > if< / span > (destructionTimescales.contains(active_species)) {< / div >
< div class = "line" > < a id = "l00286" name = "l00286" > < / a > < span class = "lineno" > 286< / span > culledTimescales[active_species] = destructionTimescales.at(active_species);< / div >
< div class = "line" > < a id = "l00287" name = "l00287" > < / a > < span class = "lineno" > 287< / span > }< / div >
< div class = "line" > < a id = "l00288" name = "l00288" > < / a > < span class = "lineno" > 288< / span > }< / div >
< div class = "line" > < a id = "l00289" name = "l00289" > < / a > < span class = "lineno" > 289< / span > < span class = "keywordflow" > return< / span > culledTimescales;< / div >
< div class = "line" > < a id = "l00290" name = "l00290" > < / a > < span class = "lineno" > 290< / span > }< / div >
< / div >
< div class = "line" > < a id = "l00291" name = "l00291" > < / a > < span class = "lineno" > 291< / span > < / div >
< div class = "foldopen" id = "foldopen00292" data-start = "{" data-end = "}" >
< div class = "line" > < a id = "l00292" name = "l00292" > < / a > < span class = "lineno" > < a class = "line" href = "classgridfire_1_1_adaptive_engine_view.html#aae4ddbef1c4e2202fd236221a4bf376b" > 292< / a > < / span > < span class = "keywordtype" > void< / span > < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#aae4ddbef1c4e2202fd236221a4bf376b" > AdaptiveEngineView::setScreeningModel< / a > (< span class = "keyword" > const< / span > < a class = "code hl_enumeration" href = "namespacegridfire_1_1screening.html#aa82aafbc4f8c28d0a75b60798e3a7d25" > screening::ScreeningType< / a > model) {< / div >
< div class = "line" > < a id = "l00293" name = "l00293" > < / a > < span class = "lineno" > 293< / span > < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a4d38b46be9f25c7afe7ddd2b284253f8" > m_baseEngine< / a > .setScreeningModel(model);< / div >
< div class = "line" > < a id = "l00294" name = "l00294" > < / a > < span class = "lineno" > 294< / span > }< / div >
< / div >
< div class = "line" > < a id = "l00295" name = "l00295" > < / a > < span class = "lineno" > 295< / span > < / div >
< div class = "foldopen" id = "foldopen00296" data-start = "{" data-end = "}" >
< div class = "line" > < a id = "l00296" name = "l00296" > < / a > < span class = "lineno" > < a class = "line" href = "classgridfire_1_1_adaptive_engine_view.html#a0ab1199f900a58f309c3c36532c9164f" > 296< / a > < / span > < a class = "code hl_enumeration" href = "namespacegridfire_1_1screening.html#aa82aafbc4f8c28d0a75b60798e3a7d25" > screening::ScreeningType< / a > < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a0ab1199f900a58f309c3c36532c9164f" > AdaptiveEngineView::getScreeningModel< / a > ()< span class = "keyword" > const < / span > {< / div >
< div class = "line" > < a id = "l00297" name = "l00297" > < / a > < span class = "lineno" > 297< / span > < span class = "keywordflow" > return< / span > < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a4d38b46be9f25c7afe7ddd2b284253f8" > m_baseEngine< / a > .getScreeningModel();< / div >
< div class = "line" > < a id = "l00298" name = "l00298" > < / a > < span class = "lineno" > 298< / span > }< / div >
< / div >
< div class = "line" > < a id = "l00299" name = "l00299" > < / a > < span class = "lineno" > 299< / span > < / div >
< div class = "foldopen" id = "foldopen00300" data-start = "{" data-end = "}" >
< div class = "line" > < a id = "l00300" name = "l00300" > < / a > < span class = "lineno" > < a class = "line" href = "classgridfire_1_1_adaptive_engine_view.html#a7d0237956bf3ec7230bc51d88e7f8019" > 300< / a > < / span > std::vector< double> < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a7d0237956bf3ec7230bc51d88e7f8019" > AdaptiveEngineView::mapNetInToMolarAbundanceVector< / a > (< span class = "keyword" > const< / span > < a class = "code hl_struct" href = "structgridfire_1_1_net_in.html" > NetIn< / a > & netIn)< span class = "keyword" > const < / span > {< / div >
< div class = "line" > < a id = "l00301" name = "l00301" > < / a > < span class = "lineno" > 301< / span > std::vector< double> Y(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#af4bc9fc6e4afcd6a53c49ca6e2a95940" > m_activeSpecies< / a > .size(), 0.0); < span class = "comment" > // Initialize with zeros< / span > < / div >
< div class = "line" > < a id = "l00302" name = "l00302" > < / a > < span class = "lineno" > 302< / span > < span class = "keywordflow" > for< / span > (< span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > & [symbol, entry] : netIn.< a class = "code hl_variable" href = "structgridfire_1_1_net_in.html#a13058f4929e72c1187abbebcddb8aed1" > composition< / a > ) {< / div >
< div class = "line" > < a id = "l00303" name = "l00303" > < / a > < span class = "lineno" > 303< / span > Y[< a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a9055feb245524a5a9549ace935f059ff" > getSpeciesIndex< / a > (entry.isotope())] = netIn.< a class = "code hl_variable" href = "structgridfire_1_1_net_in.html#a13058f4929e72c1187abbebcddb8aed1" > composition< / a > .getMolarAbundance(symbol); < span class = "comment" > // Map species to their molar abundance< / span > < / div >
< div class = "line" > < a id = "l00304" name = "l00304" > < / a > < span class = "lineno" > 304< / span > }< / div >
< div class = "line" > < a id = "l00305" name = "l00305" > < / a > < span class = "lineno" > 305< / span > < span class = "keywordflow" > return< / span > Y; < span class = "comment" > // Return the vector of molar abundances< / span > < / div >
< div class = "line" > < a id = "l00306" name = "l00306" > < / a > < span class = "lineno" > 306< / span > }< / div >
< / div >
< div class = "line" > < a id = "l00307" name = "l00307" > < / a > < span class = "lineno" > 307< / span > < / div >
< div class = "foldopen" id = "foldopen00308" data-start = "{" data-end = "}" >
< div class = "line" > < a id = "l00308" name = "l00308" > < / a > < span class = "lineno" > < a class = "line" href = "classgridfire_1_1_adaptive_engine_view.html#a70005361262bc180d4417b608661e3c3" > 308< / a > < / span > < a class = "code hl_struct" href = "structgridfire_1_1_priming_report.html" > PrimingReport< / a > < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a70005361262bc180d4417b608661e3c3" > AdaptiveEngineView::primeEngine< / a > (< span class = "keyword" > const< / span > < a class = "code hl_struct" href = "structgridfire_1_1_net_in.html" > NetIn< / a > & netIn) {< / div >
< div class = "line" > < a id = "l00309" name = "l00309" > < / a > < span class = "lineno" > 309< / span > < span class = "keywordflow" > return< / span > < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a4d38b46be9f25c7afe7ddd2b284253f8" > m_baseEngine< / a > .primeEngine(netIn);< / div >
< div class = "line" > < a id = "l00310" name = "l00310" > < / a > < span class = "lineno" > 310< / span > }< / div >
< / div >
< div class = "line" > < a id = "l00311" name = "l00311" > < / a > < span class = "lineno" > 311< / span > < / div >
< div class = "foldopen" id = "foldopen00312" data-start = "{" data-end = "}" >
< div class = "line" > < a id = "l00312" name = "l00312" > < / a > < span class = "lineno" > < a class = "line" href = "classgridfire_1_1_adaptive_engine_view.html#a9055feb245524a5a9549ace935f059ff" > 312< / a > < / span > < span class = "keywordtype" > int< / span > < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a9055feb245524a5a9549ace935f059ff" > AdaptiveEngineView::getSpeciesIndex< / a > (< span class = "keyword" > const< / span > fourdst::atomic::Species & species)< span class = "keyword" > const < / span > {< / div >
< div class = "line" > < a id = "l00313" name = "l00313" > < / a > < span class = "lineno" > 313< / span > < span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > it = std::ranges::find(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#af4bc9fc6e4afcd6a53c49ca6e2a95940" > m_activeSpecies< / a > , species);< / div >
< div class = "line" > < a id = "l00314" name = "l00314" > < / a > < span class = "lineno" > 314< / span > < span class = "keywordflow" > if< / span > (it != < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#af4bc9fc6e4afcd6a53c49ca6e2a95940" > m_activeSpecies< / a > .end()) {< / div >
< div class = "line" > < a id = "l00315" name = "l00315" > < / a > < span class = "lineno" > 315< / span > < span class = "keywordflow" > return< / span > < span class = "keyword" > static_cast< < / span > < span class = "keywordtype" > int< / span > < span class = "keyword" > > < / span > (std::distance(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#af4bc9fc6e4afcd6a53c49ca6e2a95940" > m_activeSpecies< / a > .begin(), it));< / div >
< div class = "line" > < a id = "l00316" name = "l00316" > < / a > < span class = "lineno" > 316< / span > } < span class = "keywordflow" > else< / span > {< / div >
< div class = "line" > < a id = "l00317" name = "l00317" > < / a > < span class = "lineno" > 317< / span > LOG_ERROR(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > , < span class = "stringliteral" > " Species ' {}' not found in active species list." < / span > , species.name());< / div >
< div class = "line" > < a id = "l00318" name = "l00318" > < / a > < span class = "lineno" > 318< / span > < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > -> flush_log();< / div >
< div class = "line" > < a id = "l00319" name = "l00319" > < / a > < span class = "lineno" > 319< / span > < span class = "keywordflow" > throw< / span > std::runtime_error(< span class = "stringliteral" > " Species not found in active species list: " < / span > + std::string(species.name()));< / div >
< div class = "line" > < a id = "l00320" name = "l00320" > < / a > < span class = "lineno" > 320< / span > }< / div >
< div class = "line" > < a id = "l00321" name = "l00321" > < / a > < span class = "lineno" > 321< / span > }< / div >
< / div >
< div class = "line" > < a id = "l00322" name = "l00322" > < / a > < span class = "lineno" > 322< / span > < / div >
< div class = "foldopen" id = "foldopen00323" data-start = "{" data-end = "}" >
< div class = "line" > < a id = "l00323" name = "l00323" > < / a > < span class = "lineno" > < a class = "line" href = "classgridfire_1_1_adaptive_engine_view.html#a68695f056b660e91285b7e5a931612e1" > 323< / a > < / span > std::vector< double> < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a68695f056b660e91285b7e5a931612e1" > AdaptiveEngineView::mapCulledToFull< / a > (< span class = "keyword" > const< / span > std::vector< double> & culled)< span class = "keyword" > const < / span > {< / div >
< div class = "line" > < a id = "l00324" name = "l00324" > < / a > < span class = "lineno" > 324< / span > std::vector< double> full(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a4d38b46be9f25c7afe7ddd2b284253f8" > m_baseEngine< / a > .getNetworkSpecies().size(), 0.0);< / div >
< div class = "line" > < a id = "l00325" name = "l00325" > < / a > < span class = "lineno" > 325< / span > < span class = "keywordflow" > for< / span > (< span class = "keywordtype" > size_t< / span > i_culled = 0; i_culled < culled.size(); ++i_culled) {< / div >
< div class = "line" > < a id = "l00326" name = "l00326" > < / a > < span class = "lineno" > 326< / span > < span class = "keyword" > const< / span > < span class = "keywordtype" > size_t< / span > i_full = < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a5f66204a0ff5b27eed243afddecb0093" > m_speciesIndexMap< / a > [i_culled];< / div >
< div class = "line" > < a id = "l00327" name = "l00327" > < / a > < span class = "lineno" > 327< / span > full[i_full] += culled[i_culled];< / div >
< div class = "line" > < a id = "l00328" name = "l00328" > < / a > < span class = "lineno" > 328< / span > }< / div >
< div class = "line" > < a id = "l00329" name = "l00329" > < / a > < span class = "lineno" > 329< / span > < span class = "keywordflow" > return< / span > full;< / div >
< div class = "line" > < a id = "l00330" name = "l00330" > < / a > < span class = "lineno" > 330< / span > }< / div >
< / div >
< div class = "line" > < a id = "l00331" name = "l00331" > < / a > < span class = "lineno" > 331< / span > < / div >
< div class = "foldopen" id = "foldopen00332" data-start = "{" data-end = "}" >
< div class = "line" > < a id = "l00332" name = "l00332" > < / a > < span class = "lineno" > < a class = "line" href = "classgridfire_1_1_adaptive_engine_view.html#a3d9d8e862d1c2f0a8ba460c57f6a7f44" > 332< / a > < / span > std::vector< double> < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a3d9d8e862d1c2f0a8ba460c57f6a7f44" > AdaptiveEngineView::mapFullToCulled< / a > (< span class = "keyword" > const< / span > std::vector< double> & full)< span class = "keyword" > const < / span > {< / div >
< div class = "line" > < a id = "l00333" name = "l00333" > < / a > < span class = "lineno" > 333< / span > std::vector< double> culled(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#af4bc9fc6e4afcd6a53c49ca6e2a95940" > m_activeSpecies< / a > .size(), 0.0);< / div >
< div class = "line" > < a id = "l00334" name = "l00334" > < / a > < span class = "lineno" > 334< / span > < span class = "keywordflow" > for< / span > (< span class = "keywordtype" > size_t< / span > i_culled = 0; i_culled < < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#af4bc9fc6e4afcd6a53c49ca6e2a95940" > m_activeSpecies< / a > .size(); ++i_culled) {< / div >
< div class = "line" > < a id = "l00335" name = "l00335" > < / a > < span class = "lineno" > 335< / span > < span class = "keyword" > const< / span > < span class = "keywordtype" > size_t< / span > i_full = < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a5f66204a0ff5b27eed243afddecb0093" > m_speciesIndexMap< / a > [i_culled];< / div >
< div class = "line" > < a id = "l00336" name = "l00336" > < / a > < span class = "lineno" > 336< / span > culled[i_culled] = full[i_full];< / div >
2025-07-01 11:40:51 -04:00
< div class = "line" > < a id = "l00337" name = "l00337" > < / a > < span class = "lineno" > 337< / span > }< / div >
2025-07-24 11:10:45 -04:00
< div class = "line" > < a id = "l00338" name = "l00338" > < / a > < span class = "lineno" > 338< / span > < span class = "keywordflow" > return< / span > culled;< / div >
< div class = "line" > < a id = "l00339" name = "l00339" > < / a > < span class = "lineno" > 339< / span > }< / div >
< / div >
< div class = "line" > < a id = "l00340" name = "l00340" > < / a > < span class = "lineno" > 340< / span > < / div >
< div class = "foldopen" id = "foldopen00341" data-start = "{" data-end = "}" >
< div class = "line" > < a id = "l00341" name = "l00341" > < / a > < span class = "lineno" > < a class = "line" href = "classgridfire_1_1_adaptive_engine_view.html#a256d14a333f9401039b826cc889761a8" > 341< / a > < / span > < span class = "keywordtype" > size_t< / span > < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a256d14a333f9401039b826cc889761a8" > AdaptiveEngineView::mapCulledToFullSpeciesIndex< / a > (< span class = "keywordtype" > size_t< / span > culledSpeciesIndex)< span class = "keyword" > const < / span > {< / div >
< div class = "line" > < a id = "l00342" name = "l00342" > < / a > < span class = "lineno" > 342< / span > < span class = "keywordflow" > if< / span > (culledSpeciesIndex < 0 || culledSpeciesIndex > = < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a5f66204a0ff5b27eed243afddecb0093" > m_speciesIndexMap< / a > .size()) {< / div >
< div class = "line" > < a id = "l00343" name = "l00343" > < / a > < span class = "lineno" > 343< / span > LOG_ERROR(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > , < span class = "stringliteral" > " Culled index {} is out of bounds for species index map of size {}." < / span > , culledSpeciesIndex, < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a5f66204a0ff5b27eed243afddecb0093" > m_speciesIndexMap< / a > .size());< / div >
< div class = "line" > < a id = "l00344" name = "l00344" > < / a > < span class = "lineno" > 344< / span > < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > -> flush_log();< / div >
< div class = "line" > < a id = "l00345" name = "l00345" > < / a > < span class = "lineno" > 345< / span > < span class = "keywordflow" > throw< / span > std::out_of_range(< span class = "stringliteral" > " Culled index " < / span > + std::to_string(culledSpeciesIndex) + < span class = "stringliteral" > " is out of bounds for species index map of size " < / span > + std::to_string(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a5f66204a0ff5b27eed243afddecb0093" > m_speciesIndexMap< / a > .size()) + < span class = "stringliteral" > " ." < / span > );< / div >
< div class = "line" > < a id = "l00346" name = "l00346" > < / a > < span class = "lineno" > 346< / span > }< / div >
< div class = "line" > < a id = "l00347" name = "l00347" > < / a > < span class = "lineno" > 347< / span > < span class = "keywordflow" > return< / span > < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a5f66204a0ff5b27eed243afddecb0093" > m_speciesIndexMap< / a > [culledSpeciesIndex];< / div >
< div class = "line" > < a id = "l00348" name = "l00348" > < / a > < span class = "lineno" > 348< / span > }< / div >
< / div >
< div class = "line" > < a id = "l00349" name = "l00349" > < / a > < span class = "lineno" > 349< / span > < / div >
< div class = "foldopen" id = "foldopen00350" data-start = "{" data-end = "}" >
< div class = "line" > < a id = "l00350" name = "l00350" > < / a > < span class = "lineno" > < a class = "line" href = "classgridfire_1_1_adaptive_engine_view.html#a91e742642d8a8d9ec0620779927e5101" > 350< / a > < / span > < span class = "keywordtype" > size_t< / span > < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a91e742642d8a8d9ec0620779927e5101" > AdaptiveEngineView::mapCulledToFullReactionIndex< / a > (< span class = "keywordtype" > size_t< / span > culledReactionIndex)< span class = "keyword" > const < / span > {< / div >
< div class = "line" > < a id = "l00351" name = "l00351" > < / a > < span class = "lineno" > 351< / span > < span class = "keywordflow" > if< / span > (culledReactionIndex < 0 || culledReactionIndex > = < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a21c6e33bbf8c18fd5b5eaabb469054de" > m_reactionIndexMap< / a > .size()) {< / div >
< div class = "line" > < a id = "l00352" name = "l00352" > < / a > < span class = "lineno" > 352< / span > LOG_ERROR(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > , < span class = "stringliteral" > " Culled index {} is out of bounds for reaction index map of size {}." < / span > , culledReactionIndex, < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a21c6e33bbf8c18fd5b5eaabb469054de" > m_reactionIndexMap< / a > .size());< / div >
< div class = "line" > < a id = "l00353" name = "l00353" > < / a > < span class = "lineno" > 353< / span > < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > -> flush_log();< / div >
< div class = "line" > < a id = "l00354" name = "l00354" > < / a > < span class = "lineno" > 354< / span > < span class = "keywordflow" > throw< / span > std::out_of_range(< span class = "stringliteral" > " Culled index " < / span > + std::to_string(culledReactionIndex) + < span class = "stringliteral" > " is out of bounds for reaction index map of size " < / span > + std::to_string(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a21c6e33bbf8c18fd5b5eaabb469054de" > m_reactionIndexMap< / a > .size()) + < span class = "stringliteral" > " ." < / span > );< / div >
< div class = "line" > < a id = "l00355" name = "l00355" > < / a > < span class = "lineno" > 355< / span > }< / div >
< div class = "line" > < a id = "l00356" name = "l00356" > < / a > < span class = "lineno" > 356< / span > < span class = "keywordflow" > return< / span > < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a21c6e33bbf8c18fd5b5eaabb469054de" > m_reactionIndexMap< / a > [culledReactionIndex];< / div >
< div class = "line" > < a id = "l00357" name = "l00357" > < / a > < span class = "lineno" > 357< / span > }< / div >
< / div >
< div class = "line" > < a id = "l00358" name = "l00358" > < / a > < span class = "lineno" > 358< / span > < / div >
< div class = "foldopen" id = "foldopen00359" data-start = "{" data-end = "}" >
< div class = "line" > < a id = "l00359" name = "l00359" > < / a > < span class = "lineno" > < a class = "line" href = "classgridfire_1_1_adaptive_engine_view.html#aedc0dedb51c81e03f253cc409a5d5c40" > 359< / a > < / span > < span class = "keywordtype" > void< / span > < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#aedc0dedb51c81e03f253cc409a5d5c40" > AdaptiveEngineView::validateState< / a > ()< span class = "keyword" > const < / span > {< / div >
< div class = "line" > < a id = "l00360" name = "l00360" > < / a > < span class = "lineno" > 360< / span > < span class = "keywordflow" > if< / span > (< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a63580db57e0f48f508906a11ccfd465e" > m_isStale< / a > ) {< / div >
< div class = "line" > < a id = "l00361" name = "l00361" > < / a > < span class = "lineno" > 361< / span > LOG_ERROR(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > , < span class = "stringliteral" > " AdaptiveEngineView is stale. Please call update() before calculating RHS and energy." < / span > );< / div >
< div class = "line" > < a id = "l00362" name = "l00362" > < / a > < span class = "lineno" > 362< / span > < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > -> flush_log();< / div >
< div class = "line" > < a id = "l00363" name = "l00363" > < / a > < span class = "lineno" > 363< / span > < span class = "keywordflow" > throw< / span > std::runtime_error(< span class = "stringliteral" > " AdaptiveEngineView is stale. Please call update() before calculating RHS and energy." < / span > );< / div >
< div class = "line" > < a id = "l00364" name = "l00364" > < / a > < span class = "lineno" > 364< / span > }< / div >
< div class = "line" > < a id = "l00365" name = "l00365" > < / a > < span class = "lineno" > 365< / span > }< / div >
< / div >
< div class = "line" > < a id = "l00366" name = "l00366" > < / a > < span class = "lineno" > 366< / span > < / div >
< div class = "line" > < a id = "l00367" name = "l00367" > < / a > < span class = "lineno" > 367< / span > < span class = "comment" > // TODO: Change this to use a return value instead of an output parameter.< / span > < / div >
< div class = "foldopen" id = "foldopen00368" data-start = "{" data-end = "}" >
< div class = "line" > < a id = "l00368" name = "l00368" > < / a > < span class = "lineno" > < a class = "line" href = "classgridfire_1_1_adaptive_engine_view.html#abdbaf4b87629efe43ac1255dad424c0c" > 368< / a > < / span > std::vector< AdaptiveEngineView::ReactionFlow> < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#abdbaf4b87629efe43ac1255dad424c0c" > AdaptiveEngineView::calculateAllReactionFlows< / a > (< / div >
< div class = "line" > < a id = "l00369" name = "l00369" > < / a > < span class = "lineno" > 369< / span > < span class = "keyword" > const< / span > < a class = "code hl_struct" href = "structgridfire_1_1_net_in.html" > NetIn< / a > & netIn,< / div >
< div class = "line" > < a id = "l00370" name = "l00370" > < / a > < span class = "lineno" > 370< / span > std::vector< double> & out_Y_Full< / div >
< div class = "line" > < a id = "l00371" name = "l00371" > < / a > < span class = "lineno" > 371< / span > )< span class = "keyword" > const < / span > {< / div >
< div class = "line" > < a id = "l00372" name = "l00372" > < / a > < span class = "lineno" > 372< / span > < span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > & fullSpeciesList = < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a4d38b46be9f25c7afe7ddd2b284253f8" > m_baseEngine< / a > .getNetworkSpecies();< / div >
< div class = "line" > < a id = "l00373" name = "l00373" > < / a > < span class = "lineno" > 373< / span > out_Y_Full.clear();< / div >
< div class = "line" > < a id = "l00374" name = "l00374" > < / a > < span class = "lineno" > 374< / span > out_Y_Full.reserve(fullSpeciesList.size());< / div >
< div class = "line" > < a id = "l00375" name = "l00375" > < / a > < span class = "lineno" > 375< / span > < / div >
< div class = "line" > < a id = "l00376" name = "l00376" > < / a > < span class = "lineno" > 376< / span > < span class = "keywordflow" > for< / span > (< span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > & species: fullSpeciesList) {< / div >
< div class = "line" > < a id = "l00377" name = "l00377" > < / a > < span class = "lineno" > 377< / span > < span class = "keywordflow" > if< / span > (netIn.< a class = "code hl_variable" href = "structgridfire_1_1_net_in.html#a13058f4929e72c1187abbebcddb8aed1" > composition< / a > .contains(species)) {< / div >
< div class = "line" > < a id = "l00378" name = "l00378" > < / a > < span class = "lineno" > 378< / span > out_Y_Full.push_back(netIn.< a class = "code hl_variable" href = "structgridfire_1_1_net_in.html#a13058f4929e72c1187abbebcddb8aed1" > composition< / a > .getMolarAbundance(std::string(species.name())));< / div >
< div class = "line" > < a id = "l00379" name = "l00379" > < / a > < span class = "lineno" > 379< / span > } < span class = "keywordflow" > else< / span > {< / div >
< div class = "line" > < a id = "l00380" name = "l00380" > < / a > < span class = "lineno" > 380< / span > LOG_TRACE_L2(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > , < span class = "stringliteral" > " Species ' {}' not found in composition. Setting abundance to 0.0." < / span > , species.name());< / div >
< div class = "line" > < a id = "l00381" name = "l00381" > < / a > < span class = "lineno" > 381< / span > out_Y_Full.push_back(0.0);< / div >
< div class = "line" > < a id = "l00382" name = "l00382" > < / a > < span class = "lineno" > 382< / span > }< / div >
< div class = "line" > < a id = "l00383" name = "l00383" > < / a > < span class = "lineno" > 383< / span > }< / div >
2025-07-01 11:40:51 -04:00
< div class = "line" > < a id = "l00384" name = "l00384" > < / a > < span class = "lineno" > 384< / span > < / div >
2025-07-24 11:10:45 -04:00
< div class = "line" > < a id = "l00385" name = "l00385" > < / a > < span class = "lineno" > 385< / span > < span class = "keyword" > const< / span > < span class = "keywordtype" > double< / span > T9 = netIn.< a class = "code hl_variable" href = "structgridfire_1_1_net_in.html#a5be0f5195a5cd1dd177b9fc5ab83a7be" > temperature< / a > / 1e9; < span class = "comment" > // Convert temperature from Kelvin to T9 (T9 = T / 1e9)< / span > < / div >
< div class = "line" > < a id = "l00386" name = "l00386" > < / a > < span class = "lineno" > 386< / span > < span class = "keyword" > const< / span > < span class = "keywordtype" > double< / span > rho = netIn.< a class = "code hl_variable" href = "structgridfire_1_1_net_in.html#a06f0dff9f8927b7cf2da3004c8fa1577" > density< / a > ; < span class = "comment" > // Density in g/cm^3< / span > < / div >
< div class = "line" > < a id = "l00387" name = "l00387" > < / a > < span class = "lineno" > 387< / span > < / div >
< div class = "line" > < a id = "l00388" name = "l00388" > < / a > < span class = "lineno" > 388< / span > std::vector< ReactionFlow> reactionFlows;< / div >
< div class = "line" > < a id = "l00389" name = "l00389" > < / a > < span class = "lineno" > 389< / span > < span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > & fullReactionSet = < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a4d38b46be9f25c7afe7ddd2b284253f8" > m_baseEngine< / a > .getNetworkReactions();< / div >
< div class = "line" > < a id = "l00390" name = "l00390" > < / a > < span class = "lineno" > 390< / span > reactionFlows.reserve(fullReactionSet.size());< / div >
< div class = "line" > < a id = "l00391" name = "l00391" > < / a > < span class = "lineno" > 391< / 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 > : fullReactionSet) {< / div >
< div class = "line" > < a id = "l00392" name = "l00392" > < / a > < span class = "lineno" > 392< / span > < span class = "keyword" > const< / span > < span class = "keywordtype" > double< / span > flow = < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a4d38b46be9f25c7afe7ddd2b284253f8" > m_baseEngine< / a > .calculateMolarReactionFlow(< a class = "code hl_namespace" href = "namespacegridfire_1_1reaction.html" > reaction< / a > , out_Y_Full, T9, rho);< / div >
< div class = "line" > < a id = "l00393" name = "l00393" > < / a > < span class = "lineno" > 393< / span > reactionFlows.push_back({& < a class = "code hl_namespace" href = "namespacegridfire_1_1reaction.html" > reaction< / a > , flow});< / div >
< div class = "line" > < a id = "l00394" name = "l00394" > < / a > < span class = "lineno" > 394< / span > LOG_TRACE_L1(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > , < span class = "stringliteral" > " Reaction ' {}' has flow rate: {:0.3E} [mol/s/g]" < / span > , < a class = "code hl_namespace" href = "namespacegridfire_1_1reaction.html" > reaction< / a > .id(), flow);< / div >
< div class = "line" > < a id = "l00395" name = "l00395" > < / a > < span class = "lineno" > 395< / span > }< / div >
< div class = "line" > < a id = "l00396" name = "l00396" > < / a > < span class = "lineno" > 396< / span > < span class = "keywordflow" > return< / span > reactionFlows;< / div >
< div class = "line" > < a id = "l00397" name = "l00397" > < / a > < span class = "lineno" > 397< / span > }< / div >
< / div >
< div class = "line" > < a id = "l00398" name = "l00398" > < / a > < span class = "lineno" > 398< / span > < / div >
< div class = "foldopen" id = "foldopen00399" data-start = "{" data-end = "}" >
< div class = "line" > < a id = "l00399" name = "l00399" > < / a > < span class = "lineno" > < a class = "line" href = "classgridfire_1_1_adaptive_engine_view.html#a0ed21f7e7c1034fc87b40d4116c4221b" > 399< / a > < / span > std::unordered_set< Species> < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a0ed21f7e7c1034fc87b40d4116c4221b" > AdaptiveEngineView::findReachableSpecies< / a > (< / div >
< div class = "line" > < a id = "l00400" name = "l00400" > < / a > < span class = "lineno" > 400< / span > < span class = "keyword" > const< / span > < a class = "code hl_struct" href = "structgridfire_1_1_net_in.html" > NetIn< / a > & netIn< / div >
< div class = "line" > < a id = "l00401" name = "l00401" > < / a > < span class = "lineno" > 401< / span > )< span class = "keyword" > const < / span > {< / div >
< div class = "line" > < a id = "l00402" name = "l00402" > < / a > < span class = "lineno" > 402< / span > std::unordered_set< Species> reachable;< / div >
< div class = "line" > < a id = "l00403" name = "l00403" > < / a > < span class = "lineno" > 403< / span > std::queue< Species> to_vist;< / div >
< div class = "line" > < a id = "l00404" name = "l00404" > < / a > < span class = "lineno" > 404< / span > < / div >
< div class = "line" > < a id = "l00405" name = "l00405" > < / a > < span class = "lineno" > 405< / span > < span class = "keyword" > constexpr< / span > < span class = "keywordtype" > double< / span > ABUNDANCE_FLOOR = 1e-12; < span class = "comment" > // Abundance floor for a species to be considered part of the initial fuel< / span > < / div >
< div class = "line" > < a id = "l00406" name = "l00406" > < / a > < span class = "lineno" > 406< / span > < span class = "keywordflow" > for< / span > (< span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > & species: < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a4d38b46be9f25c7afe7ddd2b284253f8" > m_baseEngine< / a > .getNetworkSpecies()) {< / div >
< div class = "line" > < a id = "l00407" name = "l00407" > < / a > < span class = "lineno" > 407< / span > < span class = "keywordflow" > if< / span > (netIn.< a class = "code hl_variable" href = "structgridfire_1_1_net_in.html#a13058f4929e72c1187abbebcddb8aed1" > composition< / a > .contains(species) & & netIn.< a class = "code hl_variable" href = "structgridfire_1_1_net_in.html#a13058f4929e72c1187abbebcddb8aed1" > composition< / a > .getMassFraction(std::string(species.name())) > ABUNDANCE_FLOOR) {< / div >
< div class = "line" > < a id = "l00408" name = "l00408" > < / a > < span class = "lineno" > 408< / span > < span class = "keywordflow" > if< / span > (!reachable.contains(species)) {< / div >
< div class = "line" > < a id = "l00409" name = "l00409" > < / a > < span class = "lineno" > 409< / span > to_vist.push(species);< / div >
< div class = "line" > < a id = "l00410" name = "l00410" > < / a > < span class = "lineno" > 410< / span > reachable.insert(species);< / div >
< div class = "line" > < a id = "l00411" name = "l00411" > < / a > < span class = "lineno" > 411< / span > LOG_TRACE_L2(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > , < span class = "stringliteral" > " Network Connectivity Analysis: Species ' {}' is part of the initial fuel." < / span > , species.name());< / div >
< div class = "line" > < a id = "l00412" name = "l00412" > < / a > < span class = "lineno" > 412< / span > }< / div >
< div class = "line" > < a id = "l00413" name = "l00413" > < / a > < span class = "lineno" > 413< / span > }< / div >
< div class = "line" > < a id = "l00414" name = "l00414" > < / a > < span class = "lineno" > 414< / span > }< / div >
< div class = "line" > < a id = "l00415" name = "l00415" > < / a > < span class = "lineno" > 415< / span > < / div >
< div class = "line" > < a id = "l00416" name = "l00416" > < / a > < span class = "lineno" > 416< / span > < span class = "keywordtype" > bool< / span > new_species_found_in_pass = < span class = "keyword" > true< / span > ;< / div >
< div class = "line" > < a id = "l00417" name = "l00417" > < / a > < span class = "lineno" > 417< / span > < span class = "keywordflow" > while< / span > (new_species_found_in_pass) {< / div >
< div class = "line" > < a id = "l00418" name = "l00418" > < / a > < span class = "lineno" > 418< / span > new_species_found_in_pass = < span class = "keyword" > false< / span > ;< / div >
< div class = "line" > < a id = "l00419" name = "l00419" > < / a > < span class = "lineno" > 419< / 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 > : < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a4d38b46be9f25c7afe7ddd2b284253f8" > m_baseEngine< / a > .getNetworkReactions()) {< / div >
< div class = "line" > < a id = "l00420" name = "l00420" > < / a > < span class = "lineno" > 420< / span > < span class = "keywordtype" > bool< / span > all_reactants_reachable = < span class = "keyword" > true< / span > ;< / div >
< div class = "line" > < a id = "l00421" name = "l00421" > < / a > < span class = "lineno" > 421< / span > < span class = "keywordflow" > for< / span > (< span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > & reactant: < a class = "code hl_namespace" href = "namespacegridfire_1_1reaction.html" > reaction< / a > .reactants()) {< / div >
< div class = "line" > < a id = "l00422" name = "l00422" > < / a > < span class = "lineno" > 422< / span > < span class = "keywordflow" > if< / span > (!reachable.contains(reactant)) {< / div >
< div class = "line" > < a id = "l00423" name = "l00423" > < / a > < span class = "lineno" > 423< / span > all_reactants_reachable = < span class = "keyword" > false< / span > ;< / div >
< div class = "line" > < a id = "l00424" name = "l00424" > < / a > < span class = "lineno" > 424< / span > < span class = "keywordflow" > break< / span > ;< / div >
< div class = "line" > < a id = "l00425" name = "l00425" > < / a > < span class = "lineno" > 425< / span > }< / div >
< div class = "line" > < a id = "l00426" name = "l00426" > < / a > < span class = "lineno" > 426< / span > }< / div >
< div class = "line" > < a id = "l00427" name = "l00427" > < / a > < span class = "lineno" > 427< / span > < span class = "keywordflow" > if< / span > (all_reactants_reachable) {< / div >
< div class = "line" > < a id = "l00428" name = "l00428" > < / a > < span class = "lineno" > 428< / span > < span class = "keywordflow" > for< / span > (< span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > & product: < a class = "code hl_namespace" href = "namespacegridfire_1_1reaction.html" > reaction< / a > .products()) {< / div >
< div class = "line" > < a id = "l00429" name = "l00429" > < / a > < span class = "lineno" > 429< / span > < span class = "keywordflow" > if< / span > (!reachable.contains(product)) {< / div >
< div class = "line" > < a id = "l00430" name = "l00430" > < / a > < span class = "lineno" > 430< / span > reachable.insert(product);< / div >
< div class = "line" > < a id = "l00431" name = "l00431" > < / a > < span class = "lineno" > 431< / span > new_species_found_in_pass = < span class = "keyword" > true< / span > ;< / div >
< div class = "line" > < a id = "l00432" name = "l00432" > < / a > < span class = "lineno" > 432< / span > LOG_TRACE_L2(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > , < span class = "stringliteral" > " Network Connectivity Analysis: Species ' {}' is reachable via reaction ' {}' ." < / span > , product.name(), < a class = "code hl_namespace" href = "namespacegridfire_1_1reaction.html" > reaction< / a > .id());< / div >
< div class = "line" > < a id = "l00433" name = "l00433" > < / a > < span class = "lineno" > 433< / span > }< / div >
< div class = "line" > < a id = "l00434" name = "l00434" > < / a > < span class = "lineno" > 434< / span > }< / div >
< div class = "line" > < a id = "l00435" name = "l00435" > < / a > < span class = "lineno" > 435< / span > }< / div >
< div class = "line" > < a id = "l00436" name = "l00436" > < / a > < span class = "lineno" > 436< / span > }< / div >
< div class = "line" > < a id = "l00437" name = "l00437" > < / a > < span class = "lineno" > 437< / span > }< / div >
< div class = "line" > < a id = "l00438" name = "l00438" > < / a > < span class = "lineno" > 438< / span > < / div >
< div class = "line" > < a id = "l00439" name = "l00439" > < / a > < span class = "lineno" > 439< / span > < span class = "keywordflow" > return< / span > reachable;< / div >
< div class = "line" > < a id = "l00440" name = "l00440" > < / a > < span class = "lineno" > 440< / span > }< / div >
< / div >
< div class = "line" > < a id = "l00441" name = "l00441" > < / a > < span class = "lineno" > 441< / span > < / div >
< div class = "foldopen" id = "foldopen00442" data-start = "{" data-end = "}" >
< div class = "line" > < a id = "l00442" name = "l00442" > < / a > < span class = "lineno" > < a class = "line" href = "classgridfire_1_1_adaptive_engine_view.html#a42417e96fe9fd623458af109401daf08" > 442< / a > < / span > std::vector< const reaction::LogicalReaction *> < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a42417e96fe9fd623458af109401daf08" > AdaptiveEngineView::cullReactionsByFlow< / a > (< / div >
< div class = "line" > < a id = "l00443" name = "l00443" > < / a > < span class = "lineno" > 443< / span > < span class = "keyword" > const< / span > std::vector< ReactionFlow> & allFlows,< / div >
< div class = "line" > < a id = "l00444" name = "l00444" > < / a > < span class = "lineno" > 444< / span > < span class = "keyword" > const< / span > std::unordered_set< fourdst::atomic::Species> & reachableSpecies,< / div >
< div class = "line" > < a id = "l00445" name = "l00445" > < / a > < span class = "lineno" > 445< / span > < span class = "keyword" > const< / span > std::vector< double> & Y_full,< / div >
< div class = "line" > < a id = "l00446" name = "l00446" > < / a > < span class = "lineno" > 446< / span > < span class = "keyword" > const< / span > < span class = "keywordtype" > double< / span > maxFlow< / div >
< div class = "line" > < a id = "l00447" name = "l00447" > < / a > < span class = "lineno" > 447< / span > )< span class = "keyword" > const < / span > {< / div >
< div class = "line" > < a id = "l00448" name = "l00448" > < / a > < span class = "lineno" > 448< / span > LOG_TRACE_L1(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > , < span class = "stringliteral" > " Culling reactions based on flow rates..." < / span > );< / div >
< div class = "line" > < a id = "l00449" name = "l00449" > < / a > < span class = "lineno" > 449< / span > < span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > relative_culling_threshold = < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a14171a9ccc45a63996a967c72983de30" > m_config< / a > .get< < span class = "keywordtype" > double< / span > > (< span class = "stringliteral" > " gridfire:AdaptiveEngineView:RelativeCullingThreshold" < / span > , 1e-75);< / div >
< div class = "line" > < a id = "l00450" name = "l00450" > < / a > < span class = "lineno" > 450< / span > < span class = "keywordtype" > double< / span > absoluteCullingThreshold = relative_culling_threshold * maxFlow;< / div >
< div class = "line" > < a id = "l00451" name = "l00451" > < / a > < span class = "lineno" > 451< / span > LOG_DEBUG(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > , < span class = "stringliteral" > " Relative culling threshold: {:0.3E} ({})" < / span > , relative_culling_threshold, absoluteCullingThreshold);< / div >
< div class = "line" > < a id = "l00452" name = "l00452" > < / a > < span class = "lineno" > 452< / span > std::vector< const reaction::LogicalReaction*> culledReactions;< / div >
< div class = "line" > < a id = "l00453" name = "l00453" > < / a > < span class = "lineno" > 453< / span > < span class = "keywordflow" > for< / span > (< span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > & [reactionPtr, flowRate]: allFlows) {< / div >
< div class = "line" > < a id = "l00454" name = "l00454" > < / a > < span class = "lineno" > 454< / span > < span class = "keywordtype" > bool< / span > keepReaction = < span class = "keyword" > false< / span > ;< / div >
< div class = "line" > < a id = "l00455" name = "l00455" > < / a > < span class = "lineno" > 455< / span > < span class = "keywordflow" > if< / span > (flowRate > absoluteCullingThreshold) {< / div >
< div class = "line" > < a id = "l00456" name = "l00456" > < / a > < span class = "lineno" > 456< / span > LOG_TRACE_L2(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > , < span class = "stringliteral" > " Maintaining reaction ' {}' with relative (abs) flow rate: {:0.3E} ({:0.3E} [mol/s])" < / span > , reactionPtr-> id(), flowRate/maxFlow, flowRate);< / div >
< div class = "line" > < a id = "l00457" name = "l00457" > < / a > < span class = "lineno" > 457< / span > keepReaction = < span class = "keyword" > true< / span > ;< / div >
< div class = "line" > < a id = "l00458" name = "l00458" > < / a > < span class = "lineno" > 458< / span > } < span class = "keywordflow" > else< / span > {< / div >
< div class = "line" > < a id = "l00459" name = "l00459" > < / a > < span class = "lineno" > 459< / span > < span class = "keywordtype" > bool< / span > zero_flow_due_to_reachable_reactants = < span class = "keyword" > false< / span > ;< / div >
< div class = "line" > < a id = "l00460" name = "l00460" > < / a > < span class = "lineno" > 460< / span > < span class = "keywordflow" > if< / span > (flowRate < 1e-99 & & flowRate > 0.0) {< / div >
< div class = "line" > < a id = "l00461" name = "l00461" > < / a > < span class = "lineno" > 461< / span > < span class = "keywordflow" > for< / span > (< span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > & reactant: reactionPtr-> reactants()) {< / div >
< div class = "line" > < a id = "l00462" name = "l00462" > < / a > < span class = "lineno" > 462< / span > < span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > it = std::ranges::find(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a4d38b46be9f25c7afe7ddd2b284253f8" > m_baseEngine< / a > .getNetworkSpecies(), reactant);< / div >
< div class = "line" > < a id = "l00463" name = "l00463" > < / a > < span class = "lineno" > 463< / span > < span class = "keyword" > const< / span > < span class = "keywordtype" > size_t< / span > index = std::distance(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a4d38b46be9f25c7afe7ddd2b284253f8" > m_baseEngine< / a > .getNetworkSpecies().begin(), it);< / div >
< div class = "line" > < a id = "l00464" name = "l00464" > < / a > < span class = "lineno" > 464< / span > < span class = "keywordflow" > if< / span > (Y_full[index] < 1e-99 & & reachableSpecies.contains(reactant)) {< / div >
< div class = "line" > < a id = "l00465" name = "l00465" > < / a > < span class = "lineno" > 465< / span > LOG_TRACE_L1(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > , < span class = "stringliteral" > " Maintaining reaction ' {}' with low flow ({:0.3E} [mol/s/g]) due to reachable reactant ' {}' ." < / span > , reactionPtr-> id(), flowRate, reactant.name());< / div >
< div class = "line" > < a id = "l00466" name = "l00466" > < / a > < span class = "lineno" > 466< / span > zero_flow_due_to_reachable_reactants = < span class = "keyword" > true< / span > ;< / div >
< div class = "line" > < a id = "l00467" name = "l00467" > < / a > < span class = "lineno" > 467< / span > < span class = "keywordflow" > break< / span > ;< / div >
< div class = "line" > < a id = "l00468" name = "l00468" > < / a > < span class = "lineno" > 468< / span > }< / div >
< div class = "line" > < a id = "l00469" name = "l00469" > < / a > < span class = "lineno" > 469< / span > }< / div >
< div class = "line" > < a id = "l00470" name = "l00470" > < / a > < span class = "lineno" > 470< / span > }< / div >
< div class = "line" > < a id = "l00471" name = "l00471" > < / a > < span class = "lineno" > 471< / span > < span class = "keywordflow" > if< / span > (zero_flow_due_to_reachable_reactants) {< / div >
< div class = "line" > < a id = "l00472" name = "l00472" > < / a > < span class = "lineno" > 472< / span > keepReaction = < span class = "keyword" > true< / span > ;< / div >
< div class = "line" > < a id = "l00473" name = "l00473" > < / a > < span class = "lineno" > 473< / span > }< / div >
< div class = "line" > < a id = "l00474" name = "l00474" > < / a > < span class = "lineno" > 474< / span > }< / div >
< div class = "line" > < a id = "l00475" name = "l00475" > < / a > < span class = "lineno" > 475< / span > < span class = "keywordflow" > if< / span > (keepReaction) {< / div >
< div class = "line" > < a id = "l00476" name = "l00476" > < / a > < span class = "lineno" > 476< / span > culledReactions.push_back(reactionPtr);< / div >
< div class = "line" > < a id = "l00477" name = "l00477" > < / a > < span class = "lineno" > 477< / span > } < span class = "keywordflow" > else< / span > {< / div >
< div class = "line" > < a id = "l00478" name = "l00478" > < / a > < span class = "lineno" > 478< / span > LOG_TRACE_L1(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > , < span class = "stringliteral" > " Culling reaction ' {}' due to low flow rate or lack of connectivity." < / span > , reactionPtr-> id());< / div >
< div class = "line" > < a id = "l00479" name = "l00479" > < / a > < span class = "lineno" > 479< / span > }< / div >
< div class = "line" > < a id = "l00480" name = "l00480" > < / a > < span class = "lineno" > 480< / span > }< / div >
< div class = "line" > < a id = "l00481" name = "l00481" > < / a > < span class = "lineno" > 481< / span > LOG_DEBUG(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > , < span class = "stringliteral" > " Selected {} (total: {}, culled: {}) reactions based on flow rates." < / span > , culledReactions.size(), allFlows.size(), allFlows.size() - culledReactions.size());< / div >
< div class = "line" > < a id = "l00482" name = "l00482" > < / a > < span class = "lineno" > 482< / span > < span class = "keywordflow" > return< / span > culledReactions;< / div >
< div class = "line" > < a id = "l00483" name = "l00483" > < / a > < span class = "lineno" > 483< / span > }< / div >
< / div >
< div class = "line" > < a id = "l00484" name = "l00484" > < / a > < span class = "lineno" > 484< / span > < / div >
< div class = "foldopen" id = "foldopen00485" data-start = "{" data-end = "}" >
< div class = "line" > < a id = "l00485" name = "l00485" > < / a > < span class = "lineno" > < a class = "line" href = "classgridfire_1_1_adaptive_engine_view.html#a823c665ba89452aa2b3d5422fa5d313f" > 485< / a > < / span > < a class = "code hl_typedef" href = "classgridfire_1_1_adaptive_engine_view.html#a4ff60b5214ec0bdaf683feb6615573a5" > AdaptiveEngineView::RescueSet< / a > < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#a823c665ba89452aa2b3d5422fa5d313f" > AdaptiveEngineView::rescueEdgeSpeciesDestructionChannel< / a > (< / div >
< div class = "line" > < a id = "l00486" name = "l00486" > < / a > < span class = "lineno" > 486< / span > < span class = "keyword" > const< / span > std::vector< double> & Y_full,< / div >
< div class = "line" > < a id = "l00487" name = "l00487" > < / a > < span class = "lineno" > 487< / span > < span class = "keyword" > const< / span > < span class = "keywordtype" > double< / span > T9,< / div >
< div class = "line" > < a id = "l00488" name = "l00488" > < / a > < span class = "lineno" > 488< / span > < span class = "keyword" > const< / span > < span class = "keywordtype" > double< / span > rho,< / div >
< div class = "line" > < a id = "l00489" name = "l00489" > < / a > < span class = "lineno" > 489< / span > < span class = "keyword" > const< / span > std::vector< Species> & activeSpecies,< / div >
< div class = "line" > < a id = "l00490" name = "l00490" > < / a > < span class = "lineno" > 490< / span > < span class = "keyword" > const< / span > < a class = "code hl_typedef" href = "namespacegridfire_1_1reaction.html#aa86f08712565f278adacc7cd2361eb31" > reaction::LogicalReactionSet< / a > & activeReactions< / div >
< div class = "line" > < a id = "l00491" name = "l00491" > < / a > < span class = "lineno" > 491< / span > )< span class = "keyword" > const < / span > {< / div >
< div class = "line" > < a id = "l00492" name = "l00492" > < / a > < span class = "lineno" > 492< / span > < span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > result = < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a4d38b46be9f25c7afe7ddd2b284253f8" > m_baseEngine< / a > .getSpeciesTimescales(Y_full, T9, rho);< / div >
< div class = "line" > < a id = "l00493" name = "l00493" > < / a > < span class = "lineno" > 493< / span > < span class = "keywordflow" > if< / span > (!result) {< / div >
< div class = "line" > < a id = "l00494" name = "l00494" > < / a > < span class = "lineno" > 494< / span > LOG_ERROR(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > , < span class = "stringliteral" > " Failed to get species timescales due to stale engine state." < / span > );< / div >
< div class = "line" > < a id = "l00495" name = "l00495" > < / a > < span class = "lineno" > 495< / span > < span class = "keywordflow" > throw< / span > < a class = "code hl_class" href = "classgridfire_1_1exceptions_1_1_stale_engine_error.html" > exceptions::StaleEngineError< / a > (< span class = "stringliteral" > " Failed to get species timescales" < / span > );< / div >
< div class = "line" > < a id = "l00496" name = "l00496" > < / a > < span class = "lineno" > 496< / span > }< / div >
< div class = "line" > < a id = "l00497" name = "l00497" > < / a > < span class = "lineno" > 497< / span > std::unordered_map< Species, double> timescales = result.value();< / div >
< div class = "line" > < a id = "l00498" name = "l00498" > < / a > < span class = "lineno" > 498< / span > std::set< Species> onlyProducedSpecies;< / div >
< div class = "line" > < a id = "l00499" name = "l00499" > < / a > < span class = "lineno" > 499< / 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 > : activeReactions) {< / div >
< div class = "line" > < a id = "l00500" name = "l00500" > < / a > < span class = "lineno" > 500< / span > < span class = "keyword" > const< / span > std::vector< Species> products = < a class = "code hl_namespace" href = "namespacegridfire_1_1reaction.html" > reaction< / a > .products();< / div >
< div class = "line" > < a id = "l00501" name = "l00501" > < / a > < span class = "lineno" > 501< / span > onlyProducedSpecies.insert(products.begin(), products.end());< / div >
< div class = "line" > < a id = "l00502" name = "l00502" > < / a > < span class = "lineno" > 502< / span > }< / div >
< div class = "line" > < a id = "l00503" name = "l00503" > < / a > < span class = "lineno" > 503< / span > < / div >
< div class = "line" > < a id = "l00504" name = "l00504" > < / a > < span class = "lineno" > 504< / span > < span class = "comment" > // Remove species that are consumed by any one of the active reactions.< / span > < / div >
< div class = "line" > < a id = "l00505" name = "l00505" > < / a > < span class = "lineno" > 505< / span > std::erase_if(< / div >
< div class = "line" > < a id = "l00506" name = "l00506" > < / a > < span class = "lineno" > 506< / span > onlyProducedSpecies,< / div >
< div class = "line" > < a id = "l00507" name = "l00507" > < / a > < span class = "lineno" > 507< / span > [& ](< span class = "keyword" > const< / span > Species & species) {< / div >
< div class = "line" > < a id = "l00508" name = "l00508" > < / a > < span class = "lineno" > 508< / 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 > : activeReactions) {< / div >
< div class = "line" > < a id = "l00509" name = "l00509" > < / a > < span class = "lineno" > 509< / span > < span class = "keywordflow" > if< / span > (< a class = "code hl_namespace" href = "namespacegridfire_1_1reaction.html" > reaction< / a > .contains_reactant(species)) {< / div >
< div class = "line" > < a id = "l00510" name = "l00510" > < / a > < span class = "lineno" > 510< / span > < span class = "keywordflow" > return< / span > < span class = "keyword" > true< / span > ; < span class = "comment" > // If any active reaction consumes the species then erase it from the set.< / span > < / div >
< div class = "line" > < a id = "l00511" name = "l00511" > < / a > < span class = "lineno" > 511< / span > }< / div >
< div class = "line" > < a id = "l00512" name = "l00512" > < / a > < span class = "lineno" > 512< / span > }< / div >
< div class = "line" > < a id = "l00513" name = "l00513" > < / a > < span class = "lineno" > 513< / span > < span class = "keywordflow" > return< / span > < span class = "keyword" > false< / span > ;< / div >
< div class = "line" > < a id = "l00514" name = "l00514" > < / a > < span class = "lineno" > 514< / span > }< / div >
< div class = "line" > < a id = "l00515" name = "l00515" > < / a > < span class = "lineno" > 515< / span > );< / div >
< div class = "line" > < a id = "l00516" name = "l00516" > < / a > < span class = "lineno" > 516< / span > < / div >
< div class = "line" > < a id = "l00517" name = "l00517" > < / a > < span class = "lineno" > 517< / span > < span class = "comment" > // Remove species that have a non-zero timescale (these are expected to be +inf as they should be the equilibrium species if using with a MultiscalePartitioningEngineView)< / span > < / div >
< div class = "line" > < a id = "l00518" name = "l00518" > < / a > < span class = "lineno" > 518< / span > std::erase_if(< / div >
< div class = "line" > < a id = "l00519" name = "l00519" > < / a > < span class = "lineno" > 519< / span > onlyProducedSpecies,< / div >
< div class = "line" > < a id = "l00520" name = "l00520" > < / a > < span class = "lineno" > 520< / span > [& ](< span class = "keyword" > const< / span > Species & species) {< / div >
< div class = "line" > < a id = "l00521" name = "l00521" > < / a > < span class = "lineno" > 521< / span > < span class = "keywordflow" > return< / span > std::isinf(timescales.at(species));< / div >
< div class = "line" > < a id = "l00522" name = "l00522" > < / a > < span class = "lineno" > 522< / span > }< / div >
< div class = "line" > < a id = "l00523" name = "l00523" > < / a > < span class = "lineno" > 523< / span > );< / div >
< div class = "line" > < a id = "l00524" name = "l00524" > < / a > < span class = "lineno" > 524< / span > < / div >
< div class = "line" > < a id = "l00525" name = "l00525" > < / a > < span class = "lineno" > 525< / span > LOG_TRACE_L1(< / div >
< div class = "line" > < a id = "l00526" name = "l00526" > < / a > < span class = "lineno" > 526< / span > < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > ,< / div >
< div class = "line" > < a id = "l00527" name = "l00527" > < / a > < span class = "lineno" > 527< / span > < span class = "stringliteral" > " Found {} species {}that are produced but not consumed in any reaction and do not have an inf timescale (those are expected to be equilibrium species and do not contribute to the stiffness of the network)." < / span > ,< / div >
< div class = "line" > < a id = "l00528" name = "l00528" > < / a > < span class = "lineno" > 528< / span > onlyProducedSpecies.size(),< / div >
< div class = "line" > < a id = "l00529" name = "l00529" > < / a > < span class = "lineno" > 529< / span > [& ]() -> std::string {< / div >
< div class = "line" > < a id = "l00530" name = "l00530" > < / a > < span class = "lineno" > 530< / span > std::ostringstream ss;< / div >
< div class = "line" > < a id = "l00531" name = "l00531" > < / a > < span class = "lineno" > 531< / span > if (onlyProducedSpecies.empty()) {< / div >
< div class = "line" > < a id = "l00532" name = "l00532" > < / a > < span class = "lineno" > 532< / span > return < span class = "stringliteral" > " " < / span > ;< / div >
< div class = "line" > < a id = "l00533" name = "l00533" > < / a > < span class = "lineno" > 533< / span > }< / div >
< div class = "line" > < a id = "l00534" name = "l00534" > < / a > < span class = "lineno" > 534< / span > < span class = "keywordtype" > int< / span > count = 0;< / div >
< div class = "line" > < a id = "l00535" name = "l00535" > < / a > < span class = "lineno" > 535< / span > ss < < < span class = "stringliteral" > " (" < / span > ;< / div >
< div class = "line" > < a id = "l00536" name = "l00536" > < / a > < span class = "lineno" > 536< / span > for (< span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > & species : onlyProducedSpecies) {< / div >
< div class = "line" > < a id = "l00537" name = "l00537" > < / a > < span class = "lineno" > 537< / span > ss < < species.name();< / div >
< div class = "line" > < a id = "l00538" name = "l00538" > < / a > < span class = "lineno" > 538< / span > < span class = "keywordflow" > if< / span > (count < onlyProducedSpecies.size() - 1) {< / div >
< div class = "line" > < a id = "l00539" name = "l00539" > < / a > < span class = "lineno" > 539< / span > ss < < < span class = "stringliteral" > " , " < / span > ;< / div >
< div class = "line" > < a id = "l00540" name = "l00540" > < / a > < span class = "lineno" > 540< / span > }< / div >
< div class = "line" > < a id = "l00541" name = "l00541" > < / a > < span class = "lineno" > 541< / span > count++;< / div >
< div class = "line" > < a id = "l00542" name = "l00542" > < / a > < span class = "lineno" > 542< / span > }< / div >
< div class = "line" > < a id = "l00543" name = "l00543" > < / a > < span class = "lineno" > 543< / span > ss < < < span class = "stringliteral" > " ) " < / span > ;< / div >
< div class = "line" > < a id = "l00544" name = "l00544" > < / a > < span class = "lineno" > 544< / span > < span class = "keywordflow" > return< / span > ss.str();< / div >
< div class = "line" > < a id = "l00545" name = "l00545" > < / a > < span class = "lineno" > 545< / span > }()< / div >
< div class = "line" > < a id = "l00546" name = "l00546" > < / a > < span class = "lineno" > 546< / span > );< / div >
< div class = "line" > < a id = "l00547" name = "l00547" > < / a > < span class = "lineno" > 547< / span > < / div >
< div class = "line" > < a id = "l00548" name = "l00548" > < / a > < span class = "lineno" > 548< / span > std::unordered_map< Species, const reaction::LogicalReaction*> reactionsToRescue;< / div >
< div class = "line" > < a id = "l00549" name = "l00549" > < / a > < span class = "lineno" > 549< / span > < span class = "keywordflow" > for< / span > (< span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > & species : onlyProducedSpecies) {< / div >
< div class = "line" > < a id = "l00550" name = "l00550" > < / a > < span class = "lineno" > 550< / span > < span class = "keywordtype" > double< / span > maxSpeciesConsumptionRate = 0.0;< / div >
< div class = "line" > < a id = "l00551" name = "l00551" > < / a > < span class = "lineno" > 551< / 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 > : m_baseEngine.getNetworkReactions()) {< / div >
< div class = "line" > < a id = "l00552" name = "l00552" > < / a > < span class = "lineno" > 552< / span > < span class = "keyword" > const< / span > < span class = "keywordtype" > bool< / span > speciesToCheckIsConsumed = < a class = "code hl_namespace" href = "namespacegridfire_1_1reaction.html" > reaction< / a > .contains_reactant(species);< / div >
< div class = "line" > < a id = "l00553" name = "l00553" > < / a > < span class = "lineno" > 553< / span > < span class = "keywordflow" > if< / span > (!speciesToCheckIsConsumed) {< / div >
< div class = "line" > < a id = "l00554" name = "l00554" > < / a > < span class = "lineno" > 554< / span > < span class = "keywordflow" > continue< / span > ; < span class = "comment" > // If the species is not consumed by this reaction, skip it.< / span > < / div >
< div class = "line" > < a id = "l00555" name = "l00555" > < / a > < span class = "lineno" > 555< / span > }< / div >
< div class = "line" > < a id = "l00556" name = "l00556" > < / a > < span class = "lineno" > 556< / span > < span class = "keywordtype" > bool< / span > allOtherReactantsAreAvailable = < span class = "keyword" > true< / span > ;< / div >
< div class = "line" > < a id = "l00557" name = "l00557" > < / a > < span class = "lineno" > 557< / span > < span class = "keywordflow" > for< / span > (< span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > & reactant : reaction.reactants()) {< / div >
< div class = "line" > < a id = "l00558" name = "l00558" > < / a > < span class = "lineno" > 558< / span > < span class = "keyword" > const< / span > < span class = "keywordtype" > bool< / span > reactantIsAvailable = std::ranges::contains(activeSpecies, reactant);< / div >
< div class = "line" > < a id = "l00559" name = "l00559" > < / a > < span class = "lineno" > 559< / span > < span class = "keywordflow" > if< / span > (!reactantIsAvailable & & reactant != species) {< / div >
< div class = "line" > < a id = "l00560" name = "l00560" > < / a > < span class = "lineno" > 560< / span > allOtherReactantsAreAvailable = < span class = "keyword" > false< / span > ;< / div >
< div class = "line" > < a id = "l00561" name = "l00561" > < / a > < span class = "lineno" > 561< / span > }< / div >
< div class = "line" > < a id = "l00562" name = "l00562" > < / a > < span class = "lineno" > 562< / span > }< / div >
< div class = "line" > < a id = "l00563" name = "l00563" > < / a > < span class = "lineno" > 563< / span > < span class = "keywordflow" > if< / span > (allOtherReactantsAreAvailable & & speciesToCheckIsConsumed) {< / div >
< div class = "line" > < a id = "l00564" name = "l00564" > < / a > < span class = "lineno" > 564< / span > < span class = "keywordtype" > double< / span > rate = < a class = "code hl_namespace" href = "namespacegridfire_1_1reaction.html" > reaction< / a > .calculate_rate(T9);< / div >
< div class = "line" > < a id = "l00565" name = "l00565" > < / a > < span class = "lineno" > 565< / span > < span class = "keywordflow" > if< / span > (rate > maxSpeciesConsumptionRate) {< / div >
< div class = "line" > < a id = "l00566" name = "l00566" > < / a > < span class = "lineno" > 566< / span > maxSpeciesConsumptionRate = rate;< / div >
< div class = "line" > < a id = "l00567" name = "l00567" > < / a > < span class = "lineno" > 567< / span > reactionsToRescue[species] = & < a class = "code hl_namespace" href = "namespacegridfire_1_1reaction.html" > reaction< / a > ;< / div >
< div class = "line" > < a id = "l00568" name = "l00568" > < / a > < span class = "lineno" > 568< / span > }< / div >
< div class = "line" > < a id = "l00569" name = "l00569" > < / a > < span class = "lineno" > 569< / span > }< / div >
< div class = "line" > < a id = "l00570" name = "l00570" > < / a > < span class = "lineno" > 570< / span > }< / div >
< div class = "line" > < a id = "l00571" name = "l00571" > < / a > < span class = "lineno" > 571< / span > }< / div >
< div class = "line" > < a id = "l00572" name = "l00572" > < / a > < span class = "lineno" > 572< / span > LOG_TRACE_L1(< / div >
< div class = "line" > < a id = "l00573" name = "l00573" > < / a > < span class = "lineno" > 573< / span > m_logger,< / div >
< div class = "line" > < a id = "l00574" name = "l00574" > < / a > < span class = "lineno" > 574< / span > < span class = "stringliteral" > " Rescuing {} {}reactions" < / span > ,< / div >
< div class = "line" > < a id = "l00575" name = "l00575" > < / a > < span class = "lineno" > 575< / span > reactionsToRescue.size(),< / div >
< div class = "line" > < a id = "l00576" name = "l00576" > < / a > < span class = "lineno" > 576< / span > [& ]() -> std::string {< / div >
< div class = "line" > < a id = "l00577" name = "l00577" > < / a > < span class = "lineno" > 577< / span > std::ostringstream ss;< / div >
< div class = "line" > < a id = "l00578" name = "l00578" > < / a > < span class = "lineno" > 578< / span > if (reactionsToRescue.empty()) {< / div >
< div class = "line" > < a id = "l00579" name = "l00579" > < / a > < span class = "lineno" > 579< / span > return < span class = "stringliteral" > " " < / span > ;< / div >
< div class = "line" > < a id = "l00580" name = "l00580" > < / a > < span class = "lineno" > 580< / span > }< / div >
< div class = "line" > < a id = "l00581" name = "l00581" > < / a > < span class = "lineno" > 581< / span > < span class = "keywordtype" > int< / span > count = 0;< / div >
< div class = "line" > < a id = "l00582" name = "l00582" > < / a > < span class = "lineno" > 582< / span > ss < < < span class = "stringliteral" > " (" < / span > ;< / div >
< div class = "line" > < a id = "l00583" name = "l00583" > < / a > < span class = "lineno" > 583< / span > for (< span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > & < a class = "code hl_namespace" href = "namespacegridfire_1_1reaction.html" > reaction< / a > : reactionsToRescue | std::views::values) {< / div >
< div class = "line" > < a id = "l00584" name = "l00584" > < / a > < span class = "lineno" > 584< / span > ss < < < a class = "code hl_namespace" href = "namespacegridfire_1_1reaction.html" > reaction< / a > -> id();< / div >
< div class = "line" > < a id = "l00585" name = "l00585" > < / a > < span class = "lineno" > 585< / span > < span class = "keywordflow" > if< / span > (count < reactionsToRescue.size() - 1) {< / div >
< div class = "line" > < a id = "l00586" name = "l00586" > < / a > < span class = "lineno" > 586< / span > ss < < < span class = "stringliteral" > " , " < / span > ;< / div >
< div class = "line" > < a id = "l00587" name = "l00587" > < / a > < span class = "lineno" > 587< / span > }< / div >
< div class = "line" > < a id = "l00588" name = "l00588" > < / a > < span class = "lineno" > 588< / span > count++;< / div >
< div class = "line" > < a id = "l00589" name = "l00589" > < / a > < span class = "lineno" > 589< / span > }< / div >
< div class = "line" > < a id = "l00590" name = "l00590" > < / a > < span class = "lineno" > 590< / span > ss < < < span class = "stringliteral" > " ) " < / span > ;< / div >
< div class = "line" > < a id = "l00591" name = "l00591" > < / a > < span class = "lineno" > 591< / span > < span class = "keywordflow" > return< / span > ss.str();< / div >
< div class = "line" > < a id = "l00592" name = "l00592" > < / a > < span class = "lineno" > 592< / span > }()< / div >
< div class = "line" > < a id = "l00593" name = "l00593" > < / a > < span class = "lineno" > 593< / span > );< / div >
< div class = "line" > < a id = "l00594" name = "l00594" > < / a > < span class = "lineno" > 594< / span > < / div >
< div class = "line" > < a id = "l00595" name = "l00595" > < / a > < span class = "lineno" > 595< / span > LOG_TRACE_L1(< / div >
< div class = "line" > < a id = "l00596" name = "l00596" > < / a > < span class = "lineno" > 596< / span > m_logger,< / div >
< div class = "line" > < a id = "l00597" name = "l00597" > < / a > < span class = "lineno" > 597< / span > < span class = "stringliteral" > " Timescale adjustments due to reaction rescue: {}" < / span > ,< / div >
< div class = "line" > < a id = "l00598" name = "l00598" > < / a > < span class = "lineno" > 598< / span > [& ]() -> std::string {< / div >
< div class = "line" > < a id = "l00599" name = "l00599" > < / a > < span class = "lineno" > 599< / span > std::stringstream ss;< / div >
< div class = "line" > < a id = "l00600" name = "l00600" > < / a > < span class = "lineno" > 600< / span > < span class = "keywordflow" > if< / span > (reactionsToRescue.empty()) {< / div >
< div class = "line" > < a id = "l00601" name = "l00601" > < / a > < span class = "lineno" > 601< / span > < span class = "keywordflow" > return< / span > < span class = "stringliteral" > " No reactions rescued..." < / span > ;< / div >
< div class = "line" > < a id = "l00602" name = "l00602" > < / a > < span class = "lineno" > 602< / span > }< / div >
< div class = "line" > < a id = "l00603" name = "l00603" > < / a > < span class = "lineno" > 603< / span > < span class = "keywordtype" > int< / span > count = 0;< / div >
< div class = "line" > < a id = "l00604" name = "l00604" > < / a > < span class = "lineno" > 604< / span > < span class = "keywordflow" > for< / span > (< span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > & [species, reaction] : reactionsToRescue) {< / div >
< div class = "line" > < a id = "l00605" name = "l00605" > < / a > < span class = "lineno" > 605< / span > ss < < < span class = "stringliteral" > " (Species: " < / span > < < species.name() < < < span class = "stringliteral" > " started with a timescale of " < / span > < < timescales.at(species);< / div >
< div class = "line" > < a id = "l00606" name = "l00606" > < / a > < span class = "lineno" > 606< / span > ss < < < span class = "stringliteral" > " , rescued by reaction: " < / span > < < reaction-> id();< / div >
< div class = "line" > < a id = "l00607" name = "l00607" > < / a > < span class = "lineno" > 607< / span > ss < < < span class = "stringliteral" > " whose product timescales are --- [" < / span > ;< / div >
< div class = "line" > < a id = "l00608" name = "l00608" > < / a > < span class = "lineno" > 608< / span > < span class = "keywordtype" > int< / span > icount = 0;< / div >
< div class = "line" > < a id = "l00609" name = "l00609" > < / a > < span class = "lineno" > 609< / span > < span class = "keywordflow" > for< / span > (< span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > & product : reaction-> products()) {< / div >
< div class = "line" > < a id = "l00610" name = "l00610" > < / a > < span class = "lineno" > 610< / span > ss < < product.name() < < < span class = "stringliteral" > " : " < / span > < < timescales.at(product);< / div >
< div class = "line" > < a id = "l00611" name = "l00611" > < / a > < span class = "lineno" > 611< / span > < span class = "keywordflow" > if< / span > (icount < reaction-> products().size() - 1) {< / div >
< div class = "line" > < a id = "l00612" name = "l00612" > < / a > < span class = "lineno" > 612< / span > ss < < < span class = "stringliteral" > " , " < / span > ;< / div >
< div class = "line" > < a id = "l00613" name = "l00613" > < / a > < span class = "lineno" > 613< / span > }< / div >
< div class = "line" > < a id = "l00614" name = "l00614" > < / a > < span class = "lineno" > 614< / span > icount++;< / div >
< div class = "line" > < a id = "l00615" name = "l00615" > < / a > < span class = "lineno" > 615< / span > }< / div >
< div class = "line" > < a id = "l00616" name = "l00616" > < / a > < span class = "lineno" > 616< / span > ss < < < span class = "stringliteral" > " ])" < / span > ;< / div >
< div class = "line" > < a id = "l00617" name = "l00617" > < / a > < span class = "lineno" > 617< / span > < / div >
< div class = "line" > < a id = "l00618" name = "l00618" > < / a > < span class = "lineno" > 618< / span > < span class = "keywordflow" > if< / span > (count < reactionsToRescue.size() - 1) {< / div >
< div class = "line" > < a id = "l00619" name = "l00619" > < / a > < span class = "lineno" > 619< / span > ss < < < span class = "stringliteral" > " , " < / span > ;< / div >
< div class = "line" > < a id = "l00620" name = "l00620" > < / a > < span class = "lineno" > 620< / span > }< / div >
< div class = "line" > < a id = "l00621" name = "l00621" > < / a > < span class = "lineno" > 621< / span > count++;< / div >
< div class = "line" > < a id = "l00622" name = "l00622" > < / a > < span class = "lineno" > 622< / span > }< / div >
< div class = "line" > < a id = "l00623" name = "l00623" > < / a > < span class = "lineno" > 623< / span > < / div >
< div class = "line" > < a id = "l00624" name = "l00624" > < / a > < span class = "lineno" > 624< / span > < span class = "keywordflow" > return< / span > ss.str();< / div >
< div class = "line" > < a id = "l00625" name = "l00625" > < / a > < span class = "lineno" > 625< / span > }()< / div >
< div class = "line" > < a id = "l00626" name = "l00626" > < / a > < span class = "lineno" > 626< / span > );< / div >
< div class = "line" > < a id = "l00627" name = "l00627" > < / a > < span class = "lineno" > 627< / span > < / div >
< div class = "line" > < a id = "l00628" name = "l00628" > < / a > < span class = "lineno" > 628< / span > RescueSet rescueSet;< / div >
< div class = "line" > < a id = "l00629" name = "l00629" > < / a > < span class = "lineno" > 629< / span > std::unordered_set< const reaction::LogicalReaction*> newReactions;< / div >
< div class = "line" > < a id = "l00630" name = "l00630" > < / a > < span class = "lineno" > 630< / span > std::unordered_set< Species> newSpecies;< / div >
< div class = "line" > < a id = "l00631" name = "l00631" > < / a > < span class = "lineno" > 631< / span > < / div >
< div class = "line" > < a id = "l00632" name = "l00632" > < / a > < span class = "lineno" > 632< / span > < span class = "keywordflow" > for< / span > (< span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > & reactionPtr: reactionsToRescue | std::views::values) {< / div >
< div class = "line" > < a id = "l00633" name = "l00633" > < / a > < span class = "lineno" > 633< / span > newReactions.insert(reactionPtr);< / div >
< div class = "line" > < a id = "l00634" name = "l00634" > < / a > < span class = "lineno" > 634< / span > < span class = "keywordflow" > for< / span > (< span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > & product : reactionPtr-> products()) {< / div >
< div class = "line" > < a id = "l00635" name = "l00635" > < / a > < span class = "lineno" > 635< / span > newSpecies.insert(product);< / div >
< div class = "line" > < a id = "l00636" name = "l00636" > < / a > < span class = "lineno" > 636< / span > }< / div >
< div class = "line" > < a id = "l00637" name = "l00637" > < / a > < span class = "lineno" > 637< / span > }< / div >
< div class = "line" > < a id = "l00638" name = "l00638" > < / a > < span class = "lineno" > 638< / span > < span class = "keywordflow" > return< / span > {std::move(newReactions), std::move(newSpecies)};< / div >
< div class = "line" > < a id = "l00639" name = "l00639" > < / a > < span class = "lineno" > 639< / span > }< / div >
< / div >
< div class = "line" > < a id = "l00640" name = "l00640" > < / a > < span class = "lineno" > 640< / span > < / div >
< div class = "foldopen" id = "foldopen00641" data-start = "{" data-end = "}" >
< div class = "line" > < a id = "l00641" name = "l00641" > < / a > < span class = "lineno" > < a class = "line" href = "classgridfire_1_1_adaptive_engine_view.html#aa79fb382c98461b02a2c30668491e6c5" > 641< / a > < / span > < span class = "keywordtype" > void< / span > < a class = "code hl_function" href = "classgridfire_1_1_adaptive_engine_view.html#aa79fb382c98461b02a2c30668491e6c5" > AdaptiveEngineView::finalizeActiveSet< / a > (< / div >
< div class = "line" > < a id = "l00642" name = "l00642" > < / a > < span class = "lineno" > 642< / span > < span class = "keyword" > const< / span > std::vector< const reaction::LogicalReaction *> & finalReactions< / div >
< div class = "line" > < a id = "l00643" name = "l00643" > < / a > < span class = "lineno" > 643< / span > ) {< / div >
< div class = "line" > < a id = "l00644" name = "l00644" > < / a > < span class = "lineno" > 644< / span > std::unordered_set< Species> finalSpeciesSet;< / div >
< div class = "line" > < a id = "l00645" name = "l00645" > < / a > < span class = "lineno" > 645< / span > < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a19fc7e02e216b797aa643fa35e429800" > m_activeReactions< / a > .clear();< / div >
< div class = "line" > < a id = "l00646" name = "l00646" > < / a > < span class = "lineno" > 646< / span > < span class = "keywordflow" > for< / span > (< span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > * reactionPtr: finalReactions) {< / div >
< div class = "line" > < a id = "l00647" name = "l00647" > < / a > < span class = "lineno" > 647< / span > < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#a19fc7e02e216b797aa643fa35e429800" > m_activeReactions< / a > .add_reaction(*reactionPtr);< / div >
< div class = "line" > < a id = "l00648" name = "l00648" > < / a > < span class = "lineno" > 648< / span > < span class = "keywordflow" > for< / span > (< span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > & reactant : reactionPtr-> reactants()) {< / div >
< div class = "line" > < a id = "l00649" name = "l00649" > < / a > < span class = "lineno" > 649< / span > < span class = "keywordflow" > if< / span > (!finalSpeciesSet.contains(reactant)) {< / div >
< div class = "line" > < a id = "l00650" name = "l00650" > < / a > < span class = "lineno" > 650< / span > LOG_TRACE_L1(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > , < span class = "stringliteral" > " Adding reactant ' {}' to active species set through reaction {}." < / span > , reactant.name(), reactionPtr-> id());< / div >
< div class = "line" > < a id = "l00651" name = "l00651" > < / a > < span class = "lineno" > 651< / span > } < span class = "keywordflow" > else< / span > {< / div >
< div class = "line" > < a id = "l00652" name = "l00652" > < / a > < span class = "lineno" > 652< / span > LOG_TRACE_L1(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > , < span class = "stringliteral" > " Reactant ' {}' already in active species set through another reaction." < / span > , reactant.name());< / div >
< div class = "line" > < a id = "l00653" name = "l00653" > < / a > < span class = "lineno" > 653< / span > }< / div >
< div class = "line" > < a id = "l00654" name = "l00654" > < / a > < span class = "lineno" > 654< / span > finalSpeciesSet.insert(reactant);< / div >
< div class = "line" > < a id = "l00655" name = "l00655" > < / a > < span class = "lineno" > 655< / span > }< / div >
< div class = "line" > < a id = "l00656" name = "l00656" > < / a > < span class = "lineno" > 656< / span > < span class = "keywordflow" > for< / span > (< span class = "keyword" > const< / span > < span class = "keyword" > auto< / span > & product : reactionPtr-> products()) {< / div >
< div class = "line" > < a id = "l00657" name = "l00657" > < / a > < span class = "lineno" > 657< / span > < span class = "keywordflow" > if< / span > (!finalSpeciesSet.contains(product)) {< / div >
< div class = "line" > < a id = "l00658" name = "l00658" > < / a > < span class = "lineno" > 658< / span > LOG_TRACE_L1(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > , < span class = "stringliteral" > " Adding product ' {}' to active species set through reaction {}." < / span > , product.name(), reactionPtr-> id());< / div >
< div class = "line" > < a id = "l00659" name = "l00659" > < / a > < span class = "lineno" > 659< / span > } < span class = "keywordflow" > else< / span > {< / div >
< div class = "line" > < a id = "l00660" name = "l00660" > < / a > < span class = "lineno" > 660< / span > LOG_TRACE_L1(< a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > m_logger< / a > , < span class = "stringliteral" > " Product ' {}' already in active species set through another reaction." < / span > , product.name());< / div >
< div class = "line" > < a id = "l00661" name = "l00661" > < / a > < span class = "lineno" > 661< / span > }< / div >
< div class = "line" > < a id = "l00662" name = "l00662" > < / a > < span class = "lineno" > 662< / span > finalSpeciesSet.insert(product);< / div >
< div class = "line" > < a id = "l00663" name = "l00663" > < / a > < span class = "lineno" > 663< / span > }< / div >
< div class = "line" > < a id = "l00664" name = "l00664" > < / a > < span class = "lineno" > 664< / span > }< / div >
< div class = "line" > < a id = "l00665" name = "l00665" > < / a > < span class = "lineno" > 665< / span > < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#af4bc9fc6e4afcd6a53c49ca6e2a95940" > m_activeSpecies< / a > .clear();< / div >
< div class = "line" > < a id = "l00666" name = "l00666" > < / a > < span class = "lineno" > 666< / span > < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#af4bc9fc6e4afcd6a53c49ca6e2a95940" > m_activeSpecies< / a > = std::vector< Species> (finalSpeciesSet.begin(), finalSpeciesSet.end());< / div >
< div class = "line" > < a id = "l00667" name = "l00667" > < / a > < span class = "lineno" > 667< / span > std::ranges::sort(< / div >
< div class = "line" > < a id = "l00668" name = "l00668" > < / a > < span class = "lineno" > 668< / span > < a class = "code hl_variable" href = "classgridfire_1_1_adaptive_engine_view.html#af4bc9fc6e4afcd6a53c49ca6e2a95940" > m_activeSpecies< / a > ,< / div >
< div class = "line" > < a id = "l00669" name = "l00669" > < / a > < span class = "lineno" > 669< / span > [](< span class = "keyword" > const< / span > Species & a, < span class = "keyword" > const< / span > Species & b) { < span class = "keywordflow" > return< / span > a.mass() < b.mass(); }< / div >
< div class = "line" > < a id = "l00670" name = "l00670" > < / a > < span class = "lineno" > 670< / span > );< / div >
< div class = "line" > < a id = "l00671" name = "l00671" > < / a > < span class = "lineno" > 671< / span > }< / div >
< / div >
< div class = "line" > < a id = "l00672" name = "l00672" > < / a > < span class = "lineno" > 672< / span > }< / div >
< div class = "line" > < a id = "l00673" name = "l00673" > < / a > < span class = "lineno" > 673< / span > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_a03fc187d3d306b9058103b9522cbbaeb" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#a03fc187d3d306b9058103b9522cbbaeb" > gridfire::AdaptiveEngineView::generateJacobianMatrix< / a > < / div > < div class = "ttdeci" > void generateJacobianMatrix(const std::vector< double > & Y_dynamic, const double T9, const double rho) const override< / div > < div class = "ttdoc" > Generates the Jacobian matrix for the active species.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "#l00175" > engine_adaptive.cpp:175< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_a048d4b1d41ecb4125a558d1b9ed7cb31" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#a048d4b1d41ecb4125a558d1b9ed7cb31" > gridfire::AdaptiveEngineView::calculateMolarReactionFlow< / a > < / div > < div class = "ttdeci" > double calculateMolarReactionFlow(const reaction::Reaction & reaction, const std::vector< double > & Y_culled, double T9, double rho) const override< / div > < div class = "ttdoc" > Calculates the molar reaction flow for a given reaction in the active network.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "#l00212" > engine_adaptive.cpp:212< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_a0ab1199f900a58f309c3c36532c9164f" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#a0ab1199f900a58f309c3c36532c9164f" > gridfire::AdaptiveEngineView::getScreeningModel< / a > < / div > < div class = "ttdeci" > screening::ScreeningType getScreeningModel() const override< / div > < div class = "ttdoc" > Gets the screening model from the base engine.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "#l00296" > engine_adaptive.cpp:296< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_a0ed21f7e7c1034fc87b40d4116c4221b" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#a0ed21f7e7c1034fc87b40d4116c4221b" > gridfire::AdaptiveEngineView::findReachableSpecies< / a > < / div > < div class = "ttdeci" > std::unordered_set< fourdst::atomic::Species > findReachableSpecies(const NetIn & netIn) const< / div > < div class = "ttdoc" > Finds all species that are reachable from the initial fuel through the reaction network.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "#l00399" > engine_adaptive.cpp:399< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_a12cc2f352678fba9688363ba1876ab9c" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#a12cc2f352678fba9688363ba1876ab9c" > gridfire::AdaptiveEngineView::getNetworkReactions< / a > < / div > < div class = "ttdeci" > const reaction::LogicalReactionSet & getNetworkReactions() const override< / div > < div class = "ttdoc" > Gets the set of active logical reactions in the network.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "#l00229" > engine_adaptive.cpp:229< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_a14171a9ccc45a63996a967c72983de30" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#a14171a9ccc45a63996a967c72983de30" > gridfire::AdaptiveEngineView::m_config< / a > < / div > < div class = "ttdeci" > Config & m_config< / div > < div class = "ttdoc" > A reference to the singleton Config instance, used for retrieving configuration parameters.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "engine__adaptive_8h_source.html#l00282" > engine_adaptive.h:282< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_a19fc7e02e216b797aa643fa35e429800" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#a19fc7e02e216b797aa643fa35e429800" > gridfire::AdaptiveEngineView::m_activeReactions< / a > < / div > < div class = "ttdeci" > reaction::LogicalReactionSet m_activeReactions< / div > < div class = "ttdoc" > The set of reactions that are currently active in the network.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "engine__adaptive_8h_source.html#l00292" > engine_adaptive.h:292< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_a21c6e33bbf8c18fd5b5eaabb469054de" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#a21c6e33bbf8c18fd5b5eaabb469054de" > gridfire::AdaptiveEngineView::m_reactionIndexMap< / a > < / div > < div class = "ttdeci" > std::vector< size_t > m_reactionIndexMap< / div > < div class = "ttdoc" > A map from the indices of the active reactions to the indices of the corresponding reactions in the f...< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "engine__adaptive_8h_source.html#l00297" > engine_adaptive.h:297< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_a231193a61ba5a31e8eb92b0d4ce69111" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#a231193a61ba5a31e8eb92b0d4ce69111" > gridfire::AdaptiveEngineView::generateStoichiometryMatrix< / a > < / div > < div class = "ttdeci" > void generateStoichiometryMatrix() override< / div > < div class = "ttdoc" > Generates the stoichiometry matrix for the active reactions and species.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "#l00197" > engine_adaptive.cpp:197< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_a256d14a333f9401039b826cc889761a8" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#a256d14a333f9401039b826cc889761a8" > gridfire::AdaptiveEngineView::mapCulledToFullSpeciesIndex< / a > < / div > < div class = "ttdeci" > size_t mapCulledToFullSpeciesIndex(size_t culledSpeciesIndex) const< / div > < div class = "ttdoc" > Maps a culled species index to a full species index.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "#l00341" > engine_adaptive.cpp:341< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_a2a7ecf985a326b4bea43e00cf9ee43dd" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#a2a7ecf985a326b4bea43e00cf9ee43dd" > gridfire::AdaptiveEngineView::update< / a > < / div > < div class = "ttdeci" > fourdst::composition::Composition update(const NetIn & netIn) override< / div > < div class = "ttdoc" > Updates the active species and reactions based on the current conditions.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "#l00088" > engine_adaptive.cpp:88< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_a3d9d8e862d1c2f0a8ba460c57f6a7f44" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#a3d9d8e862d1c2f0a8ba460c57f6a7f44" > gridfire::AdaptiveEngineView::mapFullToCulled< / a > < / div > < div class = "ttdeci" > std::vector< double > mapFullToCulled(const std::vector< double > & full) const< / div > < div class = "ttdoc" > Maps a vector of full abundances to a vector of culled abundances.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "#l00332" > engine_adaptive.cpp:332< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_a42417e96fe9fd623458af109401daf08" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#a42417e96fe9fd623458af109401daf08" > gridfire::AdaptiveEngineView::cullReactionsByFlow< / a > < / div > < div class = "ttdeci" > std::vector< const reaction::LogicalReaction * > cullReactionsByFlow(const std::vector< ReactionFlow > & allFlows, const std::unordered_set< fourdst::atomic::Species > & reachableSpecies, const std::vector< double > & Y_full, double maxFlow) const< / div > < div class = "ttdoc" > Culls reactions from the network based on their flow rates.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "#l00442" > engine_adaptive.cpp:442< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_a4710d218c8a0fd161e994ecd60b48e58" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#a4710d218c8a0fd161e994ecd60b48e58" > gridfire::AdaptiveEngineView::getJacobianMatrixEntry< / a > < / div > < div class = "ttdeci" > double getJacobianMatrixEntry(const int i_culled, const int j_culled) const override< / div > < div class = "ttdoc" > Gets an entry from the Jacobian matrix for the active species.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "#l00186" > engine_adaptive.cpp:186< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_a4d38b46be9f25c7afe7ddd2b284253f8" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#a4d38b46be9f25c7afe7ddd2b284253f8" > gridfire::AdaptiveEngineView::m_baseEngine< / a > < / div > < div class = "ttdeci" > DynamicEngine & m_baseEngine< / div > < div class = "ttdoc" > The underlying engine to which this view delegates calculations.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "engine__adaptive_8h_source.html#l00287" > engine_adaptive.h:287< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_a4e856d6d4d2fc220952bbb7e6b2f85d9" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#a4e856d6d4d2fc220952bbb7e6b2f85d9" > gridfire::AdaptiveEngineView::getSpeciesTimescales< / a > < / div > < div class = "ttdeci" > std::expected< std::unordered_map< fourdst::atomic::Species, double > , expectations::StaleEngineError > getSpeciesTimescales(const std::vector< double > & Y_culled, double T9, double rho) const override< / div > < div class = "ttdoc" > Computes timescales for all active species in the network.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "#l00238" > engine_adaptive.cpp:238< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_a4ff60b5214ec0bdaf683feb6615573a5" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#a4ff60b5214ec0bdaf683feb6615573a5" > gridfire::AdaptiveEngineView::RescueSet< / a > < / div > < div class = "ttdeci" > std::pair< std::unordered_set< const reaction::LogicalReaction * > , std::unordered_set< fourdst::atomic::Species > > RescueSet< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "engine__adaptive_8h_source.html#l00452" > engine_adaptive.h:452< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_a522e78bce9ff062939572248d57f8cea" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#a522e78bce9ff062939572248d57f8cea" > gridfire::AdaptiveEngineView::getSpeciesDestructionTimescales< / a > < / div > < div class = "ttdeci" > std::expected< std::unordered_map< fourdst::atomic::Species, double > , expectations::StaleEngineError > getSpeciesDestructionTimescales(const std::vector< double > & Y, double T9, double rho) const override< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "#l00266" > engine_adaptive.cpp:266< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_a5f66204a0ff5b27eed243afddecb0093" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#a5f66204a0ff5b27eed243afddecb0093" > gridfire::AdaptiveEngineView::m_speciesIndexMap< / a > < / div > < div class = "ttdeci" > std::vector< size_t > m_speciesIndexMap< / div > < div class = "ttdoc" > A map from the indices of the active species to the indices of the corresponding species in the full ...< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "engine__adaptive_8h_source.html#l00295" > engine_adaptive.h:295< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_a63580db57e0f48f508906a11ccfd465e" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#a63580db57e0f48f508906a11ccfd465e" > gridfire::AdaptiveEngineView::m_isStale< / a > < / div > < div class = "ttdeci" > bool m_isStale< / div > < div class = "ttdoc" > A flag indicating whether the view is stale and needs to be updated.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "engine__adaptive_8h_source.html#l00300" > engine_adaptive.h:300< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_a67b4ea8cad115394bb4a42cc39d696f9" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#a67b4ea8cad115394bb4a42cc39d696f9" > gridfire::AdaptiveEngineView::getStoichiometryMatrixEntry< / a > < / div > < div class = "ttdeci" > int getStoichiometryMatrixEntry(const int speciesIndex_culled, const int reactionIndex_culled) const override< / div > < div class = "ttdoc" > Gets an entry from the stoichiometry matrix for the active species and reactions.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "#l00202" > engine_adaptive.cpp:202< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_a68695f056b660e91285b7e5a931612e1" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#a68695f056b660e91285b7e5a931612e1" > gridfire::AdaptiveEngineView::mapCulledToFull< / a > < / div > < div class = "ttdeci" > std::vector< double > mapCulledToFull(const std::vector< double > & culled) const< / div > < div class = "ttdoc" > Maps a vector of culled abundances to a vector of full abundances.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "#l00323" > engine_adaptive.cpp:323< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_a70005361262bc180d4417b608661e3c3" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#a70005361262bc180d4417b608661e3c3" > gridfire::AdaptiveEngineView::primeEngine< / a > < / div > < div class = "ttdeci" > PrimingReport primeEngine(const NetIn & netIn) override< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "#l00308" > engine_adaptive.cpp:308< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_a7b3a6b3ab0a52f0f84d2b142e74ea672" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#a7b3a6b3ab0a52f0f84d2b142e74ea672" > gridfire::AdaptiveEngineView::setNetworkReactions< / a > < / div > < div class = "ttdeci" > void setNetworkReactions(const reaction::LogicalReactionSet & reactions) override< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "#l00233" > engine_adaptive.cpp:233< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_a7d0237956bf3ec7230bc51d88e7f8019" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#a7d0237956bf3ec7230bc51d88e7f8019" > gridfire::AdaptiveEngineView::mapNetInToMolarAbundanceVector< / a > < / div > < div class = "ttdeci" > std::vector< double > mapNetInToMolarAbundanceVector(const NetIn & netIn) const override< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "#l00300" > engine_adaptive.cpp:300< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_a823c665ba89452aa2b3d5422fa5d313f" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#a823c665ba89452aa2b3d5422fa5d313f" > gridfire::AdaptiveEngineView::rescueEdgeSpeciesDestructionChannel< / a > < / div > < div class = "ttdeci" > RescueSet rescueEdgeSpeciesDestructionChannel(const std::vector< double > & Y_full, const double T9, const double rho, const std::vector< fourdst::atomic::Species > & activeSpecies, const reaction::LogicalReactionSet & activeReactions) const< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "#l00485" > engine_adaptive.cpp:485< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_a89614f4a48f60c4170a0197f45303e7c" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#a89614f4a48f60c4170a0197f45303e7c" > gridfire::AdaptiveEngineView::constructReactionIndexMap< / a > < / div > < div class = "ttdeci" > std::vector< size_t > constructReactionIndexMap() const< / div > < div class = "ttdoc" > Constructs the reaction index map.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "#l00056" > engine_adaptive.cpp:56< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_a896d29325b4233e83d9298850b617a2d" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#a896d29325b4233e83d9298850b617a2d" > gridfire::AdaptiveEngineView::constructSpeciesIndexMap< / a > < / div > < div class = "ttdeci" > std::vector< size_t > constructSpeciesIndexMap() const< / div > < div class = "ttdoc" > Constructs the species index map.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "#l00027" > engine_adaptive.cpp:27< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_a9055feb245524a5a9549ace935f059ff" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#a9055feb245524a5a9549ace935f059ff" > gridfire::AdaptiveEngineView::getSpeciesIndex< / a > < / div > < div class = "ttdeci" > int getSpeciesIndex(const fourdst::atomic::Species & species) const override< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "#l00312" > engine_adaptive.cpp:312< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_a91e742642d8a8d9ec0620779927e5101" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#a91e742642d8a8d9ec0620779927e5101" > gridfire::AdaptiveEngineView::mapCulledToFullReactionIndex< / a > < / div > < div class = "ttdeci" > size_t mapCulledToFullReactionIndex(size_t culledReactionIndex) const< / div > < div class = "ttdoc" > Maps a culled reaction index to a full reaction index.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "#l00350" > engine_adaptive.cpp:350< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_aa79fb382c98461b02a2c30668491e6c5" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#aa79fb382c98461b02a2c30668491e6c5" > gridfire::AdaptiveEngineView::finalizeActiveSet< / a > < / div > < div class = "ttdeci" > void finalizeActiveSet(const std::vector< const reaction::LogicalReaction * > & finalReactions)< / div > < div class = "ttdoc" > Finalizes the set of active species and reactions.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "#l00641" > engine_adaptive.cpp:641< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_aae4ddbef1c4e2202fd236221a4bf376b" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#aae4ddbef1c4e2202fd236221a4bf376b" > gridfire::AdaptiveEngineView::setScreeningModel< / a > < / div > < div class = "ttdeci" > void setScreeningModel(screening::ScreeningType model) override< / div > < div class = "ttdoc" > Sets the screening model for the base engine.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "#l00292" > engine_adaptive.cpp:292< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_abdbaf4b87629efe43ac1255dad424c0c" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#abdbaf4b87629efe43ac1255dad424c0c" > gridfire::AdaptiveEngineView::calculateAllReactionFlows< / a > < / div > < div class = "ttdeci" > std::vector< ReactionFlow > calculateAllReactionFlows(const NetIn & netIn, std::vector< double > & out_Y_Full) const< / div > < div class = "ttdoc" > Calculates the molar reaction flow rate for all reactions in the full network.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "#l00368" > engine_adaptive.cpp:368< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_ac5bdbe46f87d38d9f23ece5743dcd193" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#ac5bdbe46f87d38d9f23ece5743dcd193" > gridfire::AdaptiveEngineView::m_logger< / a > < / div > < div class = "ttdeci" > quill::Logger * m_logger< / div > < div class = "ttdoc" > A pointer to the logger instance, used for logging messages.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "engine__adaptive_8h_source.html#l00284" > engine_adaptive.h:284< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_ac83a8efe25c0e5b9bf7756ac3a500bb1" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#ac83a8efe25c0e5b9bf7756ac3a500bb1" > gridfire::AdaptiveEngineView::getNetworkSpecies< / a > < / div > < div class = "ttdeci" > const std::vector< fourdst::atomic::Species > & getNetworkSpecies() const override< / div > < div class = "ttdoc" > Gets the list of active species in the network.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "#l00148" > engine_adaptive.cpp:148< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_ad268c9942655e5c9605148fe07718e88" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#ad268c9942655e5c9605148fe07718e88" > gridfire::AdaptiveEngineView::isStale< / a > < / div > < div class = "ttdeci" > bool isStale(const NetIn & netIn) override< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "#l00144" > engine_adaptive.cpp:144< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_ad599363cdd457e72e2e2937b0222c455" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#ad599363cdd457e72e2e2937b0222c455" > gridfire::AdaptiveEngineView::AdaptiveEngineView< / a > < / div > < div class = "ttdeci" > AdaptiveEngineView(DynamicEngine & baseEngine)< / div > < div class = "ttdoc" > Constructs an AdaptiveEngineView.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "#l00016" > engine_adaptive.cpp:16< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_aedc0dedb51c81e03f253cc409a5d5c40" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#aedc0dedb51c81e03f253cc409a5d5c40" > gridfire::AdaptiveEngineView::validateState< / a > < / div > < div class = "ttdeci" > void validateState() const< / div > < div class = "ttdoc" > Validates that the AdaptiveEngineView is not stale.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "#l00359" > engine_adaptive.cpp:359< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_af4bc9fc6e4afcd6a53c49ca6e2a95940" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#af4bc9fc6e4afcd6a53c49ca6e2a95940" > gridfire::AdaptiveEngineView::m_activeSpecies< / a > < / div > < div class = "ttdeci" > std::vector< fourdst::atomic::Species > m_activeSpecies< / div > < div class = "ttdoc" > The set of species that are currently active in the network.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "engine__adaptive_8h_source.html#l00290" > engine_adaptive.h:290< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_adaptive_engine_view_html_af703ad17ea65ffff4b75bf8ccc00e5d5" > < div class = "ttname" > < a href = "classgridfire_1_1_adaptive_engine_view.html#af703ad17ea65ffff4b75bf8ccc00e5d5" > gridfire::AdaptiveEngineView::calculateRHSAndEnergy< / a > < / div > < div class = "ttdeci" > std::expected< StepDerivatives< double > , expectations::StaleEngineError > calculateRHSAndEnergy(const std::vector< double > & Y_culled, const double T9, const double rho) const override< / div > < div class = "ttdoc" > Calculates the right-hand side (dY/dt) and energy generation for the active species.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "#l00152" > engine_adaptive.cpp:152< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1_dynamic_engine_html" > < div class = "ttname" > < a href = "classgridfire_1_1_dynamic_engine.html" > gridfire::DynamicEngine< / a > < / div > < div class = "ttdoc" > Abstract class for engines supporting Jacobian and stoichiometry operations.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "engine__abstract_8h_source.html#l00130" > engine_abstract.h:130< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1exceptions_1_1_stale_engine_error_html" > < div class = "ttname" > < a href = "classgridfire_1_1exceptions_1_1_stale_engine_error.html" > gridfire::exceptions::StaleEngineError< / a > < / div > < div class = "ttdef" > < b > Definition< / b > < a href = "error__engine_8h_source.html#l00062" > error_engine.h:62< / a > < / div > < / div >
< div class = "ttc" id = "aclassgridfire_1_1exceptions_1_1_unable_to_set_network_reactions_error_html" > < div class = "ttname" > < a href = "classgridfire_1_1exceptions_1_1_unable_to_set_network_reactions_error.html" > gridfire::exceptions::UnableToSetNetworkReactionsError< / a > < / div > < div class = "ttdef" > < b > Definition< / b > < a href = "error__engine_8h_source.html#l00099" > error_engine.h:99< / a > < / div > < / div >
2025-07-01 11:40:51 -04:00
< div class = "ttc" id = "aclassgridfire_1_1reaction_1_1_reaction_html" > < div class = "ttname" > < a href = "classgridfire_1_1reaction_1_1_reaction.html" > gridfire::reaction::Reaction< / a > < / div > < div class = "ttdoc" > Represents a single nuclear reaction from a specific data source.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "reaction_8h_source.html#l00072" > reaction.h:72< / a > < / div > < / div >
2025-07-01 07:24:18 -04:00
< div class = "ttc" id = "aengine__adaptive_8h_html" > < div class = "ttname" > < a href = "engine__adaptive_8h.html" > engine_adaptive.h< / a > < / div > < / div >
2025-07-24 11:10:45 -04:00
< div class = "ttc" id = "aerror__engine_8h_html" > < div class = "ttname" > < a href = "error__engine_8h.html" > error_engine.h< / a > < / div > < / div >
2025-07-01 11:40:51 -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 15:06:22 -04:00
< div class = "ttc" id = "anamespacegridfire_1_1screening_html_aa82aafbc4f8c28d0a75b60798e3a7d25" > < div class = "ttname" > < a href = "namespacegridfire_1_1screening.html#aa82aafbc4f8c28d0a75b60798e3a7d25" > gridfire::screening::ScreeningType< / a > < / div > < div class = "ttdeci" > ScreeningType< / div > < div class = "ttdoc" > Enumerates the available plasma screening models.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "screening__types_8h_source.html#l00015" > screening_types.h:15< / a > < / div > < / div >
2025-07-24 11:10:45 -04:00
< div class = "ttc" id = "anamespacegridfire_html" > < div class = "ttname" > < a href = "namespacegridfire.html" > gridfire< / a > < / div > < div class = "ttdef" > < b > Definition< / b > < a href = "engine__abstract_8h_source.html#l00031" > engine_abstract.h:31< / a > < / div > < / div >
2025-07-01 07:24:18 -04:00
< div class = "ttc" id = "anetwork_8h_html" > < div class = "ttname" > < a href = "network_8h.html" > network.h< / a > < / div > < / div >
< div class = "ttc" id = "astructgridfire_1_1_net_in_html" > < div class = "ttname" > < a href = "structgridfire_1_1_net_in.html" > gridfire::NetIn< / a > < / div > < div class = "ttdef" > < b > Definition< / b > < a href = "network_8h_source.html#l00053" > network.h:53< / a > < / div > < / div >
< div class = "ttc" id = "astructgridfire_1_1_net_in_html_a06f0dff9f8927b7cf2da3004c8fa1577" > < div class = "ttname" > < a href = "structgridfire_1_1_net_in.html#a06f0dff9f8927b7cf2da3004c8fa1577" > gridfire::NetIn::density< / a > < / div > < div class = "ttdeci" > double density< / div > < div class = "ttdoc" > Density in g/cm^3.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "network_8h_source.html#l00058" > network.h:58< / a > < / div > < / div >
< div class = "ttc" id = "astructgridfire_1_1_net_in_html_a13058f4929e72c1187abbebcddb8aed1" > < div class = "ttname" > < a href = "structgridfire_1_1_net_in.html#a13058f4929e72c1187abbebcddb8aed1" > gridfire::NetIn::composition< / a > < / div > < div class = "ttdeci" > fourdst::composition::Composition composition< / div > < div class = "ttdoc" > Composition of the network.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "network_8h_source.html#l00054" > network.h:54< / a > < / div > < / div >
< div class = "ttc" id = "astructgridfire_1_1_net_in_html_a5be0f5195a5cd1dd177b9fc5ab83a7be" > < div class = "ttname" > < a href = "structgridfire_1_1_net_in.html#a5be0f5195a5cd1dd177b9fc5ab83a7be" > gridfire::NetIn::temperature< / a > < / div > < div class = "ttdeci" > double temperature< / div > < div class = "ttdoc" > Temperature in Kelvin.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "network_8h_source.html#l00057" > network.h:57< / a > < / div > < / div >
2025-07-24 11:10:45 -04:00
< div class = "ttc" id = "astructgridfire_1_1_priming_report_html" > < div class = "ttname" > < a href = "structgridfire_1_1_priming_report.html" > gridfire::PrimingReport< / a > < / div > < div class = "ttdoc" > Captures the result of a network priming operation.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "reporting_8h_source.html#l00067" > reporting.h:67< / a > < / div > < / div >
< div class = "ttc" id = "astructgridfire_1_1_step_derivatives_html" > < div class = "ttname" > < a href = "structgridfire_1_1_step_derivatives.html" > gridfire::StepDerivatives< / a > < / div > < div class = "ttdoc" > Structure holding derivatives and energy generation for a network step.< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "engine__abstract_8h_source.html#l00060" > engine_abstract.h:60< / a > < / div > < / div >
< div class = "ttc" id = "astructgridfire_1_1_step_derivatives_html_ab4aeb41be952c7b5844e1ee81fef9008" > < div class = "ttname" > < a href = "structgridfire_1_1_step_derivatives.html#ab4aeb41be952c7b5844e1ee81fef9008" > gridfire::StepDerivatives::nuclearEnergyGenerationRate< / a > < / div > < div class = "ttdeci" > T nuclearEnergyGenerationRate< / div > < div class = "ttdoc" > Specific energy generation rate (e.g., erg/g/s).< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "engine__abstract_8h_source.html#l00062" > engine_abstract.h:62< / a > < / div > < / div >
< div class = "ttc" id = "astructgridfire_1_1_step_derivatives_html_ae0de268b86c2404379409c4feae0b34d" > < div class = "ttname" > < a href = "structgridfire_1_1_step_derivatives.html#ae0de268b86c2404379409c4feae0b34d" > gridfire::StepDerivatives::dydt< / a > < / div > < div class = "ttdeci" > std::vector< T > dydt< / div > < div class = "ttdoc" > Derivatives of abundances (dY/dt for each species).< / div > < div class = "ttdef" > < b > Definition< / b > < a href = "engine__abstract_8h_source.html#l00061" > engine_abstract.h:61< / a > < / div > < / div >
< div class = "ttc" id = "astructgridfire_1_1expectations_1_1_stale_engine_error_html" > < div class = "ttname" > < a href = "structgridfire_1_1expectations_1_1_stale_engine_error.html" > gridfire::expectations::StaleEngineError< / a > < / div > < div class = "ttdef" > < b > Definition< / b > < a href = "expected__engine_8h_source.html#l00044" > expected_engine.h:44< / a > < / div > < / div >
2025-07-01 07:24:18 -04:00
< / 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_c85d3e3c5052e9ad9ce18c6863244a25.html" > lib< / a > < / li > < li class = "navelem" > < a class = "el" href = "dir_3cc0b3e3c66436f74054a789a4a47fbc.html" > engine< / a > < / li > < li class = "navelem" > < a class = "el" href = "dir_e87948a39c0c6c3f66d9f5f967ab86bd.html" > views< / a > < / li > < li class = "navelem" > < a class = "el" href = "engine__adaptive_8cpp.html" > engine_adaptive.cpp< / a > < / li >
2025-07-01 07:24:18 -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 >