Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
154 commits
Select commit Hold shift + click to select a range
8fed09a
Quality of life improvements for MFC toolchain
sbryngelson Jan 28, 2026
4827baf
Add test summary report and case template generator
sbryngelson Jan 28, 2026
2bc1e4b
Add discoverability features: shell completion, interactive mode, onb…
sbryngelson Jan 28, 2026
1726117
Fix remaining lint errors in test.py and common.py
sbryngelson Jan 28, 2026
32443ba
Enhance help system with topics, aliases, and improved subcommand help
sbryngelson Jan 28, 2026
f32b41c
Add helpful error when ./mfc.sh load is run without source
sbryngelson Jan 28, 2026
aa963a1
Add progress bar for pip install and speed up startup
sbryngelson Jan 28, 2026
79440fa
Improve pip install progress bar to track all phases
sbryngelson Jan 28, 2026
db67f38
Show current package below pip install progress bar
sbryngelson Jan 28, 2026
6584493
Add progress bar for pip install and speed up startup
sbryngelson Jan 28, 2026
3f9d384
Use uv for fast Python package installation when available
sbryngelson Jan 28, 2026
838ca57
Auto-bootstrap uv for fast package installation
sbryngelson Jan 28, 2026
075e409
Remove hardcoded package count from install message
sbryngelson Jan 28, 2026
4afc5e4
Show uv's native progress display during installation
sbryngelson Jan 28, 2026
d9f1ae3
Set UV_LINK_MODE=copy to avoid slow hardlink failures
sbryngelson Jan 28, 2026
d7c3ac0
Fix subcommand help display (init, packer, etc.)
sbryngelson Jan 28, 2026
e3afe74
Fix circular imports between case.py, build.py, and run/input.py
sbryngelson Jan 28, 2026
fe6a274
Fix --help for all commands and subcommands
sbryngelson Jan 28, 2026
1eddd60
Fix command aliases to share arguments with main commands
sbryngelson Jan 28, 2026
cfb4ac5
Add build progress bar with file count and elapsed time
sbryngelson Jan 29, 2026
0dbd402
Rename case template command from 'init' to 'new', restore original init
sbryngelson Jan 29, 2026
41161af
Fix --verbose flag to show raw build output
sbryngelson Jan 29, 2026
f020c03
Switch Python formatter from black to autopep8
sbryngelson Jan 29, 2026
2bfc0ed
Add CLI auto-documentation system with single source of truth
sbryngelson Jan 29, 2026
1251c0a
Refactor CLI generators to fix pylint errors
sbryngelson Jan 29, 2026
f6111be
Add CLI documentation generator and CI integration
sbryngelson Jan 29, 2026
f680678
Add parameter validation test safety net for Phase 4 refactoring
sbryngelson Jan 29, 2026
341a554
Add negative and mutation tests for validator coverage
sbryngelson Jan 29, 2026
abeb1f0
Fix validator gaps found by mutation testing
sbryngelson Jan 29, 2026
e3c6cfb
Add unified parameter schema as single source of truth (Phase 4)
sbryngelson Jan 30, 2026
bc513d1
Compact params package from ~3,200 to ~450 lines
sbryngelson Jan 30, 2026
f540194
Add user-facing parameter search and typo suggestions
sbryngelson Jan 30, 2026
bdd6540
Add params command to main help display
sbryngelson Jan 30, 2026
4ce5129
Fix params command to show simple list by default
sbryngelson Jan 30, 2026
b42c1a6
Collapse indexed parameters in params search output
sbryngelson Jan 30, 2026
c3a4cad
Collapse prefix indices in params output (patch_icpp(N)%...)
sbryngelson Jan 30, 2026
f5d8f97
Remove stages from params output (internal detail)
sbryngelson Jan 30, 2026
a0cd1fe
Add optional parameter descriptions to params command
sbryngelson Jan 30, 2026
aad8c35
Expand parameter descriptions to 100% coverage
sbryngelson Jan 30, 2026
4afd665
Fix params -f to collapse indexed families
sbryngelson Jan 30, 2026
fa2d0b8
Update banner to show key user commands
sbryngelson Jan 30, 2026
b1aa837
Move CASE_OPTIMIZATION to registry as source of truth
sbryngelson Jan 30, 2026
87e1330
Add constraint validation, dependency warnings, and IDE schema genera…
sbryngelson Jan 30, 2026
accb539
Add VS Code JSON schema configuration for case files
sbryngelson Jan 30, 2026
c508566
Auto-update VS Code settings from generate --json-schema
sbryngelson Jan 30, 2026
7b3c902
Auto-configure VS Code settings on mfc.sh startup
sbryngelson Jan 30, 2026
40b8838
Fix lint and spelling issues
sbryngelson Jan 30, 2026
77f6436
Fix all lint issues to achieve 10.00/10 score
sbryngelson Jan 30, 2026
660751f
Add YAML case file support and improve IDE auto-completion docs
sbryngelson Jan 30, 2026
8c78bfb
Add TypedDict for Python case file auto-completion
sbryngelson Jan 30, 2026
04182b9
Remove TypedDict - ./mfc.sh params is the solution for Python case files
sbryngelson Jan 30, 2026
9eccb88
Add auto-generated parameter documentation (docs/parameters.md)
sbryngelson Jan 30, 2026
8320471
docs
sbryngelson Jan 30, 2026
f3db1f5
Move auto-generated docs to docs/documentation/ for Doxygen
sbryngelson Jan 30, 2026
ade47e9
Fix CI failures: muscl_lim constraint and lint
sbryngelson Jan 30, 2026
e2a08fb
Disable R0801 (duplicate-code) in toolchain lint
sbryngelson Jan 30, 2026
6ebb240
Temporarily disable constraint validation to debug CI
sbryngelson Jan 30, 2026
d54fc35
Re-enable validation - Coverage failure is pre-existing
sbryngelson Jan 30, 2026
dad2cba
Fix param stage assignments: dt, t_step_*, domain, bc belong to speci…
sbryngelson Jan 31, 2026
0a7d207
Fix param stage assignments: qbmm and fluid_pp attributes
sbryngelson Jan 31, 2026
7d2c223
Temporarily revert case_dicts.py to master's static definitions
sbryngelson Jan 31, 2026
928ca8f
Revert to registry-based case_dicts.py
sbryngelson Jan 31, 2026
3942cb0
Fix missing parameters: patch_bc(6-10) and lag_params
sbryngelson Jan 31, 2026
410a078
Fix stage assignments to match master exactly
sbryngelson Jan 31, 2026
5a32dc6
Fix riemann_solver constraint to allow value 5 (LF)
sbryngelson Jan 31, 2026
89fe5d7
Fix weno_order constraint to allow 0 for MUSCL mode
sbryngelson Jan 31, 2026
005d65b
Allow default (unset) length values in cylindrical coordinates
sbryngelson Jan 31, 2026
d64cd66
Fix CLI docs quick reference table rendering
sbryngelson Jan 31, 2026
a5389de
Organize documentation sidebar with logical ordering
sbryngelson Jan 31, 2026
0b0eaeb
Add @page tag to auto-generated CLI reference
sbryngelson Jan 31, 2026
7f70193
Fix Doxygen @page tags and simplify documentation structure
sbryngelson Jan 31, 2026
eb82602
Upgrade Doxygen and doxygen-awesome-css to latest versions
sbryngelson Jan 31, 2026
decf002
Use @mainpage and @ref instead of @page/@subpage
sbryngelson Jan 31, 2026
d056eea
Fix documentation link in main index.html
sbryngelson Jan 31, 2026
1bfc8c4
Remove redundant MFC prefix from documentation page titles
sbryngelson Jan 31, 2026
6920c65
Fix Build Configuration Flags table rendering in CLI docs
sbryngelson Jan 31, 2026
0665895
Fix documentation links and table rendering
sbryngelson Jan 31, 2026
42a222b
Fix CLI docs rendering issues
sbryngelson Jan 31, 2026
cca286e
Fix CLI docs: backticks and count_diff description
sbryngelson Jan 31, 2026
2d8fb5d
Add descriptions for all parameter families in docs
sbryngelson Jan 31, 2026
1100b4d
Add mfc-case-schema.json and parameters.md to CI check
sbryngelson Jan 31, 2026
e9869fc
Add Helpful Tools section to Getting Started documentation
sbryngelson Jan 31, 2026
32dc3ac
Fix parameters.md missing @page directive
sbryngelson Jan 31, 2026
ab8a1ad
Fix cyl_coord string comparison and debug_log KeyError
sbryngelson Jan 31, 2026
1ab643a
Remove accidentally committed test case directory
sbryngelson Jan 31, 2026
0353c2f
Fix parameter indexing and documentation bugs from AI review
sbryngelson Jan 31, 2026
d2991f5
Remove redundant f-string prefixes in case_validator.py
sbryngelson Jan 31, 2026
75060d3
Use re.fullmatch for pattern matching in descriptions.py
sbryngelson Jan 31, 2026
05a2aec
Fix AST traversal in coverage.py for correct method attribution
sbryngelson Jan 31, 2026
8a2ea2b
Remove duplicate _find_case_validator_class definition
sbryngelson Jan 31, 2026
061aa2f
Fix code style and markdown issues from AI review
sbryngelson Jan 31, 2026
001f7a5
Add toolchain CI tests to lint-toolchain.yml
sbryngelson Jan 31, 2026
23992dc
Escape % as %% in parameter docs for Doxygen
sbryngelson Feb 1, 2026
ac74aea
Collapse multi-index patterns in parameter docs
sbryngelson Feb 1, 2026
55192cc
Use pattern view for all indexed parameter families
sbryngelson Feb 1, 2026
213a0bb
Fix type hint and reduce nested blocks in docs_gen.py
sbryngelson Feb 1, 2026
5e91bc1
Add missing parameter descriptions for fluid_pp and bub_pp
sbryngelson Feb 1, 2026
adcecd4
Fix parenthesized index leaks in pattern descriptions
sbryngelson Feb 1, 2026
d39aeda
Merge branch 'master' into test
sbryngelson Feb 1, 2026
5900ee8
Add detailed descriptions for Lagrangian and chemistry parameters
sbryngelson Feb 1, 2026
430d213
Fix critical bugs and improve param registry robustness
sbryngelson Feb 1, 2026
7ec27b4
Add intentional test typos to spell check ignore list
sbryngelson Feb 1, 2026
ef9df23
Fix pylint warnings in test files and unused imports
sbryngelson Feb 1, 2026
2a8be92
Add rapidfuzz-based 'did you mean?' suggestions for parameter validation
sbryngelson Feb 1, 2026
f13c3fa
Fix pylint warnings in suggest.py and definitions.py
sbryngelson Feb 1, 2026
25c3201
Add 'tru' to typos ignore list for test
sbryngelson Feb 1, 2026
4b02dfe
Clean up suggest.py and improve .typos.toml documentation
sbryngelson Feb 1, 2026
eae1223
Eliminate dual type system by consolidating JSON schema in registry
sbryngelson Feb 1, 2026
9a332e1
Add toolchain unit tests to ./mfc.sh lint and CI
sbryngelson Feb 1, 2026
009edca
Fix pylint warnings in registry.py and case_dicts.py
sbryngelson Feb 1, 2026
b2d656e
Fix --no-test exit code bug and truncated help text
sbryngelson Feb 1, 2026
ef61490
Remove unused unknown_param_error from suggest.py
sbryngelson Feb 1, 2026
6067c9d
Remove generated files from version control
sbryngelson Feb 2, 2026
8df0b35
Fix generate.py to create completions directory
sbryngelson Feb 2, 2026
2e9639e
Show enhanced help when command arguments are missing
sbryngelson Feb 2, 2026
47019ff
Show full help output when command arguments are missing
sbryngelson Feb 2, 2026
ebc296b
Remove incorrect R0ref recommendation for bubbles_euler
sbryngelson Feb 2, 2026
4103197
Show full help for ./mfc.sh new when no arguments given
sbryngelson Feb 2, 2026
42ebca4
Fix and enhance help documentation
sbryngelson Feb 2, 2026
1d25805
Add performance help topic and emphasize case optimization
sbryngelson Feb 2, 2026
e374e67
Fix markdown table and use subprocess for shell safety
sbryngelson Feb 2, 2026
cdd3849
longer bench
sbryngelson Feb 2, 2026
e5fcd8c
Auto-generate help from source files for single source of truth
sbryngelson Feb 2, 2026
cdfdc7a
Improve command parsing robustness and error handling
sbryngelson Feb 2, 2026
11d6254
Generate parameters.md and cli-reference.md in docs workflow
sbryngelson Feb 2, 2026
954abc9
Add CMake targets to generate cli-reference.md and parameters.md
sbryngelson Feb 2, 2026
d544553
Comprehensive rewrite of troubleshooting guide
sbryngelson Feb 2, 2026
476e87f
Auto-generate CLI help from documentation markdown files
sbryngelson Feb 2, 2026
7bf47a4
Fix broken documentation links on homepage
sbryngelson Feb 2, 2026
346fdcb
Address AI review feedback for documentation
sbryngelson Feb 2, 2026
21727e2
Fix markdown links to use Doxygen @ref syntax
sbryngelson Feb 3, 2026
0dd277a
Fix inline code visibility in colored admonition blocks
sbryngelson Feb 3, 2026
5ce9821
Fix lint and spelling check issues
sbryngelson Feb 3, 2026
bbef4f5
Merge branch 'master' into test
sbryngelson Feb 3, 2026
7246055
Add hyper_cleaning parameters and fix documentation issues
sbryngelson Feb 3, 2026
156ce95
Optimize params_for_stage() and clarify variable_dt comment
sbryngelson Feb 3, 2026
efc61d3
Add feature groups and description search to params command
sbryngelson Feb 3, 2026
faa7887
Simplify params system with direct tag registration
sbryngelson Feb 3, 2026
5f9f885
Remove Stage system entirely - all params are universal
sbryngelson Feb 3, 2026
0e0a6bb
Auto-generate parameter descriptions from naming conventions
sbryngelson Feb 3, 2026
79e2ce0
Add more parameter descriptions and show all results by default
sbryngelson Feb 3, 2026
b712e47
Fix tab completion for multi-value args and Fortran logical syntax
sbryngelson Feb 3, 2026
e9514fa
Fix test failure: provide default for ARG in get_input_dict_keys
sbryngelson Feb 3, 2026
cb43ed4
Revert Fortran logical syntax change
sbryngelson Feb 3, 2026
5b1a06e
Add missing zsh config flags for completion parity with bash
sbryngelson Feb 3, 2026
b337479
Fix namelist error: filter target-specific params in get_input_dict_keys
sbryngelson Feb 3, 2026
e3cf39c
Fix target-specific param filtering with complete exclusion sets
sbryngelson Feb 3, 2026
fbb0b27
Auto-regenerate completion scripts when source files change
sbryngelson Feb 4, 2026
d532b5a
Disable R0911/R0912 pylint warnings for toolchain
sbryngelson Feb 4, 2026
761520c
Filter pre_process-only params from simulation and post_process
sbryngelson Feb 4, 2026
2cef52d
Add simulation-only and pre+post param filtering for namelists
sbryngelson Feb 4, 2026
f701c2c
Add post_process-only prefix matching for indexed params
sbryngelson Feb 4, 2026
eb23723
Fix n_start incorrectly excluded from pre_process
sbryngelson Feb 4, 2026
30b115c
Replace manual param filtering with Fortran namelist parser
sbryngelson Feb 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,15 @@ jobs:
sudo apt install -y cmake ninja-build graphviz graphviz
git clone https://github.com/doxygen/doxygen.git ../doxygen
cd ../doxygen
git checkout 26b5403
git checkout Release_1_16_1
cd -
cmake -S ../doxygen -B ../doxygen/build -G Ninja
sudo ninja -C ../doxygen/build install

