| name | hpc-openfoam |
| description | Generate, review, debug, and recover OpenFOAM case files for CFD workflows. Use when working with OpenFOAM dictionaries, case structure, turbulence fields, boundary conditions, decomposition, numerics, or OpenFOAM runtime errors. |
HPC OpenFOAM
Follow a progressive loading workflow.
Start
- Read
references/case-setup.md before creating or editing any OpenFOAM case.
- Read
references/solver-selection.md when selecting a solver family or pressure convention.
- Read
references/boundary-condition-playbook.md when mapping physical boundaries to field files.
- Read
references/turbulence-bc-recipes.md when selecting turbulence models, wall treatment, or near-wall fields.
- Read
references/turbulence-and-numerics.md when choosing schemes, algorithm controls, turbulence models, or decomposition.
- Read
references/case-recipes.md when assembling a canonical internal-flow, external-aero, or free-surface case.
- Read
references/function-object-recipes.md when instrumenting a case with forces, probes, or solver diagnostics.
- Read
references/validation-parallel-and-observability.md when validating, instrumenting, or post-processing a case.
- Read
references/cluster-execution-playbook.md when staging an OpenFOAM case for scheduler-backed cluster execution.
- Read
references/error-recovery.md when a log contains crashes, divergence, or bounded-field warnings.
Work sequence
- Classify the case first: steady or transient, incompressible or compressible, single-phase or multiphase, laminar or turbulent.
- Generate the minimum consistent file set across
0/, constant/, and system/. Do not edit one layer in isolation if it changes the required fields elsewhere.
- Match solver family and fields:
simpleFoam or foamRun -solver incompressibleFluid: steady incompressible; expect U, p, and turbulence fields if RAS.
pimpleFoam or foamRun -solver incompressibleFluid with transient/PIMPLE settings: transient incompressible; review timestep control and outer correctors.
interFoam or foamRun -solver incompressibleVoF: multiphase; control both maxCo and maxAlphaCo.
- Validate mesh and numerics before a long run:
- run
blockMesh or the mesh generator
- run
checkMesh
- refuse to keep orthogonal-only schemes on poor-quality meshes
- Keep parallel settings aligned:
- make
numberOfSubdomains match the intended MPI rank count
- prefer
scotch for complex geometries unless the user requests a manual layout
- Resolve executable compatibility before launch:
- if
simpleFoam/pimpleFoam/interFoam exists, it is valid to run directly
- otherwise prefer
foamRun -solver <moduleName> and verify the module loads
Guardrails
- Do not invent dictionary keys, patch types, or solver names.
- Do not use turbulence fields that do not match the chosen model family.
- Do not keep aggressive second-order convection schemes during first-pass stabilization on a fragile case.
- Do not treat
checkMesh warnings as optional if the log is already diverging.
Additional References
Load these on demand:
references/mesh-and-blockmeshdict-manual.md for mesh generation, vertex ordering, and mesh-quality workflow
references/heat-transfer-and-compressible-cases.md for thermophysical, buoyant, and compressible setups
references/fvsolution-and-residual-control.md for algorithm loops, solver blocks, and case termination logic
references/field-and-dictionary-matrix.md for solver-to-field and file-to-parameter matrices
references/cluster-execution-playbook.md for decomposition, solver launch, reconstruction, and restart sequencing on clusters
Reusable Templates
Use assets/templates/ when a concrete case skeleton is needed, especially:
simplefoam-minimal/ for a minimal steady incompressible case
interfoam-minimal/ as a multiphase checklist placeholder (not a self-contained runnable case)
openfoam-parallel-slurm.sh for a minimal scheduled parallel run scaffold
Outputs
Produce a short case summary that states:
- solver and physics family
- required fields and dictionaries touched
- validation commands run or still needed
- stability risks and the next recovery step if the case is failing