forte2.symmetry.mo_sym_detect#

Module Contents#

forte2.symmetry.mo_sym_detect.local_sign(l, m, op)#

Return phase describing how the spherical harmonic Y_lm transforms under Abelian symmetry operations op, which is one of [E, C2z, C2x, C2y, σ_xy, σ_xz, σ_yz].

forte2.symmetry.mo_sym_detect.get_symmetry_ops(point_group)#

Compute 3x3 matrix representations for the symmetry operators in point_group. These representation perform reflections/rotations in the molecular principal frame.

class forte2.symmetry.mo_sym_detect.MOSymmetryDetector(system, info, S, C, eps, tol=1e-06)#

Class to detect the irreducible representation (irrep) labels of molecular orbitals.

Parameters:
systemforte2.System

Forte2 System object with symmetry information

infoforte2.BasisInfo

Forte2 BasisInfo object with basis set information

Sndarray

AO overlap matrix

Cndarray

MO coefficient matrix (columns are MOs)

epsndarray

MO energies

tolfloat, optional, default=1e-6

tolerance for matching atomic positions under symmetry operations

Attributes:
irrep_indiceslist of int

List of irrep indices for each MO according to COTTON_LABELS

labelslist of str

List of irrep labels for each MO (e.g. ‘a1’, ‘b2’, etc.)

Notes

We compute symmetry irreps for MOs a posteriori by computing the character of each MO under each symmetry operation of the point group. In a nutshell, what we want is the character

\[\chi(g)_{p} = \langle p | \hat{R}(g) | p \rangle = \sum_{uv} c_{pu}^* c_{pv} \langle u | \hat{R}(g) | v \rangle\]

Each AO function \(|u\rangle \sim R_{nl}(r) Y_{lm}(\theta,\phi)\). For Abelian point groups, we only need to consider C2 rotations and mirror planes. None of these affect the radial part, but they transform the angular part to a symmetric partner on the same or a different atom with a phase.

If \(\hat{R}(g)|v\rangle = \sum_{w} U_{vw} |w\rangle\), then \(\langle u | \hat{R}(g) | v \rangle = \sum_{w} U_{vw} \langle u | w \rangle\), and \(\chi(g)_{p} = \sum_{uvw} c_{pu}^* c_{pv} U_{vw} S_{uw}.\)

The above procedure works if the symmetry operations do not mix MOs (i.e., the true molecular point group is Abelian). If some MOs are mixed by the symmetry operations, then we need diagonalize subsets of the MO space that are mixed together to obtain MOs that purely transform as irreps of the Abelian subgroup.

system#
info#
S#
C#
eps#
tol = 1e-06#
two_component#
run()#