Skip to content

Commit cecda89

Browse files
author
MFC Action
committed
Docs @ 0b3d56c
1 parent d317e8d commit cecda89

196 files changed

Lines changed: 54629 additions & 50016 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: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -429,7 +429,7 @@ <h1 class="doxsection"><a class="anchor" id="autotoc_md13"></a>
429429
<li><b>Add the module to <span class="tt">docs/module_categories.json</span></b> so it appears in this page</li>
430430
</ol>
431431
<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-11</div> </div></div><!-- contents -->
432+
<div style="text-align:center; font-size:0.75rem; color:#888; padding:16px 0 0;">Page last updated: 2026-09-12</div> </div></div><!-- contents -->
433433
</div><!-- PageDoc -->
434434
</div><!-- doc-content -->
435435
<div id="page-nav" class="page-nav-panel">

documentation/case.html

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -389,6 +389,7 @@ <h4 class="doxsection"><a class="anchor" id="autotoc_md20"></a>
389389
<li><span class="tt">case(370)</span>: Extrude 2D data to 3D domain</li>
390390
<li><span class="tt">case(273)</span>: Extrude 1D data to 2D domain, with the mom%beg data column carrying the extruded-axis (mom%end) velocity profile instead of its own (zeroed) component. Used by <span class="tt">examples/2D_reacting_mixing_layer</span> to give a temporally-evolving mixing layer a nonzero streamwise velocity profile along the extruded axis, which <span class="tt">case(270)</span> cannot represent since it always zeros that component.</li>
391391
<li><span class="tt">case(274)</span>: Load a full 2D <span class="tt">(x, y)</span> field with no extrusion &ndash; one data file per variable, <span class="tt">(m_glb+1)*(n_glb+1)</span> lines each in x-major order, covering all primitive variables directly (unlike <span class="tt">case(270)</span>/<span class="tt">case(273)</span>, no component is zeroed or repurposed). Used by <span class="tt">examples/2D_spatial_reacting_mixing_layer</span> for a spatially-evolving mixing layer, where the cross-stream profile must vary with the streamwise coordinate too (via the <span class="tt">bf_spatial_support</span> body force) so no single extrusion axis applies. The file's line count, origin, and (uniform) cell spacing must match the run grid; a mismatched file is rejected with a fatal error, so regenerate the IC whenever the grid changes.</li>
392+
<li><span class="tt">case(371)</span>: <span class="tt">case(370)</span> plus a closed-form spanwise (z) modulation, so the IC has genuine 3D content from step 0. The cross-stream (mom%beg+1) velocity read from the file is scaled by <span class="tt">1 + 0.5*cos(k_z z)</span> and the spanwise (mom%end) component is set from that result; the streamwise component is left as read. <span class="tt">k_z = 2*pi/L_z</span> uses the global z extent, so the IC does not depend on the MPI decomposition and is continuous across a periodic <span class="tt">bc_z</span>. Assumes uniform z spacing. Used by <span class="tt">examples/3D_reacting_mixing_layer</span>.</li>
392393
</ul>
393394
<p>Setup: Only requires specifying <span class="tt">files_dir</span> and filename pattern via <span class="tt">file_extension</span>. The files are located, for example, at <span class="tt">examples/1D_flamelet/IC</span>, and their format is <span class="tt">prim.XX.YY.file_extension.dat</span>. Implementation: All variables and file handling are managed in the <span class="tt">case.py</span> file of the simulation. Usage: Ideal for initializing simulations from lower-dimensional solutions, enabling users to add perturbations or modifications to the base extruded fields for flow instability studies.</p>
394395
<p>The following parameters support hardcoded initial conditions that read interface data from files:</p>
@@ -474,6 +475,8 @@ <h3 class="doxsection"><a class="anchor" id="sec-immersed-boundary-patches"></a>
474475
<tr class="markdownTableRowEven">
475476
<td class="markdownTableBodyRight"><span class="tt">collision_time</span> </td><td class="markdownTableBodyCenter">Real </td><td class="markdownTableBodyLeft">Amount of simulation time used to resolve collisions </td></tr>
476477
<tr class="markdownTableRowOdd">
478+
<td class="markdownTableBodyRight"><span class="tt">collision_temporal_resolution</span> </td><td class="markdownTableBodyCenter">Integer </td><td class="markdownTableBodyLeft">Minimum number of adaptive time steps used to resolve each collision </td></tr>
479+
<tr class="markdownTableRowEven">
477480
<td class="markdownTableBodyRight"><span class="tt">ib_coefficient_of_friction</span> </td><td class="markdownTableBodyCenter">Real </td><td class="markdownTableBodyLeft">Coefficient of friction used in IB collisions </td></tr>
478481
</table>
479482
<p>These parameters should be prepended with <span class="tt">patch_ib(j)%</span> where $j$ is the patch index.</p>
@@ -509,6 +512,7 @@ <h4 class="doxsection"><a class="anchor" id="autotoc_md24"></a>
509512
<li><span class="tt">coefficient_of_restitution</span> is a number from 0 (exclusive) to 1 (inclusive) describing how elastic IB collisions are. 0 is for perfectly inelastic collisions while 1 is for perfectly elastic collisions.</li>
510513
<li><span class="tt">collision_model</span> is an integer to select the collision model being used for IB collisions. Using 0 disables collisions and collision checking. 1 enables the soft-sphere collision model, where all IBs must be circles or sphere and those IBs can collide with each other as well as walls.</li>
511514
<li><span class="tt">collision_time</span> is approximately the amount of simulation time used to resolve collisions. This is handled by modifying the spring constant used to apply collision forces.</li>
515+
<li><span class="tt">collision_temporal_resolution</span> restricts the adaptive time step (<span class="tt">cfl_adap_dt</span>) to at most <span class="tt">collision_time / collision_temporal_resolution</span> while any collision is occurring, so that each collision is resolved with at least that many time steps. Pairing it with <span class="tt">ramp_ratio</span> limits how quickly the time step grows back once the collision ends.</li>
512516
<li><span class="tt">ib_coefficient_of_friction</span> is the coefficient of friction used in IB collisions.</li>
513517
<li><span class="tt">ib_neighborhood_radius</span> controls the size of the neighborhood size. A value of $r$ indicates that any given rank is aware of IBs up to $r$ ranks away. This value defaults to 0, which leaves the radius unset so that it is selected automatically. This parameter is required to strong-scale a case when IBs eventually grow to be larger than one full processor domain wide.</li>
514518
</ul>
@@ -698,36 +702,38 @@ <h3 class="doxsection"><a class="anchor" id="sec-simulation-algorithm"></a>
698702
<tr class="markdownTableRowOdd">
699703
<td class="markdownTableBodyRight"><span class="tt">cfl_target</span> </td><td class="markdownTableBodyCenter">Real </td><td class="markdownTableBodyLeft">Specified CFL value </td></tr>
700704
<tr class="markdownTableRowEven">
701-
<td class="markdownTableBodyRight"><span class="tt">n_start</span> </td><td class="markdownTableBodyCenter">Integer </td><td class="markdownTableBodyLeft">Save file from which to start simulation </td></tr>
705+
<td class="markdownTableBodyRight"><span class="tt">ramp_ratio</span> </td><td class="markdownTableBodyCenter">Real </td><td class="markdownTableBodyLeft">Maximum factor by which the adaptive time step may grow per time step </td></tr>
702706
<tr class="markdownTableRowOdd">
703-
<td class="markdownTableBodyRight"><span class="tt">t_save</span> </td><td class="markdownTableBodyCenter">Real </td><td class="markdownTableBodyLeft">Time duration between data output </td></tr>
707+
<td class="markdownTableBodyRight"><span class="tt">n_start</span> </td><td class="markdownTableBodyCenter">Integer </td><td class="markdownTableBodyLeft">Save file from which to start simulation </td></tr>
704708
<tr class="markdownTableRowEven">
705-
<td class="markdownTableBodyRight"><span class="tt">t_stop</span> </td><td class="markdownTableBodyCenter">Real </td><td class="markdownTableBodyLeft">Simulation stop time </td></tr>
709+
<td class="markdownTableBodyRight"><span class="tt">t_save</span> </td><td class="markdownTableBodyCenter">Real </td><td class="markdownTableBodyLeft">Time duration between data output </td></tr>
706710
<tr class="markdownTableRowOdd">
707-
<td class="markdownTableBodyRight"><span class="tt">surface_tension</span> </td><td class="markdownTableBodyCenter">Logical </td><td class="markdownTableBodyLeft">Activate surface tension </td></tr>
711+
<td class="markdownTableBodyRight"><span class="tt">t_stop</span> </td><td class="markdownTableBodyCenter">Real </td><td class="markdownTableBodyLeft">Simulation stop time </td></tr>
708712
<tr class="markdownTableRowEven">
709-
<td class="markdownTableBodyRight"><span class="tt">viscous</span> </td><td class="markdownTableBodyCenter">Logical </td><td class="markdownTableBodyLeft">Activate viscosity </td></tr>
713+
<td class="markdownTableBodyRight"><span class="tt">surface_tension</span> </td><td class="markdownTableBodyCenter">Logical </td><td class="markdownTableBodyLeft">Activate surface tension </td></tr>
710714
<tr class="markdownTableRowOdd">
711-
<td class="markdownTableBodyRight"><span class="tt">hypoelasticity</span> </td><td class="markdownTableBodyCenter">Logical </td><td class="markdownTableBodyLeft">Activate hypoelasticity* </td></tr>
715+
<td class="markdownTableBodyRight"><span class="tt">viscous</span> </td><td class="markdownTableBodyCenter">Logical </td><td class="markdownTableBodyLeft">Activate viscosity </td></tr>
712716
<tr class="markdownTableRowEven">
713-
<td class="markdownTableBodyRight"><span class="tt">riemann_hypo_ADC</span> </td><td class="markdownTableBodyCenter">Logical </td><td class="markdownTableBodyLeft">Enable hypo anti-diffusion correction for HLLC/HLLD (default F) </td></tr>
717+
<td class="markdownTableBodyRight"><span class="tt">hypoelasticity</span> </td><td class="markdownTableBodyCenter">Logical </td><td class="markdownTableBodyLeft">Activate hypoelasticity* </td></tr>
714718
<tr class="markdownTableRowOdd">
715-
<td class="markdownTableBodyRight"><span class="tt">ADC_kappa</span> </td><td class="markdownTableBodyCenter">Real </td><td class="markdownTableBodyLeft">ADC sensor scaling parameter (default 1.0) </td></tr>
719+
<td class="markdownTableBodyRight"><span class="tt">riemann_hypo_ADC</span> </td><td class="markdownTableBodyCenter">Logical </td><td class="markdownTableBodyLeft">Enable hypo anti-diffusion correction for HLLC/HLLD (default F) </td></tr>
716720
<tr class="markdownTableRowEven">
717-
<td class="markdownTableBodyRight"><span class="tt">hypo_hll_interface_rhs</span> </td><td class="markdownTableBodyCenter">Logical </td><td class="markdownTableBodyLeft">HLL uses interface-consistent hypo RHS (default F) </td></tr>
721+
<td class="markdownTableBodyRight"><span class="tt">ADC_kappa</span> </td><td class="markdownTableBodyCenter">Real </td><td class="markdownTableBodyLeft">ADC sensor scaling parameter (default 1.0) </td></tr>
718722
<tr class="markdownTableRowOdd">
719-
<td class="markdownTableBodyRight"><span class="tt">igr</span> </td><td class="markdownTableBodyCenter">Logical </td><td class="markdownTableBodyLeft">Enable solution via information geometric regularization (IGR) Cao and Schafer <a class="el" href="citelist.html#CITEREF_cao24">[9]</a> </td></tr>
723+
<td class="markdownTableBodyRight"><span class="tt">hypo_hll_interface_rhs</span> </td><td class="markdownTableBodyCenter">Logical </td><td class="markdownTableBodyLeft">HLL uses interface-consistent hypo RHS (default F) </td></tr>
720724
<tr class="markdownTableRowEven">
721-
<td class="markdownTableBodyRight"><span class="tt">igr_order</span> </td><td class="markdownTableBodyCenter">Integer </td><td class="markdownTableBodyLeft">Order of reconstruction for IGR [3,5] </td></tr>
725+
<td class="markdownTableBodyRight"><span class="tt">igr</span> </td><td class="markdownTableBodyCenter">Logical </td><td class="markdownTableBodyLeft">Enable solution via information geometric regularization (IGR) Cao and Schafer <a class="el" href="citelist.html#CITEREF_cao24">[9]</a> </td></tr>
722726
<tr class="markdownTableRowOdd">
723-
<td class="markdownTableBodyRight"><span class="tt">alf_factor</span> </td><td class="markdownTableBodyCenter">Real </td><td class="markdownTableBodyLeft">Alpha factor for IGR entropic pressure (default 10) </td></tr>
727+
<td class="markdownTableBodyRight"><span class="tt">igr_order</span> </td><td class="markdownTableBodyCenter">Integer </td><td class="markdownTableBodyLeft">Order of reconstruction for IGR [3,5] </td></tr>
724728
<tr class="markdownTableRowEven">
725-
<td class="markdownTableBodyRight"><span class="tt">igr_pres_lim</span> </td><td class="markdownTableBodyCenter">Logical </td><td class="markdownTableBodyLeft">Limit IGR pressure to avoid negative values (default F) </td></tr>
729+
<td class="markdownTableBodyRight"><span class="tt">alf_factor</span> </td><td class="markdownTableBodyCenter">Real </td><td class="markdownTableBodyLeft">Alpha factor for IGR entropic pressure (default 10) </td></tr>
726730
<tr class="markdownTableRowOdd">
727-
<td class="markdownTableBodyRight"><span class="tt">igr_iter_solver</span> </td><td class="markdownTableBodyCenter">Integer </td><td class="markdownTableBodyLeft">Solution method for IGR elliptic solve [1] Jacobi [2] Gauss-Seidel </td></tr>
731+
<td class="markdownTableBodyRight"><span class="tt">igr_pres_lim</span> </td><td class="markdownTableBodyCenter">Logical </td><td class="markdownTableBodyLeft">Limit IGR pressure to avoid negative values (default F) </td></tr>
728732
<tr class="markdownTableRowEven">
729-
<td class="markdownTableBodyRight"><span class="tt">num_igr_iters</span> </td><td class="markdownTableBodyCenter">Integer </td><td class="markdownTableBodyLeft">Number of iterations for for the IGR elliptic solve (default 2) </td></tr>
733+
<td class="markdownTableBodyRight"><span class="tt">igr_iter_solver</span> </td><td class="markdownTableBodyCenter">Integer </td><td class="markdownTableBodyLeft">Solution method for IGR elliptic solve [1] Jacobi [2] Gauss-Seidel </td></tr>
730734
<tr class="markdownTableRowOdd">
735+
<td class="markdownTableBodyRight"><span class="tt">num_igr_iters</span> </td><td class="markdownTableBodyCenter">Integer </td><td class="markdownTableBodyLeft">Number of iterations for for the IGR elliptic solve (default 2) </td></tr>
736+
<tr class="markdownTableRowEven">
731737
<td class="markdownTableBodyRight"><span class="tt">num_igr_warm_start_iters</span> </td><td class="markdownTableBodyCenter">Integer </td><td class="markdownTableBodyLeft">Number of iterations for the IGR elliptic solve at the first time step (default 50) </td></tr>
732738
</table>
733739
<ul>
@@ -824,6 +830,7 @@ <h5 class="doxsection"><a class="anchor" id="autotoc_md27"></a>
824830
<li><span class="tt">cfl_adap_dt</span> enables adaptive time stepping with a constant CFL when true</li>
825831
<li><span class="tt">cfl_const_dt</span> enables constant <span class="tt">dt</span> time-stepping where <span class="tt">dt</span> results in a specified CFL for the initial condition</li>
826832
<li><span class="tt">cfl_target</span> specifies the target CFL value</li>
833+
<li><span class="tt">ramp_ratio</span> limits how much the adaptive time step can grow from one time step to the next: <span class="tt">dt</span> is capped at <span class="tt">ramp_ratio</span> times the previous <span class="tt">dt</span>. Must be at least 1. When unset, the time step growth is unlimited.</li>
827834
<li><span class="tt">n_start</span> specifies the save file to start at</li>
828835
<li><span class="tt">t_save</span> specifies the time interval between data output during the simulation</li>
829836
<li><span class="tt">t_stop</span> specifies at what time the simulation should stop</li>

