deform boolean_def def_number
       {ij boolean_cg boolean_at def_rate stress_l stress_u flip_frequency}
       time time_start time_always_flip time_end
  • boolean_def, boolean_cg, boolean_at = t or f

    t is true
    f is false
  • def_number = non-negative integer (<= 9)

  • ij = xx or yy or zz or xy or yz or yz or zy or xz or zx

  • def_rate = real number

  • stress_l, stress_u = positive real number

  • flip_frequency = positive integer

  • time_start, time_always_flip, time_end = non-negative integer


deform t 1 {zx t t 0.05 0.6 0.7 10} time 500 1000 2500
deform t 2 {xx t f 0.01 1. 1.2 20} {yz f t 0.02 0.8 0.9 30} time 400 600 1900


This command sets up the strain-controlled or stress-controlled homogeneous deformation of the simulation cell. Note that the curly brackets { and } in the syntax/examples are to separate different deformation modes, the number of which is def_number; all brackets should not be included in preparing

The deformation is applied only if boolean_def = t. The coarse-grained and atomistic domains are deformed only if boolean_cg and boolean_at are t, respectively.

def_number sets the number of superimposed deformation modes.

ij decides each deformation mode, i.e., how the strain is applied. Following the standard indexes \epsilon_{ij} in continuum mechanics, i and j are the face on which and the direction along which the strain is applied. When i and j are the same, a uniaxial strain is applied; otherwise, a shear strain is applied.

def_rate is the strain applied at each step, in units of time_step.

stress_l and stress_u are the lower and upper bounds of the stress tensor component (designated by ij) of the simulation cell, respectively, in GPa. In CAC simulations, all stress components are usually small at the beginning. Subject to the strain, most stress tensor components increase in magnitude until one of them is higher than the corresponding stress_u, at which point the strain rate tensor changes sign, i.e., the deformation is reversed but each ij remains unchanged. Subject to the newly reversed strain, most stress tensor components decrease until one of them is lower than the corresponding stress_l, in which case the strain rate tensor changes sign again, i.e., the deformation is applied as the initial setting. Whether the stress component is out of bounds is monitored not at every step, but at every flip_frequency step.

The deformation begins when the simulation step equals time_start and stops when it exceeds time_end.

When (i) the simulation step is larger than time_always_flip and (ii) the simulation step does not exceed time_end and (iii) the strain rate tensor did not change sign previously, the strain rate tensor changes sign at every step, regardless of the stress bounds defined by stress_l and stress_u. This is used, e.g., to keep a quasi-constant strain while the nodes and atoms adjust their positions in dynamic or quasistatic equilibrium. To disable this option, the user may set time_always_flip to be larger than time_end.

Groups defined by the group command may be homogeneously deformed along with the simulation cell, depending on the value of boolean_def set in the fix command.

deform_init.f90 and deform_box.f90


deform f 1 xx f f 0. 0. 0. 1 time 0 0 0