aenet.geometry.transformations.UniaxialStrainTransformation

class aenet.geometry.transformations.UniaxialStrainTransformation(direction: int, len_min: float, len_max: float, steps: int)[source]

Uniaxial strain (simple scaling of one lattice direction).

This transformation scales one lattice direction by a factor s and leaves the other two directions unchanged. Fractional coordinates are preserved, Cartesian coordinates are rebuilt from the deformed cell, and copied energy/force labels are cleared.

Physical/engineering meaning

This is the simplest uniaxial strain deformation. It is often used as a starting point to compute directional stiffness / Young’s modulus, but note:

  • Young’s modulus corresponds to uniaxial stress with stress-free transverse directions. Accurately reproducing that condition may require relaxing the transverse cell vectors (and/or internal coordinates) at each applied strain.

  • This transformation alone therefore gives you a strained cell, but not necessarily the fully relaxed response.

param direction:

Direction to strain (1=a, 2=b, 3=c)

type direction:

int

param len_min:

Minimum scaling factor for the strained direction

type len_min:

float

param len_max:

Maximum scaling factor for the strained direction

type len_max:

float

param steps:

Number of strain steps

type steps:

int

__init__(direction: int, len_min: float, len_max: float, steps: int)[source]

Methods

__init__(direction, len_min, len_max, steps)

apply_transformation(structure, **kwargs)

Apply uniaxial strain to structure.