pymatgen.analysis.elasticity.tensors module¶

class
SquareTensor
[source]¶ Bases:
pymatgen.analysis.elasticity.tensors.Tensor
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 nonsquare matrix.
Parameters:  input_array (3x3 arraylike) – the 3x3 arraylike representing the content of the tensor
 vscale (6x1 arraylike) – 6x1 arraylike scaling the voigtnotation 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

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
Tensor
[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 Tensor object. Note that the constructor uses __new__ rather than __init__ according to the standard method of subclassing numpy ndarrays.
Parameters:  input_array – (arraylike with shape 3^N): arraylike representing a tensor quantity in standard (i. e. nonvoigt) notation
 vscale – (N x M arraylike): a matrix corresponding to the coefficients of the voigtnotation 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.
Parameters: voigt_input (arraylike) – voigt input for a given tensor

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=1e05)[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
(tol=1e06)[source]¶ Tests symmetry of tensor to that necessary for voigtconversion 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 arraylike) – 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

voigt_symmetrized
¶ Returns a “voigt”symmetrized tensor, i. e. a voigtnotation tensor such that it is invariant wrt permutation of indices

class
TensorCollection
(tensor_list, base_class=<class 'pymatgen.analysis.elasticity.tensors.Tensor'>)[source]¶ Bases:
collections.abc.Sequence
A sequence of tensors that can be used for fitting data or for having a tensor expansion

classmethod
from_voigt
(voigt_input_list, base_class=<class 'pymatgen.analysis.elasticity.tensors.Tensor'>)[source]¶

symmetrized
¶

voigt
¶

classmethod

symmetry_reduce
(tensors, structure, tol=1e08, **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 Tensor objects to test for symmetricallyequivalent duplicates
 structure (Structure) – structure from which to get symmetry
 tol (float) – tolerance for tensor equivalence
 kwargs – keyword arguments for the SpacegroupAnalyzer
Returns: dictionary consisting of unique tensors with symmetry operations corresponding to those which will reconstruct the remaining tensors as values