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>
428
428
</ol>
429
429
<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>These parameters are for NVIDIA Grace-Hopper and similar architectures with hardware-managed unified memory. They allow MFC to run problems larger than GPU memory by paging data between host and device.</li>
<tdclass="markdownTableBodyRight"><spanclass="tt">synth_seed</span></td><tdclass="markdownTableBodyCenter">Integer </td><tdclass="markdownTableBodyLeft">Random seed for wave vector generation </td></tr>
1427
+
<trclass="markdownTableRowOdd">
1428
+
<tdclass="markdownTableBodyRight"><spanclass="tt">synth_n_shells</span></td><tdclass="markdownTableBodyCenter">Integer </td><tdclass="markdownTableBodyLeft">Number of energy shells </td></tr>
1429
+
<trclass="markdownTableRowEven">
1430
+
<tdclass="markdownTableBodyRight"><spanclass="tt">synth_U_inf</span></td><tdclass="markdownTableBodyCenter">Real </td><tdclass="markdownTableBodyLeft">Advection velocity for the synthetic turbulence field </td></tr>
1431
+
<trclass="markdownTableRowOdd">
1432
+
<tdclass="markdownTableBodyRight"><spanclass="tt">synth_n_waves_per_shell(s)</span></td><tdclass="markdownTableBodyCenter">Integer </td><tdclass="markdownTableBodyLeft">Number of random wave vectors in shell <spanclass="tt">s</span></td></tr>
1433
+
<trclass="markdownTableRowEven">
1434
+
<tdclass="markdownTableBodyRight"><spanclass="tt">synth_k_shell(s)</span></td><tdclass="markdownTableBodyCenter">Real </td><tdclass="markdownTableBodyLeft">Wave-number magnitude of shell <spanclass="tt">s</span></td></tr>
1435
+
<trclass="markdownTableRowOdd">
1436
+
<tdclass="markdownTableBodyRight"><spanclass="tt">synth_amp_shell(s)</span></td><tdclass="markdownTableBodyCenter">Real </td><tdclass="markdownTableBodyLeft">Forcing amplitude of shell <spanclass="tt">s</span></td></tr>
1437
+
<trclass="markdownTableRowEven">
1438
+
<tdclass="markdownTableBodyRight"><spanclass="tt">num_turbulent_sources</span></td><tdclass="markdownTableBodyCenter">Integer </td><tdclass="markdownTableBodyLeft">Number of Gaussian forcing zones </td></tr>
1439
+
<trclass="markdownTableRowOdd">
1440
+
<tdclass="markdownTableBodyRight"><spanclass="tt">turb_pos(i,1[,2,3])</span></td><tdclass="markdownTableBodyCenter">Real </td><tdclass="markdownTableBodyLeft">Center of forcing zone <spanclass="tt">i</span> (x[,y,z]) </td></tr>
1441
+
<trclass="markdownTableRowEven">
1442
+
<tdclass="markdownTableBodyRight"><spanclass="tt">synth_L(i,1[,2,3])</span></td><tdclass="markdownTableBodyCenter">Real </td><tdclass="markdownTableBodyLeft">Full extent of forcing zone <spanclass="tt">i</span> (x[,y,z]) </td></tr>
1443
+
</table>
1444
+
<ul>
1445
+
<li><spanclass="tt">synthetic_turbulence</span> superimposes a divergence-free, time-advected sum of Fourier modes onto the momentum and energy equations to mimic isotropic turbulence entering the domain.</li>
1446
+
<li>Each of the <spanclass="tt">synth_n_shells</span> energy shells is defined by a wave-number magnitude <spanclass="tt">synth_k_shell(s)</span>, a forcing amplitude <spanclass="tt">synth_amp_shell(s)</span>, and <spanclass="tt">synth_n_waves_per_shell(s)</span> randomly oriented wave vectors drawn using <spanclass="tt">synth_seed</span>.</li>
1447
+
<li><spanclass="tt">synth_U_inf</span> advects the turbulent field in the x-direction at a constant velocity.</li>
1448
+
<li>Forcing is applied only within Gaussian-windowed zones. Each of the <spanclass="tt">num_turbulent_sources</span> zones must specify its center <spanclass="tt">turb_pos(i,:)</span> and full extents <spanclass="tt">synth_L(i,:)</span> for every active dimension (x, and y, z if <spanclass="tt">n > 0</span>/<spanclass="tt">p > 0</span>).</li>
<p>*: This boundary condition is only used for <spanclass="tt">bc_y%beg</span> when using cylindrical coordinates (<spanclass="tt">cyl_coord = 'T'</span> and 3D). For axisymmetric problems, use <spanclass="tt">bc_y%beg = -2</span> with <spanclass="tt">cyl_coord = 'T'</span> in 2D.</p>
1457
1489
<p>The boundary condition supported by the MFC are listed in table <aclass="el" href="#boundary-conditions" title="Boundary conditions">Boundary Conditions</a>. Their number (<spanclass="tt">#</span>) corresponds to the input value in <spanclass="tt">input.py</span> labeled <spanclass="tt">bc_[x,y,z]%[beg,end]</span> (see table <aclass="el" href="#sec-simulation-algorithm" title="6. Simulation Algorithm">Simulation Algorithm Parameters</a>). The entries labeled "Characteristic." are characteristic boundary conditions based on Thompson <aclass="el" href="citelist.html#CITEREF_thompson87">[48]</a> and Thompson <aclass="el" href="citelist.html#CITEREF_thompson90">[49]</a>.</p>
<li><spanclass="tt">%support = 10</span> specifies an annular transducer array in 2D axisymmetric simulation. It is identical to <spanclass="tt">%support = 9</span> in terms of simulation parameters. It physically represents the a annulus obtained by revolving the arc in <spanclass="tt">%support = 9</span> around the x-axis.</li>
1602
1634
<li><spanclass="tt">%support = 11</span> specifies a circular transducer array in 3D simulation. The total aperture of the array is <spanclass="tt">%aperture</span>, which is similar to <spanclass="tt">%support = 7</span>. The parameters <spanclass="tt">%num_elements</span>, <spanclass="tt">%element_polygon_ratio</span>, and <spanclass="tt">%rotate_angle</span> specify the number of transducer elements, the ratio of the polygon side length to the transducer element radius, and the rotation angle of the array. The polygon side length is calculated by using the total aperture as the circumcicle diameter, and the number of sides of the polygon as <spanclass="tt">%num_elements</span>. The ratio is used specify the aperture size of each transducer element in the array, as a ratio of the total aperture. The rotation angle is optional and defaults to 0. Physically it represents a circular ring of transducer elements.</li>
<p><b>Learn by example:</b> The cases below are curated from MFC's <spanclass="tt">examples/</span> directory and are validated, working configurations. Use them as blueprints for building your own simulations. </p>
<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>
<p>Welcome to the MFC master script. This tool automates and manages building, testing, running, and cleaning of MFC in various configurations on all supported platforms. The README documents this tool and its various commands in more detail. To get started, run <spanclass="tt">./mfc.sh build -h</span>.</p>
<tdclass="markdownTableBodyNone"><spanclass="tt">-o</span>, <spanclass="tt">--output</span></td><tdclass="markdownTableBodyNone">Base name of output file. </td><tdclass="markdownTableBodyNone">- </td></tr>
0 commit comments