- name: Build Documentation
run: |
pip3 install fypp
cmake -S . -B build -G Ninja --install-prefix=$(pwd)/build/install -D MFC_DOCUMENTATION=ON
pip3 install fypp rich PyYAML
cmake -S . -B build -G Ninja --install-prefix="$(pwd)/build/install" -D MFC_DOCUMENTATION=ON
ninja -C build install

- name: Upload Built Documentation Artifact
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/frontier/submit-bench.sh
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ sbatch <<EOT
#SBATCH -A CFD154 # charge account
#SBATCH -N 1 # Number of nodes required
$sbatch_device_opts
#SBATCH -t 02:59:00 # Duration of the job (Ex: 15 mins)
#SBATCH -t 05:59:00 # Duration of the job (Ex: 15 mins)
#SBATCH -o$job_slug.out # Combined output and error messages file
#SBATCH -p extended # Extended partition for shorter queues

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/frontier_amd/submit-bench.sh
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ sbatch <<EOT
#SBATCH -A CFD154 # charge account
#SBATCH -N 1 # Number of nodes required
$sbatch_device_opts
#SBATCH -t 02:59:00 # Duration of the job (Ex: 15 mins)
#SBATCH -t 05:59:00 # Duration of the job (Ex: 15 mins)
#SBATCH -o$job_slug.out # Combined output and error messages file
#SBATCH -p extended # Extended partition for shorter queues

