Skip to content

Commit 1cdd751

Browse files
authored
Merge branch 'master' into fix/low-risk-bugfixes-batch
2 parents 732146c + 7c806be commit 1cdd751

90 files changed

Lines changed: 7440 additions & 2291 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.

.github/workflows/coverage.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ on:
44
push:
55
branches: [master]
66
pull_request:
7+
types: [opened, synchronize, reopened, ready_for_review]
78
workflow_dispatch:
89

910
concurrency:
@@ -28,7 +29,7 @@ jobs:
2829

2930
run:
3031
name: Coverage Test on CodeCov
31-
if: needs.file-changes.outputs.checkall == 'true'
32+
if: needs.file-changes.outputs.checkall == 'true' && github.event.pull_request.draft != true
3233
needs: file-changes
3334
runs-on: "ubuntu-latest"
3435
steps:

.github/workflows/frontier/build.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ if [ "$job_device" = "gpu" ]; then
2525
fi
2626
fi
2727

28-
. ./mfc.sh load -c $compiler_flag -m g
28+
. ./mfc.sh load -c $compiler_flag -m $([ "$job_device" = "gpu" ] && echo "g" || echo "c")
2929

3030
# Only set up build cache for test suite, not benchmarks
3131
if [ "$run_bench" != "bench" ]; then

.github/workflows/frontier_amd/build.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ if [ "$job_device" = "gpu" ]; then
2525
fi
2626
fi
2727

28-
. ./mfc.sh load -c $compiler_flag -m g
28+
. ./mfc.sh load -c $compiler_flag -m $([ "$job_device" = "gpu" ] && echo "g" || echo "c")
2929

3030
# Only set up build cache for test suite, not benchmarks
3131
if [ "$run_bench" != "bench" ]; then

.lychee.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,5 @@ exclude = [
2828
"https://cpe\\.ext\\.hpe\\.com", # HPE Cray docs have broken SSL cert
2929
"https://sc22\\.supercomputing\\.org", # Returns 415 to automated requests
3030
"https://strawberryperl\\.com", # Frequently times out
31+
"https://www\\.olcf\\.ornl\\.gov/summit", # Returns 503 to automated requests
3132
]

.typos.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ choises = "choises" # appears in comment explaining validation purpose
2828
ordr = "ordr" # typo for "order" in "weno_ordr" - tests param suggestions
2929
unknwn = "unknwn" # typo for "unknown" - tests unknown param detection
3030
tru = "tru" # typo for "true" in "when_tru" - tests dependency keys
31+
PNGs = "PNGs"
3132

3233
[files]
33-
extend-exclude = ["docs/documentation/references*", "docs/references.bib", "tests/", "toolchain/cce_simulation_workgroup_256.sh", "build-docs/"]
34+
extend-exclude = ["docs/documentation/references*", "docs/references.bib", "tests/", "toolchain/cce_simulation_workgroup_256.sh", "build-docs/", "build/", "build_test/"]

CLAUDE.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ IMPORTANT: Follow this loop for ALL code changes. Do not skip steps.
108108
YOU MUST run `./mfc.sh precheck` before any commit. This is enforced by pre-commit hooks.
109109
YOU MUST run tests relevant to your changes before claiming work is done.
110110
NEVER commit code that does not compile or fails tests.
111+
NEVER use heredocs for git commit messages. Use simple `git commit -m "message"` instead.
111112

112113
## Architecture
113114

