pemtk.sym._directProduct

Direct product functions for libmsym and symmetrized harmonics routines.

17/04/23 v1

Developed/adapted from libmsym demo code, see https://github.com/mcodev31/libmsym/issues/29 Special thanks to mcodev31 for the help.

For quick reference tables, see also http://www.gernot-katzers-spice-pages.com/character_tables/index.html

Formulas should follow those on p29 in Atkins, B.P.W., Child, M.S. and Phillips, C.S.G. (2006) Tables for Group Theory. Oxford University Press.

Module Contents

Functions

prod(character_table, s1, s2)

Array product of two irrep characters.

prodList(character_table, symList)

Array product of (any number of) irrep characters from a list.

dotArray(character_table, s, p)

Irrep representation dot products.

symDecomposition(character_table, p)

Decompose basis vector to irreps

diretProductFromList([PG, terms])

Compute direct products from a list of irreps/species with [libmsym](https://github.com/mcodev31/libmsym).

directProductTable([PG])

Generate direct product tables with [libmsym](https://github.com/mcodev31/libmsym).

pemtk.sym._directProduct.prod(character_table, s1, s2)[source]

Array product of two irrep characters.

Parameters:
  • character_table (libmsym character table.) –

  • s1 (int) – Index for irrep/symmetry species 1.

  • s2 (int) – Index for irrep/symmetry species 2.

Returns:

np.array

Return type:

array product.

pemtk.sym._directProduct.prodList(character_table, symList)[source]

Array product of (any number of) irrep characters from a list.

Parameters:
  • character_table (libmsym character table.) –

  • symList (list) – List of species to use. E.g. symList = [‘A1g’,’A1u’,’B1u’, ‘B1u’] defines resultant as direct product of these terms.

Returns:

np.array

Return type:

array product.

Examples

>>> PG = 'D2h'
>>> ctx = msym.Context(elements=[msym.Element(name = "H", coordinates = [.0,.0,.0])], basis_functions=[], point_group=PG)
>>> r = prodMulti(ctx.character_table, ['A1g','A1u','B1u', 'B1u'])
>>> r
array([ 1.,  1., -1., -1., -1., -1.,  1.,  1.])
pemtk.sym._directProduct.dotArray(character_table, s, p)[source]

Irrep representation dot products.

pemtk.sym._directProduct.symDecomposition(character_table, p)[source]

Decompose basis vector to irreps

Parameters:
  • character_table (libmsym character table.) –

  • p (np.array) – Vecotor for analysis. Must contain len(character_table.symmetry_species) elements.

pemtk.sym._directProduct.diretProductFromList(PG='Cs', terms=[])[source]

Compute direct products from a list of irreps/species with [libmsym](https://github.com/mcodev31/libmsym).

Developed from https://github.com/mcodev31/libmsym/issues/29.

Parameters:
  • PG (point group string.) – Supported point groups from libmsym: Ci, Cs, Cnv, Dn, Dnh, Dnd, Td, O, Oh, I and Ih

  • terms (list) – List of species to use. E.g. symList = [‘A1g’,’A1u’,’B1u’, ‘B1u’] defines resultant as direct product of these terms.

Returns:

  • list (resultant as list of specices.)

  • dict (contains various other forms of the output (as labelled).)

Examples

>>> dDict, _ = diretProductFromList(PG = 'D2h', terms = ['A1g','A1u','B1u', 'B1u'])
>>> dDict
{'A1g': 0,
 'B1g': 0,
 'A1u': 1,
 'B1u': 0,
 'B3g': 0,
 'B3u': 0,
 'B2g': 0,
 'B2u': 0}
pemtk.sym._directProduct.directProductTable(PG='Cs')[source]

Generate direct product tables with [libmsym](https://github.com/mcodev31/libmsym).

Developed from https://github.com/mcodev31/libmsym/issues/29

Parameters:

PG (point group string.) – Supported point groups from libmsym: Ci, Cs, Cnv, Dn, Dnh, Dnd, Td, O, Oh, I and Ih

Returns:

  • pd.DataFrame (direct product table.)

  • dict (contains various other forms of the output (as labelled).)