You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
<li><b>Add the module to <spanclass="tt">docs/module_categories.json</span></b> so it appears in this page</li>
430
430
</ol>
431
431
<p>Follow the pattern of existing modules like <spanclass="tt">m_body_forces</span> (simple) or <spanclass="tt">m_viscous</span> (more involved) as a template.</p>
<li><spanclass="tt">case(370)</span>: Extrude 2D data to 3D domain</li>
390
390
<li><spanclass="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 <spanclass="tt">examples/2D_reacting_mixing_layer</span> to give a temporally-evolving mixing layer a nonzero streamwise velocity profile along the extruded axis, which <spanclass="tt">case(270)</span> cannot represent since it always zeros that component.</li>
391
391
<li><spanclass="tt">case(274)</span>: Load a full 2D <spanclass="tt">(x, y)</span> field with no extrusion – one data file per variable, <spanclass="tt">(m_glb+1)*(n_glb+1)</span> lines each in x-major order, covering all primitive variables directly (unlike <spanclass="tt">case(270)</span>/<spanclass="tt">case(273)</span>, no component is zeroed or repurposed). Used by <spanclass="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 <spanclass="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><spanclass="tt">case(371)</span>: <spanclass="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 <spanclass="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. <spanclass="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 <spanclass="tt">bc_z</span>. Assumes uniform z spacing. Used by <spanclass="tt">examples/3D_reacting_mixing_layer</span>.</li>
392
393
</ul>
393
394
<p>Setup: Only requires specifying <spanclass="tt">files_dir</span> and filename pattern via <spanclass="tt">file_extension</span>. The files are located, for example, at <spanclass="tt">examples/1D_flamelet/IC</span>, and their format is <spanclass="tt">prim.XX.YY.file_extension.dat</span>. Implementation: All variables and file handling are managed in the <spanclass="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>
394
395
<p>The following parameters support hardcoded initial conditions that read interface data from files:</p>
<tdclass="markdownTableBodyRight"><spanclass="tt">collision_time</span></td><tdclass="markdownTableBodyCenter">Real </td><tdclass="markdownTableBodyLeft">Amount of simulation time used to resolve collisions </td></tr>
476
477
<trclass="markdownTableRowOdd">
478
+
<tdclass="markdownTableBodyRight"><spanclass="tt">collision_temporal_resolution</span></td><tdclass="markdownTableBodyCenter">Integer </td><tdclass="markdownTableBodyLeft">Minimum number of adaptive time steps used to resolve each collision </td></tr>
479
+
<trclass="markdownTableRowEven">
477
480
<tdclass="markdownTableBodyRight"><spanclass="tt">ib_coefficient_of_friction</span></td><tdclass="markdownTableBodyCenter">Real </td><tdclass="markdownTableBodyLeft">Coefficient of friction used in IB collisions </td></tr>
478
481
</table>
479
482
<p>These parameters should be prepended with <spanclass="tt">patch_ib(j)%</span> where $j$ is the patch index.</p>
<li><spanclass="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>
510
513
<li><spanclass="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>
511
514
<li><spanclass="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><spanclass="tt">collision_temporal_resolution</span> restricts the adaptive time step (<spanclass="tt">cfl_adap_dt</span>) to at most <spanclass="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 <spanclass="tt">ramp_ratio</span> limits how quickly the time step grows back once the collision ends.</li>
512
516
<li><spanclass="tt">ib_coefficient_of_friction</span> is the coefficient of friction used in IB collisions.</li>
513
517
<li><spanclass="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>
<tdclass="markdownTableBodyRight"><spanclass="tt">cfl_target</span></td><tdclass="markdownTableBodyCenter">Real </td><tdclass="markdownTableBodyLeft">Specified CFL value </td></tr>
700
704
<trclass="markdownTableRowEven">
701
-
<tdclass="markdownTableBodyRight"><spanclass="tt">n_start</span></td><tdclass="markdownTableBodyCenter">Integer</td><tdclass="markdownTableBodyLeft">Save file from which to start simulation</td></tr>
705
+
<tdclass="markdownTableBodyRight"><spanclass="tt">ramp_ratio</span></td><tdclass="markdownTableBodyCenter">Real</td><tdclass="markdownTableBodyLeft">Maximum factor by which the adaptive time step may grow per time step</td></tr>
702
706
<trclass="markdownTableRowOdd">
703
-
<tdclass="markdownTableBodyRight"><spanclass="tt">t_save</span></td><tdclass="markdownTableBodyCenter">Real</td><tdclass="markdownTableBodyLeft">Time duration between data output</td></tr>
707
+
<tdclass="markdownTableBodyRight"><spanclass="tt">n_start</span></td><tdclass="markdownTableBodyCenter">Integer</td><tdclass="markdownTableBodyLeft">Save file from which to start simulation</td></tr>
<tdclass="markdownTableBodyRight"><spanclass="tt">t_save</span></td><tdclass="markdownTableBodyCenter">Real </td><tdclass="markdownTableBodyLeft">Time duration between data output</td></tr>
<tdclass="markdownTableBodyRight"><spanclass="tt">igr</span></td><tdclass="markdownTableBodyCenter">Logical </td><tdclass="markdownTableBodyLeft">Enable solution via information geometric regularization (IGR) Cao and Schafer <aclass="el" href="citelist.html#CITEREF_cao24">[9]</a></td></tr>
<tdclass="markdownTableBodyRight"><spanclass="tt">igr_order</span></td><tdclass="markdownTableBodyCenter">Integer</td><tdclass="markdownTableBodyLeft">Order of reconstruction for IGR [3,5]</td></tr>
725
+
<tdclass="markdownTableBodyRight"><spanclass="tt">igr</span></td><tdclass="markdownTableBodyCenter">Logical</td><tdclass="markdownTableBodyLeft">Enable solution via information geometric regularization (IGR) Cao and Schafer <aclass="el" href="citelist.html#CITEREF_cao24">[9]</a></td></tr>
722
726
<trclass="markdownTableRowOdd">
723
-
<tdclass="markdownTableBodyRight"><spanclass="tt">alf_factor</span></td><tdclass="markdownTableBodyCenter">Real</td><tdclass="markdownTableBodyLeft">Alpha factor for IGR entropic pressure (default 10)</td></tr>
727
+
<tdclass="markdownTableBodyRight"><spanclass="tt">igr_order</span></td><tdclass="markdownTableBodyCenter">Integer</td><tdclass="markdownTableBodyLeft">Order of reconstruction for IGR [3,5]</td></tr>
724
728
<trclass="markdownTableRowEven">
725
-
<tdclass="markdownTableBodyRight"><spanclass="tt">igr_pres_lim</span></td><tdclass="markdownTableBodyCenter">Logical</td><tdclass="markdownTableBodyLeft">Limit IGR pressure to avoid negative values (default F) </td></tr>
729
+
<tdclass="markdownTableBodyRight"><spanclass="tt">alf_factor</span></td><tdclass="markdownTableBodyCenter">Real</td><tdclass="markdownTableBodyLeft">Alpha factor for IGR entropic pressure (default 10) </td></tr>
726
730
<trclass="markdownTableRowOdd">
727
-
<tdclass="markdownTableBodyRight"><spanclass="tt">igr_iter_solver</span></td><tdclass="markdownTableBodyCenter">Integer</td><tdclass="markdownTableBodyLeft">Solution method for IGR elliptic solve [1] Jacobi [2] Gauss-Seidel</td></tr>
731
+
<tdclass="markdownTableBodyRight"><spanclass="tt">igr_pres_lim</span></td><tdclass="markdownTableBodyCenter">Logical</td><tdclass="markdownTableBodyLeft">Limit IGR pressure to avoid negative values (default F)</td></tr>
728
732
<trclass="markdownTableRowEven">
729
-
<tdclass="markdownTableBodyRight"><spanclass="tt">num_igr_iters</span></td><tdclass="markdownTableBodyCenter">Integer </td><tdclass="markdownTableBodyLeft">Number of iterations for for the IGR elliptic solve (default 2)</td></tr>
<tdclass="markdownTableBodyRight"><spanclass="tt">num_igr_iters</span></td><tdclass="markdownTableBodyCenter">Integer </td><tdclass="markdownTableBodyLeft">Number of iterations for for the IGR elliptic solve (default 2) </td></tr>
736
+
<trclass="markdownTableRowEven">
731
737
<tdclass="markdownTableBodyRight"><spanclass="tt">num_igr_warm_start_iters</span></td><tdclass="markdownTableBodyCenter">Integer </td><tdclass="markdownTableBodyLeft">Number of iterations for the IGR elliptic solve at the first time step (default 50) </td></tr>
<li><spanclass="tt">cfl_adap_dt</span> enables adaptive time stepping with a constant CFL when true</li>
825
831
<li><spanclass="tt">cfl_const_dt</span> enables constant <spanclass="tt">dt</span> time-stepping where <spanclass="tt">dt</span> results in a specified CFL for the initial condition</li>
826
832
<li><spanclass="tt">cfl_target</span> specifies the target CFL value</li>
833
+
<li><spanclass="tt">ramp_ratio</span> limits how much the adaptive time step can grow from one time step to the next: <spanclass="tt">dt</span> is capped at <spanclass="tt">ramp_ratio</span> times the previous <spanclass="tt">dt</span>. Must be at least 1. When unset, the time step growth is unlimited.</li>
827
834
<li><spanclass="tt">n_start</span> specifies the save file to start at</li>
828
835
<li><spanclass="tt">t_save</span> specifies the time interval between data output during the simulation</li>
829
836
<li><spanclass="tt">t_stop</span> specifies at what time the simulation should stop</li>
<p>💡 <b>Tip:</b> If you encounter a validation error, check the relevant section above or review <ahref="https://github.com/MFlowCode/MFC/blob/master/toolchain/mfc/case_validator.py"><spanclass="tt">case_validator.py</span></a> for complete validation logic.</p>
0 commit comments