Files
lammps/doc/src/Howto_restart.rst

98 lines
3.3 KiB
ReStructuredText

Restart a simulation
====================
There are 3 ways to continue a long LAMMPS simulation. Multiple
:doc:`run <run>` commands can be used in the same input script. Each
run will continue from where the previous run left off. Or binary
restart files can be saved to disk using the :doc:`restart <restart>`
command. At a later time, these binary files can be read via a
:doc:`read_restart <read_restart>` command in a new script. Or they can
be converted to text data files using the :doc:`-r command-line switch
<Run_options>` and read by a :doc:`read_data <read_data>` command in a
new script.
Here we give examples of 2 scripts that read either a binary restart
file or a converted data file and then issue a new run command to
continue where the previous run left off. They illustrate what
settings must be made in the new script. Details are discussed in the
documentation for the :doc:`read_restart <read_restart>` and
:doc:`read_data <read_data>` commands.
Look at the *in.chain* input script provided in the *bench* directory
of the LAMMPS distribution to see the original script that these 2
scripts are based on. If that script had the line
.. code-block:: LAMMPS
restart 50 tmp.restart
added to it, it would produce 2 binary restart files (tmp.restart.50
and tmp.restart.100) as it ran.
This script could be used to read the first restart file and re-run the
last 50 timesteps:
.. code-block:: LAMMPS
read_restart tmp.restart.50
neighbor 0.4 bin
neigh_modify every 1 delay 1
fix 1 all nve
fix 2 all langevin 1.0 1.0 10.0 904297
timestep 0.012
run 50
Note that the following commands do not need to be repeated because
their settings are included in the restart file: *units, atom_style,
special_bonds, pair_style, bond_style*. However, these commands do
need to be used, since their settings are not in the restart file:
*neighbor, fix, timestep*\ .
If you actually use this script to perform a restarted run, you will
notice that the thermodynamic data match at step 50 (if you also put a
"thermo 50" command in the original script), but do not match at step
100. This is because the :doc:`fix langevin <fix_langevin>` command
uses random numbers in a way that does not allow for perfect restarts.
As an alternate approach, the restart file could be converted to a data
file as follows:
.. code-block:: LAMMPS
lmp_g++ -r tmp.restart.50 tmp.restart.data
Then, this script could be used to re-run the last 50 steps:
.. code-block:: LAMMPS
units lj
atom_style bond
pair_style lj/cut 1.12
pair_modify shift yes
bond_style fene
special_bonds 0.0 1.0 1.0
read_data tmp.restart.data
neighbor 0.4 bin
neigh_modify every 1 delay 1
fix 1 all nve
fix 2 all langevin 1.0 1.0 10.0 904297
timestep 0.012
reset_timestep 50
run 50
Note that nearly all the settings specified in the original *in.chain*
script must be repeated, except the *pair_coeff* and *bond_coeff*
commands, since the new data file lists the force field coefficients.
Also, the :doc:`reset_timestep <reset_timestep>` command is used to tell
LAMMPS the current timestep. This value is stored in restart files, but
not in data files.