principia_materia.phonon_id.analytic_strain_tensor module

class principia_materia.phonon_id.analytic_strain_tensor.AnalyticStrainTensor(order, pg, dim=3, tol=1e-06)

Bases: object

compute_tensor(irreducible_derivatives, symmetrized_basis=False)

Substute irreducible derivatives into vectorized tensor to compute strain tensor.

Parameters:
  • irreducible_derivatives (array of complex, shape(self.n_irreducible_derivatives, )) – The value of irreducible derivatives to substitute in.

  • symmetrized_basis (bool, optional, default to False) – Whether to return the tensor in symmetrized basis or in naive basis.

Returns:

tensor – The resulting strain tensor after the substitution. If symmetrized_basis==True, shape equals self.symmetrized_tensor_shape, If symmetrized_basis==False, shape equals self.tensor_shape.

Return type:

array of complex

get_irreducible_basis_rowname()

Get the list of names of the rows for the irreducible basis

get_irreps()

Get the list of irreducible representations and it’s instance number of the strain rep.

get_rotation_matrix()

Get the rotation matrix from symmetrized basis to naive basis of strain rep.

property identity_subspace
property irreducible_derivative_names

The list of names of of all irreducible derivatives in the tensor, also reference for the vectorized tensors.

property irreducible_strains
property n_irreducible_derivatives

Number of irreducible derivatives

set_irreducible_derivative_names(irreducible_derivative_names)

Set the irreducible derivatives names.

Parameters:

irreducible_derivative_names (list of tuples) – The names of irreducible derivatives.

set_irreducible_derivatives(use_int_irrvec=False)

The irreducible derivatives is constructued as well as the coefficients for them in the symmetrized basis.

set_irreducible_strains()
set_strain_rep()
set_vectorized_tensor()

Constructed vectorized tensor from computed irreducible derivatives.

solve_irreducible_derivatives(strain_tensor, symmetrized_basis=False, tol=None)

Solve for irreducible derivatives from the numerical tensor.

Parameters:
  • strain_tensor (array of complex) – The numerical strain tensor to solve irreducible derivatives with. If symmetrized_basis==True, strain_tensor.shape == self.symmetrized_tensor_shape, If symmetrized_basis==False, strain_tensor.shape == self.tensor_shape.

  • symmetrized_basis (bool, optional, default to False) – If True, the input strain_tensor is in symmetrized basis, if False, the input is in naive basis.

  • tol (float, optional, default to None) – Error tolerance, if None, use self.tol.

Returns:

  • irreducible_derivatives (array of complex, shape(self.n_irreducible_derivatives, )) – The least square result of the irreducible derivatives.

  • residues (float) – The residues of the least square.

  • rank (int) – The rank of the reshaped analytic tensor, which equals the number of irreducible derivatives.

  • s (array of complex) – Singular values of the reshaped analytic tensor.

property symmetrized_tensor_shape

The shape of the strain tensor in symmetrized basis.

property symmetrized_vectorized_tensor

Vectorized analytic strain tensor in symmetrized basis.

property tensor_shape

The shape of the strain tensor in naive basis.

property vectorized_tensor

Vectorized analytic strain tensor in naive basis.