Skip to content

Commit c0c6abb

Browse files
author
MFC Action
committed
Docs @ 4ee892c
1 parent dacb38e commit c0c6abb

Some content is hidden

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

99 files changed

+5146
-4675
lines changed

documentation/architecture.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -401,7 +401,7 @@ <h1 class="doxsection"><a class="anchor" id="autotoc_md13"></a>
401401
<li><b>Add the module to <span class="tt">docs/module_categories.json</span></b> so it appears in this page</li>
402402
</ol>
403403
<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>
404-
<div style="text-align:center; font-size:0.75rem; color:#888; padding:16px 0 0;">Page last updated: 2026-03-01</div> </div></div><!-- contents -->
404+
<div style="text-align:center; font-size:0.75rem; color:#888; padding:16px 0 0;">Page last updated: 2026-03-02</div> </div></div><!-- contents -->
405405
</div><!-- PageDoc -->
406406
</div><!-- doc-content -->
407407
<div id="page-nav" class="page-nav-panel">

documentation/case.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -817,7 +817,7 @@ <h3 class="doxsection"><a class="anchor" id="sec-formatted-output"></a>
817817
</table>
818818
<p>The table lists formatted database output parameters. The parameters define variables that are outputted from simulation and file types and formats of data as well as options for post-processing.</p>
819819
<ul>
820-
<li><span class="tt">format</span> specifies the choice of the file format of data file outputted by MFC by an integer of 1 and 2. <span class="tt">format = 1</span> and <span class="tt">2</span> correspond to Silo-HDF5 format and binary format, respectively.</li>
820+
<li><span class="tt">format</span> specifies the choice of the file format of data file outputted by MFC by an integer of 1 and 2. <span class="tt">format = 1</span> and <span class="tt">2</span> correspond to Silo-HDF5 format and binary format, respectively. Both formats are supported by <span class="tt">./mfc.sh viz</span> (see <a class="el" href="visualization.html" title="Flow visualization">Flow Visualization</a>). Silo-HDF5 requires the h5py Python package; binary has no extra dependencies.</li>
821821
<li><span class="tt">precision</span> specifies the choice of the floating-point format of the data file outputted by MFC by an integer of 1 and 2. <span class="tt">precision = 1</span> and <span class="tt">2</span> correspond to single-precision and double-precision formats, respectively.</li>
822822
<li><span class="tt">parallel_io</span> activates parallel input/output (I/O) of data files. It is highly recommended to activate this option in a parallel environment. With parallel I/O, MFC inputs and outputs a single file throughout pre-process, simulation, and post-process, regardless of the number of processors used. Parallel I/O enables the use of different numbers of processors in each process (e.g., simulation data generated using 1000 processors can be post-processed using a single processor).</li>
823823
<li><span class="tt">file_per_process</span> deactivates shared file MPI-IO and activates file per process MPI-IO. The default behavior is to use a shared file. File per process is useful when running on &gt;10K ranks. If <span class="tt">file_per_process</span> is true, then pre_process, simulation, and post_process must be run with the same number of ranks.</li>

documentation/case_constraints.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1423,7 +1423,7 @@ <h2 class="doxsection"><a class="anchor" id="physics-warnings"></a>
14231423
</table>
14241424
<hr />
14251425
<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>
1426-
<div style="text-align:center; font-size:0.75rem; color:#888; padding:16px 0 0;">Page last updated: 2026-03-01</div> </div></div><!-- contents -->
1426+
<div style="text-align:center; font-size:0.75rem; color:#888; padding:16px 0 0;">Page last updated: 2026-03-02</div> </div></div><!-- contents -->
14271427
</div><!-- PageDoc -->
14281428
</div><!-- doc-content -->
14291429
<div id="page-nav" class="page-nav-panel">

documentation/cli-reference.html

Lines changed: 112 additions & 25 deletions
Large diffs are not rendered by default.

