LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands

fix uniaxial command

Syntax:

fix ID group-ID uniaxial N keyword dim amount 

Examples:

fix 1 all uniaxial 100 x 2.0 

Description:

Enable a uniaxial dilation/contraction of the simulation box during a simulation. For example if the direction is X and the strain is 2, then the final box size is 2L, L/sqrt(2), L/sqrt(2), where L**3 is a cube with the same volume as the initial box, which need not be cubic.

The chosen direction is ramped linearly during the course of the run to its final value. The run command documents how to make the ramping take place across multiple runs.

If the two perpendicular box sizes are equal then the deformation pathway is uniaxial at each timestep. If the two perpendicular box length sizes differ, then their aspect ratio will be linearily ramped down to 1. Irregardless of the initial box shape the total volume is constant during the deformation. Additional details provided by Carsten Svaneborg (Max Planck Institute for Complex Systems, Dresden, Germany) who authored this fix, are at the bottom of this page.

The initial simulation box boundaries at the beginning of a run are specified by the create_box or read_data or read_restart command used to setup the simulation, or they are the values at the end of the previous run. Every Nth timestep during the run, the various dimensions are expanded or contracted. The coordinates of all atoms in the group are also scaled to the new box size.

Restrictions:

To use this fix, all dimensions of the system must be periodic.

Related commands: none

Default: none

Extra Notes:

The uniaxial deformation is performed as follows:

For notational simplicity the deformation is assumed to be in the X direction with final strain lambda. alpha denotes an arbitrary Cartesian direction.

The initial strain is obtained from box dimensions:

lambdai_alpha = Box(alpha)/power(Box(0)*Box(1)*Box(2),1/3) 

The final strain lambda in dir is specified:

lambdaf_x = lambda
lambda_y = lambda_z = 1/sqrt(lambda) 

Volume conservation implies lambda_x(t)*lambda_y(t)lambda_z(t) = 1.0 for all times. Rather than time, let delta is denotes reduced time in the interval from 0 to 1.

We want a linear ramp in the specified strain component, such that MD time steps and uniaxial strain are linearly related:

lambda_x(delta) = lambdai_x (1-delta) + lambdaf_x 

The problem that remains is to choose a deformation pathway for lambda_y(delta) and lambda_z(delta) that agrees with the initial and final strains, and at all times conserves volume. Secondly the pathway should be symmetric if the box has y<->z symmetry.

In the case where the initial box is symmetric in yz, this follows from volume conservation:

lambda_y(d) = lambda_z(d) = 1/sqrt(lambda_x(d)) 

However, in general the initial box dimensions in the y and z directions need not be the same so assume a relation:

lambda_y(d) = alpha(d)lambda_z(d) 

From volume conservation it follows that

lambda_y(d) = sqrt(alpha(d)/lambda_x(d))
lambda_z(d) = 1/sqrt(alpha(d)*lambda_x(d)) 

The asymmetry parameter has to fulfill the following boundary conditions:

initial alpha(d=0) = lambdai_y/lambdai_z
final alpha(d=1) = 1 

Any interpolation that does this will by define a continuous volume conserving deformation from the initial to the desired final state. The freedom of choice here is e.g. to relax the asymetry of the box very fast, and then slowly elongate along x, or to do this more slowly.

The choice used in the code is:

alpha(d) = lambdai_y/lambdai_z (1-d) + d 

Note in some cases like strain <1 2 0.5> -> strain <2 0.707107 0.707107> the perpendicular strains do not follow a monotonic curve.