Representation#

spgrep.representation.get_regular_representation(rotations)[source]#

Calculate regular representation of point group.

Parameters:

rotations (array, (order, 3, 3))

Returns:

regreg[k] is a representation matrix for rotations[k]. If and only if np.dot(rotations[k], rotations[j]) == rotations[i], reg[k, i, j] == 1.

Return type:

array, (order, order, order)

spgrep.representation.get_projective_regular_representation(rotations, factor_system)[source]#

Calculate regular representation of space group with factor system.

Parameters:
  • rotations (array, (order, 3, 3))

  • factor_system (array, (order, order))

Returns:

regreg[k] is a representation matrix for rotations[k]. If and only if np.dot(rotations[k], rotations[j]) == rotations[i], reg[k, i, j] == factor_system[k, j].

Return type:

array, (order, order, order)

spgrep.representation.get_intertwiner(rep1, rep2, atol=1e-08, max_num_random_generations=4)[source]#

Calculate intertwiner matrix between rep1 and rep2 such that rep1 @ matrix == matrix @ rep2 if they are equivalent.

The determinant of matrix is scaled to be unity.

This function takes O(order * dim^4).

Parameters:
  • rep1 (array, (order, dim, dim)) – Unitary irrep

  • rep2 (array, (order, dim, dim)) – Unitary irrep

  • atol (float) – Absolute tolerance to distinguish difference eigenvalues

  • max_num_random_generations (int) – Maximum number of trials to generate random matrix

Returns:

matrix

Return type:

array, (dim, dim)

spgrep.representation.get_character(representation)[source]#

Calculate character of representation.

Parameters:

representation (array, (order, dim, dim))

Returns:

character

Return type:

array, (order, )

spgrep.representation.project_to_irrep(representation, irrep, atol=1e-06, max_num_trials=10)[source]#

Construct basis functions for irrep by linear combinations of basis functions of representation.

Parameters:
  • representation (array, (order, dim, dim))

  • irrep (array, (order, dim_irrep, dim_irrep)) – Unitary (projective) irrep with factor system s.t. \(\mu(E, E) = 1\).

  • atol (float, default=1e-5) – Absolute tolerance to compare basis vectors

  • max_num_trials (int, default=10) – Maximum number to retry when failed to select projected basis vectors

Returns:

basis – Each basis vectors are orthonormal.

Return type:

list of array with (irrep_dim, dim)

spgrep.representation.is_unitary(representation)[source]#

Return true if given representation is unitary.

spgrep.representation.is_representation(rep, table, factor_system=None, rtol=1e-05, atol=1e-08)[source]#

Return true if given matrix function is a (projective) representation with given factor system.

spgrep.representation.frobenius_schur_indicator(irrep)[source]#

Inspect given unitary (projective) irrep is real, pseudo-real, or not unitary equivalent.

\[\mathrm{indicator} = \frac{1}{|G|} \sum_{ g \in G } \chi(g^{2})\]
Parameters:

irrep (array, (order, dim, dim))

Returns:

indicator – If indicator==1, it is real Reps. If indicator==-1, it is psedu-real Reps. Otherwise, it and adjoint Reps. are not equivalent.

Return type:

int

spgrep.representation.check_spacegroup_representation(little_rotations, little_translations, kpoint, rep, spinor_factor_system=None, rtol=1e-05)[source]#

Check definition of representation. This function works for primitive and conventional cell.

spgrep.representation.get_direct_product(rep1, rep2)[source]#

Return Knocker product of two representations.

Parameters:
  • rep1 (array, (order, dim1, dim1))

  • rep2 (array, (order, dim2, dim2))

Returns:

direct

Return type:

(order, dim1 * dim2, dim1 * dim2)