12 Troubleshooting
Input validation, mesh connections, convergence, and divergence diagnosis
12.1 Input file rejected
- Confirm that the input file uses JSONC format (
.jsoncextension with valid syntax). - Remove trailing commas and unquoted keys (JSON5 syntax is not supported).
- Write
mesh,materials, anddomainsas arrays, not wrapper objects. - Write
mesh_zones,mesh_markers, andfieldsas string arrays. - Set
analysis.solvertodbns,pbns, orfr. - Do not mix
numerical_methodsubblocks that do not apply to the selected solver.
12.2 Mesh names not found
Mesh zone and marker names in the configuration must match names in the mesh file:
domains[].mesh_zones— zone namesdomains[].boundaries[].mesh_markers— boundary marker namesinterfaces[].side1_mesh_markers,side2_mesh_markers— interface marker names
Mesh format naming:
- CGNS: zone and BC names
- SU2: zone and marker tags
- Gmsh: physical-group names
For multiple meshes using mesh[].scope, verify the actual scoped names (e.g., scope/zone).
12.3 Convergence failure
- Start with a low CFL using
run_control.cfl.type=constant. - Reduce the convective
spatial_orderto 1 and simplify the limiter. - Check mesh quality and the physical consistency of boundary conditions.
- Enable
monitoring.solver_stateand solver monitors to identify the equation that is stalling. - Use adaptive CFL for steady calculations only when needed. Adaptive CFL is unavailable for STANDARD unsteady calculations.
12.4 Solution divergence
- Lower the initial CFL, then increase it gradually with
run_control.cfl.type=schedule. - Check for strong shocks or low-Mach behavior and select an appropriate convective scheme.
- For NS/RANS cases, check viscous and turbulence preconditioners and wall thermal conditions.
- Use
outputs.diagnostics.on_divergeto save the final state on divergence.
12.5 FR case errors
analysis.solver=frrequiresanalysis.time=unsteady.- Use the FR-specific
numerical_method.frblock rather than copying DBNS keys. FR acceptsrk4,euler,tvd_rk3,rk34, orrk45fortime_integration; it does not acceptrunge_kutta_explicit. - There is no
time_integration: "dual". Dual time is switched on byrun_control.time_stepping— usebdf1,sdirk3, orsdirk4. FR does not implementbdf2. - FR step-size and inner-loop keys live in
run_control, notnumerical_method.fr:timestep_control(physical Δt),pseudo_time(Δτ, includingpseudo_time.adaptive), andconvergence.inner(inner-loop bounds and residual gate). - Entropy filtering cannot be combined with
run_control.timestep_control.controller=pior with dual time. - FR output uses standard
outputs.volumes[], not a separatefr_dump. - For cross-validation dumps, use
outputs.restartorfr_reference_compare.