documentation/case_constraints.html

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -772,6 +772,18 @@ <h2 class="doxsection"><a class="anchor" id="quick-parameter-reference"></a>
772772
</details>
773773
<details >
774774
<summary >
775+
<b>collision_temporal_resolution</b> (<span class="tt">collision_temporal_resolution</span>)</summary>
776+
<p></p>
777+
<p><b>Schema constraints:</b></p><ul>
778+
<li>Min: 1</li>
779+
</ul>
780+
<p><b>Dependencies:</b></p><ul>
781+
<li>When set, requires: <span class="tt">collision_model</span>, <span class="tt">cfl_adap_dt</span></li>
782+
</ul>
783+
<p></p>
784+
</details>
785+
<details >
786+
<summary >
775787
<b>dt</b> (<span class="tt">dt</span>)</summary>
776788
<p></p>
777789
<p><b>Schema constraints:</b></p><ul>
@@ -1243,6 +1255,18 @@ <h2 class="doxsection"><a class="anchor" id="quick-parameter-reference"></a>
12431255
</details>
12441256
<details >
12451257
<summary >
1258+
<b>ramp_ratio</b> (<span class="tt">ramp_ratio</span>)</summary>
1259+
<p></p>
1260+
<p><b>Schema constraints:</b></p><ul>
1261+
<li>Min: 1</li>
1262+
</ul>
1263+
<p><b>Dependencies:</b></p><ul>
1264+
<li>When set, requires: <span class="tt">cfl_adap_dt</span></li>
1265+
</ul>
1266+
<p></p>
1267+
</details>
1268+
<details >
1269+
<summary >
12461270
<b>recon_type</b> (<span class="tt">recon_type</span>)</summary>
12471271
<p></p>
12481272
<p><b>Schema constraints:</b></p><ul>
@@ -1593,7 +1617,7 @@ <h2 class="doxsection"><a class="anchor" id="physics-warnings"></a>
15931617
</table>
15941618
<hr />
15951619
<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>
1596-
<div style="text-align:center; font-size:0.75rem; color:#888; padding:16px 0 0;">Page last updated: 2026-09-11</div> </div></div><!-- contents -->
1620+
<div style="text-align:center; font-size:0.75rem; color:#888; padding:16px 0 0;">Page last updated: 2026-09-12</div> </div></div><!-- contents -->
15971621
</div><!-- PageDoc -->
15981622
</div><!-- doc-content -->
15991623
<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-11</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-12</div> </div></div><!-- contents -->
995995
</div><!-- PageDoc -->
996996
</div><!-- doc-content -->
997997
<div id="page-nav" class="page-nav-panel">

0 commit comments

Comments
 (0)