Skip to content

Commit 67a206e

Browse files
author
MFC Action
committed
Docs @ 0ac3a3f
1 parent 2c30bae commit 67a206e

1,141 files changed

Lines changed: 102852 additions & 91475 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎documentation/architecture.html‎

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -297,12 +297,14 @@ <h2 class="doxsection"><a class="anchor" id="autotoc_md7"></a>
297297
<tr class="markdownTableRowEven">
298298
<td class="markdownTableBodyNone"><span class="tt">m_chemistry</span> </td><td class="markdownTableBodyNone">Multi-species chemistry interface for thermodynamic properties, reaction rates, and transport coefficients </td></tr>
299299
<tr class="markdownTableRowOdd">
300-
<td class="markdownTableBodyNone"><span class="tt">m_acoustic_src</span> </td><td class="markdownTableBodyNone">One-way acoustic source injection, Maeda and Colonius JCP (2017) </td></tr>
300+
<td class="markdownTableBodyNone"><span class="tt">m_conduction</span> </td><td class="markdownTableBodyNone">Fourier heat conduction, div(k grad T), as a face-centered source flux on the energy equation </td></tr>
301301
<tr class="markdownTableRowEven">
302-
<td class="markdownTableBodyNone"><span class="tt">m_body_forces</span> </td><td class="markdownTableBodyNone">Computes gravitational and body force source terms for the momentum equations </td></tr>
302+
<td class="markdownTableBodyNone"><span class="tt">m_acoustic_src</span> </td><td class="markdownTableBodyNone">One-way acoustic source injection, Maeda and Colonius JCP (2017) </td></tr>
303303
<tr class="markdownTableRowOdd">
304-
<td class="markdownTableBodyNone"><span class="tt">m_pressure_relaxation</span> </td><td class="markdownTableBodyNone">Pressure relaxation for the six-equation multi-component model via Newton&ndash;Raphson equilibration and volume-fraction correction </td></tr>
304+
<td class="markdownTableBodyNone"><span class="tt">m_body_forces</span> </td><td class="markdownTableBodyNone">Computes gravitational and body force source terms for the momentum equations </td></tr>
305305
<tr class="markdownTableRowEven">
306+
<td class="markdownTableBodyNone"><span class="tt">m_pressure_relaxation</span> </td><td class="markdownTableBodyNone">Pressure relaxation for the six-equation multi-component model via Newton&ndash;Raphson equilibration and volume-fraction correction </td></tr>
307+
<tr class="markdownTableRowOdd">
306308
<td class="markdownTableBodyNone"><span class="tt">m_collisions</span> </td><td class="markdownTableBodyNone">Ghost-node immersed boundary method: locates ghost/image points, computes interpolation coefficients, and corrects the flow state </td></tr>
307309
</table>
308310
<h2 class="doxsection"><a class="anchor" id="autotoc_md8"></a>
@@ -323,7 +325,7 @@ <h2 class="doxsection"><a class="anchor" id="autotoc_md8"></a>
323325
<tr class="markdownTableRowEven">
324326
<td class="markdownTableBodyNone"><span class="tt">m_ibm</span> </td><td class="markdownTableBodyNone">Ghost-node immersed boundary method: locates ghost/image points, computes interpolation coefficients, and corrects the flow state </td></tr>
325327
<tr class="markdownTableRowOdd">
326-
<td class="markdownTableBodyNone"><span class="tt">m_particle_cloud</span> </td><td class="markdownTableBodyNone">Generates particle beds by converting particle_cloud patch specifications into individual immersed boundary patches before domain reduction </td></tr>
328+
<td class="markdownTableBodyNone"><span class="tt">m_particle_cloud</span> </td><td class="markdownTableBodyNone">Generates particle beds by converting particle_cloud patch specifications into individual immersed boundary patches before writing them to the initial IB state file </td></tr>
327329
<tr class="markdownTableRowEven">
328330
<td class="markdownTableBodyNone"><span class="tt">m_igr</span> </td><td class="markdownTableBodyNone">Iterative ghost rasterization (IGR) for sharp immersed boundary treatment </td></tr>
329331
<tr class="markdownTableRowOdd">
@@ -429,7 +431,7 @@ <h1 class="doxsection"><a class="anchor" id="autotoc_md13"></a>
429431
<li><b>Add the module to <span class="tt">docs/module_categories.json</span></b> so it appears in this page</li>
430432
</ol>
431433
<p>Follow the pattern of existing modules like <span class="tt">m_body_forces</span> (simple) or <span class="tt">m_viscous</span> (more involved) as a template.</p>
432-
<div style="text-align:center; font-size:0.75rem; color:#888; padding:16px 0 0;">Page last updated: 2026-09-19</div> </div></div><!-- contents -->
434+
<div style="text-align:center; font-size:0.75rem; color:#888; padding:16px 0 0;">Page last updated: 2026-09-20</div> </div></div><!-- contents -->
433435
</div><!-- PageDoc -->
434436
</div><!-- doc-content -->
435437
<div id="page-nav" class="page-nav-panel">

