aenet.geometry.transformations.OrthorhombicStrainTransformation

class aenet.geometry.transformations.OrthorhombicStrainTransformation(direction: int, e_min: float, e_max: float, steps: int)[source]

Volume-conserving orthorhombic strain (elastic constant pattern).

This transformation implements the volume-conserving orthorhombic strain commonly used for extracting the cubic elastic constant combination C11 - C12.

It is based on aenet.geometry.utils.strain_orthorhombic().

For the default direction mapping (direction=1), the applied strain tensor has:

  • epsilon_xx = e

  • epsilon_yy = -e

  • epsilon_zz = e^2/(1-e^2)

with other components 0.

Physical/engineering meaning

This is not a generic uniaxial strain; it is a specific strain path chosen so that volume is conserved and the elastic energy depends on C11 - C12 in a simple way (for cubic crystals). Fractional coordinates are preserved, Cartesian coordinates are rebuilt from the deformed cell, and copied energy/force labels are cleared.

param direction:

Which axis plays the role of “x” in the above definition (1,2,3). The second axis is taken as the next cyclic axis.

type direction:

int

param e_min:

Range of e values (dimensionless strain component)

type e_min:

float

param e_max:

Range of e values (dimensionless strain component)

type e_max:

float

param steps:

Number of strain steps

type steps:

int

Notes

The e_min and e_max parameters specify the dimensionless strain component ε_xx in the strain tensor. Note the formula for the compensating strain: ε_zz = e²/(1-e²).

  • The formulation has a singularity at \(|e| = 1\), where \(\epsilon_{zz}\) diverges. In practice, require \(|e_{\min}| < 1\) and \(|e_{\max}| < 1\).

  • For structure-space sampling, a typical range is -0.15 to +0.15. Staying well below \(|e| = 0.5\) avoids extreme cell deformations, and values above \(|e| > 0.3\) may already be unstable for some structures.

  • For elastic constant calculations targeting C11 - C12, stay in the linear regime around -0.03 to +0.03, use at least 5-7 points with both positive and negative strain values, and ensure \(|e| \ll 1\).

__init__(direction: int, e_min: float, e_max: float, steps: int)[source]

Methods

__init__(direction, e_min, e_max, steps)

apply_transformation(structure, **kwargs)

Apply orthorhombic strain pattern to structure.