Skip to content

Commit 605ee69

Browse files
authored
Website small tweaks and improvements and doc syntax fixes (#362)
1 parent cfcfb66 commit 605ee69

File tree

8 files changed

+122
-124
lines changed

8 files changed

+122
-124
lines changed

CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -566,6 +566,9 @@ if (MFC_DOCUMENTATION)
566566
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/docs/res"
567567
DESTINATION "docs/mfc")
568568

569+
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/docs/robots.txt"
570+
DESTINATION "docs/mfc")
571+
569572
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/docs/index.html"
570573
DESTINATION "docs/mfc")
571574
endif()

README.md

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020
</p>
2121

2222
Welcome to the home of MFC!
23-
MFC simulates compressible multi-component and multi-phase flows, amongst other things.
24-
It scales <b>ideally to exascale</b>; [tens of thousands of GPUs on NVIDIA- and AMD-GPU Machines](#is-this-really-exascale), like Oak Ridge Summit and Frontier.
23+
MFC simulates compressible multi-component and multi-phase flows, [amongst other things](#what-else-can-this-thing-do).
24+
It scales <b>ideally to exascale</b>; [tens of thousands of GPUs on NVIDIA- and AMD-GPU machines](#is-this-really-exascale), like Oak Ridge Summit and Frontier.
2525
MFC is written in Fortran and makes use of metaprogramming to keep the code short (about 20K lines).
2626

2727
Get in touch with the maintainers, like <a href="mailto:[email protected]">Spencer</a>, if you have questions!
@@ -96,7 +96,7 @@ They are organized below, just click the drop-downs!
9696
* Multi- and single-phase
9797
* Phase change via p, pT, and pTg schemes
9898
* Grids
99-
* 1-3D Cartesian, Cylindrical, Axi-symmetric.
99+
* 1-3D Cartesian, cylindrical, axi-symmetric.
100100
* Arbitrary grid stretching for multiple domain regions available.
101101
* Complex/arbitrary geometries via immersed boundary methods
102102
* STL geometry files supported
@@ -162,12 +162,10 @@ If you use MFC, consider citing it:
162162

163163
## License
164164

165-
Copyright 2021-2024.
165+
Copyright 2021-2024 Spencer Bryngelson and Tim Colonius.
166166
MFC is under the MIT license (see [LICENSE](LICENSE) file for full text).
167167

168168
## Acknowledgements
169-
170-
<p align="justify">
171-
MFC development was supported by multiple current and past grants from the US Department of Defense, National Institute of Health (NIH), Department of Energy (DOE), and the National Science Foundation (NSF).
172-
MFC computations use OLCF Frontier, Summit, and Wombat under allocation CFD154 (PI Bryngelson) and ACCESS-CI under allocations TG-CTS120005 (PI Colonius) and TG-PHY210084 (PI Bryngelson).
173-
</p>
169+
170+
Multiple federal sponsors have supported MFC development, including the US Department of Defense (DOD), National Institutes of Health (NIH), Department of Energy (DOE), and National Science Foundation (NSF).
171+
MFC computations use OLCF Frontier, Summit, and Wombat under allocation CFD154 (PI Bryngelson) and ACCESS-CI under allocations TG-CTS120005 (PI Colonius) and TG-PHY210084 (PI Bryngelson).

docs/documentation/case.md

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

docs/documentation/getting-started.md

Lines changed: 32 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,8 @@
55
You can either download MFC's [latest release from GitHub](https://github.com/MFlowCode/MFC/releases/latest) or clone the repository:
66

77
```console
8-
$ git clone https://github.com/MFlowCode/MFC.git
9-
$ cd MFC
10-
$ git checkout <release tag>
8+
git clone https://github.com/MFlowCode/MFC.git
9+
cd MFC
1110
```
1211

1312
## Build Environment
@@ -21,24 +20,24 @@ Please select your desired configuration from the list bellow:
2120
- **On supported clusters:** Load environment modules
2221

2322
```console
24-
$ . ./mfc.sh load
23+
. ./mfc.sh load
2524
```
2625

2726
- **Via [Aptitude](https://wiki.debian.org/Aptitude):**
2827

2928
```console
30-
$ sudo apt update
31-
$ sudo apt upgrade
32-
$ sudo apt install tar wget make cmake gcc g++ \
29+
sudo apt update
30+
sudo apt upgrade
31+
sudo apt install tar wget make cmake gcc g++ \
3332
python3 python3-dev \
3433
"openmpi-*" libopenmpi-dev
3534
```
3635

3736
- **Via [Pacman](https://wiki.archlinux.org/title/pacman):**
3837

3938
```console
40-
$ sudo pacman -Syu
41-
$ sudo pacman -S base-devel coreutils \
39+
sudo pacman -Syu
40+
sudo pacman -S base-devel coreutils \
4241
git ninja gcc-fortran \
4342
cmake openmpi python3 \
4443
python-pip openssh \
@@ -88,35 +87,32 @@ You can now follow the appropriate instructions for your distribution.
8887
</details>
8988

9089
<details>
91-
<summary><h3>MacOS (x86 and Apple Silicon)</h3></summary>
90+
<summary><h3>MacOS</h3></summary>
9291

93-
**Note:** macOS remains the most difficult platform to consistently compile MFC on.
94-
If you run into issues, we suggest you try using Docker (instructions above).
95-
96-
- **MacOS v10.15 (Catalina) or newer [ZSH]** (Verify with `echo $SHELL`)
92+
- **If you use [ZSH]** (Verify with `echo $SHELL`)
9793

9894
```console
99-
$ touch ~/.zshrc
100-
$ open ~/.zshrc
95+
touch ~/.zshrc
96+
open ~/.zshrc
10197
```
10298

103-
- **Older than MacOS v10.15 (Catalina) [BASH]** (Verify with `echo $SHELL`)
99+
- **If you use [BASH]** (Verify with `echo $SHELL`)
104100

105101
```console
106-
$ touch ~/.bash_profile
107-
$ open ~/.bash_profile
102+
touch ~/.bash_profile
103+
open ~/.bash_profile
108104
```
109105

110106
An editor should open.
111107
Please paste the following lines into it before saving the file.
112-
If you wish to use a version of GNU's GCC other than 11, modify the first assignment.
108+
If you wish to use a version of GNU's GCC other than 13, modify the first assignment.
113109
These lines ensure that LLVM's Clang, and Apple's modified version of GCC, won't be used to compile MFC.
114110
Further reading on `open-mpi` incompatibility with `clang`-based `gcc` on macOS: [here](https://stackoverflow.com/questions/27930481/how-to-build-openmpi-with-homebrew-and-gcc-4-9).
115-
We do *not* support `clang` due to conflicts with our Silo dependency.
111+
We do *not* support `clang` due to conflicts with the Silo dependency.
116112

117113
```console
118114
# === MFC MPI Installation ===
119-
export MFC_GCC_VER=11
115+
export MFC_GCC_VER=13
120116
export OMPI_MPICC=gcc-$MFC_GCC_VER
121117
export OMPI_CXX=g++-$MFC_GCC_VER
122118
export OMPI_FC=gfortran-$MFC_GCC_VER
@@ -126,11 +122,11 @@ export FC=gfortran-$MFC_GCC_VER
126122
# === MFC MPI Installation ===
127123
```
128124

129-
**Close the open editor and terminal window**. Open a **new terminal** window before executing the commands bellow.
125+
**Close the open editor and terminal window**. Open a **new terminal** window before executing the commands below.
130126

131127
```console
132-
$ brew install wget make python make cmake coreutils gcc@$MFC_GCC_VER
133-
$ HOMEBREW_MAKE_JOBS=$(nproc) brew install --cc=gcc-$MFC_GCC_VER --verbose --build-from-source open-mpi
128+
brew install wget make python make cmake coreutils gcc@$MFC_GCC_VER
129+
HOMEBREW_MAKE_JOBS=$(nproc) brew install --cc=gcc-$MFC_GCC_VER --verbose --build-from-source open-mpi
134130
```
135131

136132
They will download the dependencies MFC requires to build itself. `open-mpi` will be compiled from source, using the version of GCC we specified above with the environment variables `HOMEBREW_CC` and `HOMEBREW_CXX`.
@@ -149,22 +145,22 @@ First install Docker and Git:
149145
- macOS: `brew install git docker` (requires [Homebrew](https://brew.sh/)).
150146
- Other systems:
151147
```console
152-
$ sudo apt install git docker # Debian / Ubuntu via Aptitude
153-
$ sudo pacman -S git docker # Arch Linux via Pacman
148+
sudo apt install git docker # Debian / Ubuntu via Aptitude
149+
sudo pacman -S git docker # Arch Linux via Pacman
154150
```
155151

156152
Once Docker and Git are installed on your system, clone MFC with
157153

158154
```console
159-
$ git clone https://github.com/MFlowCode/MFC
160-
$ cd MFC
155+
git clone https://github.com/MFlowCode/MFC
156+
cd MFC
161157
```
162158

163159
To fetch the prebuilt Docker image and enter an interactive bash session with the
164160
recommended settings applied, run
165161

166162
```console
167-
$ ./mfc.sh docker # If on \*nix/macOS
163+
./mfc.sh docker # If on \*nix/macOS
168164
.\mfc.bat docker # If on Windows
169165
```
170166

@@ -201,21 +197,21 @@ For a detailed list of options, arguments, and features, please refer to `./mfc.
201197

202198
Most first-time users will want to build MFC using 8 threads (or more!) with MPI support:
203199
```console
204-
$ ./mfc.sh build -j 8
200+
./mfc.sh build -j 8
205201
```
206202

207203
Examples:
208204

209-
- Build MFC using 8 threads with MPI and GPU acceleration: `$ ./mfc.sh build --gpu -j 8`.
210-
- Build MFC using a single thread without MPI, GPU, and Debug support: `$ ./mfc.sh build --no-mpi`.
211-
- Build MFC's `simulation` code in Debug mode with MPI and GPU support: `$ ./mfc.sh build --debug --gpu -t simulation`.
205+
- Build MFC using 8 threads with MPI and GPU acceleration: `./mfc.sh build --gpu -j 8`.
206+
- Build MFC using a single thread without MPI, GPU, and Debug support: `./mfc.sh build --no-mpi`.
207+
- Build MFC's `simulation` code in Debug mode with MPI and GPU support: `./mfc.sh build --debug --gpu -t simulation`.
212208

213209
## Running the Test Suite
214210

215211
Run MFC's test suite with 8 threads:
216212

217213
```console
218-
$ ./mfc.sh test -j 8
214+
./mfc.sh test -j 8
219215
```
220216

221217
Please refer to the [Testing](testing.md) document for more information.
@@ -225,7 +221,7 @@ Please refer to the [Testing](testing.md) document for more information.
225221
MFC has example cases in the `examples` folder. You can run such a case interactively using 2 tasks by typing:
226222

227223
```console
228-
$ ./mfc.sh run examples/2D_shockbubble/case.py -n 2
224+
./mfc.sh run examples/2D_shockbubble/case.py -n 2
229225
```
230226

231227
Please refer to the [Running](running.md) document for more information on `case.py` files and how to run them.

docs/documentation/running.md

Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ Please refer to `./mfc.sh run -h` for a complete list of arguments and options,
3333
To run all stages of MFC, that is [pre_process](https://github.com/MFlowCode/MFC/tree/master/src/pre_process/), [simulation](https://github.com/MFlowCode/MFC/tree/master/src/simulation/), and [post_process](https://github.com/MFlowCode/MFC/tree/master/src/post_process/) on the sample case [2D_shockbubble](https://github.com/MFlowCode/MFC/tree/master/examples/2D_shockbubble/),
3434

3535
```console
36-
$ ./mfc.sh run examples/2D_shockbubble/case.py
36+
./mfc.sh run examples/2D_shockbubble/case.py
3737
```
3838

3939
If you want to run a subset of the available stages, you can use the `-t` argument.
@@ -46,59 +46,59 @@ For example,
4646
- Running [pre_process](https://github.com/MFlowCode/MFC/tree/master/src/pre_process/) with 2 cores:
4747

4848
```console
49-
$ ./mfc.sh run examples/2D_shockbubble/case.py -t pre_process -n 2
49+
./mfc.sh run examples/2D_shockbubble/case.py -t pre_process -n 2
5050
```
5151

5252
- Running [simulation](https://github.com/MFlowCode/MFC/tree/master/src/simulation/) and [post_process](https://github.com/MFlowCode/MFC/tree/master/src/post_process/)
5353
using 4 cores:
5454

5555
```console
56-
$ ./mfc.sh run examples/2D_shockbubble/case.py -t simulation post_process -n 4
56+
./mfc.sh run examples/2D_shockbubble/case.py -t simulation post_process -n 4
5757
```
5858

5959
## Batch Execution
6060

6161
The MFC detects which scheduler your system is using and handles the creation and execution of batch scripts.
6262
The batch engine is requested via the `-e batch` option.
63-
The number of nodes can be specified with the `-N` (i.e `--nodes`) option.
63+
The number of nodes can be specified with the `-N` (i.e., `--nodes`) option.
6464

6565
We provide a list of (baked-in) submission batch scripts in the `toolchain/templates` folder.
6666

6767
```console
68-
$ ./mfc.sh run examples/2D_shockbubble/case.py -e batch -N 2 -n 4 -t simulation -c <computer name>
68+
./mfc.sh run examples/2D_shockbubble/case.py -e batch -N 2 -n 4 -t simulation -c <computer name>
6969
```
7070

7171
Other useful arguments include:
7272

73-
- `-# <job name>` to name your job. (i.e `--name`)
74-
- `-@ [email protected]` to receive emails from the scheduler. (i.e `--email`)
75-
- `-w hh:mm:ss` to specify the job's maximum allowed walltime. (i.e `--walltime`)
76-
- `-a <account name>` to identify the account to be charged for the job. (i.e `--account`)
77-
- `-p <partition name>` to select the job's partition. (i.e `--partition`)
73+
- `-# <job name>` to name your job. (i.e., `--name`)
74+
- `-@ [email protected]` to receive emails from the scheduler. (i.e., `--email`)
75+
- `-w hh:mm:ss` to specify the job's maximum allowed walltime. (i.e., `--walltime`)
76+
- `-a <account name>` to identify the account to be charged for the job. (i.e., `--account`)
77+
- `-p <partition name>` to select the job's partition. (i.e., `--partition`)
7878

7979
As an example, one might request GPUs on a SLURM system using the following:
8080

8181
**Disclaimer**: IBM's JSRUN on LSF-managed computers does not use the traditional node-based approach to
82-
allocate resources. Therefore, the MFC constructs equivalent resource-sets in task and GPU count.
82+
allocate resources. Therefore, the MFC constructs equivalent resource sets in the task and GPU count.
8383

8484
### Profiling with NVIDIA Nsight
8585

86-
MFC provides two different argument to facilitate profiling with NVIDIA Nsight.
87-
**Please ensure that the used argument is placed at the end so that their respective flags can be appended.**
86+
MFC provides two different arguments to facilitate profiling with NVIDIA Nsight.
87+
**Please ensure the used argument is placed at the end so their respective flags can be appended.**
8888
- Nsight Systems (Nsys): `./mfc.sh run ... --nsys [nsys flags]` allows one to visualize MFC's system-wide performance with [NVIDIA Nsight Systems](https://developer.nvidia.com/nsight-systems).
89-
NSys is best for getting a general understanding of the order and execution times of major subroutines (WENO, Riemann, etc.) in MFC.
89+
NSys is best for understanding the order and execution times of major subroutines (WENO, Riemann, etc.) in MFC.
9090
When used, `--nsys` will run the simulation and generate `.nsys-rep` files in the case directory for all targets.
91-
These files can then be imported into Nsight System's GUI, which can be downloaded [here](https://developer.nvidia.com/nsight-systems/get-started#latest-Platforms). It is best to run case files with a few timesteps so that the report files remain small. Learn more about NVIDIA Nsight Systems [here](https://docs.nvidia.com/nsight-systems/UserGuide/index.html).
91+
These files can then be imported into Nsight System's GUI, which can be downloaded [here](https://developer.nvidia.com/nsight-systems/get-started#latest-Platforms). It is best to run case files with a few timesteps to keep the report files small. Learn more about NVIDIA Nsight Systems [here](https://docs.nvidia.com/nsight-systems/UserGuide/index.html).
9292
- Nsight Compute (NCU): `./mfc.sh run ... --ncu [ncu flags]` allows one to conduct kernel-level profiling with [NVIDIA Nsight Compute](https://developer.nvidia.com/nsight-compute).
9393
NCU provides profiling information for every subroutine called and is more detailed than NSys.
9494
When used, `--ncu` will output profiling information for all subroutines, including elapsed clock cycles, memory used, and more after the simulation is run.
95-
Please note that adding this argument will significantly slow down the simulation and should only be used on case files with a few timesteps.
95+
Adding this argument will significantly slow the simulation and should only be used on case files with a few timesteps.
9696
Learn more about NVIDIA Nsight Compute [here](https://docs.nvidia.com/nsight-compute/NsightCompute/index.html).
9797

9898
### Restarting Cases
9999

100100
When running a simulation, MFC generates a `./restart_data` folder in the case directory that contains `lustre_*.dat` files that can be used to restart a simulation from saved timesteps.
101-
This allows a user to run a simulation to some timestep $X$, then later continue it to run to another timestep $Y$, where $Y > X$.
101+
This allows a user to simulate some timestep $X$, then continue it to run to another timestep $Y$, where $Y > X$.
102102
The user can also choose to add new patches at the intermediate timestep.
103103

104104
If you want to restart a simulation,
@@ -108,29 +108,29 @@ If you want to restart a simulation,
108108
- `t_step_stop` : $t_f$
109109
- `t_step_save` : $SF$
110110
in which $t_i$ is the starting time, $t_f$ is the final time, and $SF$ is the saving frequency time.
111-
- Run pre-process and simulation on the case.
111+
- Run `pre_process` and `simulation` on the case.
112112
- `./mfc.sh run case.py -t pre_process simulation `
113-
- As the simulation runs, it will create LUSTRE files for each saved timestep in `./restart_data`.
114-
- When the simulation stops, choose any LUSTRE file as the restarting point (lustre_ $t_s$.dat)
115-
- Create a new duplicate input file, (ex. `restart_case.py`), on which it should:
113+
- As the simulation runs, it will create Lustre files for each saved timestep in `./restart_data`.
114+
- When the simulation stops, choose any Lustre file as the restarting point (lustre_ $t_s$.dat)
115+
- Create a new duplicate input file (e.g., `restart_case.py`), which should have:
116116

117117
1. For the Computational Domain Parameters
118-
- Have the following removed BUT `m`, `n`, and `p`:
119-
- All domaing/mesh information
118+
- Have the following removed __except__ `m`, `n`, and `p`:
119+
- All domain/mesh information
120120
- `(xyz)_domain%beg`
121121
- `(xyz)_domain%end`
122122
- `stretch_(xyz)`
123123
- `a_(xyz)`
124124
- `(xyz)_a`
125125
- `(xyz)_b`
126-
- Have the following altered:
127-
- `t_step_start` : $t_s$ # this is the point at which the simulation will restart
128-
- `t_step_stop` : $t_{f2}$ # your new final simulation time, which can be the same as $t_f$
129-
- `t_step_save` : ${SF}_2$ # if interested in changing the saving frequency
130-
- Have the following ADDED:
131-
- `old_ic` : 'T' # to specify that we have initial conditions from previous simulations
132-
- `old_grid` : 'T' # to specify that we have a grid from previous simulations (maybe I do not need m, n, and p, then?)
133-
- `t_step_old` : $t_i$ # this is the time step used as the `t_step_start` of the original `case.py` file
126+
- Alter the following:
127+
- `t_step_start` : $t_s$ (the point at which the simulation will restart)
128+
- `t_step_stop` : $t_{f2}$ (new final simulation time, which can be the same as $t_f$)
129+
- `t_step_save` : ${SF}_2$ (if interested in changing the saving frequency)
130+
- Add the following:
131+
- `old_ic` : 'T' (to specify that we have initial conditions from previous simulations)
132+
- `old_grid` : 'T' (to specify that we have a grid from previous simulations)
133+
- `t_step_old` : $t_i$ (the time step used as the `t_step_start` of the original `case.py` file)
134134
2. For the Simulation Algorithm Parameters
135135
- Substitute `num_patches` to reflect the number of ADDED patches in the `restart_case.py` file. If no patches are added, set `num_patches: 0`
136136

@@ -145,32 +145,32 @@ in which $t_i$ is the starting time, $t_f$ is the final time, and $SF$ is the sa
145145
4. For Fluid properties
146146
- Keep information about the fluid properties
147147

148-
- Run pre-process and simulation on restart_case.py
148+
- Run pre-process and simulation on `restart_case.py`
149149
- `./mfc.sh run restart_case.py -t pre_process simulation `
150150

151151
- Run the post_process
152152
- There are several ways to do this. Keep in mind that, regardless of the .py file used, the post_process command will generate output files in the [`t_step_start`, `t_step_stop`] range, with `t_step_save` as the spacing between files.
153153
- One way is to set `t_step_stop` to the restarting point $t_s$ in `case.py`. Then, run the commands below. The first command will run on timesteps $[t_i, t_s]$. The second command will run on $[t_s, t_{f2}]$. Therefore, the whole range $[t_i, t_{f2}]$ will be post processed.
154154

155155
```console
156-
$ ./mfc.sh run case.py -t post_process
157-
$ ./mfc.sh run restart_case.py -t post_process
156+
./mfc.sh run case.py -t post_process
157+
./mfc.sh run restart_case.py -t post_process
158158
```
159159

160-
We have provided an example `case.py` and `restart_case.py` in `/examples/1D_vacuum_restart/`. This simulation is a duplicate of the `1D_vacuum` case. It demonstrates stopping at timestep 7000, adding a new patch, and restarting the simulation. To test this code, run:
160+
We have provided an example, `case.py` and `restart_case.py` in `/examples/1D_vacuum_restart/`. This simulation is a duplicate of the `1D_vacuum` case. It demonstrates stopping at timestep 7000, adding a new patch, and restarting the simulation. To test this code, run:
161161

162162
```console
163-
$ ./mfc.sh run examples/1D_vacuum_restart/case.py -t pre_process simulation
164-
$ ./mfc.sh run examples/1D_vacuum_restart/restart_case.py -t pre_process simulation
165-
$ ./mfc.sh run examples/1D_vacuum_restart/case.py -t post_process
166-
$ ./mfc.sh run examples/1D_vacuum_restart/restart_case.py -t post_process
163+
./mfc.sh run examples/1D_vacuum_restart/case.py -t pre_process simulation
164+
./mfc.sh run examples/1D_vacuum_restart/restart_case.py -t pre_process simulation
165+
./mfc.sh run examples/1D_vacuum_restart/case.py -t post_process
166+
./mfc.sh run examples/1D_vacuum_restart/restart_case.py -t post_process
167167
```
168168

169169
### Example Runs
170170

171171
- Oak Ridge National Laboratory's [Summit](https://www.olcf.ornl.gov/summit/):
172172

173173
```console
174-
$ ./mfc.sh run examples/2D_shockbubble/case.py -e batch \
174+
./mfc.sh run examples/2D_shockbubble/case.py -e batch \
175175
-N 2 -n 4 -t simulation -a <redacted> -c summit
176176
```

0 commit comments

Comments
 (0)