‎documentation/case.html‎

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -598,14 +598,16 @@ <h3 class="doxsection"><a class="anchor" id="sec-fluid-materials"></a>
598598
<tr class="markdownTableRowEven">
599599
<td class="markdownTableBodyRight"><span class="tt">Re(2)</span> * </td><td class="markdownTableBodyCenter">Real </td><td class="markdownTableBodyLeft">Volume viscosity of fluid. </td></tr>
600600
<tr class="markdownTableRowOdd">
601-
<td class="markdownTableBodyRight"><span class="tt">cv</span> ** </td><td class="markdownTableBodyCenter">Real </td><td class="markdownTableBodyLeft">Sffened-gas parameter $c_v$ of fluid. </td></tr>
601+
<td class="markdownTableBodyRight"><span class="tt">k_therm</span> </td><td class="markdownTableBodyCenter">Real </td><td class="markdownTableBodyLeft">Thermal conductivity of fluid (Fourier heat conduction). </td></tr>
602602
<tr class="markdownTableRowEven">
603-
<td class="markdownTableBodyRight"><span class="tt">qv</span> ** </td><td class="markdownTableBodyCenter">Real </td><td class="markdownTableBodyLeft">Stiffened-gas parameter $q$ of fluid. </td></tr>
603+
<td class="markdownTableBodyRight"><span class="tt">cv</span> ** </td><td class="markdownTableBodyCenter">Real </td><td class="markdownTableBodyLeft">Sffened-gas parameter $c_v$ of fluid. </td></tr>
604604
<tr class="markdownTableRowOdd">
605-
<td class="markdownTableBodyRight"><span class="tt">qvp</span> ** </td><td class="markdownTableBodyCenter">Real </td><td class="markdownTableBodyLeft">Stiffened-gas parameter $q'$ of fluid. </td></tr>
605+
<td class="markdownTableBodyRight"><span class="tt">qv</span> ** </td><td class="markdownTableBodyCenter">Real </td><td class="markdownTableBodyLeft">Stiffened-gas parameter $q$ of fluid. </td></tr>
606606
<tr class="markdownTableRowEven">
607-
<td class="markdownTableBodyRight"><span class="tt">sigma</span> </td><td class="markdownTableBodyCenter">Real </td><td class="markdownTableBodyLeft">Surface tension coefficient </td></tr>
607+
<td class="markdownTableBodyRight"><span class="tt">qvp</span> ** </td><td class="markdownTableBodyCenter">Real </td><td class="markdownTableBodyLeft">Stiffened-gas parameter $q'$ of fluid. </td></tr>
608608
<tr class="markdownTableRowOdd">
609+
<td class="markdownTableBodyRight"><span class="tt">sigma</span> </td><td class="markdownTableBodyCenter">Real </td><td class="markdownTableBodyLeft">Surface tension coefficient </td></tr>
610+
<tr class="markdownTableRowEven">
609611
<td class="markdownTableBodyRight"><span class="tt">G</span> </td><td class="markdownTableBodyCenter">Real </td><td class="markdownTableBodyLeft">Shear modulus of solid. </td></tr>
610612
</table>
611613
<p>Fluid material's parameters. All parameters except for sigma should be prepended with <span class="tt">fluid_pp(i)</span> where $i$ is the fluid index.</p>
@@ -618,6 +620,7 @@ <h3 class="doxsection"><a class="anchor" id="sec-fluid-materials"></a>
618620
</ul>
619621
<p>When these parameters are undefined, fluids are treated as inviscid. Details of implementation of viscosity in MFC can be found in Coralic <a class="el" href="citelist.html#CITEREF_coralic15">[14]</a>.</p>
620622
<ul>
623+
<li><span class="tt">fluid_pp(i)%k_therm</span> sets the thermal conductivity of the $i$-th fluid, in units consistent with the rest of the (non-dimensional) case. A positive value on any fluid activates Fourier heat conduction, which adds \(\nabla\cdot(k\nabla T)\) to the energy equation using the thermal-equilibrium mixture temperature and \(k = \sum_i \alpha_i k_i\) (see <a class="el" href="equations.html" title="Equations">Equations</a>). It requires <span class="tt">fluid_pp(i)%cv</span> to be positive on every fluid that sets it (the mixture temperature is undefined without \(c_v\)), <span class="tt">model_eqns = 2</span> or <span class="tt">model_eqns = 3</span> (the mixture conductivity is weighted by volume fractions that <span class="tt">model_eqns = 1</span> does not carry), and <span class="tt">fluid_pp(i)%eos</span> to be the stiffened-gas or ideal-gas equation of state. Heat conduction is independent of <span class="tt">viscous</span>: it can be enabled in an otherwise inviscid run. It is not supported with <span class="tt">igr</span>, nor with <span class="tt">chemistry</span> (which already carries its own mixture-averaged conduction through <span class="tt">chem_params%diffusion</span>).</li>
621624
<li><span class="tt">fluid_pp(i)%cv</span>, <span class="tt">fluid_pp(i)%qv</span>, and <span class="tt">fluid_pp(i)%qvp</span> define $c_v$, $q$, and $q'$ as parameters of $i$-th fluid that are used in stiffened gas equation of state.</li>
622625
<li><span class="tt">fluid_pp(i)%G</span> is required for <span class="tt">hypoelasticity</span>.</li>
623626
</ul>
@@ -1507,7 +1510,7 @@ <h3 class="doxsection"><a class="anchor" id="autotoc_md35"></a>
15071510
<tr class="markdownTableRowEven">
15081511
<td class="markdownTableBodyRight"><span class="tt">bc_[x,y,z]%Twall_out</span> </td><td class="markdownTableBodyCenter">Real </td><td class="markdownTableBodyLeft">Temperature [K] of the exit isothermal wall. </td></tr>
15091512
</table>
1510-
<p>This boundary condition can be used for fixed-temperature (isothermal) walls at the domain extremities. It is exclusively available for reacting flows and requires chemistry to be enabled. It properly evaluates heat and species fluxes at the interface when <span class="tt">chemistry = 'T'</span>, <span class="tt">chem_params%diffusion = 'T'</span>, and the corresponding domain boundary is set to a slip wall (<span class="tt">bc_[x,y,z]%%[beg,end]</span> = -15) or a no-slip wall (<span class="tt">bc_[x,y,z]%%[beg,end]</span> = -16).</p>
1513+
<p>This boundary condition can be used for fixed-temperature (isothermal) walls at the domain extremities. It requires a heat-conduction path so the wall flux can be evaluated: either a reacting flow with <span class="tt">chemistry = 'T'</span> and <span class="tt">chem_params%diffusion = 'T'</span>, or Fourier conduction with <span class="tt">fluid_pp(i)%k_therm</span> &gt; 0. The corresponding domain boundary must be set to a slip wall (<span class="tt">bc_[x,y,z]%%[beg,end]</span> = -15) or a no-slip wall (<span class="tt">bc_[x,y,z]%%[beg,end]</span> = -16). With chemistry it evaluates both heat and species fluxes; with Fourier conduction it evaluates the heat flux.</p>
15111514
<h3 class="doxsection"><a class="anchor" id="sec-non-newtonian"></a>
15121515
19. Non-Newtonian (Herschel-Bulkley) Viscosity</h3>
15131516
<table class="markdownTable">

