\(\renewcommand{\AA}{\text{Å}}\)
fix nonaffine/displacement command
Syntax
fix ID group nonaffine/displacement style args reference/style nstep keyword values
ID, group are documented in fix command
nonaffine/displacement = style name of this fix command
nevery = calculate nonaffine displacement every this many timesteps
style = d2min or integrated
d2min args = cutoff args cutoff = type or radius or custom type args = none, cutoffs determined by atom types radius args = none, cutoffs determined based on atom diameters (atom style sphere) custom args = rmax, cutoff set by a constant numeric value rmax (distance units) integrated args = none
reference/style = fixed or update or offset
fixed = use a fixed reference frame at nstep update = update the reference frame every nstep timesteps offset = update the reference frame nstep timesteps before calculating the nonaffine displacement
zero or more keyword/value pairs may be appended
z/min values = zmin zmin = minimum coordination number to calculate D2min
Examples
fix 1 all nonaffine/displacement 100 integrated update 100
fix 1 all nonaffine/displacement 1000 d2min type fixed 0
fix 1 all nonaffine/displacement 1000 d2min custom 2.0 offset 100
Description
Added in version 7Feb2024.
This fix computes different metrics of the nonaffine displacement of particles. The first metric, d2min calculates the \(D^2_\mathrm{min}\) nonaffine displacement by Falk and Langer in (Falk). For each atom, the fix computes the two tensors
and
where the neighbors include all other atoms within the distance criterion set by the cutoff option, discussed below, \(\vec{r}\) is the current displacement between particles, and \(\vec{r}_0\) is the reference displacement. A deformation gradient tensor is then calculated as \(F = X Y^{-1}\) from which
and a strain tensor is calculated \(E = F F^{T} - I\) where \(I\) is the identity tensor. This calculation is only performed on timesteps that are a multiple of nevery (including timestep zero). Data accessed before this occurs will simply be zeroed.
For particles with low coordination numbers, calculations of \(D^2_\mathrm{min}\) may not be accurate. An optional minimum coordination number can be defined using the z/min keyword. If any particle has fewer than the specified number of particles in the cutoff distance or in contact, the above calculations will be skipped and the corresponding peratom array entries will be zero.
The integrated style simply integrates the velocity of particles every timestep to calculate a displacement. This style only works if used in conjunction with another fix that deforms the box and displaces atom positions such as fix deform with remap x, fix press/berendsen, or fix nh.
Both of these methods require defining a reference state. With the fixed reference style, the user picks a specific timestep nstep at which particle positions are saved. If peratom data is accessed from this compute prior to this timestep, it will simply be zeroed. The update reference style implies the reference state will be updated every nstep timesteps. The offset reference will update the reference state nstep timesteps before a multiple of nevery timesteps.
Restart, fix_modify, output, run start/stop, minimize info
The reference state is saved to binary restart files.
None of the fix_modify options are relevant to this fix.
This fix computes a peratom array with 3 columns, which can be accessed by indices 1-3 using any command that uses per-atom values from a fix as input.
For the integrated style, the three columns are the nonaffine displacements in the x, y, and z directions. For the d2min style, the three columns are the calculated \(\sqrt{D^2_\mathrm{min}}\), the volumetric strain, and the deviatoric strain.
Restrictions
This compute is part of the EXTRA-FIX package. It is only enabled if LAMMPS was built with that package. See the Build package page for more info.
Default
none
(Falk) Falk and Langer PRE, 57, 7192 (1998).