Introducing Shape V2, a foundation model for 3D geometry. Read the blog →

SIMD Agent automatically selects the right OpenFOAM solver for your simulation. This section documents each supported solver, its configuration, and how the agent decides which one to use.

How selection works

When you describe a simulation, the agent evaluates your parameters against a decision tree to pick the right solver:

Is it multiphase or phase-change?
  └─ Yes → multiphase solver (see below)

Does it need buoyancy (heat transfer + gravity)?
  └─ Steady   → buoyantSimpleFoam
  └─ Transient → buoyantPimpleFoam

Is it compressible (Mach > 0.3, large ΔP, or cryogenic)?
  └─ Steady   → rhoSimpleFoam
  └─ Transient → rhoPimpleFoam

Otherwise (incompressible, no heat transfer):
  └─ Steady   → simpleFoam
  └─ Transient → pimpleFoam

Cryogenic fluids (LH\u2082, LN\u2082, LOX, LHe, LAr, LNG) are automatically detected and routed to compressible solvers. Since most of these fluids are not available in OpenFOAM by default, the agent generates custom fluid properties with polynomial-fitted coefficients from NIST data.

Single-phase solvers

These are the actively supported solvers. Each one is documented with its required files, boundary conditions, and configuration rules.

Multiphase solvers

Multiphase solvers handle two-phase and multi-phase flows with interface tracking. These are currently reserved for a later phase of the platform.

Multiphase solvers

interFoam, compressibleInterFoam, and more. VOF-based interface tracking for two-phase and N-phase flows.

Turbulence models

All solvers support configurable turbulence via turbulenceProperties. Set simulationType laminar for laminar flows, or use one of the supported RANS models:

  • k-ω SST, default for most industrial flows. Fields: k, omega, nut
  • k-ε, alternative for simpler geometries. Fields: k, epsilon, nut
  • Spalart-Allmaras, single-equation model for external aerodynamics. Fields: nuTilda, nut

When both turbulence and energy are active (compressible or buoyancy solvers), generate 0/alphat with compressible::alphatWallFunction on walls.