documentation/contributing.html

Lines changed: 41 additions & 41 deletions
Large diffs are not rendered by default.

documentation/docker.html

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -157,16 +157,16 @@
157157
<div class="headertitle"><div class="title">Containers </div></div>
158158
</div><!--header-->
159159
<div class="contents">
160-
<div class="textblock"><h1 class="doxsection"><a class="anchor" id="autotoc_md120"></a>
160+
<div class="textblock"><h1 class="doxsection"><a class="anchor" id="autotoc_md121"></a>
161161
Containers</h1>
162-
<h2 class="doxsection"><a class="anchor" id="autotoc_md121"></a>
162+
<h2 class="doxsection"><a class="anchor" id="autotoc_md122"></a>
163163
Navigating Docker</h2>
164164
<p>Install Docker on</p><ul>
165165
<li><a href="https://docs.docker.com/desktop/setup/install/mac-install/">MacOS</a></li>
166166
<li><a href="https://docs.docker.com/desktop/setup/install/windows-install/">Windows</a></li>
167167
<li><a href="https://docs.docker.com/desktop/setup/install/linux/">Linux</a></li>
168168
</ul>
169-
<h3 class="doxsection"><a class="anchor" id="autotoc_md122"></a>
169+
<h3 class="doxsection"><a class="anchor" id="autotoc_md123"></a>
170170
Docker Desktop GUI</h3>
171171
<ul>
172172
<li>Search for the <a href="https://hub.docker.com/r/sbryngelson/mfc">sbryngelson/mfc</a> repository. All the MFC containers are stored here.</li>
@@ -179,13 +179,13 @@ <h3 class="doxsection"><a class="anchor" id="autotoc_md122"></a>
179179
</ul>
180180
</li>
181181
</ul>
182-
<h3 class="doxsection"><a class="anchor" id="autotoc_md123"></a>
182+
<h3 class="doxsection"><a class="anchor" id="autotoc_md124"></a>
183183
Docker CLI</h3>
184184
<p>You can navigate Docker entirely from the command line. From a bash-like shell, pull from the <a href="https://hub.docker.com/r/sbryngelson/mfc">sbryngelson/mfc</a> repository and run the latest MFC container: </p><div class="fragment"><div class="line">docker run -it --rm --entrypoint bash sbryngelson/mfc:latest-cpu</div>
185185
</div><!-- fragment --><p><b>Selecting OS/ARCH:</b> Docker selects the compatible architecture by default when pulling and running a container. You can manually specify your platform if something seems to go wrong, as Docker may suggest doing so. For example, <span class="tt">linux/amd64</span> handles many *nix-based x86 architectures, and <span class="tt">linux/arm64</span> handles Apple Silicon and Arm-based *nix devices. You can specify it like this: </p><div class="fragment"><div class="line">docker run -it --rm --entrypoint bash --platform linux/amd64 sbryngelson/mfc:latest-cpu</div>
186186
</div><!-- fragment --><p><b>What's Next?</b></p>
187187
<p>Once a container has started, the primary working directory is <span class="tt">/opt/MFC</span>, and all necessary files are located there. You can check out the usual MFC documentation, such as the <a class="el" href="examples.html" title="Example Cases">Example Cases</a>, to get familiar with running cases. Then, review the <a class="el" href="case.html" title="Case Files">Case Files</a> to write a custom case file.</p>
188-
<h2 class="doxsection"><a class="anchor" id="autotoc_md124"></a>
188+
<h2 class="doxsection"><a class="anchor" id="autotoc_md125"></a>
189189
Details on Running Containers</h2>
190190
<p>Let's take a closer look at running MFC within a container. Kick off a CPU container: </p><div class="fragment"><div class="line">docker run -it --rm --entrypoint bash sbryngelson/mfc:latest-cpu</div>
191191
</div><!-- fragment --><p> Or, start a GPU container. </p><div class="fragment"><div class="line">docker run -it --rm --gpus all --entrypoint bash sbryngelson/mfc:latest-gpu</div>
@@ -195,25 +195,25 @@ <h2 class="doxsection"><a class="anchor" id="autotoc_md124"></a>
195195
</div><!-- fragment --><p><b>Shared Memory</b></p>
196196
<p>If you run a job with multiple MPI ranks, you could run into <em>MPI memory binding errors</em>. This can manifest as a failed test (launched via <span class="tt">./mfc.sh test</span>) and running cases with <span class="tt">./mfc.sh run -n X &lt;path/to/case.py&gt;</span> where <span class="tt">X &gt; 1</span>. To avoid this issue, you can increase the shared memory size (to keep MPI working): </p><div class="fragment"><div class="line">docker run -it --rm --entrypoint bash --shm-size=&lt;e.g., 4gb&gt; sbryngelson/mfc:latest-cpu</div>
197197
</div><!-- fragment --><p> or avoid MPI altogether via <span class="tt">./mfc.sh &lt;your commands&gt; --no-mpi</span>.</p>
198-
<h3 class="doxsection"><a class="anchor" id="autotoc_md125"></a>
198+
<h3 class="doxsection"><a class="anchor" id="autotoc_md126"></a>
199199
Portability</h3>
200200
<p>On the source machine, pull and save the image: </p><div class="fragment"><div class="line">docker pull sbryngelson/mfc:latest-cpu</div>
201201
<div class="line">docker save -o mfc:latest-cpu.tar sbryngelson/mfc:latest-cpu</div>
202202
</div><!-- fragment --><p> On the target machine, load and run the image: </p><div class="fragment"><div class="line">docker load -i mfc:latest-cpu.tar</div>
203203
<div class="line">docker run -it --rm mfc:latest-cpu</div>
204-
</div><!-- fragment --><h2 class="doxsection"><a class="anchor" id="autotoc_md126"></a>
204+
</div><!-- fragment --><h2 class="doxsection"><a class="anchor" id="autotoc_md127"></a>
205205
Using Supercomputers/Clusters via Apptainer/Singularity</h2>
206-
<h3 class="doxsection"><a class="anchor" id="autotoc_md127"></a>
206+
<h3 class="doxsection"><a class="anchor" id="autotoc_md128"></a>
207207
Interactive Shell</h3>
208208
<div class="fragment"><div class="line">apptainer shell --nv --fakeroot --writable-tmpfs --bind &quot;$PWD&quot;:/mnt docker://sbryngelson/mfc:latest-gpu</div>
209209
<div class="line">Apptainer&gt;cd /opt/MFC</div>
210210
</div><!-- fragment --><p> or </p><div class="fragment"><div class="line">apptainer exec --nv --fakeroot --writable-tmpfs --bind &quot;$PWD&quot;:/mnt docker://sbryngelson/mfc:latest-gpu bash -c &quot;cd /opt/MFC &amp;&amp; bash&quot;</div>
211211
</div><!-- fragment --><p> To run MFC on CPUs, omit <span class="tt">--nv</span> and use the <span class="tt">mfc:latest-cpu</span> container image.</p>
212-
<h3 class="doxsection"><a class="anchor" id="autotoc_md128"></a>
212+
<h3 class="doxsection"><a class="anchor" id="autotoc_md129"></a>
213213
For Portability</h3>
214214
<p>On the source machine, pull and translate the image into <span class="tt">.sif</span> format: </p><div class="fragment"><div class="line">apptainer build mfc:latest-gpu.sif docker://sbryngelson/mfc:latest-gpu</div>
215215
</div><!-- fragment --><p> On the target machine, load and start an interactive shell: </p><div class="fragment"><div class="line">apptainer shell --nv --fakeroot --writable-tmpfs --bind &quot;$PWD&quot;:/mnt mfc:latest-gpu.sif</div>
216-
</div><!-- fragment --><h3 class="doxsection"><a class="anchor" id="autotoc_md129"></a>
216+
</div><!-- fragment --><h3 class="doxsection"><a class="anchor" id="autotoc_md130"></a>
217217
Slurm Job</h3>
218218
<p>Below is an example Slurm batch job script. Refer to your machine's user guide for instructions on properly loading and using Apptainer. </p><div class="fragment"><div class="line">#!/bin/bash</div>
219219
<div class="line">#SBATCH --job-name=mfc-sim</div>
@@ -242,29 +242,29 @@ <h3 class="doxsection"><a class="anchor" id="autotoc_md128"></a>
242242
</ul>
243243
</li>
244244
</ul>
245-
<h2 class="doxsection"><a class="anchor" id="autotoc_md130"></a>
245+
<h2 class="doxsection"><a class="anchor" id="autotoc_md131"></a>
246246
Tag Details</h2>
247-
<h3 class="doxsection"><a class="anchor" id="autotoc_md131"></a>
247+
<h3 class="doxsection"><a class="anchor" id="autotoc_md132"></a>
248248
Base Images</h3>
249249
<ul>
250250
<li>CPU images (v4.3.0-latest releases) are built on <b>Ubuntu 22.04</b>.</li>
251251
<li>GPU images (v4.3.0-latest releases) are built on <b>NVHPC SDK 23.11 (CUDA 12.3) &amp; Ubuntu 22.04</b>.</li>
252252
</ul>
253-
<h3 class="doxsection"><a class="anchor" id="autotoc_md132"></a>
253+
<h3 class="doxsection"><a class="anchor" id="autotoc_md133"></a>
254254
Tag Structure</h3>
255255
<ul>
256256
<li><b><span class="tt">vx.x.x</span></b> - Official MFC release versions (recommended: use <span class="tt">latest</span> release)</li>
257257
<li><b><span class="tt">cpu/gpu</span></b> - Build configurations for CPU or GPU acceleration.</li>
258258
<li><b><span class="tt">ubuntu-xx.xx</span></b> - Base Ubuntu version (standard = <span class="tt">amd64</span>, <span class="tt">-arm</span> = <span class="tt">arm64</span>)</li>
259259
</ul>
260-
<h3 class="doxsection"><a class="anchor" id="autotoc_md133"></a>
260+
<h3 class="doxsection"><a class="anchor" id="autotoc_md134"></a>
261261
Example Tags</h3>
262262
<div class="fragment"><div class="line">mfc:latest-xxx # Latest version (amd64 &amp; arm64)</div>
263263
<div class="line">mfc:vx.x.x-cpu # CPU version (amd64 &amp; arm64)</div>
264264
<div class="line">mfc:vx.x.x-gpu # GPU version (amd64 &amp; arm64)</div>
265265
<div class="line">mfc:vx.x.x-xxx-ubuntu-xx.xx # amd64 natively-supported version</div>
266266
<div class="line">mfc:vx.x.x-xxx-ubuntu-xx.xx-arm # arm64 natively-supported version</div>
267-
</div><!-- fragment --><h3 class="doxsection"><a class="anchor" id="autotoc_md134"></a>
267+
</div><!-- fragment --><h3 class="doxsection"><a class="anchor" id="autotoc_md135"></a>
268268
Architecture Support</h3>
269269
<p>You can specify your architecture with <span class="tt">--platform &lt;os&gt;/&lt;arch&gt;</span>, typically either <span class="tt">linux/amd64</span> or <span class="tt">linux/arm64</span>. If you are unsure, Docker automatically selects the compatible image with your system architecture. If native support isn't available, QEMU emulation is enabled for the following architectures, albeit with degraded performance. </p><div class="fragment"><div class="line">linux/amd64</div>
270270
<div class="line">linux/amd64/v2</div>

0 commit comments

Comments
 (0)