principia_materia.symmetry.point_group module

class principia_materia.symmetry.point_group.PointGroup(inp, mirror_notation=False)

Bases: object

This class allows one to encode all of the information about a point group, including the character table. This class mainly is a container for data. The only nontrivial method is for rotating to a different coordinate system.

check_irrep_matr(tol=1e-06)

Check if the irrep matrices match the character table.

This will check if the irrep matrices that were entered have the proper characters as prescribed by the character table, and we will confirm that they are unitary. This ensures no typos with Cornwell_group_matrices and that no typos are made when entering the point group info below.

property clas

clas will be the alias if set, otherwise it will return the default class names in Cornwell.

classmethod create_all_pg()

Create all point groups that are listed in Cornwell class and return them as a dictionary.

create_alternate_pgs()

Create a list of PointGroup instances enumerating all the different class choices given by clas_choices in Cornwell_point_group.

classmethod create_pgop_to_pg()

Create a dictionary which maps a tuple of group elements to a point group. The keys must be sorted, and the values are a tuple containing the point group name and the default class.

find_multiplication_table(G={}, names=True)

This method will find the multiplication table, and it can be returned either in terms of the element names or numbers.

The latter is useful to determine if two groups are isomorphic.

classmethod init_from(inp)

Construct PointGroup object from either a point group name or a list of point group operators.

classmethod init_from_operators(pgop)

Construct PointGroup object from a list of point group operators.

set_alias(mapd)

Rename the group elements according to the mapping provided by the dictionary mapd.

set_clas(clas=None)

Set the classes using the same notation as in Cornwell file.

The different classes are split on the ‘|’, for example:

E | c3z ci3z | Ic2x Ic2A Ic2B | c2z | c6z ci6z | Ic2y Ic2C Ic2D
set_ct(ct=None)

Set the character table values as a string using the same notation as in Cornwell file.

The default is to take these from Cornwell. A set can be provided as a string:

1    1   1   1    1   1
1    1  -1   1    1  -1
...
set_gmatr(gmatr=None)

Set the group element matrices. The default is to take these from Cornwell.

A set can be provided as a string (needs to be updated to CP data) or a list of matrices.

set_iname(iname=None)

Set the names of the irreps.

set_irrep_matr(irrep_matr=None)

Set the irreducible representation matrices. They are either taken from Cornwell, or input, or neither.

These are not required given that our representation code can compute them.

set_mirror_notation()
set_subgroups()
store_characters()

Create an OrderedDict characters which stores the character for each group element.

This is needed when using the projection operator.

class principia_materia.symmetry.point_group.class_method_descriptor(func)

Bases: object

principia_materia.symmetry.point_group.find_inv(group, sym_op)

This function finds the inverse group operator of the input, in the given point group.

principia_materia.symmetry.point_group.group_lineage(parent, child)

Determine the lineage of two groups.

Parameters:
  • parent (instance of PointGroup) – The parent group.

  • child (instance of PointGroup) – The child group.

Returns:

pc_lineage – A dictionary with keys being a parent irrep and values being a corresponding OrderedDict containing keys with child irreps and values of number of nonzero instances.

Return type:

OrderedDict