# pymatgen.analysis.elasticity.strain module¶

class Deformation[source]

Subclass of SquareTensor that describes the deformation gradient tensor

Create a Deformation object. Note that the constructor uses __new__ rather than __init__ according to the standard method of subclassing numpy ndarrays.

Parameters: deformation_gradient (3x3 array-like) – the 3x3 array-like representing the deformation gradient
apply_to_structure(structure)[source]

Apply the deformation gradient to a structure.

Parameters: structure (Structure object) – the structure object to be modified by the deformation
classmethod from_index_amount(matrixpos, amt)[source]

Factory method for constructing a Deformation object from a matrix position and amount

Parameters: matrixpos (tuple) – tuple corresponding the matrix position to have a perturbation added amt (float) – amount to add to the identity matrix at position matrixpos
get_perturbed_indices(tol=1e-08)[source]

Gets indices of perturbed elements of the deformation gradient, i. e. those that differ from the identity

green_lagrange_strain

calculates the euler-lagrange strain from the deformation gradient

is_independent(tol=1e-08)[source]

checks to determine whether the deformation is independent

class DeformedStructureSet(rlxd_str, nd=0.01, ns=0.08, num_norm=4, num_shear=4, symmetry=False)[source]

Bases: collections.abc.Sequence

class that generates a set of independently deformed structures that can be used to calculate linear stress-strain response

constructs the deformed geometries of a structure. Generates m + n deformed structures according to the supplied parameters.

Parameters: rlxd_str (structure) – structure to undergo deformation, if fitting elastic tensor is desired, should be a geometry optimized structure nd (float) – maximum perturbation applied to normal deformation ns (float) – maximum perturbation applied to shear deformation num_norm (int) – number of deformation structures to generate for normal deformation, must be even num_shear (int) – number of deformation structures to generate for shear deformation, must be even
as_strain_dict()[source]

Returns dictionary of deformed structures indexed by independent strain objects in accordance with legacy behavior of elasticity package

class IndependentStrain[source]

Class for independent strains intended for use with old Materials Project elasticity workflow. Note that the default constructor constructs from a deformation matrix, rather than an array representing the strain, to emulate the legacy behavior.

Create an Independent Strain object. Note that the constructor uses __new__ rather than __init__ according to the standard method of subclassing numpy ndarrays. Note also that, unlike the Strain class, the default constructor of IndependentStrain takes the deformation gradient as input, rather than an array representing the Green-Lagrange strain.

Parameters: deformation_gradient (3x3 array-like) – the 3x3 array-like representing the deformation gradient
ij

Convenience method to return independent indices

class Strain[source]

Subclass of SquareTensor that describes the Green-Lagrange strain tensor.

Create a Strain object. Note that the constructor uses __new__ rather than __init__ according to the standard method of subclassing numpy ndarrays. Note also that the default constructor does not include the deformation gradient

Parameters: strain_matrix (3x3 array-like) – the 3x3 array-like representing the Green-Lagrange strain
deformation_matrix

returns the deformation matrix

classmethod from_deformation(deformation)[source]

Factory method that returns a Strain object from a deformation gradient

Parameters: deformation (3x3 array-like) –
von_mises_strain

Equivalent strain to Von Mises Stress

convert_strain_to_deformation(strain)[source]

This function converts a strain to a deformation gradient that will produce that strain

Parameters: strain (3x3 array-like) – strain matrix