deform

This keyword is used to continuously deform the simulation box during a run. It can be used for tensile, compressive, and shear deformation.

Syntax

The deform keyword supports two legacy forms and one general form.

4-parameter legacy form

deform <A_per_step> <deform_x> <deform_y> <deform_z>

Here, A_per_step specifies the increment of the box length per simulation step, in units of Ångstrom/step. For example, suppose the box length in a given direction at the beginning of a run is 100 Ångstrom and this parameter is \(10^{-5}\) Ångstrom/step. A run with \(10^{6}\) steps will then change the box length by 10%. This gives a strain rate of \(10^{8}\) s \(^{-1}\) if the time step is 1 fs. The parameters deform_x, deform_y, and deform_z can be 0 or 1, where 1 enables deformation in the corresponding direction and 0 disables it.

In this form, the same deformation rate is applied to all directions that are flagged as deformed.

6-parameter legacy form

deform <A_per_step_x> <A_per_step_y> <A_per_step_z> <deform_x> <deform_y> <deform_z>

Here, A_per_step_x, A_per_step_y, and A_per_step_z specify the increments of the box lengths in the x, y, and z directions per simulation step, respectively, in units of Ångstrom/step. The parameters deform_x, deform_y, and deform_z enable or disable deformation in each direction.

This form allows independent deformation rates in the x, y, and z directions.

General form

deform <component_1> <A_per_step_1> [<component_2> <A_per_step_2> ...]

The available components are

xx yy zz xy xz yz

Each rate specifies the increment of the corresponding GPUMD box-matrix component per simulation step, in units of Ångstrom/step. Positive and negative values can be used. The components xy, xz, and yz are geometric box/tilt components and are not symmetric Voigt shear-strain components. Each component can only be specified once in a deform command.

Examples

For a uniaxial tensile test, one can first equilibrate the system and then deform the box. For example, using the legacy syntax:

# equilibration stage
ensemble npt_scr 300 300 100 0 0 0 100 100 100 1000
run 1000000

# production stage
ensemble npt_scr 300 300 100 0 0 0 100 100 100 1000
deform 0.00001 1 0 0
run 1000000

The equivalent general syntax is:

deform xx 0.00001

The general syntax can also be used for shear deformation. For example:

ensemble nvt_nhc 300 300 100
deform xy 0.00001
run 1000000

Multiple box components can be deformed simultaneously. For example:

deform xx 0.00001 yy -0.000005 xy 0.00002

Compatibility and caveats

  • deform can be used with NVE and the standard NVT ensembles.

  • With NPT-Berendsen or NPT-SCR, isotropic pressure control cannot be combined with deform.

  • With 3 target pressure components, only diagonal xx, yy, and zz deformation is allowed, and the box must be orthogonal.

  • With 6 target pressure components, the general form of deform can be used. Pressure control is disabled for the box components controlled by deform.

  • The legacy forms cannot be combined with 6-component NPT pressure control and only support orthogonal boxes.

  • deform is currently not supported with MTTK pressure-control ensembles or other special box-changing ensembles.

  • Every direction involved in a deformation component must be periodic. For example, xx requires periodicity in x, while xy requires periodicity in both x and y.

  • Automatic lattice reduction or box flipping is not performed for very large cumulative shear. The simulation box should therefore not be allowed to become excessively skewed.