‎documentation/case_constraints.html‎

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -747,13 +747,12 @@ <h2 class="doxsection"><a class="anchor" id="quick-parameter-reference"></a>
747747
<li>When enabled, requires: <span class="tt">cantera_file</span></li>
748748
</ul>
749749
<p><b>Requirements</b> (errors):</p><ul>
750-
<li>Isothermal In (bc_xisothermal_in) requires both chemistry='T' and chem_paramsdiffusion='T' to calculate heat conduction.</li>
751-
<li>Isothermal Out (bc_xisothermal_out) requires both chemistry='T' and chem_paramsdiffusion='T' to calculate heat conduction.</li>
752-
<li>Isothermal In (bc_yisothermal_in) requires both chemistry='T' and chem_paramsdiffusion='T' to calculate heat conduction.</li>
750+
<li>chem_paramsadap_substeps requires reaction_substeps &gt;= 1 (the operator-split floor)</li>
753751
</ul>
754752
<p><b>Incompatibilities</b> (errors):</p><ul>
755753
<li>HLLD hypoelasticity does not support chemistry</li>
756754
<li>riemann_hypo_ADC does not support bubbles, surface tension, chemistry, or continuum damage (the ADC HLL blend omits their flux components)</li>
755+
<li>heat conduction is not supported with chemistry: the reacting path already carries mixture-averaged conduction through chem_paramsdiffusion</li>
757756
</ul>
758757
<p><b>Valid values</b> (errors):</p><ul>
759758
<li>chem_paramsreaction_substeps must be &gt;= 0 (0 = reaction source in the flow RHS; &gt; 0 = operator-split sub-stepping)</li>
@@ -1617,7 +1616,7 @@ <h2 class="doxsection"><a class="anchor" id="physics-warnings"></a>
16171616
</table>
16181617
<hr />
16191618
<p>💡 <b>Tip:</b> If you encounter a validation error, check the relevant section above or review <a href="https://github.com/MFlowCode/MFC/blob/master/toolchain/mfc/case_validator.py"><span class="tt">case_validator.py</span></a> for complete validation logic.</p>
1620-
<div style="text-align:center; font-size:0.75rem; color:#888; padding:16px 0 0;">Page last updated: 2026-09-19</div> </div></div><!-- contents -->
1619+
<div style="text-align:center; font-size:0.75rem; color:#888; padding:16px 0 0;">Page last updated: 2026-09-20</div> </div></div><!-- contents -->
16211620
</div><!-- PageDoc -->
16221621
</div><!-- doc-content -->
16231622
<div id="page-nav" class="page-nav-panel">

