aenet.geometry.transformations.MonoclinicStrainTransformation

class aenet.geometry.transformations.MonoclinicStrainTransformation(direction: int, gamma_min: float, gamma_max: float, steps: int)[source]

Volume-conserving monoclinic strain (elastic constant pattern).

This transformation implements a standard volume-conserving monoclinic strain path used to extract a shear elastic constant (often C44 in cubic crystals).

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

Physical/engineering meaning

In contrast to ShearStrainTransformation (simple shear deformation gradient), this uses an engineering shear strain gamma definition and adds a compensating normal strain so that the overall deformation is volume-conserving along this specific strain path.

For sufficiently small gamma the two become essentially equivalent, but they differ for larger strains. Fractional coordinates are preserved, Cartesian coordinates are rebuilt from the deformed cell, and copied energy/force labels are cleared.

param direction:

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

type direction:

int

param gamma_min:

Range of engineering shear strain gamma

type gamma_min:

float

param gamma_max:

Range of engineering shear strain gamma

type gamma_max:

float

param steps:

Number of steps

type steps:

int

Notes

The gamma_min and gamma_max parameters specify the engineering shear strain γ_xy. Note the formula for the compensating normal strain: ε_zz = γ²/(4-γ²).

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

  • For structure-space sampling, a typical range is -0.4 to +0.4. Staying well below \(|\gamma| = 1.0\) avoids extreme cell deformations, and values above \(|\gamma| > 0.6\) may produce highly skewed or unstable structures.

  • For elastic constant calculations targeting C44, stay in the linear regime around -0.1 to +0.1, use at least 5-7 points with both positive and negative shear values, and ensure \(|\gamma| \ll 1\). In this limit the result approaches the simple-shear formulation.

  • For \(|\gamma| < 0.1\), MonoclinicStrainTransformation and ShearStrainTransformation yield nearly identical results. They diverge at larger strains because they enforce volume conservation differently.

__init__(direction: int, gamma_min: float, gamma_max: float, steps: int)[source]

Methods

__init__(direction, gamma_min, gamma_max, steps)

apply_transformation(structure, **kwargs)

Apply monoclinic strain pattern to structure.