Expand Down
24 changes: 22 additions & 2 deletions .github/workflows/lint-toolchain.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,29 @@ jobs:
uses: actions/setup-python@v5
with:
python-version: '3.14'

- name: Initialize MFC
run: ./mfc.sh init

- name: Lint the toolchain
- name: Lint and test the toolchain
run: ./mfc.sh lint

- name: Generate toolchain files
run: ./mfc.sh generate

- name: CLI smoke tests
run: |
./mfc.sh --help
./mfc.sh build --help
./mfc.sh run --help
./mfc.sh test --help
./mfc.sh params --count
./mfc.sh new --list

- name: Bash completion syntax check
run: bash -n toolchain/completions/mfc.bash

- name: Validate example cases
run: |
./mfc.sh validate examples/1D_sodshocktube/case.py
./mfc.sh validate examples/2D_shockbubble/case.py
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,13 @@ __pycache__
# Auto-generated version file
toolchain/mfc/_version.py

# Auto-generated toolchain files (regenerate with: ./mfc.sh generate)
toolchain/completions/mfc.bash
toolchain/completions/_mfc
toolchain/mfc-case-schema.json
docs/documentation/cli-reference.md
docs/documentation/parameters.md

.DS_Store

/tests/*/**
Expand Down
10 changes: 8 additions & 2 deletions .typos.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ INOUT = "INOUT"
WRONLY = "WRONLY"
nd = "nd"
iy = "iy"
iz = "iz"
HPE = "HPE"
alph = "alph"
gam = "gam"
Expand All @@ -21,7 +22,12 @@ TKE = "TKE"
HSA = "HSA"
infp = "infp"
Sur = "Sur"
iz = "iz"
chioces = "chioces" # typo for "choices" - tests constraint key validation
reqires = "reqires" # typo for "requires" - tests dependency key validation
choises = "choises" # appears in comment explaining validation purpose
ordr = "ordr" # typo for "order" in "weno_ordr" - tests param suggestions
unknwn = "unknwn" # typo for "unknown" - tests unknown param detection
tru = "tru" # typo for "true" in "when_tru" - tests dependency keys

[files]
extend-exclude = ["docs/documentation/references*", "tests/", "toolchain/cce_simulation_workgroup_256.sh"]
extend-exclude = ["docs/documentation/references*", "tests/", "toolchain/cce_simulation_workgroup_256.sh", "build-docs/"]
30 changes: 21 additions & 9 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@
// Disable the extension entirely at workspace level
"extensions.ignoreRecommendations": true,
"extensions.autoCheckUpdates": false,

"fortran.preferredCase": "lowercase",

// Disable built-in linter completely but enable fortls
"fortran.disabled": false,
"fortran.linter.enabled": false,
Expand All @@ -45,18 +45,18 @@
"fortran.validation.diagnostics": false,
"fortran.symbols": false,
"fortran.hover": false,

// Enable ONLY fortls language server
"fortran.enableLanguageServer": true,
"fortran.languageServer": "fortls",
"fortran.fortls.disabled": true,
"fortran.fortls.path": "fortls",

// Try to disable any built-in language features
"editor.semanticHighlighting.enabled": false,
"editor.suggest.showWords": false,
"editor.suggest.showSnippets": false,

"[fortran]": {
"editor.tabSize": 2,
"editor.semanticHighlighting.enabled": false
Expand All @@ -69,7 +69,7 @@
"editor.tabSize": 2,
"editor.semanticHighlighting.enabled": false
},

// File exclusions - multiple layers of exclusion
"files.watcherExclude": {
"**/misc/**": true,
Expand All @@ -80,16 +80,28 @@
"**/m_nvtx*": true,
"**/syscheck.fpp": true
},

