Case Creator Guide
Quick reference for building MFC cases: working examples, compatibility rules, and configuration requirements.
Auto-generated from case_validator.py and examples/.
๐งฉ Case Design Playbook
Learn by example: The cases below are curated from MFC's examples/ directory and are validated, working configurations. Use them as blueprints for building your own simulations.
๐ข Beginner Examples
2D Shock-Bubble Interaction ๐ข Beginner ยท 2D_shockbubble
Two-fluid shock-interface benchmark. Classic validation case for compressible multiphase flows.
Tags: 2D ยท Multiphase ยท Shock
Physics Configuration:
- Model: 5-Equation (model_eqns = 2)
- Number of fluids: 2
- Dimensionality: 2D
Numerical Methods:
- Reconstruction: WENO-5
- Riemann solver: HLLC (riemann_solver = 2)
- Time stepping: RK3 (SSP)
Related Documentation:
๐ก Intermediate Examples
1D Bubble Screen ๐ก Intermediate ยท 1D_bubblescreen
Euler-Euler ensemble-averaged bubble dynamics through shock wave.
Tags: 1D ยท Bubbles ยท Euler-Euler
Physics Configuration:
- Model: 5-Equation (model_eqns = 2)
- Number of fluids: 1
- Dimensionality: 1D
- Active features: Euler-Euler bubbles, Acoustic sources
Numerical Methods:
- Reconstruction: WENO-5
- Riemann solver: HLLC (riemann_solver = 2)
- Time stepping: RK3 (SSP)
Related Documentation:
2D Lagrangian Bubble Screen ๐ก Intermediate ยท 2D_lagrange_bubblescreen
Individual bubble tracking with Euler-Lagrange method.
Tags: 2D ยท Bubbles ยท Euler-Lagrange
Physics Configuration:
- Model: 5-Equation (model_eqns = 2)
- Number of fluids: 2
- Dimensionality: 2D
- Active features: Euler-Lagrange bubbles, Viscous, Acoustic sources
Numerical Methods:
- Reconstruction: WENO-5
- Riemann solver: HLLC (riemann_solver = 2)
- Time stepping: RK3 (SSP)
Related Documentation:
2D Orszag-Tang MHD Vortex ๐ก Intermediate ยท 2D_orszag_tang
Magnetohydrodynamics test problem with complex vortex structures.
Tags: 2D ยท MHD
Physics Configuration:
- Model: 5-Equation (model_eqns = 2)
- Number of fluids: 1
- Dimensionality: 2D
- Active features: MHD
Numerical Methods:
- Reconstruction: WENO-1
- Riemann solver: HLL (riemann_solver = 1)
- Time stepping: RK3 (SSP)
Related Documentation:
2D IBM Airfoil ๐ก Intermediate ยท 2D_ibm_airfoil
Immersed boundary method around a NACA airfoil geometry.
Tags: 2D ยท IBM ยท Geometry
Physics Configuration:
- Model: 5-Equation (model_eqns = 2)
- Number of fluids: 2
- Dimensionality: 2D
- Active features: Immersed boundaries
Numerical Methods:
- Reconstruction: WENO-5
- Riemann solver: HLLC (riemann_solver = 2)
- Time stepping: RK3 (SSP)
Related Documentation:
2D Viscous Shock Tube ๐ก Intermediate ยท 2D_viscous_shock_tube
Shock tube with viscous effects and heat transfer.
Tags: 2D ยท Viscous ยท Shock
Physics Configuration:
- Model: 5-Equation (model_eqns = 2)
- Number of fluids: 2
- Dimensionality: 2D
- Active features: Viscous
Numerical Methods:
- Reconstruction: WENO-3
- Riemann solver: HLL (riemann_solver = 1)
- Time stepping: RK3 (SSP)
Related Documentation:
๐ด Advanced Examples
2D Phase Change Bubble ๐ด Advanced ยท 2D_phasechange_bubble
Phase change and cavitation modeling with 6-equation model.
Tags: 2D ยท Phase-change ยท Cavitation
Physics Configuration:
- Model: 6-Equation (model_eqns = 3)
- Number of fluids: 3
- Dimensionality: 2D
- Coordinates: Cylindrical/Axisymmetric
- Active features: Phase change
Numerical Methods:
- Reconstruction: WENO-3
- Riemann solver: HLLC (riemann_solver = 2)
- Time stepping: RK3 (SSP)
Related Documentation:
3D Taylor-Green Vortex ๐ด Advanced ยท 3D_TaylorGreenVortex
Classic 3D turbulence benchmark with viscous dissipation.
Tags: 3D ยท Viscous ยท Turbulence
Physics Configuration:
- Model: 5-Equation (model_eqns = 2)
- Number of fluids: 1
- Dimensionality: 3D
- Active features: Viscous
Numerical Methods:
- Reconstruction: WENO-5
- Riemann solver: HLLC (riemann_solver = 2)
- Time stepping: RK3 (SSP)
Related Documentation:
2D IGR Triple Point ๐ด Advanced ยท 2D_IGR_triple_point
Triple point problem using Iterative Generalized Riemann solver.
Tags: 2D ยท IGR ยท Multiphase
Physics Configuration:
- Model: 5-Equation (model_eqns = 2)
- Number of fluids: 2
- Dimensionality: 2D
- Active features: IGR solver
Numerical Methods:
Related Documentation:
๐ Common Configuration Patterns
Start with these proven combinations:
๐ง Multiphase Flow (Bubbles)
'model_eqns': 2,
'num_fluids': 2,
'bubbles_euler': 'T',
'riemann_solver': 2,
'avg_state': 2,
โก Magnetohydrodynamics (MHD)
'model_eqns': 2,
'num_fluids': 1,
'mhd': 'T',
'riemann_solver': 1,
๐ก๏ธ Phase Change
'model_eqns': 3,
'num_fluids': 2,
'relax': 'T',
'riemann_solver': 2,
๐ Elastic Materials
'model_eqns': 2,
'hypoelasticity': 'T',
'riemann_solver': 1,
๐ Feature Compatibility
What works together:
Physics Models
| Feature | Requirements | Notes |
| Magnetohydrodynamics (MHD) | โ | โ General use |
| Surface Tension Model | Specific model | โ General use |
| Hypoelasticity | โ | โ General use |
| Hyperelasticity | โ | โ General use |
| Phase Change (Relaxation) | โ | โ General use |
| Viscosity | โ | โ General use |
| Acoustic Sources | โ | โ General use |
Bubble Models
| Feature | Requirements | Notes |
| Euler-Euler Bubble Model | โ | โ ๏ธ Not with: Euler-Lagrange Bubble Model |
| Euler-Lagrange Bubble Model | โ | โ ๏ธ Not with: Euler-Euler Bubble Model |
| Quadrature-Based Moment Method (QBMM) | โ | โ General use |
| Polydisperse Bubble Dynamics | โ | โ General use |
| adv_n | โ | โ General use |
Numerics
| Feature | Requirements | Notes |
| Riemann Solver | Specific model | โ General use |
| WENO Order | โ | โ General use |
| MUSCL Order | โ | โ General use |
Geometry
| Feature | Requirements | Notes |
| Immersed Boundaries | โ | โ General use |
| Cylindrical Coordinates | โ | โ General use |
๐ข Model Equations
Choose your governing equations:
Model 1: Gamma-law
- Use for: Single-fluid compressible flow
- Value: model_eqns = 1
- Note: Cannot use num_fluids, bubbles, or certain WENO variants
Model 2: 5-Equation
- Use for: Multiphase, bubbles, elastic materials, MHD
- Value: model_eqns = 2
- Requirements: Set num_fluids
- Note: Compatible with most physics models
Model 3: 6-Equation
- Use for: Phase change, cavitation
- Value: model_eqns = 3
- Requirements: riemann_solver = 2 (HLLC), avg_state = 2 (arithmetic), wave_speeds = 1 (direct)
- Note: Not compatible with bubbles or 3D cylindrical
Model 4: 4-Equation
- Use for: Single-component flows with bubbles
- Value: model_eqns = 4
- Requirements: Set rhoref, Set pref, num_fluids = 1 (1)
โ๏ธ Riemann Solvers
| Solver | riemann_solver | Best For | Requirements |
| HLL | 1 | MHD, elastic materials | โ |
| HLLC | 2 | Bubbles, phase change, multiphase | avg_state=2 for bubbles |
| Exact | 3 | High accuracy (expensive) | โ |
| HLLD | 4 | MHD (advanced) | MHD only, no relativity |
| Lax-Friedrichs | 5 | Robust fallback | Not with cylindrical+viscous |
๐ง Bubble Models
Euler-Euler (bubbles_euler)
Requirements:
- model_eqns = 2 (5-Equation) or 4 (4-Equation)
- riemann_solver = 2 (HLLC)
- avg_state = 2 (arithmetic)
- Recommended to also set: nb, polytropic
Extensions:
- polydisperse = T: Multiple bubble sizes (requires nb, poly_sigma), odd nb > 1
- qbmm = T: Quadrature method (recommends bubbles_euler), requires nnode = 4
- adv_n = T: Number density advection (requires num_fluids = 1)
Euler-Lagrange (bubbles_lagrange)
Requirements:
- n > 0 (2D or 3D only)
- file_per_process = F
- Not compatible with model_eqns = 3
Note: Tracks individual bubbles
๐ Quick Parameter Reference
Key parameters and their constraints:
R0ref (R0ref)
Schema constraints:
Acoustic Sources (acoustic_source)
Dependencies:
- When enabled, requires: num_source
avg_state (avg_state)
Schema constraints:
- Choices: 1 = Roe, 2 = arithmetic
Requirements (errors):
- avg_state must be set if riemann_solver != 3,5
- 6-equation model (model_eqns = 3) requires avg_state = 2
- Bubble modeling requires arithmetic average (avg_state = 2)
Valid values (errors):
bf_x (bf_x)
Dependencies:
- When enabled, requires: k_x, w_x, p_x, g_x
Requirements (errors):
- k_x must be specified if bf_x is true
- w_x must be specified if bf_x is true
- p_x must be specified if bf_x is true
bf_y (bf_y)
Dependencies:
- When enabled, requires: k_y, w_y, p_y, g_y
Requirements (errors):
- k_y must be specified if bf_y is true
- w_y must be specified if bf_y is true
- p_y must be specified if bf_y is true
bf_z (bf_z)
Dependencies:
- When enabled, requires: k_z, w_z, p_z, g_z
Requirements (errors):
- k_z must be specified if bf_z is true
- w_z must be specified if bf_z is true
- p_z must be specified if bf_z is true
bubble_model (bubble_model)
Schema constraints:
- Choices: 1 = Gilmore, 2 = Keller-Miksis, 3 = Rayleigh-Plesset
Incompatibilities (errors):
- The 5-equation bubbly flow model does not support bubble_model = 1 (Gilmore)
Euler-Euler Bubble Model (bubbles_euler)
Dependencies:
- When enabled, requires model_eqns = 2 (5-Equation) or 4 (4-Equation), riemann_solver = 2 (HLLC), avg_state = 2 (arithmetic)
- When enabled, recommends: nb, polytropic
Requirements (errors):
- Polydisperse bubble modeling requires the bubbles_euler flag to be set
- QBMM requires the bubbles_euler flag to be set
- adv_n requires bubbles_euler to be enabled
Incompatibilities (errors):
- Activate only one of the bubble subgrid models (bubbles_euler or bubbles_lagrange)
- alt_soundspeed is not compatible with bubbles_euler
Valid values (errors):
- patch_icpp(istr)r0 must be positive (got r0)
cfl_adap_dt (cfl_adap_dt)
Dependencies:
- When enabled, recommends: cfl_target
Requirements (errors):
- dt must be set when using fixed time stepping (t_step_start/t_step_stop)
Valid values (errors):
- t_stop must be positive
- t_save must be positive
cfl_dt (cfl_dt)
Dependencies:
- When enabled, recommends: cfl_target
Requirements (errors):
- dt must be set when using fixed time stepping (t_step_start/t_step_stop)
Valid values (errors):
- t_stop must be positive
- t_save must be positive
cfl_max (cfl_max)
Schema constraints:
cfl_target (cfl_target)
Schema constraints:
chemistry (chemistry)
Dependencies:
- When enabled, requires: cantera_file
dt (dt)
Schema constraints:
Valid values (errors):
format (format)
Schema constraints:
- Choices: 1 = Silo, 2 = binary
Requirements (errors):
- output_partial_domain requires format = 2
Valid values (errors):
Immersed Boundaries (ib)
Dependencies:
- When enabled, requires: num_ibs
Requirements (errors):
- Immersed Boundaries do not work in 1D (requires n > 0)
Incompatibilities (errors):
- output_partial_domain is incompatible with certain output flags
Valid values (errors):
- num_ibs must be between 1 and num_patches_max (10)
integral_wrt (integral_wrt)
Dependencies:
- When enabled, requires: fd_order
Requirements (errors):
- fd_order must be specified for integral_wrt
- integral_wrt requires bubbles_euler to be enabled
m (m)
Schema constraints:
Requirements (errors):
- x_domainbeg must be set when m > 0
- x_domainend must be set when m > 0
- down sample requires m divisible by 3
Valid values (errors):
- m must be positive
- m must be at least igr_order - 1 (= igr_order - 1)
Model Equations (model_eqns)
Schema constraints:
- Choices: 1 = Gamma-law, 2 = 5-Equation, 3 = 6-Equation, 4 = 4-Equation
Dependencies:
- When = 2, requires: num_fluids
- When = 3, requires riemann_solver = 2 (HLLC), avg_state = 2 (arithmetic), wave_speeds = 1 (direct)
- When = 4, requires: rhoref, pref
- When = 4, requires num_fluids = 1 (1)
Requirements (errors):
- 5-equation model (model_eqns = 2) requires num_fluids to be set
- 6-equation model (model_eqns = 3) requires num_fluids to be set
- 4-equation model (model_eqns = 4) requires num_fluids to be set
Incompatibilities (errors):
- num_fluids is not supported for model_eqns = 1
- model_eqns = 1 does not support mpp_lim
- 6-equation model (model_eqns = 3) does not support cylindrical coordinates (cyl_coord = T and p != 0)
Valid values (errors):
- model_eqns must be 1, 2, 3, or 4
muscl_lim (muscl_lim)
Schema constraints:
- Choices: 1 = minmod, 2 = MC, 3 = Van Albada, 4 = Van Leer, 5 = SUPERBEE
Valid values (errors):
- muscl_lim must be 1, 2, 3, 4, or 5
MUSCL Order (muscl_order)
Schema constraints:
- Choices: 1 = 1st order, 2 = 2nd order
Valid values (errors):
- muscl_order must be 1 or 2
- m must be at least muscl_order - 1 (= muscl_order - 1)
n (n)
Schema constraints:
Requirements (errors):
- Immersed Boundaries do not work in 1D (requires n > 0)
- down sample requires n divisible by 3
- stretch_y requires n > 0
Incompatibilities (errors):
- Bx0 must not be set in 2D/3D MHD simulations
- Hyperbolic cleaning is not supported for 1D simulations
Valid values (errors):
- n must be non-negative
- n must be at least igr_order - 1 (= igr_order - 1)
nb (nb)
Schema constraints:
Requirements (errors):
- The Ensemble-Averaged Bubble Model requires nb >= 1
- Polydisperse bubble dynamics requires nb > 1
Valid values (errors):
- nb must be odd for polydisperse bubbles
Number of Fluids (num_fluids)
Schema constraints:
Requirements (errors):
- 5-equation model (model_eqns = 2) requires num_fluids to be set
- 6-equation model (model_eqns = 3) requires num_fluids to be set
- 4-equation model (model_eqns = 4) requires num_fluids to be set
Incompatibilities (errors):
- num_fluids is not supported for model_eqns = 1
- num_fluids = 1 does not support mpp_lim
Valid values (errors):
- num_fluids must be positive
- perturb_flow_fluid must be between 0 and num_fluids
num_ibs (num_ibs)
Schema constraints:
Valid values (errors):
- num_ibs must be between 1 and num_patches_max (10)
num_integrals (num_integrals)
Schema constraints:
num_patches (num_patches)
Schema constraints:
Valid values (errors):
- num_patches must be non-negative
- num_patches must be positive for the non-restart case
num_probes (num_probes)
Schema constraints:
num_source (num_source)
Schema constraints:
Requirements (errors):
- num_source must be specified for acoustic_source
Valid values (errors):
- num_source must be non-negative
p (p)
Schema constraints:
Requirements (errors):
- down sample requires 3D (p > 0)
- down sample requires p divisible by 3
- stretch_z requires p > 0
Incompatibilities (errors):
- 6-equation model (model_eqns = 3) does not support cylindrical coordinates (cyl_coord = T and p != 0)
Valid values (errors):
- p must be non-negative
- p must be odd for cylindrical coordinates
Polydisperse Bubble Dynamics (polydisperse)
Dependencies:
- When enabled, requires: nb, poly_sigma
Requirements (errors):
- Polydisperse bubble dynamics requires nb > 1
- Polydisperse bubble modeling requires the bubbles_euler flag to be set
- Polydisperse bubble modeling requires poly_sigma to be set
Valid values (errors):
- nb must be odd for polydisperse bubbles
- poly_sigma must be positive
precision (precision)
Schema constraints:
- Choices: 1 = single, 2 = double
Requirements (errors):
- output_partial_domain requires precision = 2
Valid values (errors):
probe_wrt (probe_wrt)
Dependencies:
- When enabled, requires: num_probes, fd_order
Requirements (errors):
- fd_order must be specified for probe_wrt
Quadrature-Based Moment Method (QBMM) (qbmm)
Dependencies:
- When enabled, recommends: bubbles_euler
Requirements (errors):
- QBMM requires the bubbles_euler flag to be set
- QBMM requires nnode = 4
Incompatibilities (errors):
- adv_n is not compatible with qbmm
- adap_dt is not compatible with qbmm
recon_type (recon_type)
Schema constraints:
- Choices: 1 = WENO, 2 = MUSCL
Dependencies:
- When = 2, recommends: muscl_order, muscl_lim
Requirements (errors):
- int_comp (THINC interface compression) requires recon_type = 2 (MUSCL)
relativity (relativity)
Dependencies:
- When enabled, requires: mhd
Requirements (errors):
- relativity requires mhd to be enabled
Incompatibilities (errors):
- HLLD is not available for RMHD (relativity)
Riemann Solver (riemann_solver)
Schema constraints:
- Choices: 1 = HLL, 2 = HLLC, 3 = Exact, 4 = HLLD, 5 = Lax-Friedrichs
Requirements (errors):
- hypoelasticity requires HLL Riemann solver (riemann_solver = 1)
- 6-equation model (model_eqns = 3) requires riemann_solver = 2 (HLLC)
- wave_speeds must be set if riemann_solver != 3,5
Incompatibilities (errors):
- Exact Riemann (riemann_solver = 3) does not support wave_speeds
- HLLD is not available for RMHD (relativity)
Valid values (errors):
- riemann_solver must be 1, 2, 3, 4 or 5
schlieren_wrt (schlieren_wrt)
Dependencies:
- When enabled, requires: fd_order
Requirements (errors):
- schlieren_wrt requires n > 0 (at least 2D)
- fd_order must be set for schlieren_wrt
Incompatibilities (errors):
- output_partial_domain is incompatible with certain output flags
sigma (sigma)
Schema constraints:
Requirements (errors):
- sigma must be set if surface_tension is enabled
Valid values (errors):
- sigma must be greater than or equal to zero
stretch_x (stretch_x)
Dependencies:
- When enabled, requires: a_x, x_a, x_b
Requirements (errors):
- a_x must be set with stretch_x enabled
- x_a must be set with stretch_x enabled
- x_b must be set with stretch_x enabled
Incompatibilities (errors):
- old_grid and stretch_x are incompatible
Valid values (errors):
- x_a must be less than x_b with stretch_x enabled
stretch_y (stretch_y)
Dependencies:
- When enabled, requires: a_y, y_a, y_b
Requirements (errors):
- a_y must be set with stretch_y enabled
- y_a must be set with stretch_y enabled
- y_b must be set with stretch_y enabled
Incompatibilities (errors):
- old_grid and stretch_y are incompatible
Valid values (errors):
- y_a must be less than y_b with stretch_y enabled
stretch_z (stretch_z)
Dependencies:
- When enabled, requires: a_z, z_a, z_b
Requirements (errors):
- a_z must be set with stretch_z enabled
- z_a must be set with stretch_z enabled
- z_b must be set with stretch_z enabled
Incompatibilities (errors):
- old_grid and stretch_z are incompatible
- stretch_z is not compatible with cylindrical coordinates
Valid values (errors):
- z_a must be less than z_b with stretch_z enabled
Surface Tension Model (surface_tension)
Dependencies:
- When enabled, requires: sigma
Requirements (errors):
- sigma must be set if surface_tension is enabled
- The surface tension model requires model_eqns = 2 or model_eqns = 3
- The surface tension model requires num_fluids = 2
Valid values (errors):
- sigma must be greater than or equal to zero
t_save (t_save)
Schema constraints:
Valid values (errors):
- t_save must be positive
- t_save must be <= t_stop
t_step_print (t_step_print)
Schema constraints:
t_step_save (t_step_save)
Schema constraints:
Valid values (errors):
- t_step_save must be positive
- t_step_save must be <= (t_step_stop - t_step_start)
t_stop (t_stop)
Schema constraints:
Valid values (errors):
- t_stop must be positive
- t_save must be <= t_stop
teno (teno)
Dependencies:
- When enabled, requires: teno_CT
Requirements (errors):
- teno requires teno_CT to be set. A typical value is 1e-6
- teno requires weno_order = 5 or 7
Valid values (errors):
- teno_CT must be positive. A typical value is 1e-6
time_stepper (time_stepper)
Schema constraints:
- Choices: 1 = RK1 (Forward Euler), 2 = RK2, 3 = RK3 (SSP)
Requirements (errors):
- adap_dt requires Runge-Kutta 3 (time_stepper = 3)
Valid values (errors):
- time_stepper must be 1, 2, or 3
Viscosity (viscous)
Dependencies:
- When enabled, recommends: fluid_pp(1)Re(1)
wave_speeds (wave_speeds)
Schema constraints:
- Choices: 1 = direct, 2 = pressure
Requirements (errors):
- wave_speeds must be set if riemann_solver != 3,5
- 6-equation model (model_eqns = 3) requires wave_speeds = 1
Incompatibilities (errors):
- Exact Riemann (riemann_solver = 3) does not support wave_speeds
Valid values (errors):
- wave_speeds must be 1 or 2
weno_eps (weno_eps)
Schema constraints:
Requirements (errors):
- weno_order != 1 requires weno_eps to be set. A typical value is 1e-6
Valid values (errors):
- weno_eps must be positive. A typical value is 1e-6
WENO Order (weno_order)
Schema constraints:
- Choices: 0 = MUSCL mode, 1 = 1st order, 3 = WENO3, 5 = WENO5, 7 = WENO7
Requirements (errors):
- weno_order != 1 requires weno_eps to be set. A typical value is 1e-6
- wenoz at 7th order requires wenoz_q to be set (should be 2, 3, or 4)
- teno requires weno_order = 5 or 7
Incompatibilities (errors):
- mapped_weno is not compatible with weno_order = 1
- wenoz is not compatible with weno_order = 1
- weno_order = 1 without weno_avg does not support fluid_pp(i)Re(j)
Valid values (errors):
- weno_order must be 1, 3, 5, or 7
- m must be at least weno_order - 1 (= weno_order - 1)
โ ๏ธ Physics Warnings
These checks are non-fatal โ they print a yellow warning but do not abort the run. They catch common mistakes in initial conditions and EOS parameters.
| Check | Stage | Description |
| Alpha-Rho Consistency | pre_process | patch_icpp(i): alpha(j) = 0 but alpha_rho(j) = alpha_rho (density in absent phase); patch_icpp(i): alpha(j) = alpha but alpha_rho(j) = 0 (present phase has zero density) |
| EOS Parameter Sanity | common, post_process, pre_process, simulation | fluid_pp(i)gamma = gamma implies physical gamma = physical_gamma (unusually high). MFC uses the transformed parameter Gamma = 1/(gamma-1); fluid_pp(i)gamma = gamma implies physical gamma = physical_gamma (very close to 1). Did you enter the physical gamma instead of 1/(gamma-1)? |
| Volume Fraction Sum | pre_process | patch_icpp(i): volume fractions sum to alpha_sum, expected 1.0 |
๐ก Tip: If you encounter a validation error, check the relevant section above or review case_validator.py for complete validation logic.
Page last updated: 2026-02-27