An engineering strain is always defined relative to a reference volume or shape. Worse, an engineering strain rate also depends on this reference. The command fix deform in LAMMPS obviously also uses this reference. A problem arises when one wants to continue the simulation from a restart or data file: LAMMPS does not remember the original reference box.

## tl;dr

Quick summary for the impatient: When restarting a deformation with uniaxial strain, the engineering strain rate must be adjusted. Calculate the strain rate for the restarted simulation using

\begin{aligned} \dot\epsilon' &= \frac{l_0}{l_1}\dot\epsilon & &\text{or} & \dot\epsilon' &= \frac{\dot\epsilon}{\dot\epsilon t_1 + 1}. \end{aligned}

Shear deformation does not need adjustments.

## Uniaxial deformation

Let us look more closely at this, using the example of a tensile test. Given a strain rate $\dot\epsilon$, the length l of the box changes with time t according to

$l(t) = l_0 (\dot\epsilon t + 1).$

Note that l depends on the initial box length l0. The corresponding LAMMPS command is, e.g.,

fix 1 all deform 1 z erate 0.01

If we now write a data/restart file and simply start a new run from there with the same rate 0.01, we get a higher actual strain rate than we would have gotten using a single simulation without break. The reason is that we are now at time t1, but LAMMPS starts a new run from $t' = 0$ (corresponding to t1). It has forgotten l0 and uses the new length l1 as a reference instead. The evolution of the length is therefore

$l(t') = l_1 (\dot\epsilon t' + 1).$

Graphically, this looks like this:

The solution is to find a new strain rate $\dot\epsilon'$, such that the length l at time t is the same as if we just continued straining without a break. Then, the following picture holds true:

To find this equation, we define

\begin{aligned} l &= l_0 (\dot\epsilon t + 1) & &\text{for the original strain}\\ l &= l_1 (\dot\epsilon' t' + 1) & &\text{for the restarted simulation}\\ &= l_1 \dot\epsilon' t - l_1 \dot\epsilon' t_1 + l_1 & &\text{with } t' = t-t_1 \\ &= l_1 \dot\epsilon' t - l_1 \dot\epsilon' t_1 + l_0 \dot\epsilon t_1 + l_0 & &\text{with } l_1 = l_0(\dot\epsilon t_1 + 1). \end{aligned}

Since the result for l needs to be the same—both for a single run using the original formula, as well as for restarting with a corrected rate—it is:

$l_0 (\dot\epsilon t + 1) = l_1 \dot\epsilon' t - l_1 \dot\epsilon' t_1 + l_0 \dot\epsilon t_1 + l_0.$

Solving for $\dot\epsilon'$ gives

$\dot\epsilon' = \frac{l_0}{l_1}\dot\epsilon.$

Alternatively, using $l_1 = l_0 (\dot\epsilon t_1 + 1)$, we can avoid the box lengths in the formula and obtain

$\dot\epsilon' = \frac{\dot\epsilon}{\dot\epsilon t_1 + 1}.$

## Shearing

When shearing, LAMMPS simply varies the tilt factor, e.g., xz. The shear strain is defined as $\epsilon = \mathrm{xz}/l_z$, and the shear rate is also defined correspondingly as

$\mathrm{xz} = \mathrm{xz_0} + l_z \cdot \dot\epsilon \cdot t.$

Since lz does not change, the shear rate is not subject to the same effect as the uniaxial strain rate above.