"search.exclude": {
"**/misc/**": true,
"**/benchmarks/**": true,
"**/examples/**": true,
"**/tests/**": true,
"**/build/**": true
},

// Keep problems panel available
"problems.showOn": "toggle",
"problems.defaultViewMode": "list"
"problems.defaultViewMode": "list",

// MFC-SCHEMA-CONFIG-BEGIN (auto-generated, do not edit)
"json.schemas": [
{
"fileMatch": ["**/case.json", "**/input.json", "**/mfc-case.json", "**/mfc.json"],
"url": "./toolchain/mfc-case-schema.json"
}
],
"yaml.schemas": {
"./toolchain/mfc-case-schema.json": ["**/case.yaml", "**/case.yml", "**/input.yaml", "**/input.yml", "**/mfc-case.yaml", "**/mfc.yaml"]
}
// MFC-SCHEMA-CONFIG-END
}
33 changes: 31 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -672,6 +672,28 @@ if (MFC_DOCUMENTATION)
VERBATIM
)

# Generate cli-reference.md from cli/commands.py
add_custom_command(
OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/docs/documentation/cli-reference.md"
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/toolchain/mfc/cli/commands.py"
"${CMAKE_CURRENT_SOURCE_DIR}/toolchain/mfc/cli/docs_gen.py"
COMMAND "bash" "${CMAKE_CURRENT_SOURCE_DIR}/docs/gen_cli_reference.sh"
"${CMAKE_CURRENT_SOURCE_DIR}"
COMMENT "Generating cli-reference.md"
VERBATIM
)

