Skip to content

Pre-flight checks

submit_case and submit_sweep check a case before copying it. An error refuses the submit with "reason": "preflight" and the list of findings; a warn or info is returned with the queued job. Each finding has a level, a code to branch on, a message and the path it concerns.

A few checks run after meshing instead, on the cell count and the checkMesh result: cell_count_leak, cell_count_low, mesh_regions, mesh_checks_failed and snappy_error.

This table is extracted from the code. Messages are templates: the parts in braces are filled in with the case’s values.

CodeLevelMessage (as the server phrases it)
cell_count_leakerror{cells} cells, more than {CELL_LEAK_FACTOR:.0%} of the expected {expected}: the surface probably leaked
cell_count_lowwarn{cells} cells, under {CELL_LOW_FACTOR:.0%} of the expected {expected}
coeffs_write_intervalerror or warninfoerrorno functions.coeffs.writeInterval; the stop rule reads postProcessing/coeffs/*/coefficient.dat
copy_zero_requirederrorboundaryField entries {odd} are not blockMesh patches; decomposePar without -copyZero would drop them
dict_unreadablewarnmissing
disk_lowwarn{free_gb:.1f} GB free on the jobs disk, below the {settings.min_free_gb:g} GB floor; the job will wait (prune_job or delete_job frees space)
emesh_source_missingwarneatures list {emesh} but surfaceFeatureExtractDict has no {stem}.* entry to produce it
end_time_mismatcherrorwarnendTime {end_time} differs from the requested {spec.end_time_cap}
figures_no_patcheswarnno wall patches found (snappy geometry or noSlip in 0/U); figures disabled for this job
figures_tailinfotail_iterations raised to {fig.window} so the figure sampling window fits after the watcher stop
location_in_mesh_on_centrewarnlocationInMesh {loc} sits exactly on a blockMesh cell centre
location_in_mesh_on_faceinfoerrorcheck skipped: {box}
location_in_mesh_outside_boxerrorcastellatedMeshControls.locationInMesh missing or not a point
mesh_checks_failederror or warndetail
mesh_regionserrormesh has {regions} disconnected regions; expected 1
processor_dirs_presenterror or warn{len(procs)} processor directories present" + ( " (resume keeps them)" if spec.resume else "; submit without resume would rebuild the mesh over a stale decomposition" )
residual_control_presentinfo{algo}.residualControl {entries}: the solver may stop on its own" + tail
run_time_modifiable_offerror or warnrunTimeModifiable is off; " + ( "the watcher cannot stop the run early" if watcher else "set_end_time will refuse to edit this case" )
sampler_starts_after_stopwarnunction objects start after the earliest possible stop ({stop.min_iteration}): {late}; set tail_iterations and retime_function_objects so they still sample
set_constraint_types_missingerror'boundaryField lacks #includeEtc "caseDicts/setConstraintTypes";' " the processor patches would have no type
snappy_errorerrorsnappy_error
solver_stop_reference_missingwarnno reference magnitude for {missing}; the runTimeControl tolerance falls back to absolute bands that fit keelA-scale coefficients only
stl_missingerrorgeometry {key} needs constant/triSurface/{fname}
stop_at_not_end_timeerror or warnstopAt is {control.get('stopAt')!r}; " + ( "the first point resets it to endTime" if spec.sweep else "endTime edits would be ignored" )
stop_window_unreachablewarnendTime {spec.end_time_cap} is below min_iteration {stop.min_iteration} + margin {stop.margin}; the {stop.mode} stop can never fire and the run goes to endTime (window {stop.window}, tail {stop.tail_iterations})
subdomains_mismatcherrornumberOfSubdomains {n} but the job asks for {spec.nproc} ranks
sweep_itersinfoeach point runs {iters} iterations; endTime is rewritten per point