1505 lines
84 KiB
HTML
1505 lines
84 KiB
HTML
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||
|
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||
|
|
<head>
|
||
|
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||
|
|
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||
|
|
<meta name="generator" content="Doxygen 1.9.8"/>
|
||
|
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||
|
|
<title>GridFire: gridfire::solver::CVODESolverStrategy Class Reference</title>
|
||
|
|
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||
|
|
<script type="text/javascript" src="jquery.js"></script>
|
||
|
|
<script type="text/javascript" src="dynsections.js"></script>
|
||
|
|
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||
|
|
<script type="text/javascript" src="resize.js"></script>
|
||
|
|
<script type="text/javascript" src="navtreedata.js"></script>
|
||
|
|
<script type="text/javascript" src="navtree.js"></script>
|
||
|
|
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||
|
|
<script type="text/javascript" src="search/searchdata.js"></script>
|
||
|
|
<script type="text/javascript" src="search/search.js"></script>
|
||
|
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||
|
|
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
||
|
|
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
||
|
|
</head>
|
||
|
|
<body>
|
||
|
|
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||
|
|
<div id="titlearea">
|
||
|
|
<table cellspacing="0" cellpadding="0">
|
||
|
|
<tbody>
|
||
|
|
<tr id="projectrow">
|
||
|
|
<td id="projectalign">
|
||
|
|
<div id="projectname">GridFire<span id="projectnumber"> v0.7.1_rc2</span>
|
||
|
|
</div>
|
||
|
|
<div id="projectbrief">General Purpose Nuclear Network</div>
|
||
|
|
</td>
|
||
|
|
</tr>
|
||
|
|
</tbody>
|
||
|
|
</table>
|
||
|
|
</div>
|
||
|
|
<!-- end header part -->
|
||
|
|
<!-- Generated by Doxygen 1.9.8 -->
|
||
|
|
<script type="text/javascript">
|
||
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||
|
|
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
||
|
|
/* @license-end */
|
||
|
|
</script>
|
||
|
|
<script type="text/javascript" src="menudata.js"></script>
|
||
|
|
<script type="text/javascript" src="menu.js"></script>
|
||
|
|
<script type="text/javascript">
|
||
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||
|
|
$(function() {
|
||
|
|
initMenu('',true,false,'search.php','Search');
|
||
|
|
$(document).ready(function() { init_search(); });
|
||
|
|
});
|
||
|
|
/* @license-end */
|
||
|
|
</script>
|
||
|
|
<div id="main-nav"></div>
|
||
|
|
</div><!-- top -->
|
||
|
|
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
||
|
|
<div id="nav-tree">
|
||
|
|
<div id="nav-tree-contents">
|
||
|
|
<div id="nav-sync" class="sync"></div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<div id="splitbar" style="-moz-user-select:none;"
|
||
|
|
class="ui-resizable-handle">
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<script type="text/javascript">
|
||
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||
|
|
$(document).ready(function(){initNavTree('classgridfire_1_1solver_1_1CVODESolverStrategy.html',''); initResizable(); });
|
||
|
|
/* @license-end */
|
||
|
|
</script>
|
||
|
|
<div id="doc-content">
|
||
|
|
<!-- window showing the filter options -->
|
||
|
|
<div id="MSearchSelectWindow"
|
||
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
||
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
||
|
|
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<!-- iframe showing the search results (closed by default) -->
|
||
|
|
<div id="MSearchResultsWindow">
|
||
|
|
<div id="MSearchResults">
|
||
|
|
<div class="SRPage">
|
||
|
|
<div id="SRIndex">
|
||
|
|
<div id="SRResults"></div>
|
||
|
|
<div class="SRStatus" id="Loading">Loading...</div>
|
||
|
|
<div class="SRStatus" id="Searching">Searching...</div>
|
||
|
|
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div class="header">
|
||
|
|
<div class="summary">
|
||
|
|
<a href="#nested-classes">Classes</a> |
|
||
|
|
<a href="#pub-types">Public Types</a> |
|
||
|
|
<a href="#pub-methods">Public Member Functions</a> |
|
||
|
|
<a href="#pri-methods">Private Member Functions</a> |
|
||
|
|
<a href="#pri-static-methods">Static Private Member Functions</a> |
|
||
|
|
<a href="#pri-attribs">Private Attributes</a> |
|
||
|
|
<a href="classgridfire_1_1solver_1_1CVODESolverStrategy-members.html">List of all members</a> </div>
|
||
|
|
<div class="headertitle"><div class="title">gridfire::solver::CVODESolverStrategy Class Reference<span class="mlabels"><span class="mlabel">final</span></span></div></div>
|
||
|
|
</div><!--header-->
|
||
|
|
<div class="contents">
|
||
|
|
|
||
|
|
<p>Stiff ODE integrator backed by SUNDIALS CVODE (BDF) for network + energy.
|
||
|
|
<a href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#details">More...</a></p>
|
||
|
|
|
||
|
|
<p><code>#include <CVODE_solver_strategy.h></code></p>
|
||
|
|
<div class="dynheader">
|
||
|
|
Inheritance diagram for gridfire::solver::CVODESolverStrategy:</div>
|
||
|
|
<div class="dyncontent">
|
||
|
|
<div class="center"><iframe scrolling="no" frameborder="0" src="classgridfire_1_1solver_1_1CVODESolverStrategy__inherit__graph.svg" width="242" height="124"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
|
||
|
|
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
|
||
|
|
<div class="dynheader">
|
||
|
|
Collaboration diagram for gridfire::solver::CVODESolverStrategy:</div>
|
||
|
|
<div class="dyncontent">
|
||
|
|
<div class="center"><iframe scrolling="no" frameborder="0" src="classgridfire_1_1solver_1_1CVODESolverStrategy__coll__graph.svg" width="242" height="124"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
|
||
|
|
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
|
||
|
|
<table class="memberdecls">
|
||
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
|
||
|
|
Classes</h2></td></tr>
|
||
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structgridfire_1_1solver_1_1CVODESolverStrategy_1_1CVODERHSOutputData.html">CVODERHSOutputData</a></td></tr>
|
||
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structgridfire_1_1solver_1_1CVODESolverStrategy_1_1CVODEUserData.html">CVODEUserData</a></td></tr>
|
||
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A helper struct to pass C++ context to C-style CVODE callbacks. <a href="structgridfire_1_1solver_1_1CVODESolverStrategy_1_1CVODEUserData.html#details">More...</a><br /></td></tr>
|
||
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structgridfire_1_1solver_1_1CVODESolverStrategy_1_1TimestepContext.html">TimestepContext</a></td></tr>
|
||
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Immutable view of the current integration state passed to callbacks. <a href="structgridfire_1_1solver_1_1CVODESolverStrategy_1_1TimestepContext.html#details">More...</a><br /></td></tr>
|
||
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
</table><table class="memberdecls">
|
||
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-types" name="pub-types"></a>
|
||
|
|
Public Types</h2></td></tr>
|
||
|
|
<tr class="memitem:a89c537c2f34ba3e202374304b7e5990a" id="r_a89c537c2f34ba3e202374304b7e5990a"><td class="memItemLeft" align="right" valign="top">using </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#a89c537c2f34ba3e202374304b7e5990a">TimestepCallback</a> = std::function< void(const <a class="el" href="structgridfire_1_1solver_1_1CVODESolverStrategy_1_1TimestepContext.html">TimestepContext</a> &context)></td></tr>
|
||
|
|
<tr class="memdesc:a89c537c2f34ba3e202374304b7e5990a"><td class="mdescLeft"> </td><td class="mdescRight">Type alias for a timestep callback function. <br /></td></tr>
|
||
|
|
<tr class="separator:a89c537c2f34ba3e202374304b7e5990a"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
</table><table class="memberdecls">
|
||
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
|
||
|
|
Public Member Functions</h2></td></tr>
|
||
|
|
<tr class="memitem:a8beeb102d8e459cd133cd1bd5fb7e135" id="r_a8beeb102d8e459cd133cd1bd5fb7e135"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#a8beeb102d8e459cd133cd1bd5fb7e135">CVODESolverStrategy</a> (<a class="el" href="classgridfire_1_1engine_1_1DynamicEngine.html">engine::DynamicEngine</a> &engine)</td></tr>
|
||
|
|
<tr class="memdesc:a8beeb102d8e459cd133cd1bd5fb7e135"><td class="mdescLeft"> </td><td class="mdescRight">Construct the CVODE strategy and create a SUNDIALS context. <br /></td></tr>
|
||
|
|
<tr class="separator:a8beeb102d8e459cd133cd1bd5fb7e135"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="memitem:aca2d01a907c3bb828f9f99ad05506578" id="r_aca2d01a907c3bb828f9f99ad05506578"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#aca2d01a907c3bb828f9f99ad05506578">~CVODESolverStrategy</a> () override</td></tr>
|
||
|
|
<tr class="memdesc:aca2d01a907c3bb828f9f99ad05506578"><td class="mdescLeft"> </td><td class="mdescRight">Destructor: cleans CVODE/SUNDIALS resources and frees SUNContext. <br /></td></tr>
|
||
|
|
<tr class="separator:aca2d01a907c3bb828f9f99ad05506578"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="memitem:a2fa56a2e7a63d31d2afa895a5e4fe827" id="r_a2fa56a2e7a63d31d2afa895a5e4fe827"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#a2fa56a2e7a63d31d2afa895a5e4fe827">CVODESolverStrategy</a> (const <a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html">CVODESolverStrategy</a> &)=delete</td></tr>
|
||
|
|
<tr class="separator:a2fa56a2e7a63d31d2afa895a5e4fe827"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="memitem:af500df838024c82724eaf7fe1cb9b8e8" id="r_af500df838024c82724eaf7fe1cb9b8e8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html">CVODESolverStrategy</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#af500df838024c82724eaf7fe1cb9b8e8">operator=</a> (const <a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html">CVODESolverStrategy</a> &)=delete</td></tr>
|
||
|
|
<tr class="separator:af500df838024c82724eaf7fe1cb9b8e8"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="memitem:a1f007d68e808ba61f8425d0487432c0d" id="r_a1f007d68e808ba61f8425d0487432c0d"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#a1f007d68e808ba61f8425d0487432c0d">CVODESolverStrategy</a> (<a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html">CVODESolverStrategy</a> &&)=delete</td></tr>
|
||
|
|
<tr class="separator:a1f007d68e808ba61f8425d0487432c0d"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="memitem:ad26879fafcee9ecb21cc7c5ac0db1692" id="r_ad26879fafcee9ecb21cc7c5ac0db1692"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html">CVODESolverStrategy</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#ad26879fafcee9ecb21cc7c5ac0db1692">operator=</a> (<a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html">CVODESolverStrategy</a> &&)=delete</td></tr>
|
||
|
|
<tr class="separator:ad26879fafcee9ecb21cc7c5ac0db1692"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="memitem:ab8224d205ea3a28d9c723631c2f00b53" id="r_ab8224d205ea3a28d9c723631c2f00b53"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structgridfire_1_1NetOut.html">NetOut</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#ab8224d205ea3a28d9c723631c2f00b53">evaluate</a> (const <a class="el" href="structgridfire_1_1NetIn.html">NetIn</a> &netIn) override</td></tr>
|
||
|
|
<tr class="memdesc:ab8224d205ea3a28d9c723631c2f00b53"><td class="mdescLeft"> </td><td class="mdescRight">Integrate from t=0 to netIn.tMax and return final composition and energy. <br /></td></tr>
|
||
|
|
<tr class="separator:ab8224d205ea3a28d9c723631c2f00b53"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="memitem:a167e44c002243314aa58c84715490804" id="r_a167e44c002243314aa58c84715490804"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structgridfire_1_1NetOut.html">NetOut</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#a167e44c002243314aa58c84715490804">evaluate</a> (const <a class="el" href="structgridfire_1_1NetIn.html">NetIn</a> &netIn, bool displayTrigger)</td></tr>
|
||
|
|
<tr class="memdesc:a167e44c002243314aa58c84715490804"><td class="mdescLeft"> </td><td class="mdescRight">Call to evaluate which will let the user control if the trigger reasoning is displayed. <br /></td></tr>
|
||
|
|
<tr class="separator:a167e44c002243314aa58c84715490804"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="memitem:a77638ef3d2279009e5a57bbd3f0eb63b" id="r_a77638ef3d2279009e5a57bbd3f0eb63b"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#a77638ef3d2279009e5a57bbd3f0eb63b">set_callback</a> (const std::any &callback) override</td></tr>
|
||
|
|
<tr class="memdesc:a77638ef3d2279009e5a57bbd3f0eb63b"><td class="mdescLeft"> </td><td class="mdescRight">Install a timestep callback. <br /></td></tr>
|
||
|
|
<tr class="separator:a77638ef3d2279009e5a57bbd3f0eb63b"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="memitem:a87b7b39e2a15cc30b118c8e6fda9a1a6" id="r_a87b7b39e2a15cc30b118c8e6fda9a1a6"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#a87b7b39e2a15cc30b118c8e6fda9a1a6">get_stdout_logging_enabled</a> () const</td></tr>
|
||
|
|
<tr class="memdesc:a87b7b39e2a15cc30b118c8e6fda9a1a6"><td class="mdescLeft"> </td><td class="mdescRight">Whether per-step logs are printed to stdout and CVode is stepped with CV_ONE_STEP. <br /></td></tr>
|
||
|
|
<tr class="separator:a87b7b39e2a15cc30b118c8e6fda9a1a6"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="memitem:a9857665a1198e24aac6add02afc6e306" id="r_a9857665a1198e24aac6add02afc6e306"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#a9857665a1198e24aac6add02afc6e306">set_stdout_logging_enabled</a> (bool logging_enabled)</td></tr>
|
||
|
|
<tr class="memdesc:a9857665a1198e24aac6add02afc6e306"><td class="mdescLeft"> </td><td class="mdescRight">Enable/disable per-step stdout logging. <br /></td></tr>
|
||
|
|
<tr class="separator:a9857665a1198e24aac6add02afc6e306"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="memitem:aed8907852f77c15bb40d5a8e8f8af9b2" id="r_aed8907852f77c15bb40d5a8e8f8af9b2"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#aed8907852f77c15bb40d5a8e8f8af9b2">set_absTol</a> (double absTol)</td></tr>
|
||
|
|
<tr class="separator:aed8907852f77c15bb40d5a8e8f8af9b2"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="memitem:a6444290be523ad9fa91fa57c1dd4b6a2" id="r_a6444290be523ad9fa91fa57c1dd4b6a2"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#a6444290be523ad9fa91fa57c1dd4b6a2">set_relTol</a> (double relTol)</td></tr>
|
||
|
|
<tr class="separator:a6444290be523ad9fa91fa57c1dd4b6a2"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="memitem:ae98bbc854c88cf4aecf93a9204958a4c" id="r_ae98bbc854c88cf4aecf93a9204958a4c"><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#ae98bbc854c88cf4aecf93a9204958a4c">get_absTol</a> () const</td></tr>
|
||
|
|
<tr class="separator:ae98bbc854c88cf4aecf93a9204958a4c"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="memitem:a103273e838ea10f71a11705046f1f951" id="r_a103273e838ea10f71a11705046f1f951"><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#a103273e838ea10f71a11705046f1f951">get_relTol</a> () const</td></tr>
|
||
|
|
<tr class="separator:a103273e838ea10f71a11705046f1f951"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="memitem:a5dfb7a2ce0008d41dee4aa596a4e1ce4" id="r_a5dfb7a2ce0008d41dee4aa596a4e1ce4"><td class="memItemLeft" align="right" valign="top">std::vector< std::tuple< std::string, std::string > > </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#a5dfb7a2ce0008d41dee4aa596a4e1ce4">describe_callback_context</a> () const override</td></tr>
|
||
|
|
<tr class="memdesc:a5dfb7a2ce0008d41dee4aa596a4e1ce4"><td class="mdescLeft"> </td><td class="mdescRight">Schema of fields exposed to the timestep callback context. <br /></td></tr>
|
||
|
|
<tr class="separator:a5dfb7a2ce0008d41dee4aa596a4e1ce4"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="inherit_header pub_methods_classgridfire_1_1solver_1_1NetworkSolverStrategy"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classgridfire_1_1solver_1_1NetworkSolverStrategy')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="classgridfire_1_1solver_1_1NetworkSolverStrategy.html">gridfire::solver::NetworkSolverStrategy< EngineT ></a></td></tr>
|
||
|
|
<tr class="memitem:a01cbbec0eb5c3a60f50da38cdaf66505 inherit pub_methods_classgridfire_1_1solver_1_1NetworkSolverStrategy" id="r_a01cbbec0eb5c3a60f50da38cdaf66505"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1NetworkSolverStrategy.html#a01cbbec0eb5c3a60f50da38cdaf66505">NetworkSolverStrategy</a> (EngineT &engine)</td></tr>
|
||
|
|
<tr class="memdesc:a01cbbec0eb5c3a60f50da38cdaf66505 inherit pub_methods_classgridfire_1_1solver_1_1NetworkSolverStrategy"><td class="mdescLeft"> </td><td class="mdescRight">Constructor for the <a class="el" href="classgridfire_1_1solver_1_1NetworkSolverStrategy.html" title="Abstract base class for network solver strategies.">NetworkSolverStrategy</a>. <br /></td></tr>
|
||
|
|
<tr class="separator:a01cbbec0eb5c3a60f50da38cdaf66505 inherit pub_methods_classgridfire_1_1solver_1_1NetworkSolverStrategy"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="memitem:a1693dc93f63599c89587d729aca8e318 inherit pub_methods_classgridfire_1_1solver_1_1NetworkSolverStrategy" id="r_a1693dc93f63599c89587d729aca8e318"><td class="memItemLeft" align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1NetworkSolverStrategy.html#a1693dc93f63599c89587d729aca8e318">~NetworkSolverStrategy</a> ()=default</td></tr>
|
||
|
|
<tr class="memdesc:a1693dc93f63599c89587d729aca8e318 inherit pub_methods_classgridfire_1_1solver_1_1NetworkSolverStrategy"><td class="mdescLeft"> </td><td class="mdescRight">Virtual destructor. <br /></td></tr>
|
||
|
|
<tr class="separator:a1693dc93f63599c89587d729aca8e318 inherit pub_methods_classgridfire_1_1solver_1_1NetworkSolverStrategy"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
</table><table class="memberdecls">
|
||
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-methods" name="pri-methods"></a>
|
||
|
|
Private Member Functions</h2></td></tr>
|
||
|
|
<tr class="memitem:a460c2d19b468769770ec14e52684c0c8" id="r_a460c2d19b468769770ec14e52684c0c8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structgridfire_1_1solver_1_1CVODESolverStrategy_1_1CVODERHSOutputData.html">CVODERHSOutputData</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#a460c2d19b468769770ec14e52684c0c8">calculate_rhs</a> (sunrealtype t, N_Vector y, N_Vector ydot, const <a class="el" href="structgridfire_1_1solver_1_1CVODESolverStrategy_1_1CVODEUserData.html">CVODEUserData</a> *data) const</td></tr>
|
||
|
|
<tr class="memdesc:a460c2d19b468769770ec14e52684c0c8"><td class="mdescLeft"> </td><td class="mdescRight">Compute RHS into ydot at time t from the engine and current state y. <br /></td></tr>
|
||
|
|
<tr class="separator:a460c2d19b468769770ec14e52684c0c8"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="memitem:afc6c55237df4af240c4c842305085d91" id="r_afc6c55237df4af240c4c842305085d91"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#afc6c55237df4af240c4c842305085d91">initialize_cvode_integration_resources</a> (uint64_t N, size_t numSpecies, double current_time, const fourdst::composition::Composition &composition, double absTol, double relTol, double accumulatedEnergy)</td></tr>
|
||
|
|
<tr class="memdesc:afc6c55237df4af240c4c842305085d91"><td class="mdescLeft"> </td><td class="mdescRight">Allocate and initialize CVODE vectors, linear algebra, tolerances, and constraints. <br /></td></tr>
|
||
|
|
<tr class="separator:afc6c55237df4af240c4c842305085d91"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="memitem:a7f6786780137de1a136e081c537a9667" id="r_a7f6786780137de1a136e081c537a9667"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#a7f6786780137de1a136e081c537a9667">cleanup_cvode_resources</a> (bool memFree)</td></tr>
|
||
|
|
<tr class="memdesc:a7f6786780137de1a136e081c537a9667"><td class="mdescLeft"> </td><td class="mdescRight">Destroy CVODE vectors/linear algebra and optionally the CVODE memory block. <br /></td></tr>
|
||
|
|
<tr class="separator:a7f6786780137de1a136e081c537a9667"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="memitem:a91966d110ca6225af60b633af5521cb4" id="r_a91966d110ca6225af60b633af5521cb4"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#a91966d110ca6225af60b633af5521cb4">set_detailed_step_logging</a> (bool enabled)</td></tr>
|
||
|
|
<tr class="separator:a91966d110ca6225af60b633af5521cb4"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="memitem:a351744e5fcb06ddaf8507358481cfb1e" id="r_a351744e5fcb06ddaf8507358481cfb1e"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#a351744e5fcb06ddaf8507358481cfb1e">log_step_diagnostics</a> (const <a class="el" href="structgridfire_1_1solver_1_1CVODESolverStrategy_1_1CVODEUserData.html">CVODEUserData</a> &user_data, bool displayJacobianStiffness, bool displaySpeciesBalance, bool to_file, std::optional< std::string > filename) const</td></tr>
|
||
|
|
<tr class="memdesc:a351744e5fcb06ddaf8507358481cfb1e"><td class="mdescLeft"> </td><td class="mdescRight">Compute and print per-component error ratios; run diagnostic helpers. <br /></td></tr>
|
||
|
|
<tr class="separator:a351744e5fcb06ddaf8507358481cfb1e"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
</table><table class="memberdecls">
|
||
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-static-methods" name="pri-static-methods"></a>
|
||
|
|
Static Private Member Functions</h2></td></tr>
|
||
|
|
<tr class="memitem:a14c620ef75749c8ef3dfdb84132e5620" id="r_a14c620ef75749c8ef3dfdb84132e5620"><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#a14c620ef75749c8ef3dfdb84132e5620">cvode_rhs_wrapper</a> (sunrealtype t, N_Vector y, N_Vector ydot, void *user_data)</td></tr>
|
||
|
|
<tr class="memdesc:a14c620ef75749c8ef3dfdb84132e5620"><td class="mdescLeft"> </td><td class="mdescRight">CVODE RHS C-wrapper that delegates to calculate_rhs and captures exceptions. <br /></td></tr>
|
||
|
|
<tr class="separator:a14c620ef75749c8ef3dfdb84132e5620"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="memitem:ae13fc9c21f595edbee1c9b7debaa61b3" id="r_ae13fc9c21f595edbee1c9b7debaa61b3"><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#ae13fc9c21f595edbee1c9b7debaa61b3">cvode_jac_wrapper</a> (sunrealtype t, N_Vector y, N_Vector ydot, SUNMatrix J, void *user_data, N_Vector tmp1, N_Vector tmp2, N_Vector tmp3)</td></tr>
|
||
|
|
<tr class="memdesc:ae13fc9c21f595edbee1c9b7debaa61b3"><td class="mdescLeft"> </td><td class="mdescRight">CVODE dense Jacobian C-wrapper that fills SUNDenseMatrix using the engine. <br /></td></tr>
|
||
|
|
<tr class="separator:ae13fc9c21f595edbee1c9b7debaa61b3"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
</table><table class="memberdecls">
|
||
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-attribs" name="pri-attribs"></a>
|
||
|
|
Private Attributes</h2></td></tr>
|
||
|
|
<tr class="memitem:a202fe9e6499aac5f6813e036ee4ed2d5" id="r_a202fe9e6499aac5f6813e036ee4ed2d5"><td class="memItemLeft" align="right" valign="top">fourdst::config::Config & </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#a202fe9e6499aac5f6813e036ee4ed2d5">m_config</a> = fourdst::config::Config::getInstance()</td></tr>
|
||
|
|
<tr class="separator:a202fe9e6499aac5f6813e036ee4ed2d5"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="memitem:a5867eb99b00815b8b4f710cb48904dbe" id="r_a5867eb99b00815b8b4f710cb48904dbe"><td class="memItemLeft" align="right" valign="top">quill::Logger * </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#a5867eb99b00815b8b4f710cb48904dbe">m_logger</a> = fourdst::logging::LogManager::getInstance().getLogger("log")</td></tr>
|
||
|
|
<tr class="separator:a5867eb99b00815b8b4f710cb48904dbe"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="memitem:ac57a4f62d95d769c379470e680e6882d" id="r_ac57a4f62d95d769c379470e680e6882d"><td class="memItemLeft" align="right" valign="top">SUNContext </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#ac57a4f62d95d769c379470e680e6882d">m_sun_ctx</a> = nullptr</td></tr>
|
||
|
|
<tr class="memdesc:ac57a4f62d95d769c379470e680e6882d"><td class="mdescLeft"> </td><td class="mdescRight">SUNDIALS context (lifetime of the solver). <br /></td></tr>
|
||
|
|
<tr class="separator:ac57a4f62d95d769c379470e680e6882d"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="memitem:ab5a8fa55e36685cac50c1dbdd8dbfa57" id="r_ab5a8fa55e36685cac50c1dbdd8dbfa57"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#ab5a8fa55e36685cac50c1dbdd8dbfa57">m_cvode_mem</a> = nullptr</td></tr>
|
||
|
|
<tr class="memdesc:ab5a8fa55e36685cac50c1dbdd8dbfa57"><td class="mdescLeft"> </td><td class="mdescRight">CVODE memory block. <br /></td></tr>
|
||
|
|
<tr class="separator:ab5a8fa55e36685cac50c1dbdd8dbfa57"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="memitem:aae19c1ec467051404a7bf1d4c7066c22" id="r_aae19c1ec467051404a7bf1d4c7066c22"><td class="memItemLeft" align="right" valign="top">N_Vector </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#aae19c1ec467051404a7bf1d4c7066c22">m_Y</a> = nullptr</td></tr>
|
||
|
|
<tr class="memdesc:aae19c1ec467051404a7bf1d4c7066c22"><td class="mdescLeft"> </td><td class="mdescRight">CVODE state vector (species + energy accumulator). <br /></td></tr>
|
||
|
|
<tr class="separator:aae19c1ec467051404a7bf1d4c7066c22"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="memitem:a0717afcde6fdb71b12490bbcadb5fdb4" id="r_a0717afcde6fdb71b12490bbcadb5fdb4"><td class="memItemLeft" align="right" valign="top">N_Vector </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#a0717afcde6fdb71b12490bbcadb5fdb4">m_YErr</a> = nullptr</td></tr>
|
||
|
|
<tr class="memdesc:a0717afcde6fdb71b12490bbcadb5fdb4"><td class="mdescLeft"> </td><td class="mdescRight">Estimated local errors. <br /></td></tr>
|
||
|
|
<tr class="separator:a0717afcde6fdb71b12490bbcadb5fdb4"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="memitem:afd1053d0827512b6831ee15f14488c20" id="r_afd1053d0827512b6831ee15f14488c20"><td class="memItemLeft" align="right" valign="top">SUNMatrix </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#afd1053d0827512b6831ee15f14488c20">m_J</a> = nullptr</td></tr>
|
||
|
|
<tr class="memdesc:afd1053d0827512b6831ee15f14488c20"><td class="mdescLeft"> </td><td class="mdescRight">Dense Jacobian matrix. <br /></td></tr>
|
||
|
|
<tr class="separator:afd1053d0827512b6831ee15f14488c20"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="memitem:af4a2f003a4c4c06b4b72840f2d445f81" id="r_af4a2f003a4c4c06b4b72840f2d445f81"><td class="memItemLeft" align="right" valign="top">SUNLinearSolver </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#af4a2f003a4c4c06b4b72840f2d445f81">m_LS</a> = nullptr</td></tr>
|
||
|
|
<tr class="memdesc:af4a2f003a4c4c06b4b72840f2d445f81"><td class="mdescLeft"> </td><td class="mdescRight">Dense linear solver. <br /></td></tr>
|
||
|
|
<tr class="separator:af4a2f003a4c4c06b4b72840f2d445f81"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="memitem:aa8fb7a0b39e6bb7b97a4a98422f06482" id="r_aa8fb7a0b39e6bb7b97a4a98422f06482"><td class="memItemLeft" align="right" valign="top">std::optional< <a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#a89c537c2f34ba3e202374304b7e5990a">TimestepCallback</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#aa8fb7a0b39e6bb7b97a4a98422f06482">m_callback</a></td></tr>
|
||
|
|
<tr class="memdesc:aa8fb7a0b39e6bb7b97a4a98422f06482"><td class="mdescLeft"> </td><td class="mdescRight">Optional per-step callback. <br /></td></tr>
|
||
|
|
<tr class="separator:aa8fb7a0b39e6bb7b97a4a98422f06482"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="memitem:ab7495898e893640670f49308a105658f" id="r_ab7495898e893640670f49308a105658f"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#ab7495898e893640670f49308a105658f">m_num_steps</a> = 0</td></tr>
|
||
|
|
<tr class="memdesc:ab7495898e893640670f49308a105658f"><td class="mdescLeft"> </td><td class="mdescRight">CVODE step counter (used for diagnostics and triggers). <br /></td></tr>
|
||
|
|
<tr class="separator:ab7495898e893640670f49308a105658f"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="memitem:af3e470b5a6f982c107785c64b169a992" id="r_af3e470b5a6f982c107785c64b169a992"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#af3e470b5a6f982c107785c64b169a992">m_stdout_logging_enabled</a> = true</td></tr>
|
||
|
|
<tr class="memdesc:af3e470b5a6f982c107785c64b169a992"><td class="mdescLeft"> </td><td class="mdescRight">If true, print per-step logs and use CV_ONE_STEP. <br /></td></tr>
|
||
|
|
<tr class="separator:af3e470b5a6f982c107785c64b169a992"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="memitem:a50d8f309ca897fa83b16db0a1701b339" id="r_a50d8f309ca897fa83b16db0a1701b339"><td class="memItemLeft" align="right" valign="top">N_Vector </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#a50d8f309ca897fa83b16db0a1701b339">m_constraints</a> = nullptr</td></tr>
|
||
|
|
<tr class="memdesc:a50d8f309ca897fa83b16db0a1701b339"><td class="mdescLeft"> </td><td class="mdescRight">CVODE constraints vector (>= 0 for species entries). <br /></td></tr>
|
||
|
|
<tr class="separator:a50d8f309ca897fa83b16db0a1701b339"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="memitem:a421360b9908ea3e1d7c60a3fb51a2f75" id="r_a421360b9908ea3e1d7c60a3fb51a2f75"><td class="memItemLeft" align="right" valign="top">std::optional< double > </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#a421360b9908ea3e1d7c60a3fb51a2f75">m_absTol</a></td></tr>
|
||
|
|
<tr class="memdesc:a421360b9908ea3e1d7c60a3fb51a2f75"><td class="mdescLeft"> </td><td class="mdescRight">User-specified absolute tolerance. <br /></td></tr>
|
||
|
|
<tr class="separator:a421360b9908ea3e1d7c60a3fb51a2f75"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="memitem:a4f482b5e68023df9b7522b29dc79c764" id="r_a4f482b5e68023df9b7522b29dc79c764"><td class="memItemLeft" align="right" valign="top">std::optional< double > </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#a4f482b5e68023df9b7522b29dc79c764">m_relTol</a></td></tr>
|
||
|
|
<tr class="memdesc:a4f482b5e68023df9b7522b29dc79c764"><td class="mdescLeft"> </td><td class="mdescRight">User-specified relative tolerance. <br /></td></tr>
|
||
|
|
<tr class="separator:a4f482b5e68023df9b7522b29dc79c764"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
<tr class="memitem:a6aed67c333c914551aee9b88fa0af584" id="r_a6aed67c333c914551aee9b88fa0af584"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#a6aed67c333c914551aee9b88fa0af584">m_detailed_step_logging</a> = false</td></tr>
|
||
|
|
<tr class="memdesc:a6aed67c333c914551aee9b88fa0af584"><td class="mdescLeft"> </td><td class="mdescRight">If true, log detailed step diagnostics (error ratios, Jacobian, species balance). <br /></td></tr>
|
||
|
|
<tr class="separator:a6aed67c333c914551aee9b88fa0af584"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
</table><table class="memberdecls">
|
||
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="inherited" name="inherited"></a>
|
||
|
|
Additional Inherited Members</h2></td></tr>
|
||
|
|
<tr class="inherit_header pro_attribs_classgridfire_1_1solver_1_1NetworkSolverStrategy"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classgridfire_1_1solver_1_1NetworkSolverStrategy')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="classgridfire_1_1solver_1_1NetworkSolverStrategy.html">gridfire::solver::NetworkSolverStrategy< EngineT ></a></td></tr>
|
||
|
|
<tr class="memitem:a724924d94eaf82b67d9988a55c3261e8 inherit pro_attribs_classgridfire_1_1solver_1_1NetworkSolverStrategy" id="r_a724924d94eaf82b67d9988a55c3261e8"><td class="memItemLeft" align="right" valign="top">EngineT & </td><td class="memItemRight" valign="bottom"><a class="el" href="classgridfire_1_1solver_1_1NetworkSolverStrategy.html#a724924d94eaf82b67d9988a55c3261e8">m_engine</a></td></tr>
|
||
|
|
<tr class="memdesc:a724924d94eaf82b67d9988a55c3261e8 inherit pro_attribs_classgridfire_1_1solver_1_1NetworkSolverStrategy"><td class="mdescLeft"> </td><td class="mdescRight">The engine used by this solver strategy. <br /></td></tr>
|
||
|
|
<tr class="separator:a724924d94eaf82b67d9988a55c3261e8 inherit pro_attribs_classgridfire_1_1solver_1_1NetworkSolverStrategy"><td class="memSeparator" colspan="2"> </td></tr>
|
||
|
|
</table>
|
||
|
|
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||
|
|
<div class="textblock"><p>Stiff ODE integrator backed by SUNDIALS CVODE (BDF) for network + energy. </p>
|
||
|
|
<p>Integrates the nuclear network abundances along with a final accumulator entry for specific energy using CVODE's BDF method and a dense linear solver. The state vector layout is: [y_0, y_1, ..., y_{N-1}, eps], where eps is the accumulated specific energy (erg/g).</p>
|
||
|
|
<p>Implementation summary:</p><ul>
|
||
|
|
<li>Creates a SUNContext and CVODE memory; initializes the state from a Composition.</li>
|
||
|
|
<li>Enforces non-negativity on species via CVodeSetConstraints (>= 0 for all species slots).</li>
|
||
|
|
<li>Uses a user-provided DynamicEngine to compute RHS and to fill the dense Jacobian.</li>
|
||
|
|
<li>The Jacobian is assembled column-major into a SUNDenseMatrix; the energy row/column is currently set to zero (decoupled from abundances in the linearization).</li>
|
||
|
|
<li>An internal trigger can rebuild the engine/network; when triggered, CVODE resources are torn down and recreated with the new network size, preserving the energy accumulator.</li>
|
||
|
|
<li>The CVODE RHS wrapper captures exceptions::StaleEngineTrigger from the engine evaluation path as recoverable (return code 1) and stores a copy in user-data for the driver loop.</li>
|
||
|
|
</ul>
|
||
|
|
<dl class="section user"><dt>Example</dt><dd><div class="fragment"><div class="line"><span class="keyword">using </span><a class="code hl_class" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html">gridfire::solver::CVODESolverStrategy</a>;</div>
|
||
|
|
<div class="line"><span class="keyword">using </span>gridfire::solver::NetIn;</div>
|
||
|
|
<div class="line"> </div>
|
||
|
|
<div class="line"><a class="code hl_class" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html">CVODESolverStrategy</a> solver(engine);</div>
|
||
|
|
<div class="line"><a class="code hl_struct" href="structgridfire_1_1NetIn.html">NetIn</a> in;</div>
|
||
|
|
<div class="line">in.<a class="code hl_variable" href="structgridfire_1_1NetIn.html#a5be0f5195a5cd1dd177b9fc5ab83a7be">temperature</a> = 1.0e9; <span class="comment">// K</span></div>
|
||
|
|
<div class="line">in.<a class="code hl_variable" href="structgridfire_1_1NetIn.html#a06f0dff9f8927b7cf2da3004c8fa1577">density</a> = 1.0e6; <span class="comment">// g/cm^3</span></div>
|
||
|
|
<div class="line">in.<a class="code hl_variable" href="structgridfire_1_1NetIn.html#a0a8d820cfeaa92ee31f253795c57e0d1">tMax</a> = 1.0; <span class="comment">// s</span></div>
|
||
|
|
<div class="line">in.<a class="code hl_variable" href="structgridfire_1_1NetIn.html#a13058f4929e72c1187abbebcddb8aed1">composition</a> = initialComposition;</div>
|
||
|
|
<div class="line"><span class="keyword">auto</span> out = solver.evaluate(in);</div>
|
||
|
|
<div class="line">std::cout << <span class="stringliteral">"Final energy: "</span> << out.energy << <span class="stringliteral">" erg/g\n"</span>;</div>
|
||
|
|
<div class="ttc" id="aclassgridfire_1_1solver_1_1CVODESolverStrategy_html"><div class="ttname"><a href="classgridfire_1_1solver_1_1CVODESolverStrategy.html">gridfire::solver::CVODESolverStrategy</a></div><div class="ttdoc">Stiff ODE integrator backed by SUNDIALS CVODE (BDF) for network + energy.</div><div class="ttdef"><b>Definition</b> CVODE_solver_strategy.h:81</div></div>
|
||
|
|
<div class="ttc" id="astructgridfire_1_1NetIn_html"><div class="ttname"><a href="structgridfire_1_1NetIn.html">gridfire::NetIn</a></div><div class="ttdef"><b>Definition</b> types.h:27</div></div>
|
||
|
|
<div class="ttc" id="astructgridfire_1_1NetIn_html_a06f0dff9f8927b7cf2da3004c8fa1577"><div class="ttname"><a href="structgridfire_1_1NetIn.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> types.h:32</div></div>
|
||
|
|
<div class="ttc" id="astructgridfire_1_1NetIn_html_a0a8d820cfeaa92ee31f253795c57e0d1"><div class="ttname"><a href="structgridfire_1_1NetIn.html#a0a8d820cfeaa92ee31f253795c57e0d1">gridfire::NetIn::tMax</a></div><div class="ttdeci">double tMax</div><div class="ttdoc">Maximum time.</div><div class="ttdef"><b>Definition</b> types.h:29</div></div>
|
||
|
|
<div class="ttc" id="astructgridfire_1_1NetIn_html_a13058f4929e72c1187abbebcddb8aed1"><div class="ttname"><a href="structgridfire_1_1NetIn.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> types.h:28</div></div>
|
||
|
|
<div class="ttc" id="astructgridfire_1_1NetIn_html_a5be0f5195a5cd1dd177b9fc5ab83a7be"><div class="ttname"><a href="structgridfire_1_1NetIn.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> types.h:31</div></div>
|
||
|
|
</div><!-- fragment --> </dd></dl>
|
||
|
|
</div><h2 class="groupheader">Member Typedef Documentation</h2>
|
||
|
|
<a id="a89c537c2f34ba3e202374304b7e5990a" name="a89c537c2f34ba3e202374304b7e5990a"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a89c537c2f34ba3e202374304b7e5990a">◆ </a></span>TimestepCallback</h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname">using <a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#a89c537c2f34ba3e202374304b7e5990a">gridfire::solver::CVODESolverStrategy::TimestepCallback</a> = std::function<void(const <a class="el" href="structgridfire_1_1solver_1_1CVODESolverStrategy_1_1TimestepContext.html">TimestepContext</a>& context)></td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
<p>Type alias for a timestep callback function. </p>
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<h2 class="groupheader">Constructor & Destructor Documentation</h2>
|
||
|
|
<a id="a8beeb102d8e459cd133cd1bd5fb7e135" name="a8beeb102d8e459cd133cd1bd5fb7e135"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a8beeb102d8e459cd133cd1bd5fb7e135">◆ </a></span>CVODESolverStrategy() <span class="overload">[1/3]</span></h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="mlabels">
|
||
|
|
<tr>
|
||
|
|
<td class="mlabels-left">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname">gridfire::solver::CVODESolverStrategy::CVODESolverStrategy </td>
|
||
|
|
<td>(</td>
|
||
|
|
<td class="paramtype"><a class="el" href="classgridfire_1_1engine_1_1DynamicEngine.html">engine::DynamicEngine</a> & </td>
|
||
|
|
<td class="paramname"><em>engine</em></td><td>)</td>
|
||
|
|
<td></td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</td>
|
||
|
|
<td class="mlabels-right">
|
||
|
|
<span class="mlabels"><span class="mlabel">explicit</span></span> </td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
<p>Construct the CVODE strategy and create a SUNDIALS context. </p>
|
||
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
||
|
|
<table class="params">
|
||
|
|
<tr><td class="paramname">engine</td><td>DynamicEngine used for RHS/Jacobian evaluation and network access. </td></tr>
|
||
|
|
</table>
|
||
|
|
</dd>
|
||
|
|
</dl>
|
||
|
|
<dl class="exception"><dt>Exceptions</dt><dd>
|
||
|
|
<table class="exception">
|
||
|
|
<tr><td class="paramname">std::runtime_error</td><td>If SUNContext_Create fails. </td></tr>
|
||
|
|
</table>
|
||
|
|
</dd>
|
||
|
|
</dl>
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<a id="aca2d01a907c3bb828f9f99ad05506578" name="aca2d01a907c3bb828f9f99ad05506578"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#aca2d01a907c3bb828f9f99ad05506578">◆ </a></span>~CVODESolverStrategy()</h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="mlabels">
|
||
|
|
<tr>
|
||
|
|
<td class="mlabels-left">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname">gridfire::solver::CVODESolverStrategy::~CVODESolverStrategy </td>
|
||
|
|
<td>(</td>
|
||
|
|
<td class="paramname"></td><td>)</td>
|
||
|
|
<td></td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</td>
|
||
|
|
<td class="mlabels-right">
|
||
|
|
<span class="mlabels"><span class="mlabel">override</span></span> </td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
<p>Destructor: cleans CVODE/SUNDIALS resources and frees SUNContext. </p>
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<a id="a2fa56a2e7a63d31d2afa895a5e4fe827" name="a2fa56a2e7a63d31d2afa895a5e4fe827"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a2fa56a2e7a63d31d2afa895a5e4fe827">◆ </a></span>CVODESolverStrategy() <span class="overload">[2/3]</span></h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="mlabels">
|
||
|
|
<tr>
|
||
|
|
<td class="mlabels-left">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname">gridfire::solver::CVODESolverStrategy::CVODESolverStrategy </td>
|
||
|
|
<td>(</td>
|
||
|
|
<td class="paramtype">const <a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html">CVODESolverStrategy</a> & </td>
|
||
|
|
<td class="paramname"></td><td>)</td>
|
||
|
|
<td></td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</td>
|
||
|
|
<td class="mlabels-right">
|
||
|
|
<span class="mlabels"><span class="mlabel">delete</span></span> </td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<a id="a1f007d68e808ba61f8425d0487432c0d" name="a1f007d68e808ba61f8425d0487432c0d"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a1f007d68e808ba61f8425d0487432c0d">◆ </a></span>CVODESolverStrategy() <span class="overload">[3/3]</span></h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="mlabels">
|
||
|
|
<tr>
|
||
|
|
<td class="mlabels-left">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname">gridfire::solver::CVODESolverStrategy::CVODESolverStrategy </td>
|
||
|
|
<td>(</td>
|
||
|
|
<td class="paramtype"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html">CVODESolverStrategy</a> && </td>
|
||
|
|
<td class="paramname"></td><td>)</td>
|
||
|
|
<td></td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</td>
|
||
|
|
<td class="mlabels-right">
|
||
|
|
<span class="mlabels"><span class="mlabel">delete</span></span> </td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<h2 class="groupheader">Member Function Documentation</h2>
|
||
|
|
<a id="a460c2d19b468769770ec14e52684c0c8" name="a460c2d19b468769770ec14e52684c0c8"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a460c2d19b468769770ec14e52684c0c8">◆ </a></span>calculate_rhs()</h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="mlabels">
|
||
|
|
<tr>
|
||
|
|
<td class="mlabels-left">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname"><a class="el" href="structgridfire_1_1solver_1_1CVODESolverStrategy_1_1CVODERHSOutputData.html">CVODESolverStrategy::CVODERHSOutputData</a> gridfire::solver::CVODESolverStrategy::calculate_rhs </td>
|
||
|
|
<td>(</td>
|
||
|
|
<td class="paramtype">sunrealtype </td>
|
||
|
|
<td class="paramname"><em>t</em>, </td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<td class="paramkey"></td>
|
||
|
|
<td></td>
|
||
|
|
<td class="paramtype">N_Vector </td>
|
||
|
|
<td class="paramname"><em>y</em>, </td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<td class="paramkey"></td>
|
||
|
|
<td></td>
|
||
|
|
<td class="paramtype">N_Vector </td>
|
||
|
|
<td class="paramname"><em>ydot</em>, </td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<td class="paramkey"></td>
|
||
|
|
<td></td>
|
||
|
|
<td class="paramtype">const <a class="el" href="structgridfire_1_1solver_1_1CVODESolverStrategy_1_1CVODEUserData.html">CVODEUserData</a> * </td>
|
||
|
|
<td class="paramname"><em>data</em> </td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<td></td>
|
||
|
|
<td>)</td>
|
||
|
|
<td></td><td> const</td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</td>
|
||
|
|
<td class="mlabels-right">
|
||
|
|
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
<p>Compute RHS into ydot at time t from the engine and current state y. </p>
|
||
|
|
<p>Converts the CVODE state to a Composition (mass fractions) and calls engine.calculateRHSAndEnergy(T9, rho). Negative small abundances are clamped to zero before constructing Composition. On stale engine, throws exceptions::StaleEngineTrigger. </p>
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<a id="a7f6786780137de1a136e081c537a9667" name="a7f6786780137de1a136e081c537a9667"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a7f6786780137de1a136e081c537a9667">◆ </a></span>cleanup_cvode_resources()</h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="mlabels">
|
||
|
|
<tr>
|
||
|
|
<td class="mlabels-left">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname">void gridfire::solver::CVODESolverStrategy::cleanup_cvode_resources </td>
|
||
|
|
<td>(</td>
|
||
|
|
<td class="paramtype">bool </td>
|
||
|
|
<td class="paramname"><em>memFree</em></td><td>)</td>
|
||
|
|
<td></td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</td>
|
||
|
|
<td class="mlabels-right">
|
||
|
|
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
<p>Destroy CVODE vectors/linear algebra and optionally the CVODE memory block. </p>
|
||
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
||
|
|
<table class="params">
|
||
|
|
<tr><td class="paramname">memFree</td><td>If true, also calls CVodeFree on m_cvode_mem. </td></tr>
|
||
|
|
</table>
|
||
|
|
</dd>
|
||
|
|
</dl>
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<a id="ae13fc9c21f595edbee1c9b7debaa61b3" name="ae13fc9c21f595edbee1c9b7debaa61b3"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ae13fc9c21f595edbee1c9b7debaa61b3">◆ </a></span>cvode_jac_wrapper()</h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="mlabels">
|
||
|
|
<tr>
|
||
|
|
<td class="mlabels-left">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname">int gridfire::solver::CVODESolverStrategy::cvode_jac_wrapper </td>
|
||
|
|
<td>(</td>
|
||
|
|
<td class="paramtype">sunrealtype </td>
|
||
|
|
<td class="paramname"><em>t</em>, </td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<td class="paramkey"></td>
|
||
|
|
<td></td>
|
||
|
|
<td class="paramtype">N_Vector </td>
|
||
|
|
<td class="paramname"><em>y</em>, </td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<td class="paramkey"></td>
|
||
|
|
<td></td>
|
||
|
|
<td class="paramtype">N_Vector </td>
|
||
|
|
<td class="paramname"><em>ydot</em>, </td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<td class="paramkey"></td>
|
||
|
|
<td></td>
|
||
|
|
<td class="paramtype">SUNMatrix </td>
|
||
|
|
<td class="paramname"><em>J</em>, </td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<td class="paramkey"></td>
|
||
|
|
<td></td>
|
||
|
|
<td class="paramtype">void * </td>
|
||
|
|
<td class="paramname"><em>user_data</em>, </td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<td class="paramkey"></td>
|
||
|
|
<td></td>
|
||
|
|
<td class="paramtype">N_Vector </td>
|
||
|
|
<td class="paramname"><em>tmp1</em>, </td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<td class="paramkey"></td>
|
||
|
|
<td></td>
|
||
|
|
<td class="paramtype">N_Vector </td>
|
||
|
|
<td class="paramname"><em>tmp2</em>, </td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<td class="paramkey"></td>
|
||
|
|
<td></td>
|
||
|
|
<td class="paramtype">N_Vector </td>
|
||
|
|
<td class="paramname"><em>tmp3</em> </td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<td></td>
|
||
|
|
<td>)</td>
|
||
|
|
<td></td><td></td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</td>
|
||
|
|
<td class="mlabels-right">
|
||
|
|
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">private</span></span> </td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
<p>CVODE dense Jacobian C-wrapper that fills SUNDenseMatrix using the engine. </p>
|
||
|
|
<p>Assembles J(i,j) = d(f_i)/d(y_j) for all species using engine->getJacobianMatrixEntry, then zeros the last row and column corresponding to the energy variable. </p>
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<a id="a14c620ef75749c8ef3dfdb84132e5620" name="a14c620ef75749c8ef3dfdb84132e5620"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a14c620ef75749c8ef3dfdb84132e5620">◆ </a></span>cvode_rhs_wrapper()</h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="mlabels">
|
||
|
|
<tr>
|
||
|
|
<td class="mlabels-left">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname">int gridfire::solver::CVODESolverStrategy::cvode_rhs_wrapper </td>
|
||
|
|
<td>(</td>
|
||
|
|
<td class="paramtype">sunrealtype </td>
|
||
|
|
<td class="paramname"><em>t</em>, </td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<td class="paramkey"></td>
|
||
|
|
<td></td>
|
||
|
|
<td class="paramtype">N_Vector </td>
|
||
|
|
<td class="paramname"><em>y</em>, </td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<td class="paramkey"></td>
|
||
|
|
<td></td>
|
||
|
|
<td class="paramtype">N_Vector </td>
|
||
|
|
<td class="paramname"><em>ydot</em>, </td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<td class="paramkey"></td>
|
||
|
|
<td></td>
|
||
|
|
<td class="paramtype">void * </td>
|
||
|
|
<td class="paramname"><em>user_data</em> </td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<td></td>
|
||
|
|
<td>)</td>
|
||
|
|
<td></td><td></td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</td>
|
||
|
|
<td class="mlabels-right">
|
||
|
|
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">private</span></span> </td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
<p>CVODE RHS C-wrapper that delegates to calculate_rhs and captures exceptions. </p>
|
||
|
|
<dl class="section return"><dt>Returns</dt><dd>0 on success; 1 on recoverable StaleEngineTrigger; -1 on other failures. </dd></dl>
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<a id="a5dfb7a2ce0008d41dee4aa596a4e1ce4" name="a5dfb7a2ce0008d41dee4aa596a4e1ce4"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a5dfb7a2ce0008d41dee4aa596a4e1ce4">◆ </a></span>describe_callback_context()</h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="mlabels">
|
||
|
|
<tr>
|
||
|
|
<td class="mlabels-left">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname">std::vector< std::tuple< std::string, std::string > > gridfire::solver::CVODESolverStrategy::describe_callback_context </td>
|
||
|
|
<td>(</td>
|
||
|
|
<td class="paramname"></td><td>)</td>
|
||
|
|
<td> const</td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</td>
|
||
|
|
<td class="mlabels-right">
|
||
|
|
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
<p>Schema of fields exposed to the timestep callback context. </p>
|
||
|
|
|
||
|
|
<p>Implements <a class="el" href="classgridfire_1_1solver_1_1NetworkSolverStrategy.html#ae09169769774f17df8701c42a64ed656">gridfire::solver::NetworkSolverStrategy< EngineT ></a>.</p>
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<a id="ab8224d205ea3a28d9c723631c2f00b53" name="ab8224d205ea3a28d9c723631c2f00b53"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ab8224d205ea3a28d9c723631c2f00b53">◆ </a></span>evaluate() <span class="overload">[1/2]</span></h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="mlabels">
|
||
|
|
<tr>
|
||
|
|
<td class="mlabels-left">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname"><a class="el" href="structgridfire_1_1NetOut.html">NetOut</a> gridfire::solver::CVODESolverStrategy::evaluate </td>
|
||
|
|
<td>(</td>
|
||
|
|
<td class="paramtype">const <a class="el" href="structgridfire_1_1NetIn.html">NetIn</a> & </td>
|
||
|
|
<td class="paramname"><em>netIn</em></td><td>)</td>
|
||
|
|
<td></td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</td>
|
||
|
|
<td class="mlabels-right">
|
||
|
|
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
<p>Integrate from t=0 to netIn.tMax and return final composition and energy. </p>
|
||
|
|
<p>Implementation summary:</p><ul>
|
||
|
|
<li>Converts temperature to T9, initializes CVODE memory and state (size = numSpecies + 1).</li>
|
||
|
|
<li>Repeatedly calls CVode in single-step or normal mode depending on stdout logging.</li>
|
||
|
|
<li>Wraps RHS to capture exceptions::StaleEngineTrigger as a recoverable step failure; if present after a step, it is rethrown for upstream handling.</li>
|
||
|
|
<li>Prints/collects diagnostics per step (step size, energy, solver iterations).</li>
|
||
|
|
<li>On trigger activation, rebuilds CVODE resources to reflect a changed network and reinitialized the state using the latest engine composition, preserving energy.</li>
|
||
|
|
<li>At the end, converts molar abundances to mass fractions and assembles <a class="el" href="structgridfire_1_1NetOut.html">NetOut</a>, including derivatives of energy w.r.t. T and rho from the engine.</li>
|
||
|
|
</ul>
|
||
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
||
|
|
<table class="params">
|
||
|
|
<tr><td class="paramname">netIn</td><td>Inputs: temperature [K], density [g cm^-3], tMax [s], composition. </td></tr>
|
||
|
|
</table>
|
||
|
|
</dd>
|
||
|
|
</dl>
|
||
|
|
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="structgridfire_1_1NetOut.html">NetOut</a> containing final Composition, accumulated energy [erg/g], step count, and dEps/dT, dEps/dRho. </dd></dl>
|
||
|
|
<dl class="exception"><dt>Exceptions</dt><dd>
|
||
|
|
<table class="exception">
|
||
|
|
<tr><td class="paramname">std::runtime_error</td><td>If any CVODE or SUNDIALS call fails (negative return codes), or if internal consistency checks fail during engine updates. </td></tr>
|
||
|
|
<tr><td class="paramname">exceptions::StaleEngineTrigger</td><td>Propagated if the engine signals a stale state during RHS evaluation (captured in the wrapper then rethrown here). </td></tr>
|
||
|
|
</table>
|
||
|
|
</dd>
|
||
|
|
</dl>
|
||
|
|
|
||
|
|
<p>Implements <a class="el" href="classgridfire_1_1solver_1_1NetworkSolverStrategy.html#ace539b0482db171845ff1bd38d76b70f">gridfire::solver::NetworkSolverStrategy< EngineT ></a>.</p>
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<a id="a167e44c002243314aa58c84715490804" name="a167e44c002243314aa58c84715490804"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a167e44c002243314aa58c84715490804">◆ </a></span>evaluate() <span class="overload">[2/2]</span></h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname"><a class="el" href="structgridfire_1_1NetOut.html">NetOut</a> gridfire::solver::CVODESolverStrategy::evaluate </td>
|
||
|
|
<td>(</td>
|
||
|
|
<td class="paramtype">const <a class="el" href="structgridfire_1_1NetIn.html">NetIn</a> & </td>
|
||
|
|
<td class="paramname"><em>netIn</em>, </td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<td class="paramkey"></td>
|
||
|
|
<td></td>
|
||
|
|
<td class="paramtype">bool </td>
|
||
|
|
<td class="paramname"><em>displayTrigger</em> </td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<td></td>
|
||
|
|
<td>)</td>
|
||
|
|
<td></td><td></td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
<p>Call to evaluate which will let the user control if the trigger reasoning is displayed. </p>
|
||
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
||
|
|
<table class="params">
|
||
|
|
<tr><td class="paramname">netIn</td><td>Inputs: temperature [K], density [g cm^-3], tMax [s], composition. </td></tr>
|
||
|
|
<tr><td class="paramname">displayTrigger</td><td>Boolean flag to control if trigger reasoning is displayed </td></tr>
|
||
|
|
</table>
|
||
|
|
</dd>
|
||
|
|
</dl>
|
||
|
|
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="structgridfire_1_1NetOut.html">NetOut</a> containing final Composition, accumulated energy [erg/g], step count, and dEps/dT, dEps/dRho. </dd></dl>
|
||
|
|
<dl class="exception"><dt>Exceptions</dt><dd>
|
||
|
|
<table class="exception">
|
||
|
|
<tr><td class="paramname">std::runtime_error</td><td>If any CVODE or SUNDIALS call fails (negative return codes), or if internal consistency checks fail during engine updates. </td></tr>
|
||
|
|
<tr><td class="paramname">exceptions::StaleEngineTrigger</td><td>Propagated if the engine signals a stale state during RHS evaluation (captured in the wrapper then rethrown here). </td></tr>
|
||
|
|
</table>
|
||
|
|
</dd>
|
||
|
|
</dl>
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<a id="ae98bbc854c88cf4aecf93a9204958a4c" name="ae98bbc854c88cf4aecf93a9204958a4c"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ae98bbc854c88cf4aecf93a9204958a4c">◆ </a></span>get_absTol()</h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname">double gridfire::solver::CVODESolverStrategy::get_absTol </td>
|
||
|
|
<td>(</td>
|
||
|
|
<td class="paramname"></td><td>)</td>
|
||
|
|
<td> const</td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<a id="a103273e838ea10f71a11705046f1f951" name="a103273e838ea10f71a11705046f1f951"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a103273e838ea10f71a11705046f1f951">◆ </a></span>get_relTol()</h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname">double gridfire::solver::CVODESolverStrategy::get_relTol </td>
|
||
|
|
<td>(</td>
|
||
|
|
<td class="paramname"></td><td>)</td>
|
||
|
|
<td> const</td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<a id="a87b7b39e2a15cc30b118c8e6fda9a1a6" name="a87b7b39e2a15cc30b118c8e6fda9a1a6"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a87b7b39e2a15cc30b118c8e6fda9a1a6">◆ </a></span>get_stdout_logging_enabled()</h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname">bool gridfire::solver::CVODESolverStrategy::get_stdout_logging_enabled </td>
|
||
|
|
<td>(</td>
|
||
|
|
<td class="paramname"></td><td>)</td>
|
||
|
|
<td> const</td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
<p>Whether per-step logs are printed to stdout and CVode is stepped with CV_ONE_STEP. </p>
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<a id="afc6c55237df4af240c4c842305085d91" name="afc6c55237df4af240c4c842305085d91"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#afc6c55237df4af240c4c842305085d91">◆ </a></span>initialize_cvode_integration_resources()</h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="mlabels">
|
||
|
|
<tr>
|
||
|
|
<td class="mlabels-left">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname">void gridfire::solver::CVODESolverStrategy::initialize_cvode_integration_resources </td>
|
||
|
|
<td>(</td>
|
||
|
|
<td class="paramtype">uint64_t </td>
|
||
|
|
<td class="paramname"><em>N</em>, </td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<td class="paramkey"></td>
|
||
|
|
<td></td>
|
||
|
|
<td class="paramtype">size_t </td>
|
||
|
|
<td class="paramname"><em>numSpecies</em>, </td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<td class="paramkey"></td>
|
||
|
|
<td></td>
|
||
|
|
<td class="paramtype">double </td>
|
||
|
|
<td class="paramname"><em>current_time</em>, </td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<td class="paramkey"></td>
|
||
|
|
<td></td>
|
||
|
|
<td class="paramtype">const fourdst::composition::Composition & </td>
|
||
|
|
<td class="paramname"><em>composition</em>, </td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<td class="paramkey"></td>
|
||
|
|
<td></td>
|
||
|
|
<td class="paramtype">double </td>
|
||
|
|
<td class="paramname"><em>absTol</em>, </td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<td class="paramkey"></td>
|
||
|
|
<td></td>
|
||
|
|
<td class="paramtype">double </td>
|
||
|
|
<td class="paramname"><em>relTol</em>, </td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<td class="paramkey"></td>
|
||
|
|
<td></td>
|
||
|
|
<td class="paramtype">double </td>
|
||
|
|
<td class="paramname"><em>accumulatedEnergy</em> </td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<td></td>
|
||
|
|
<td>)</td>
|
||
|
|
<td></td><td></td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</td>
|
||
|
|
<td class="mlabels-right">
|
||
|
|
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
<p>Allocate and initialize CVODE vectors, linear algebra, tolerances, and constraints. </p>
|
||
|
|
<p>State vector m_Y is sized to N (numSpecies + 1). Species slots are initialized from Composition molar abundances when present, otherwise a tiny positive value; the last slot is set to accumulatedEnergy. Sets scalar tolerances, non-negativity constraints for species, maximum step size, creates a dense matrix and dense linear solver, and registers the Jacobian. </p>
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<a id="a351744e5fcb06ddaf8507358481cfb1e" name="a351744e5fcb06ddaf8507358481cfb1e"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a351744e5fcb06ddaf8507358481cfb1e">◆ </a></span>log_step_diagnostics()</h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="mlabels">
|
||
|
|
<tr>
|
||
|
|
<td class="mlabels-left">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname">void gridfire::solver::CVODESolverStrategy::log_step_diagnostics </td>
|
||
|
|
<td>(</td>
|
||
|
|
<td class="paramtype">const <a class="el" href="structgridfire_1_1solver_1_1CVODESolverStrategy_1_1CVODEUserData.html">CVODEUserData</a> & </td>
|
||
|
|
<td class="paramname"><em>user_data</em>, </td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<td class="paramkey"></td>
|
||
|
|
<td></td>
|
||
|
|
<td class="paramtype">bool </td>
|
||
|
|
<td class="paramname"><em>displayJacobianStiffness</em>, </td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<td class="paramkey"></td>
|
||
|
|
<td></td>
|
||
|
|
<td class="paramtype">bool </td>
|
||
|
|
<td class="paramname"><em>displaySpeciesBalance</em>, </td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<td class="paramkey"></td>
|
||
|
|
<td></td>
|
||
|
|
<td class="paramtype">bool </td>
|
||
|
|
<td class="paramname"><em>to_file</em>, </td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<td class="paramkey"></td>
|
||
|
|
<td></td>
|
||
|
|
<td class="paramtype">std::optional< std::string > </td>
|
||
|
|
<td class="paramname"><em>filename</em> </td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<td></td>
|
||
|
|
<td>)</td>
|
||
|
|
<td></td><td> const</td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</td>
|
||
|
|
<td class="mlabels-right">
|
||
|
|
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
<p>Compute and print per-component error ratios; run diagnostic helpers. </p>
|
||
|
|
<p>Gathers CVODE's estimated local errors, converts the state to a Composition, and prints a sorted table of species with the highest error ratios; then invokes diagnostic routines to inspect Jacobian stiffness and species balance. </p>
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<a id="af500df838024c82724eaf7fe1cb9b8e8" name="af500df838024c82724eaf7fe1cb9b8e8"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#af500df838024c82724eaf7fe1cb9b8e8">◆ </a></span>operator=() <span class="overload">[1/2]</span></h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="mlabels">
|
||
|
|
<tr>
|
||
|
|
<td class="mlabels-left">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html">CVODESolverStrategy</a> & gridfire::solver::CVODESolverStrategy::operator= </td>
|
||
|
|
<td>(</td>
|
||
|
|
<td class="paramtype">const <a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html">CVODESolverStrategy</a> & </td>
|
||
|
|
<td class="paramname"></td><td>)</td>
|
||
|
|
<td></td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</td>
|
||
|
|
<td class="mlabels-right">
|
||
|
|
<span class="mlabels"><span class="mlabel">delete</span></span> </td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<a id="ad26879fafcee9ecb21cc7c5ac0db1692" name="ad26879fafcee9ecb21cc7c5ac0db1692"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ad26879fafcee9ecb21cc7c5ac0db1692">◆ </a></span>operator=() <span class="overload">[2/2]</span></h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="mlabels">
|
||
|
|
<tr>
|
||
|
|
<td class="mlabels-left">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html">CVODESolverStrategy</a> & gridfire::solver::CVODESolverStrategy::operator= </td>
|
||
|
|
<td>(</td>
|
||
|
|
<td class="paramtype"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html">CVODESolverStrategy</a> && </td>
|
||
|
|
<td class="paramname"></td><td>)</td>
|
||
|
|
<td></td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</td>
|
||
|
|
<td class="mlabels-right">
|
||
|
|
<span class="mlabels"><span class="mlabel">delete</span></span> </td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<a id="aed8907852f77c15bb40d5a8e8f8af9b2" name="aed8907852f77c15bb40d5a8e8f8af9b2"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#aed8907852f77c15bb40d5a8e8f8af9b2">◆ </a></span>set_absTol()</h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname">void gridfire::solver::CVODESolverStrategy::set_absTol </td>
|
||
|
|
<td>(</td>
|
||
|
|
<td class="paramtype">double </td>
|
||
|
|
<td class="paramname"><em>absTol</em></td><td>)</td>
|
||
|
|
<td></td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<a id="a77638ef3d2279009e5a57bbd3f0eb63b" name="a77638ef3d2279009e5a57bbd3f0eb63b"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a77638ef3d2279009e5a57bbd3f0eb63b">◆ </a></span>set_callback()</h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="mlabels">
|
||
|
|
<tr>
|
||
|
|
<td class="mlabels-left">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname">void gridfire::solver::CVODESolverStrategy::set_callback </td>
|
||
|
|
<td>(</td>
|
||
|
|
<td class="paramtype">const std::any & </td>
|
||
|
|
<td class="paramname"><em>callback</em></td><td>)</td>
|
||
|
|
<td></td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</td>
|
||
|
|
<td class="mlabels-right">
|
||
|
|
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span> </td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
<p>Install a timestep callback. </p>
|
||
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
||
|
|
<table class="params">
|
||
|
|
<tr><td class="paramname">callback</td><td>std::any containing TimestepCallback (std::function<void(const TimestepContext&)>). </td></tr>
|
||
|
|
</table>
|
||
|
|
</dd>
|
||
|
|
</dl>
|
||
|
|
<dl class="exception"><dt>Exceptions</dt><dd>
|
||
|
|
<table class="exception">
|
||
|
|
<tr><td class="paramname">std::bad_any_cast</td><td>If callback is not of the expected type. </td></tr>
|
||
|
|
</table>
|
||
|
|
</dd>
|
||
|
|
</dl>
|
||
|
|
|
||
|
|
<p>Implements <a class="el" href="classgridfire_1_1solver_1_1NetworkSolverStrategy.html#a4d97ee85933d5e5f90d4194bb021a1dc">gridfire::solver::NetworkSolverStrategy< EngineT ></a>.</p>
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<a id="a91966d110ca6225af60b633af5521cb4" name="a91966d110ca6225af60b633af5521cb4"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a91966d110ca6225af60b633af5521cb4">◆ </a></span>set_detailed_step_logging()</h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="mlabels">
|
||
|
|
<tr>
|
||
|
|
<td class="mlabels-left">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname">void gridfire::solver::CVODESolverStrategy::set_detailed_step_logging </td>
|
||
|
|
<td>(</td>
|
||
|
|
<td class="paramtype">bool </td>
|
||
|
|
<td class="paramname"><em>enabled</em></td><td>)</td>
|
||
|
|
<td></td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</td>
|
||
|
|
<td class="mlabels-right">
|
||
|
|
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<a id="a6444290be523ad9fa91fa57c1dd4b6a2" name="a6444290be523ad9fa91fa57c1dd4b6a2"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a6444290be523ad9fa91fa57c1dd4b6a2">◆ </a></span>set_relTol()</h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname">void gridfire::solver::CVODESolverStrategy::set_relTol </td>
|
||
|
|
<td>(</td>
|
||
|
|
<td class="paramtype">double </td>
|
||
|
|
<td class="paramname"><em>relTol</em></td><td>)</td>
|
||
|
|
<td></td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<a id="a9857665a1198e24aac6add02afc6e306" name="a9857665a1198e24aac6add02afc6e306"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a9857665a1198e24aac6add02afc6e306">◆ </a></span>set_stdout_logging_enabled()</h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname">void gridfire::solver::CVODESolverStrategy::set_stdout_logging_enabled </td>
|
||
|
|
<td>(</td>
|
||
|
|
<td class="paramtype">bool </td>
|
||
|
|
<td class="paramname"><em>logging_enabled</em></td><td>)</td>
|
||
|
|
<td></td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
<p>Enable/disable per-step stdout logging. </p>
|
||
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
||
|
|
<table class="params">
|
||
|
|
<tr><td class="paramname">logging_enabled</td><td>Flag to control if a timestep summary is written to standard output or not </td></tr>
|
||
|
|
</table>
|
||
|
|
</dd>
|
||
|
|
</dl>
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<h2 class="groupheader">Member Data Documentation</h2>
|
||
|
|
<a id="a421360b9908ea3e1d7c60a3fb51a2f75" name="a421360b9908ea3e1d7c60a3fb51a2f75"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a421360b9908ea3e1d7c60a3fb51a2f75">◆ </a></span>m_absTol</h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="mlabels">
|
||
|
|
<tr>
|
||
|
|
<td class="mlabels-left">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname">std::optional<double> gridfire::solver::CVODESolverStrategy::m_absTol</td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</td>
|
||
|
|
<td class="mlabels-right">
|
||
|
|
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
<p>User-specified absolute tolerance. </p>
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<a id="aa8fb7a0b39e6bb7b97a4a98422f06482" name="aa8fb7a0b39e6bb7b97a4a98422f06482"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#aa8fb7a0b39e6bb7b97a4a98422f06482">◆ </a></span>m_callback</h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="mlabels">
|
||
|
|
<tr>
|
||
|
|
<td class="mlabels-left">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname">std::optional<<a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html#a89c537c2f34ba3e202374304b7e5990a">TimestepCallback</a>> gridfire::solver::CVODESolverStrategy::m_callback</td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</td>
|
||
|
|
<td class="mlabels-right">
|
||
|
|
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
<p>Optional per-step callback. </p>
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<a id="a202fe9e6499aac5f6813e036ee4ed2d5" name="a202fe9e6499aac5f6813e036ee4ed2d5"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a202fe9e6499aac5f6813e036ee4ed2d5">◆ </a></span>m_config</h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="mlabels">
|
||
|
|
<tr>
|
||
|
|
<td class="mlabels-left">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname">fourdst::config::Config& gridfire::solver::CVODESolverStrategy::m_config = fourdst::config::Config::getInstance()</td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</td>
|
||
|
|
<td class="mlabels-right">
|
||
|
|
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<a id="a50d8f309ca897fa83b16db0a1701b339" name="a50d8f309ca897fa83b16db0a1701b339"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a50d8f309ca897fa83b16db0a1701b339">◆ </a></span>m_constraints</h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="mlabels">
|
||
|
|
<tr>
|
||
|
|
<td class="mlabels-left">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname">N_Vector gridfire::solver::CVODESolverStrategy::m_constraints = nullptr</td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</td>
|
||
|
|
<td class="mlabels-right">
|
||
|
|
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
<p>CVODE constraints vector (>= 0 for species entries). </p>
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<a id="ab5a8fa55e36685cac50c1dbdd8dbfa57" name="ab5a8fa55e36685cac50c1dbdd8dbfa57"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ab5a8fa55e36685cac50c1dbdd8dbfa57">◆ </a></span>m_cvode_mem</h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="mlabels">
|
||
|
|
<tr>
|
||
|
|
<td class="mlabels-left">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname">void* gridfire::solver::CVODESolverStrategy::m_cvode_mem = nullptr</td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</td>
|
||
|
|
<td class="mlabels-right">
|
||
|
|
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
<p>CVODE memory block. </p>
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<a id="a6aed67c333c914551aee9b88fa0af584" name="a6aed67c333c914551aee9b88fa0af584"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a6aed67c333c914551aee9b88fa0af584">◆ </a></span>m_detailed_step_logging</h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="mlabels">
|
||
|
|
<tr>
|
||
|
|
<td class="mlabels-left">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname">bool gridfire::solver::CVODESolverStrategy::m_detailed_step_logging = false</td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</td>
|
||
|
|
<td class="mlabels-right">
|
||
|
|
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
<p>If true, log detailed step diagnostics (error ratios, Jacobian, species balance). </p>
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<a id="afd1053d0827512b6831ee15f14488c20" name="afd1053d0827512b6831ee15f14488c20"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#afd1053d0827512b6831ee15f14488c20">◆ </a></span>m_J</h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="mlabels">
|
||
|
|
<tr>
|
||
|
|
<td class="mlabels-left">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname">SUNMatrix gridfire::solver::CVODESolverStrategy::m_J = nullptr</td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</td>
|
||
|
|
<td class="mlabels-right">
|
||
|
|
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
<p>Dense Jacobian matrix. </p>
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<a id="a5867eb99b00815b8b4f710cb48904dbe" name="a5867eb99b00815b8b4f710cb48904dbe"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a5867eb99b00815b8b4f710cb48904dbe">◆ </a></span>m_logger</h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="mlabels">
|
||
|
|
<tr>
|
||
|
|
<td class="mlabels-left">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname">quill::Logger* gridfire::solver::CVODESolverStrategy::m_logger = fourdst::logging::LogManager::getInstance().getLogger("log")</td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</td>
|
||
|
|
<td class="mlabels-right">
|
||
|
|
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<a id="af4a2f003a4c4c06b4b72840f2d445f81" name="af4a2f003a4c4c06b4b72840f2d445f81"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#af4a2f003a4c4c06b4b72840f2d445f81">◆ </a></span>m_LS</h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="mlabels">
|
||
|
|
<tr>
|
||
|
|
<td class="mlabels-left">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname">SUNLinearSolver gridfire::solver::CVODESolverStrategy::m_LS = nullptr</td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</td>
|
||
|
|
<td class="mlabels-right">
|
||
|
|
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
<p>Dense linear solver. </p>
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<a id="ab7495898e893640670f49308a105658f" name="ab7495898e893640670f49308a105658f"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ab7495898e893640670f49308a105658f">◆ </a></span>m_num_steps</h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="mlabels">
|
||
|
|
<tr>
|
||
|
|
<td class="mlabels-left">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname">int gridfire::solver::CVODESolverStrategy::m_num_steps = 0</td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</td>
|
||
|
|
<td class="mlabels-right">
|
||
|
|
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
<p>CVODE step counter (used for diagnostics and triggers). </p>
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<a id="a4f482b5e68023df9b7522b29dc79c764" name="a4f482b5e68023df9b7522b29dc79c764"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a4f482b5e68023df9b7522b29dc79c764">◆ </a></span>m_relTol</h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="mlabels">
|
||
|
|
<tr>
|
||
|
|
<td class="mlabels-left">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname">std::optional<double> gridfire::solver::CVODESolverStrategy::m_relTol</td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</td>
|
||
|
|
<td class="mlabels-right">
|
||
|
|
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
<p>User-specified relative tolerance. </p>
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<a id="af3e470b5a6f982c107785c64b169a992" name="af3e470b5a6f982c107785c64b169a992"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#af3e470b5a6f982c107785c64b169a992">◆ </a></span>m_stdout_logging_enabled</h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="mlabels">
|
||
|
|
<tr>
|
||
|
|
<td class="mlabels-left">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname">bool gridfire::solver::CVODESolverStrategy::m_stdout_logging_enabled = true</td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</td>
|
||
|
|
<td class="mlabels-right">
|
||
|
|
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
<p>If true, print per-step logs and use CV_ONE_STEP. </p>
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<a id="ac57a4f62d95d769c379470e680e6882d" name="ac57a4f62d95d769c379470e680e6882d"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ac57a4f62d95d769c379470e680e6882d">◆ </a></span>m_sun_ctx</h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="mlabels">
|
||
|
|
<tr>
|
||
|
|
<td class="mlabels-left">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname">SUNContext gridfire::solver::CVODESolverStrategy::m_sun_ctx = nullptr</td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</td>
|
||
|
|
<td class="mlabels-right">
|
||
|
|
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
<p>SUNDIALS context (lifetime of the solver). </p>
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<a id="aae19c1ec467051404a7bf1d4c7066c22" name="aae19c1ec467051404a7bf1d4c7066c22"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#aae19c1ec467051404a7bf1d4c7066c22">◆ </a></span>m_Y</h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="mlabels">
|
||
|
|
<tr>
|
||
|
|
<td class="mlabels-left">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname">N_Vector gridfire::solver::CVODESolverStrategy::m_Y = nullptr</td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</td>
|
||
|
|
<td class="mlabels-right">
|
||
|
|
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
<p>CVODE state vector (species + energy accumulator). </p>
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<a id="a0717afcde6fdb71b12490bbcadb5fdb4" name="a0717afcde6fdb71b12490bbcadb5fdb4"></a>
|
||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a0717afcde6fdb71b12490bbcadb5fdb4">◆ </a></span>m_YErr</h2>
|
||
|
|
|
||
|
|
<div class="memitem">
|
||
|
|
<div class="memproto">
|
||
|
|
<table class="mlabels">
|
||
|
|
<tr>
|
||
|
|
<td class="mlabels-left">
|
||
|
|
<table class="memname">
|
||
|
|
<tr>
|
||
|
|
<td class="memname">N_Vector gridfire::solver::CVODESolverStrategy::m_YErr = nullptr</td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</td>
|
||
|
|
<td class="mlabels-right">
|
||
|
|
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
||
|
|
</tr>
|
||
|
|
</table>
|
||
|
|
</div><div class="memdoc">
|
||
|
|
|
||
|
|
<p>Estimated local errors. </p>
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<hr/>The documentation for this class was generated from the following files:<ul>
|
||
|
|
<li>src/include/gridfire/solver/strategies/<a class="el" href="CVODE__solver__strategy_8h.html">CVODE_solver_strategy.h</a></li>
|
||
|
|
<li>src/lib/solver/strategies/<a class="el" href="CVODE__solver__strategy_8cpp.html">CVODE_solver_strategy.cpp</a></li>
|
||
|
|
</ul>
|
||
|
|
</div><!-- contents -->
|
||
|
|
</div><!-- doc-content -->
|
||
|
|
<!-- start footer part -->
|
||
|
|
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||
|
|
<ul>
|
||
|
|
<li class="navelem"><a class="el" href="namespacegridfire.html">gridfire</a></li><li class="navelem"><a class="el" href="namespacegridfire_1_1solver.html">solver</a></li><li class="navelem"><a class="el" href="classgridfire_1_1solver_1_1CVODESolverStrategy.html">CVODESolverStrategy</a></li>
|
||
|
|
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
|
||
|
|
</ul>
|
||
|
|
</div>
|
||
|
|
</body>
|
||
|
|
</html>
|