# Generate parameters.md from parameter registry
file(GLOB_RECURSE params_SRCs CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/toolchain/mfc/params/*.py")
add_custom_command(
OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/docs/documentation/parameters.md"
DEPENDS "${params_SRCs}"
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Feb 2, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: The parameters doc generation command doesn’t depend on the generator script or its Python module. If gen_parameters.sh or mfc/params/generators/docs_gen.py changes, parameters.md won’t be rebuilt, leaving stale documentation. Add these files to the DEPENDS list.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At CMakeLists.txt, line 690:

<comment>The parameters doc generation command doesn’t depend on the generator script or its Python module. If `gen_parameters.sh` or `mfc/params/generators/docs_gen.py` changes, `parameters.md` won’t be rebuilt, leaving stale documentation. Add these files to the DEPENDS list.</comment>

<file context>
@@ -672,6 +672,28 @@ if (MFC_DOCUMENTATION)
+    file(GLOB_RECURSE params_SRCs CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/toolchain/mfc/params/*.py")
+    add_custom_command(
+        OUTPUT  "${CMAKE_CURRENT_SOURCE_DIR}/docs/documentation/parameters.md"
+        DEPENDS "${params_SRCs}"
+        COMMAND "bash" "${CMAKE_CURRENT_SOURCE_DIR}/docs/gen_parameters.sh"
+                       "${CMAKE_CURRENT_SOURCE_DIR}"
</file context>
Suggested change
DEPENDS "${params_SRCs}"
DEPENDS "${params_SRCs}"
"${CMAKE_CURRENT_SOURCE_DIR}/docs/gen_parameters.sh"
"${CMAKE_CURRENT_SOURCE_DIR}/toolchain/mfc/params/generators/docs_gen.py"
Fix with Cubic

COMMAND "bash" "${CMAKE_CURRENT_SOURCE_DIR}/docs/gen_parameters.sh"
"${CMAKE_CURRENT_SOURCE_DIR}"
COMMENT "Generating parameters.md"
VERBATIM
)

file(GLOB common_DOCs CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/docs/*")

# GEN_DOCS: Given a target name (herein <target>), this macro sets up a
Expand Down Expand Up @@ -706,9 +728,13 @@ if (MFC_DOCUMENTATION)

set(opt_example_dependency "")
set(opt_constraints_dependency "")
set(opt_cli_reference_dependency "")
set(opt_parameters_dependency "")
if (${target} STREQUAL documentation)
set(opt_example_dependency "${CMAKE_CURRENT_SOURCE_DIR}/docs/documentation/examples.md")
set(opt_constraints_dependency "${CMAKE_CURRENT_SOURCE_DIR}/docs/documentation/case_constraints.md")
set(opt_cli_reference_dependency "${CMAKE_CURRENT_SOURCE_DIR}/docs/documentation/cli-reference.md")
set(opt_parameters_dependency "${CMAKE_CURRENT_SOURCE_DIR}/docs/documentation/parameters.md")
endif()

file(GLOB_RECURSE ${target}_DOCs CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/docs/${target}/*")
Expand All @@ -719,6 +745,8 @@ if (MFC_DOCUMENTATION)
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/${target}-Doxyfile"
"${opt_example_dependency}"
"${opt_constraints_dependency}"
"${opt_cli_reference_dependency}"
"${opt_parameters_dependency}"
"${${target}_SRCs}" "${${target}_DOCs}"
COMMAND "${DOXYGEN_EXECUTABLE}" "${target}-Doxyfile"
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
Expand All @@ -745,7 +773,7 @@ if (MFC_DOCUMENTATION)
ExternalProject_Add(doxygen-awesome-css
PREFIX doxygen-awesome-css
GIT_REPOSITORY "https://github.com/jothepro/doxygen-awesome-css"
GIT_TAG "df88fe4fdd97714fadfd3ef17de0b4401f804052"
GIT_TAG "v2.4.1"
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
Expand All @@ -756,7 +784,8 @@ if (MFC_DOCUMENTATION)

set(DOXYGEN_HTML_EXTRA_STYLESHEET
"\"${theme_dirpath}/doxygen-awesome.css\"\
\"${theme_dirpath}/doxygen-awesome-sidebar-only.css\"")
\"${theme_dirpath}/doxygen-awesome-sidebar-only.css\"\
\"${CMAKE_CURRENT_SOURCE_DIR}/docs/custom.css\"")

# > Generate Documentation & Landing Page
GEN_DOCS(pre_process "MFC: Pre-Process")
Expand Down
46 changes: 46 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,52 @@ then you can build MFC and run the test suite!
```
And... you're done!

## Toolchain Features

The `mfc.sh` script provides a comprehensive toolchain for building, running, and testing MFC:

| Command | Description |
|---------|-------------|
| `./mfc.sh build` | Build MFC and its dependencies |
| `./mfc.sh run case.py` | Run a simulation case |
| `./mfc.sh test` | Run the test suite |
| `./mfc.sh validate case.py` | Check a case file for errors before running |
| `./mfc.sh init my_case` | Create a new case from a template |
| `./mfc.sh clean` | Remove build artifacts |
| `./mfc.sh interactive` | Launch interactive menu-driven interface |

### Quick Start Workflow

```bash
./mfc.sh init my_first_case # Create a new case from template
./mfc.sh validate my_first_case/case.py # Validate the case file
./mfc.sh build -j $(nproc) # Build MFC
./mfc.sh run my_first_case/case.py # Run the simulation
```

### Case Templates

Create new cases quickly with built-in templates:

```bash
./mfc.sh init --list # List available templates
./mfc.sh init my_case -t 2D_minimal # Create 2D case
./mfc.sh init my_case -t example:1D_sodshocktube # Copy from examples
```

### Shell Completion

Enable tab completion for commands and options:

```bash
# Bash
source toolchain/completions/mfc.bash

# Zsh (add to fpath)
fpath=(path/to/MFC/toolchain/completions $fpath)
autoload -Uz compinit && compinit
```

You can learn more about MFC's capabilities [via its documentation](https://mflowcode.github.io/documentation/index.html) or play with the examples located in the `examples/` directory (some are [shown here](https://mflowcode.github.io/documentation/md_examples.html))!

The shock-droplet interaction case above was run via
Expand Down
16 changes: 9 additions & 7 deletions benchmarks/5eq_rk3_weno3_hllc/case.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
# - weno_order : 3
# - riemann_solver : 2

import json, math, argparse
import json
import math
import argparse

parser = argparse.ArgumentParser(prog="Benchmarking Case 1", description="This MFC case was created for the purposes of benchmarking MFC.", formatter_class=argparse.ArgumentDefaultsHelpFormatter)

Expand Down Expand Up @@ -40,7 +42,7 @@
# the droplet is about D0/8
ISD = 5.0 / 8 * D0

## pre-shock properties - AIR
# pre-shock properties - AIR

# pressure - Pa
p0a = patm
Expand All @@ -57,7 +59,7 @@
# speed of sound - M/s
c_a = math.sqrt(gama * (p0a + pia) / rho0a)

## Droplet - WATER
# Droplet - WATER

# surface tension - N / m
st = 0.00e0
Expand All @@ -84,7 +86,7 @@
# Min or psOp0a. Just comment/uncomment appropriately
Min = 2.4

## Pos to pre shock ratios - AIR
# Pos to pre shock ratios - AIR

# pressure
psOp0a = (Min**2 - 1) * 2 * gama / (gama + 1) + 1
Expand All @@ -99,7 +101,7 @@
# shock speed of sound - m/s
ss = Ms * c_a

## post-shock - AIR
# post-shock - AIR

# pressure - Pa
ps = psOp0a * p0a
Expand All @@ -113,7 +115,7 @@
# velocity at the post shock - m/s
vel = c_a / gama * (psOp0a - 1.0) * p0a / (p0a + pia) / Ms

## Domain boundaries - m
# Domain boundaries - m

# x direction
xb = -8.4707 * D0
Expand Down Expand Up @@ -156,7 +158,7 @@
# Save Frequency. Note that the number of autosaves will be SF + 1, as th IC (0.dat) is also saved
SF = 400

## making Nt divisible by SF
# making Nt divisible by SF
# 1 - ensure NtA goes slightly beyond tendA
NtA = int(tendA // dt + 1)

Expand Down
4 changes: 3 additions & 1 deletion benchmarks/hypo_hll/case.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
# - hypoelasticity : T
# - riemann_solver : 1

import json, math, argparse
import json
import math
import argparse

parser = argparse.ArgumentParser(prog="Benchmarkin Case 3", description="This MFC case was created for the purposes of benchmarking MFC.", formatter_class=argparse.ArgumentDefaultsHelpFormatter)

Expand Down
4 changes: 3 additions & 1 deletion benchmarks/ibm/case.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
# Additional Benchmarked Features
# - ibm : T

import json, math, argparse
import json
import math
import argparse

parser = argparse.ArgumentParser(prog="Benchmarking Case 4", description="This MFC case was created for the purposes of benchmarking MFC.", formatter_class=argparse.ArgumentDefaultsHelpFormatter)

Expand Down
Loading
Loading