# pymatgen.analysis.elasticity.tensors module¶

class SquareTensor[source]

Base class for doing useful general operations on second rank tensors (stress, strain etc.).

Create a SquareTensor object. Note that the constructor uses __new__ rather than __init__ according to the standard method of subclassing numpy ndarrays. Error is thrown when the class is initialized with non-square matrix.

Parameters: input_array (3x3 array-like) – the 3x3 array-like representing the content of the tensor vscale (6x1 array-like) – 6x1 array-like scaling the voigt-notation vector with the tensor entries
det

shorthand for the determinant of the SquareTensor

get_scaled(scale_factor)[source]

Scales the tensor by a certain multiplicative scale factor

Parameters: scale_factor (float) – scalar multiplier to be applied to the SquareTensor object
inv

shorthand for matrix inverse on SquareTensor

is_rotation(tol=0.001, include_improper=True)[source]

Test to see if tensor is a valid rotation matrix, performs a test to check whether the inverse is equal to the transpose and if the determinant is equal to one within the specified tolerance

Parameters: tol (float) – tolerance to both tests of whether the the determinant is one and the inverse is equal to the transpose
polar_decomposition(side='right')[source]

calculates matrices for polar decomposition

principal_invariants

Returns a list of principal invariants for the tensor, which are the values of the coefficients of the characteristic polynomial for the matrix

trans

shorthand for transpose on SquareTensor

class TensorBase[source]

Bases: numpy.ndarray

Base class for doing useful general operations on Nth order tensors, without restrictions on the type (stress, elastic, strain, piezo, etc.)

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

Parameters: input_array – (3xN array-like): the 3xN array-like representing a tensor quantity vscale – (N x M array-like): a matrix corresponding to the coefficients of the voigt-notation tensor
convert_to_ieee(structure)[source]

Given a structure associated with a tensor, attempts a calculation of the tensor in IEEE format according to the 1987 IEEE standards.

Parameters: structure (Structure) – a structure associated with the tensor to be converted to the IEEE standard
fit_to_structure(structure, symprec=0.1)[source]

Returns a tensor that is invariant with respect to symmetry operations corresponding to a structure

Parameters: structure (Structure) – structure from which to generate symmetry operations symprec (float) – symmetry tolerance for the Spacegroup Analyzer used to generate the symmetry operations
classmethod from_voigt(voigt_input)[source]

Constructor based on the voigt notation vector or matrix.

Args:

static get_voigt_dict(rank)[source]

Returns a dictionary that maps indices in the tensor to those in a voigt representation based on input rank

Parameters: Rank (int) – Tensor rank to generate the voigt map
is_fit_to_structure(structure, tol=0.01)[source]

Tests whether a tensor is invariant with respect to the symmetry operations of a particular structure by testing whether the residual of the symmetric portion is below a tolerance

Parameters: tol (float) – tolerance for symmetry testing
is_symmetric(tol=1e-05)[source]

Tests whether a tensor is symmetric or not based on the residual with its symmetric part, from self.symmetrized

Parameters: tol (float) – tolerance to test for symmetry
is_voigt_symmetric

Tests symmetry of tensor to that necessary for voigt-conversion by grouping indices into pairs and constructing a sequence of possible permutations to be used in a tensor transpose

rotate(matrix, tol=0.001)[source]

Applies a rotation directly, and tests input matrix to ensure a valid rotation.

Parameters: matrix (3x3 array-like) – rotation matrix to be applied to tensor tol (float) – tolerance for testing rotation matrix validity
symmetrized

Returns a generally symmetrized tensor, calculated by taking the sum of the tensor and its transpose with respect to all possible permutations of indices

transform(symm_op)[source]

Applies a transformation (via a symmetry operation) to a tensor.

Parameters: symm_op (SymmOp) – a symmetry operation to apply to the tensor
voigt

Returns the tensor in Voigt notation

zeroed(tol=0.001)[source]

returns the matrix with all entries below a certain threshold (i.e. tol) set to zero

symmetry_reduce(tensors, structure, tol=1e-08, **kwargs)[source]

Function that converts a list of tensors corresponding to a structure and returns a dictionary consisting of unique tensor keys with symmop values corresponding to transformations that will result in derivative tensors from the original list

Parameters: tensors (list of tensors) – list of TensorBase objects to test for symmetrically-equivalent duplicates structure (Structure) – structure from which to get symmetry tol (float) – tolerance for tensor equivalence kwargs – keyword arguments for the SpacegroupAnalyzer dictionary consisting of unique tensors with symmetry operations corresponding to those which will reconstruct the remaining tensors as values