‎documentation/cli-reference.html‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -991,7 +991,7 @@ <h3 class="doxsection"><a class="anchor" id="autotoc_md80"></a>
991991
<h3 class="doxsection"><a class="anchor" id="autotoc_md81"></a>
992992
Debug Logging (<span class="tt">-d, --debug-log</span>)</h3>
993993
<p>Enables debug logging for the Python toolchain (mfc.sh internals). This is for troubleshooting the build system, not the MFC simulation code.</p>
994-
<div style="text-align:center; font-size:0.75rem; color:#888; padding:16px 0 0;">Page last updated: 2026-09-19</div> </div></div><!-- contents -->
994+
<div style="text-align:center; font-size:0.75rem; color:#888; padding:16px 0 0;">Page last updated: 2026-09-20</div> </div></div><!-- contents -->
995995
</div><!-- PageDoc -->
996996
</div><!-- doc-content -->
997997
<div id="page-nav" class="page-nav-panel">

‎documentation/contributing.html‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,7 @@ <h3 class="doxsection"><a class="anchor" id="autotoc_md102"></a>
370370
Parameter Plumbing</h3>
371371
<ul>
372372
<li><b>Derived-type parameters are not auto-broadcast.</b> <span class="tt">generated_bcast.fpp</span> covers namelist <em>scalars</em> only. Each derived type (<span class="tt">chem_params</span>, <span class="tt">lag_params</span>, <span class="tt">rburn</span>) needs a hand-written <span class="tt">_emit_&lt;name&gt;</span> in <span class="tt">toolchain/mfc/params/generators/fortran_gen.py</span> plus its call site in that generator's simulation branch, and, if it is read on device, an explicit <span class="tt">$:GPU_UPDATE(device='[name]')</span> in both the target's <span class="tt">m_global_parameters.fpp</span> and <span class="tt">src/simulation/m_start_up.fpp</span> — <span class="tt">GPU_DECLARE</span> alone does not make it device-resident. Regrouping existing scalars into a derived type silently drops their broadcast, leaving every non-root rank holding the <span class="tt">dflt_real</span> sentinel. Single-rank golden files cannot catch this, so pair such a change with a <span class="tt">ppn=2</span> test and confirm it fails without the emitter.</li>
373-
<li><b>A <span class="tt">patch_ib</span> member that immersed-boundary ghost-point code reads must also be set in <span class="tt">s_add_cloud_particle</span></b> (<span class="tt">src/simulation/m_particle_cloud.fpp</span>). <span class="tt">particle_cloud_ibs</span> is allocated without default initialization, and <span class="tt">s_reduce_ib_patch_array</span> copies the whole struct into <span class="tt">patch_ib</span>, overwriting the defaults assigned in <span class="tt">s_assign_default_values_to_user_inputs</span>. Anything left unset reaches the solver as uninitialized memory, and only where the allocation is not already zero-filled. A platform-only NaN is the signature of this class: a garbage <span class="tt">v_blow</span> once failed an AMD lane with <span class="tt">ICFL is NaN</span> while every NVIDIA lane and all local runs passed.</li>
373+
<li><b>A <span class="tt">patch_ib</span> member that immersed-boundary ghost-point code reads must also be set for particle-cloud IBs in <span class="tt">s_assign_particle_cloud_ib_defaults</span></b> (<span class="tt">src/simulation/m_start_up.fpp</span>). Pre-process writes only position, kinematics and radius to the IB state file; simulation builds every other property there, writing into a reused <span class="tt">patch_ib</span> slot. Anything it leaves unset keeps whatever that slot held, which may be a namelist patch's value or uninitialized memory, and shows up only where that memory is not already zero-filled. A platform-only NaN is the signature of this class: a garbage <span class="tt">v_blow</span> once failed an AMD lane with <span class="tt">ICFL is NaN</span> while every NVIDIA lane and all local runs passed.</li>
374374
<li><b>Runtime checks go where they run.</b> Shared constraints belong in <span class="tt">src/common/m_checker_common.fpp</span>, simulation-only ones in <span class="tt">src/simulation/m_checker.fpp</span>, and pre- and post-process ones in their own <span class="tt">m_checker.fpp</span>. Those two <span class="tt">s_check_inputs</span> are currently empty; that is still the correct home for their checks, not <span class="tt">m_checker_common</span>.</li>
375375
<li><b>Analytic initial conditions are compiled into the binary</b> and their expressions are AST-validated at case load, so syntax errors and unknown variables surface immediately and by name. Each IC variable maps to an <span class="tt">eqn_idx</span> expression in <span class="tt">QPVF_IDX_VARS</span> (<span class="tt">toolchain/mfc/case.py</span>); adding a patch-settable conserved variable means updating that map and the Fortran <span class="tt">eqn_idx</span> builder together, because a mismatch is a silent wrong index.</li>
376376
<li><b>Under <span class="tt">--case-optimization</span> the baked-in constants are dropped from the namelist</b>, so changing one requires a rebuild rather than a case-file edit.</li>

0 commit comments

Comments
 (0)