pymatgen.analysis.elasticity.strain module

class Deformation[source]

Bases: pymatgen.analysis.elasticity.tensors.SquareTensor

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(structure, norm_strains=None, shear_strains=None, 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:
  • structure (Structure) – structure to undergo deformation
  • norm_strains (list of floats) – strain values to apply to each normal mode.
  • shear_strains (list of floats) – strain values to apply to each shear mode.
  • symmetry (bool) – whether or not to use symmetry reduction.
class Strain[source]

Bases: pymatgen.analysis.elasticity.tensors.SquareTensor

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) –
classmethod from_index_amount(idx, amount)[source]

Like Deformation.from_index_amount, except generates a strain from the zero 3x3 tensor or voigt vector with the amount specified in the index location. Ensures symmetric strain.

Parameters:
  • idx (tuple or integer) – index to be perturbed, can be voigt or full-tensor notation
  • amount (float) – amount to perturb selected index
von_mises_strain

Equivalent strain to Von Mises Stress

convert_strain_to_deformation(strain, shape='upper')[source]

This function converts a strain to a deformation gradient that will produce that strain. Supports three methods:

Parameters:
  • strain (3x3 array-like) – strain matrix
  • shape – (string): method for determining deformation, supports “upper” produces an upper triangular defo “lower” produces a lower triangular defo “symmetric” produces a symmetric defo