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 - C12in 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_minande_maxparameters 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\).
Methods
__init__(direction, e_min, e_max, steps)apply_transformation(structure, **kwargs)Apply orthorhombic strain pattern to structure.