aenet.geometry.transformations.ShearStrainTransformation

class aenet.geometry.transformations.ShearStrainTransformation(direction: int, shear_min: float, shear_max: float, steps: int)[source]

Simple shear (volume-preserving by construction).

This transformation applies a simple shear deformation gradient F with det(F)=1:

  • direction=1: xy shear, F[0, 1] = shear

  • direction=2: xz shear, F[0, 2] = shear

  • direction=3: yz shear, F[1, 2] = shear

Physical/engineering meaning

Simple shear deforms the cell shape without changing volume (determinant of the deformation gradient is 1). Fractional coordinates are preserved, Cartesian coordinates are rebuilt from the deformed cell, and copied energy/force labels are cleared.

For small strains in cubic materials, this can be used to extract a shear elastic constant (often associated with C44 for xz/yz shear). For non-cubic crystals, the relation is more complex.

param direction:

Shear plane (1=xy, 2=xz, 3=yz)

type direction:

int

param shear_min:

Minimum shear value (deformation gradient component)

type shear_min:

float

param shear_max:

Maximum shear value (deformation gradient component)

type shear_max:

float

param steps:

Number of shear steps

type steps:

int

Notes

The shear_min and shear_max parameters specify off-diagonal components of the deformation gradient F (not strain tensor components).

  • For structure-space sampling, a typical range is -0.2 to +0.2. This explores moderate cell shape variations while maintaining reasonable atomic configurations. Larger values (\(|\mathrm{shear}| > 0.3\)) can lead to highly skewed cells.

  • For elastic constant calculations, stay in the linear elastic regime around -0.05 to +0.05 and use at least 5-7 points spanning positive and negative values.

  • There is no hard mathematical limit because \(\det(F)=1\) for all finite shear values. Practical limits depend on structure stability and the desired sampling regime.

__init__(direction: int, shear_min: float, shear_max: float, steps: int)[source]

Methods

__init__(direction, shear_min, shear_max, steps)

apply_transformation(structure, **kwargs)

Apply volume-conserving shear strain to structure.

Attributes

DETERMINANT_TOLERANCE