docs/documentation/case.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -347,11 +347,11 @@ Additional details on this specification can be found in [The Naca Airfoil Serie
347347

348348
- Please see [Patch Parameters](#sec-patches) for the descriptions of `model_filepath`, `model_scale`, `model_rotate`, `model_translate`, `model_spc`, and `model_threshold`.
349349

350-
- `moving_ibm` sets the method by which movement will be applied to the immersed boundary. Using 0 will result in no movement. Using 1 will result 1-way coupling where the boundary moves at a constant rate and applied forces to the fluid based upon it's own motion. In 1-way coupling, the fluid does not apply forces back onto the IB.
350+
- `moving_ibm` sets the method by which movement will be applied to the immersed boundary. Using 0 will result in no movement. Using 1 will result 1-way coupling where the boundary moves at a constant rate and applied forces to the fluid based upon it's own motion. In 1-way coupling, the fluid does not apply forces back onto the IB. Using 2 will result in 2-way coupling, where the boundary pushes on the fluid and the fluid pushes back on the boundary via pressure and viscous forces. If external forces are applied, the boundary will also experience those forces.
351351

352-
- `vel(i)` is the initial linear velocity of the IB in the x, y, z direction for i=1, 2, 3. When `moving_ibm` equals 1, this velocity is constant.
352+
- `vel(i)` is the initial linear velocity of the IB in the x, y, z direction for i=1, 2, 3. When `moving_ibm` equals 2, this velocity is just the starting speed of the object, which will then accelerate due to external forces. If `moving_ibm` equals 1, then this is constant if it is a number, or can be described analytically with an expression.
353353

354-
- `angular_vel(i)` is the initial angular velocity of the IB about the x, y, z axes for i=1, 2, 3 in radians per second. When `moving_ibm` equals 1, this angular velocity is constant.
354+
- `angular_vel(i)` is the initial angular velocity of the IB about the x, y, z axes for i=1, 2, 3 in radians per second. When `moving_ibm` equals 2, this rotation rate is just the starting rate of the object, which will then change due to external torques. If `moving_ibm` equals 1, then this is constant if it is a number, or can be described analytically with an expression.
355355

356356
### 5. Fluid Material's {#sec-fluid-materials}
357357

@@ -651,7 +651,7 @@ To restart the simulation from $k$-th time step, see @ref running "Restarting Ca
651651

652652
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.
653653

654-
- `format` specifies the choice of the file format of data file outputted by MFC by an integer of 1 and 2. `format = 1` and `2` correspond to Silo-HDF5 format and binary format, respectively.
654+
- `format` specifies the choice of the file format of data file outputted by MFC by an integer of 1 and 2. `format = 1` and `2` correspond to Silo-HDF5 format and binary format, respectively. Both formats are supported by `./mfc.sh viz` (see @ref visualization "Flow Visualization"). Silo-HDF5 requires the h5py Python package; binary has no extra dependencies.
655655

656656
- `precision` specifies the choice of the floating-point format of the data file outputted by MFC by an integer of 1 and 2. `precision = 1` and `2` correspond to single-precision and double-precision formats, respectively.
657657

docs/documentation/getting-started.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,24 @@ MFC is **unit-agnostic**: the solver performs no internal unit conversions. What
204204

205205
The only requirement is **consistency** — all inputs must use the same unit system. Note that some parameters use **transformed stored forms** rather than standard physical values (e.g., `gamma` expects \f$1/(\gamma-1)\f$, not \f$\gamma\f$ itself). See @ref sec-stored-forms for details.
206206

207+
## Visualizing Results
208+
209+
After running post_process, visualize the output directly from the command line:
210+
211+
```shell
212+
# List available variables
213+
./mfc.sh viz examples/2D_shockbubble/ --list-vars --step 0
214+
215+
# Render a pressure snapshot
216+
./mfc.sh viz examples/2D_shockbubble/ --var pres --step 1000
217+
218+
# Generate a video
219+
./mfc.sh viz examples/2D_shockbubble/ --var pres --step all --mp4
220+
```
221+
222+
Output images and videos are saved to the `viz/` subdirectory of the case.
223+
For more options, see @ref visualization "Flow Visualization" or run `./mfc.sh viz -h`.
224+
207225
## Helpful Tools
208226

209227
### Parameter Lookup

docs/documentation/running.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,14 @@ using 4 cores:
7373
./mfc.sh run examples/2D_shockbubble/case.py -t simulation post_process -n 4
7474
```
7575

76+
- Visualizing post-processed output:
77+
78+
```shell
79+
./mfc.sh viz examples/2D_shockbubble/ --var pres --step 1000
80+
```
81+
82+
See @ref visualization "Flow Visualization" for the full set of visualization options.
83+
7684
---
7785

7886
## Running on GPUs

docs/documentation/troubleshooting.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ This guide covers debugging tools, common issues, and troubleshooting workflows
3737
./mfc.sh run case.py -v # Run with verbose output
3838
./mfc.sh test --only <UUID> # Run a specific test
3939
./mfc.sh clean # Clean and start fresh
40+
./mfc.sh viz case_dir/ --list-vars --step 0 # Inspect post-processed data
4041
```
4142

4243
---
@@ -457,6 +458,47 @@ Common issues:
457458

458459
---
459460

461+
## Visualization Issues
462+
463+
### "No 'binary/' or 'silo_hdf5/' directory found"
464+
465+
**Cause:** Post-processing has not been run, or the case directory path is wrong.
466+
467+
**Fix:**
468+
1. Run post_process first:
469+
```bash
470+
./mfc.sh run case.py -t post_process
471+
```
472+
2. Verify the path points to the case directory (containing `binary/` or `silo_hdf5/`)
473+
474+
### "Variable 'X' not found"
475+
476+
**Cause:** The requested variable was not written during post-processing.
477+
478+
**Fix:**
479+
1. List available variables:
480+
```bash
481+
./mfc.sh viz case_dir/ --list-vars --step 0
482+
```
483+
2. Ensure your case file enables the desired output (e.g., ``prim_vars_wrt = 'T'``, ``cons_vars_wrt = 'T'``)
484+
485+
### "h5py is required to read Silo-HDF5 files"
486+
487+
**Cause:** The case was post-processed with `format=1` (Silo-HDF5) but `h5py` is not installed.
488+
489+
**Fix:**
490+
- Install h5py: `pip install h5py`
491+
- Or re-run post_process with `format=2` in your case file to produce binary output
492+
493+
### Visualization looks wrong or has artifacts
494+
495+
**Possible causes and fixes:**
496+
1. **Color range:** Try setting explicit `--vmin` and `--vmax` values
497+
2. **Wrong variable:** Use `--list-vars` to check available variables
498+
3. **3D slice position:** Adjust `--slice-axis` and `--slice-value` to view the correct plane
499+
500+
---
501+
460502
## Getting Help
461503

462504
If you can't resolve an issue:

0 commit comments

Comments
 (0)