Restart Files
Documentation/UserGuide/Restart Files
Restart files (sometimes called checkpoints) are useful when a
calculation must be continued from a previous point. The files contain
enough information, and with the necessary accuracy, that a restart calculation
generates identical data (to all significant digits) to a calculation run
continuously. Athena defines its
own format for restart files. The file restart.c
contains all
the functions needed to read and write these files.
The following example shows an <output>
block in an
input file that generates restart files:
<output2>
out_fmt = rst # Restart dump
dt = 1.0 # time increment between outputs
The time increment <output>/dt
is measured in problem time,
and should be set to give the desired output frequency of files
(usually writing one restart dump every 6 hours of wall clock time is useful).
For jobs run in parallel with MPI, there will be one restart file per process,
and the restarted job must use the same number of processors as there are
restart files.
If the problem contains special, user-defined data, these must be added to the restart dumps. Athena provides a mechanism for automatically adding such data. In the problem generator, two functions are provided:
void problem_write_restart(MeshS *pM, FILE *fp)
{
return;
}
void problem_read_restart(MeshS *pM, FILE *fp)
{
return;
}
Generally these functions are empty, but if necessary they can be used
to read and write extra parameters using fwrite
and fread
statements, and the file
pointer *fp
passed as the second argument to these functions. They can also set problem-specific boundary
conditions on restart, and enroll user-defined outputs and variables. The problem generator src/prob/rt.c
contains an example of usage. See the Programmer Guide for more
information about the structures in the argument list to these functions.
To read a restart file, the -r
command is used on the command line:
% athena -r myfile.rst
Note that an input file, specified by -i myinput
, is not needed for
restarts. This is because the restart file contains the original input file,
in ASCII format, at the beginning, from which all the necessary parameters
are read by par.c
on restart.
This also makes restart files self-documenting: the values of input parameters used in the calculation that generated
the restart file can be read with an editor. If an input file is specified
along with a restart,
% athena -r myfile.rst -i myinput
then the values in myinput
overwrite the values stored in the restart file
itself. Alternatively, values in the input file can be overwritten using the
command line, for example:
% athena -r myfile.rst time/tlim=20.0
Usually the time/tlim
parameter needs to be modified on restart.
For parallel jobs run with MPI, only the name of the restart file for the
root (rank 0) process needs to be specified, all other processes will
create their own appropriate restart filename based on this name. See Running Athena on Parallel Processors.