Skip to main content

Restart

The Restart block controls loading from a previous solution database and the schedule for writing new restart files during the current run.

Restart
{
file = "none"
regenerate_grid = true
allow_interpolation = false
output_start = 10000
output_interval = 10000
}

Keys

file

Selects which restart database to load at startup. Accepted values:

  • "none" — do not load any restart (start from InitialCondition).
  • "recent" / "recent_name" — load the file with the lexicographically latest filename in the restart directory.
  • "recent_time" — load the file with the latest timestamp in the restart directory.
  • Integer (e.g., 250000) — search the restart directory for the most recent file whose filename contains that integer (interpreted as a timestep ID).
  • Filename or path — if the path exists, load that file directly.

Search location. The solver looks in the restart directory under the run’s primary simulation directory (see IO).

If the specifier can’t be resolved to a file, the solver throws an error with a list of valid options.


What gets restored

When a restart file is loaded, the solver restores:

  • Solution fields (conserved/primitive, etc.)
  • Time/iteration counters (simulation clock, step indices)
  • Domain/subdomain geometry placement (positions/poses)
    (Subdomains present in the parent run are also restored.)

⚠️ Physics model compatibility: You cannot change phys_model between the saved DB and the current run. Keep Properties (e.g., phys_model, gamma, Rgas, viscosity law) consistent.


regenerate_grid

Controls how the grid is obtained at restart:

  • trueRebuild the grid from the current input under Domain/Grid (including dx_target, Refinement, etc.), then map the restart solution onto this grid.
  • falseUse the grid stored in the restart database as-is. Any current Domain/Grid settings (bounds, spacing, refinement, etc.) are ignored and overwritten by what’s in the restart file.

If the current Domain/Grid changes don’t match the restart DB and you set regenerate_grid = true, the solver may need interpolation (see allow_interpolation).


allow_interpolation

If true, the solver may interpolate the restart solution from the restart DB’s grid to the current grid (e.g., when regenerate_grid = true or grids otherwise differ).
If false, the solver requires the loaded solution and the current grid to be compatible (otherwise it fails).

Constraints: Interpolation requires the same variable set as the restart database (same physics model and fields).


output_start, output_interval

Control when the current run begins writing new restart files and how often they are written after that.
These use the same timing/threshold machinery as other output schedules, with timestep-based defaults.

  • output_start — first timestep at which restart output is allowed.
  • output_interval — number of timesteps between restart outputs after output_start.

(If you need more advanced timing controls later, we can align nomenclature/specifiers with the general time-threshold system.)


Examples

1) Continue from most recent restart, reuse stored grid (no regeneration)

Restart
{
file = "recent"
regenerate_grid = false
allow_interpolation = false
output_start = 50000
output_interval = 50000
}
  • Loads the lexicographically newest file in the restart directory.
  • Uses the grid from the restart DB; any Domain/Grid changes in the current input are ignored.
  • Begins writing new restart files at step 50,000, then every 50,000 steps.

2) Continue from a specific step, rebuild grid from current input (with interpolation)

Restart
{
file = "250000"
regenerate_grid = true
allow_interpolation = true
output_start = 10000
output_interval = 10000
}
  • Picks the most recent file whose name contains “250000” in the restart directory.
  • Rebuilds the grid from the current Domain/Grid configuration and interpolates the solution from the DB.
  • Writes restart dumps starting at step 10,000 and then every 10,000 steps.

Best practices

  • Keep the physics model and properties identical between the restart DB and the resumed run.
  • If you changed Domain/Grid (bounds/refinement), prefer regenerate_grid = true and set allow_interpolation = true.
  • For AMR workflows where the saved grid should be reused exactly, set regenerate_grid = false.