Multi-determinantal wavefunctions¶
Let \(\mathcal{B} = \{ \Psi^w_{\mathrm{SD}} \}\) be a set of \(N_{\mathrm{e}}\)-electron Slater determinants that may be non-orthogonal. Let \(\Psi_{\mathrm{CI}}\) be a multi-determinantal wavefunction constructed from the Slater determinants in \(\mathcal{B}\):
where \(a_w \in \mathbb{C}\) are the linear combination coefficients.
QSym² is able to provide symmetry assignments for multi-determinantal wavefunctions constructed from
-
either an orbit basis generated by the action of a group \(\mathcal{G}\) on a set of origin Slater determinants \(O = \{ \Psi^x_{\mathrm{SD}} \}\):
\[ \mathcal{B}_{\mathcal{G} \cdot O} = \mathcal{G} \cdot O, \]where \(\lvert O \rvert\) is typically smaller compared to the group order \(\lvert \mathcal{G} \rvert\), and the cardinality of \(\mathcal{B}_{\mathcal{G} \cdot O}\) is given by \(\lvert \mathcal{G} \rvert \times \lvert O \rvert\),
-
or an eager basis where the Slater determinants are specified explicitly:
\[ \mathcal{B} = \{ \Psi^w_{\mathrm{SD}} \}. \]
The time complexity for the symmetry analysis of multi-determinantal wavefunctions based on an eager basis is \(O(\lvert \mathcal{G} \rvert \times \lvert \mathcal{B} \rvert^2)\). However, if an orbit basis is used instead, then this time complexity is drastically reduced to \(O(\lvert \mathcal{G} \rvert \times \lvert O \rvert^2)\) in QSym² thanks to its utilisation of group closure, which avoids having to explicitly perform symmetry transformation on multi-determinantal wavefunctions during the orbit generation for symmetry analysis.
Requirements¶
Basis overlap matrix¶
To compute the overlap matrix between multi-determinantal wavefunctions in the orbit \(\mathcal{G} \cdot \Psi_{\mathrm{CI}}\) that is required as part of the symmetry analysis (see Basics/Requirements/#Basis overlap matrix), QSym² requires the overlap matrix for the basis functions on \(\mathcal{H}_{1}\) with respect to which the spin-orbitals in the Slater determinants in the basis \(\mathcal{B}\) are defined. These basis functions are typically Gaussian atomic orbitals, and most, if not all, quantum-chemistry packages compute their overlaps as part of their inner working. It is therefore more convenient to retrieve the atomic-orbital overlap matrix \(\mathbfit{S}_{\mathcal{H}_{1}}\) (also written \(\mathbfit{S}_{\mathrm{AO}}\)) (and its complex-symmetric version, \(\bar{\mathbfit{S}}_{\mathrm{AO}}\), whenever necessary), from quantum-chemistry packages whenever possible. The way in which \(\mathbfit{S}_{\mathrm{AO}}\) can be read in by QSym² via its Python interface will be described below.
\(\mathbfit{S}_{\mathrm{AO}}\) from Q-Chem HDF5 archives
If \(\mathbfit{S}_{\mathrm{AO}}\) were to be retrieved from Q-Chem HDF5 archive files (by the h5py
Python library), then it must be noted that the ordering of the atomic-orbital basis functions used to define this matrix (lexicographic order for Cartesian functions) is inconsistent with that used to define the molecular orbital coefficients (Q-Chem order for Cartesian functions) found in the same HDf5 archive files.
Atomic-orbital basis angular order¶
As bases for \(\mathcal{H}_{1}\) almost invariably consist of Gaussian atomic orbitals, QSym² requires information about their angular momenta and ordering conventions as described in Basics/Requirements/#Atomic-orbital basis angular order. Whenever possible, QSym² will attempt to construct the basis angular order information from available data, but if this cannot be done, then the required information must be provided manually (see Basics/Requirements/#Atomic-orbital basis angular order for details).
Parameters¶
Feature requirements
- Using the Python API requires the
python
feature.
At the moment, QSym² offers two ways to perform symmetry analysis for multi-determinantal wavefunctions, both of which are via the Python library API. They are:
- using an orbit basis where QSym² generates one or more orbits from one or more origin Slater determinants supplied, then calls a Python function to perform non-orthogonal configuration interaction (NOCI) on the determinants in the orbit basis, and finally performs an optimised symmetry analysis for the resulting NOCI wavefunctions, and
- using an eager basis where all basis Slater determinants must be supplied alongside their linear combination coefficients to define one or more multi-determinantal wavefunctions for which QSym² performs a non-optimised symmetry analysis.
More methods might become possible in the future. The parameter specifications for the two existing methods are shown below.
from qsym2 import (
rep_analyse_multideterminants_orbit_basis,
EigenvalueComparisonMode, #(1)!
MagneticSymmetryAnalysisKind, #(2)!
SymmetryTransformationKind, #(3)!
PySpinConstraint, #(4)!
PySlaterDeterminantReal,
PySlaterDeterminantComplex,
)
# First origin determinant
ca_0 = np.array([ #(5)!
[+1.000, +0.000],
[+0.000, +0.707],
[+0.000, +0.707],
...
])
cb_0 = np.array([
[+0.000, +0.707],
[+1.000, +0.000],
[+0.000, -0.707],
...
])
occa_0 = np.array([1.0, 1.0]) #(6)!
occb_0 = np.array([1.0, 0.0])
ea_0 = np.array([-0.51, -0.38]) #(7)!
eb_0 = np.array([-0.50, +0.02])
pydet_0 = PySlaterDeterminantReal( #(8)!
spin_constraint=PySpinConstraint.Unrestricted, #(9)!
complex_symmetric=False, #(10)!
coefficients=[ca_0, cb_0], #(11)!
occupations=[occa_0, occb_0], #(12)!
threshold=1e-7, #(13)!
mo_energies=[ea_0, eb_0], #(14)!
energy=-1.30, #(15)!
)
# Second origin determinant
ca_1 = np.array([ #(5)!
[+0.577, +0.000],
[+0.577, +0.707 + 0.707j],
[-0.577, +0.000],
...
])
cb_1 = np.array([
[+0.000, +0.707],
[+0.000, +0.000],
[+1.000, -0.707],
...
])
occa_1 = np.array([1.0, 1.0])
occb_1 = np.array([1.0, 0.0])
ea_1 = np.array([-0.41, -0.18])
eb_1 = np.array([-0.20, +0.03])
pydet_1 = PySlaterDeterminantComplex(
spin_constraint=PySpinConstraint.Unrestricted,
complex_symmetric=False,
coefficients=[ca_1, cb_1],
occupations=[occa_1, occb_1],
threshold=1e-7,
mo_energies=[ea_1, eb_1],
energy=-1.11,
)
# NOCI function
def noci_function( #(16)!
pydets: list[PySlaterDeterminantReal | PySlaterDeterminantComplex],
) -> tuple[list[float], list[list[float]]] | tuple[list[complex], list[list[complex]]]]:
...
energies: list[float] | list[complex] = ...
coefficients: list[list[float]]] | list[list[complex]]]] = ...
return energies, coefficients
rep_analyse_multideterminants_orbit_basis( #(17)!
# Data
inp_sym="mol", #(18)!
pyorigins=[pydet_0, pydet_1, ...], #(19)!
py_noci_solver=noci_function, #(20)!
pybao=pybao, #(21)!
sao_spatial=sao_spatial, #(22)!
# Thresholds
linear_independence_threshold=1e-7, #(23)!
integrality_threshold=1e-7, #(24)!
eigenvalue_comparison_mode=EigenvalueComparisonMode.Modulus, #(25)!
# Analysis options
use_magnetic_group=use_magnetic_group, #(26)!
use_double_group=False, #(27)!
use_cayley_table=True, #(28)!
symmetry_transformation_kind=SymmetryTransformationKind.Spatial, #(29)!
infinite_order_to_finite=None, #(30)!
# Other options
write_character_table=True, #(31)!
write_overlap_eigenvalues=True, #(32)!
)
- This is a Python-exposed Rust enum,
EigenvalueComparisonMode
, for indicating the mode of eigenvalue comparison. See Basics/Thresholds/Linear independence threshold/#Comparison mode for further information. - This is a Python-exposed Rust enum,
MagneticSymmetryAnalysisKind
, for indicating the type of magnetic symmetry to be used for symmetry analysis. See Basics/Analysis options/#Magnetic groups for further information. - This is a Python-exposed Rust enum,
SymmetryTransformationKind
, for indicating the kind of symmetry transformation to be applied on the target. See Basics/Analysis options/#Transformation kinds for further information. - This is a Python-exposed Rust enum,
PySpinConstraint
, for indicating the spin constraint applicable to the Slater determinant. In the Python API, only two spin spaces arranged in decreasing-\(m_s\) order are permitted because Python enums do not support associated values. - This specifies a coefficient matrix for one spin space, which is a \(N_{\mathrm{bas}} \times N_{\mathrm{MO}}\)
numpy
array. The number of basis functions, \(N_{\mathrm{bas}}\), depends on the underlying spin constraint: for generalised spin constraint, this is twice the number of spatial basis functions, whereas for restricted and unrestricted spin constraints, this is the same as the number of spatial basis functions. Each column in the array specifies a molecular orbital which can be occupied or virtual as specified by the occupation numbers. - This specifies an occupation number vector for one spin space, which is a one-dimensional
numpy
array of size \(N_{\mathrm{MO}}\). Each value in this array gives the occupation number for the corresponding molecular orbital. Fractional values are allowed, but only when occupation numbers are either \(0\) or \(1\) can the Slater determinant symmetry be well-defined (otherwise the collection of fractionally occupied molecular orbitals does not actually form a single-determinantal wavefunction). - This specifies an optional orbital energy vector for one spin space, which is a one-dimensional
numpy
array of size \(N_{\mathrm{MO}}\). Each value in this array gives the orbital energy for the corresponding molecular orbital. -
PySlaterDeterminantReal
constructs a real-valued Slater determinant object. If a complex-valued Slater determinant is required instead, usePySlaterDeterminantComplex
. - This specifies the spin constraint applicable to the Slater determinant being specified. The possible options are:
PySpinConstraint.Restricted
: this specifies the restricted spin constraint where spatial molecular orbitals are identical across both spin spaces,PySpinConstraint.Unrestricted
: this specifies the unrestricted spin constraint where spatial molecular orbitals can be different across the two spin spaces,PySpinConstraint.Generalised
: this specifies the generalised spin constraint where each spin-orbital is now expressed in a spin-spatial direct product basis.
- This specifies whether the Slater determinant, and hence the overall multi-determinantal wavefunction, is to be symmetry-analysed using the bilinear inner product instead of the conventional sesquilinear inner product.
- This specifies the coefficient matrices constituting this Slater determinant. Each matrix in this list is for one spin space.
- This specifies the occupation numbers for the specified molecular orbitals. Each vector in this list is for one spin space.
- This specifies a threshold for comparing Slater determinants. This is of no consequence for symmetry analysis.
- This is optional.
- This is optional.
- This defines a Python function that takes in a list of Slater determinants as a basis to perform non-orthogonal configuration interaction (NOCI). This function is expected to return a tuple of:
energies
: a list of real or complex energies, each of which corresponds to one resulting NOCI wavefunction, andcoefficients
: a list of lists of real or complex coefficients, where each inner list contains the coefficients for one resulting NOCI wavefunction. Note that the numerical data types in
energies
andcoefficients
must be consistent. - This is the Python driver function for representation analysis of multi-determinantal wavefunctions using an orbit basis.
This is a Python-exposed Rust function,
rep_analyse_multideterminants_orbit_basis
. See the API documentation of this function for more details. - This specifies the path to the
.qsym2.sym
file that contains the serialised results of the symmetry-group detection (see the documentation for theout_sym
parameter of the Pythondetect_symmetry_group
function in Symmetry-group detection/#Parameters). This file should have been generated by thedetect_symmetry_group
function on the underlying molecular system prior to representation analysis. This name does not need to contain the.qsym2.sym
extension. The symmetry results in this file will be used to construct the symmetry group \(\mathcal{G}\) to be used in the subsequent representation analysis. - This specifies the Slater determinants to be used for orbit generation. Each specified Slater determinant generates its own orbit under the symmetry group \(\mathcal{G}\) (see the notes for
inp_sym
above), and the multiple orbits generated from the multiple Slater determinents specified will be joint together to form a basis for non-orthogonal configuration interaction (NOCI). - This specifies the Python function for non-orthogonal configuration interaction (NOCI).
- This specifies the basis angular order information for the underlying basis. See Basics/Requirements/#Atomic-orbital basis angular order for details of how to specify this.
- This specifies the two-centre atomic-orbital spatial overlap matrix as a two-dimensional
numpy
array. - This specifies a floating-point value for the linear independence threshold \(\lambda^{\mathrm{thresh}}_{\mathbfit{S}}\). For more information, see Basics/#Thresholds.
- This specifies a floating-point value for the integrality threshold \(\lambda^{\mathrm{thresh}}_{\mathrm{int}}\). For more information, see Basics/#Thresholds.
- This specifies the threshold comparison mode for the eigenvalues of the orbit overlap matrix \(\mathbfit{S}\). The possible options are:
EigenvalueComparisonMode.Real
: this specifies the real comparison mode where the real parts of the eigenvalues are compared against the threshold,EigenvalueComparisonMode.Modulus
: this specifies the modulus comparison mode where the absolute values of the eigenvalues are compared against the threshold. For more information, see Basics/#Thresholds.
- This specifies whether magnetic groups, if present, shall be used for orbit generation and symmetry analysis. The possible options are:
None
: this specifies choice 1 of Basics/Analysis options/#Magnetic groups — use the unitary group \(\mathcal{G}\) to generate orbits and its irreducible representations for symmetry analysis,MagneticSymmetryAnalysisKind.Representation
: this specifies choice 2 of Basics/Analysis options/#Magnetic groups — use the magnetic group \(\mathcal{M}\), if \(\mathcal{M}\) is available, to generate orbits and its irreducible representations for symmetry analysis,MagneticSymmetryAnalysisKind.Corepresentation
: this specifies choice 3 of Basics/Analysis options/#Magnetic groups — use the magnetic group \(\mathcal{M}\), if \(\mathcal{M}\) is available, to generate orbits and its irreducible corepresentations for symmetry analysis. For more information, see Basics/Analysis options/#Magnetic groups.
- This is a boolean specifying if double groups shall be used for orbit generation and symmetry analysis. The possible options are:
False
: use \(\mathcal{G}\) for orbit generation, and use only conventional irreducible representations or corepresentations of \(\mathcal{G}\) for symmetry analysis,True
: use the double cover \(\mathcal{G}^*\) for orbit generation, and use projective irreducible representations or corepresentations of \(\mathcal{G}\) obtainable via its double cover \(\mathcal{G}^*\) for symmetry analysis. For more information, see Basics/Analysis options/#Double groups.
- This is a boolean specifying if the Cayley table for the group, if available, should be used to speed up the computation of orbit overlap matrices. Note that if this is turned off, the multi-determinantal wavefunctions will be transformed explicitly in the calculation of orbit overlap matrices, which can be very slow.
Default:
True
. - This specifies the kind of symmetry transformations to be applied to generate the orbit for non-orthogonal configuration interaction (NOCI) and also to generate the orbit for symmetry analysis.
The possible options are:
SymmetryTransformationKind.Spatial
: spatial transformation only,SymmetryTransformationKind.SpatialWithSpinTimeReversal
: spatial transformation with spin-including time reversal,SymmetryTransformationKind.Spin
: spin transformation only,SymmetryTransformationKind.SpinSpatial
: coupled spin and spatial transformations. For more information, see Basics/Analysis options/#Transformation kinds.
- This specifies the finite order \(n\) to which all infinite-order symmetry elements, if any, are restricted. The possible options are:
None
: do not restrict infinite-order symmetry elements to finite order,- a positive integer value: restrict all infinite-order symmetry elements to this finite order (this will be ignored if the system has no infinite-order symmetry elements). For more information, see Basics/Analysis options/#Infinite-order symmetry elements. Default:
None
. - This boolean indicates if the symbolic character table of the prevailing symmetry group is to be printed in the output.
Default:
True
. - This boolean indicates if the eigenspectrum of the overlap matrix for each multi-determinantal wavefunction orbit should be printed out.
Default:
True
.
from qsym2 import (
rep_analyse_multideterminants_eager_basis,
EigenvalueComparisonMode, #(1)!
MagneticSymmetryAnalysisKind, #(2)!
SymmetryTransformationKind, #(3)!
PySpinConstraint, #(4)!
PySlaterDeterminantReal,
PySlaterDeterminantComplex,
)
# First basis determinant
ca_0 = np.array([ #(5)!
[+1.000, +0.000],
[+0.000, +0.707],
[+0.000, +0.707],
...
])
cb_0 = np.array([
[+0.000, +0.707],
[+1.000, +0.000],
[+0.000, -0.707],
...
])
occa_0 = np.array([1.0, 1.0]) #(6)!
occb_0 = np.array([1.0, 0.0])
ea_0 = np.array([-0.51, -0.38]) #(7)!
eb_0 = np.array([-0.50, +0.02])
pydet_0 = PySlaterDeterminantReal( #(8)!
spin_constraint=PySpinConstraint.Unrestricted, #(9)!
complex_symmetric=False, #(10)!
coefficients=[ca_0, cb_0], #(11)!
occupations=[occa_0, occb_0], #(12)!
threshold=1e-7, #(13)!
mo_energies=[ea_0, eb_0], #(14)!
energy=-1.30, #(15)!
)
# Second basis determinant
ca_1 = np.array([ #(5)!
[+0.577, +0.000],
[+0.577, +0.707 + 0.707j],
[-0.577, +0.000],
...
])
cb_1 = np.array([
[+0.000, +0.707],
[+0.000, +0.000],
[+1.000, -0.707],
...
])
occa_1 = np.array([1.0, 1.0])
occb_1 = np.array([1.0, 0.0])
ea_1 = np.array([-0.41, -0.18])
eb_1 = np.array([-0.20, +0.03])
pydet_1 = PySlaterDeterminantComplex(
spin_constraint=PySpinConstraint.Unrestricted,
complex_symmetric=False,
coefficients=[ca_1, cb_1],
occupations=[occa_1, occb_1],
threshold=1e-7,
mo_energies=[ea_1, eb_1],
energy=-1.11,
)
# NOCI
energies, coefficients = run_noci([pydet_0, pydet_1, ...]) #(16)!
rep_analyse_multideterminants_eager_basis( #(17)!
# Data
inp_sym="mol", #(18)!
pydets=[pydet_0, pydet_1, ...], #(19)!
energies=energies,#(20)!
coefficients=coefficients,#(21)!
pybao=pybao, #(22)!
sao_spatial=sao_spatial, #(23)!
# Thresholds
linear_independence_threshold=1e-7, #(24)!
integrality_threshold=1e-7, #(25)!
eigenvalue_comparison_mode=EigenvalueComparisonMode.Modulus, #(26)!
# Analysis options
use_magnetic_group=use_magnetic_group, #(27)!
use_double_group=False, #(28)!
use_cayley_table=True, #(29)!
symmetry_transformation_kind=SymmetryTransformationKind.Spatial, #(30)!
infinite_order_to_finite=None, #(31)!
# Other options
write_character_table=True, #(32)!
write_overlap_eigenvalues=True, #(33)!
)
- This is a Python-exposed Rust enum,
EigenvalueComparisonMode
, for indicating the mode of eigenvalue comparison. See Basics/Thresholds/Linear independence threshold/#Comparison mode for further information. - This is a Python-exposed Rust enum,
MagneticSymmetryAnalysisKind
, for indicating the type of magnetic symmetry to be used for symmetry analysis. See Basics/Analysis options/#Magnetic groups for further information. - This is a Python-exposed Rust enum,
SymmetryTransformationKind
, for indicating the kind of symmetry transformation to be applied on the target. See Basics/Analysis options/#Transformation kinds for further information. - This is a Python-exposed Rust enum,
PySpinConstraint
, for indicating the spin constraint applicable to the Slater determinant. In the Python API, only two spin spaces arranged in decreasing-\(m_s\) order are permitted because Python enums do not support associated values. - This specifies a coefficient matrix for one spin space, which is a \(N_{\mathrm{bas}} \times N_{\mathrm{MO}}\)
numpy
array. The number of basis functions, \(N_{\mathrm{bas}}\), depends on the underlying spin constraint: for generalised spin constraint, this is twice the number of spatial basis functions, whereas for restricted and unrestricted spin constraints, this is the same as the number of spatial basis functions. Each column in the array specifies a molecular orbital which can be occupied or virtual as specified by the occupation numbers. - This specifies an occupation number vector for one spin space, which is a one-dimensional
numpy
array of size \(N_{\mathrm{MO}}\). Each value in this array gives the occupation number for the corresponding molecular orbital. Fractional values are allowed, but only when occupation numbers are either \(0\) or \(1\) can the Slater determinant symmetry be well-defined (otherwise the collection of fractionally occupied molecular orbitals does not actually form a single-determinantal wavefunction). - This specifies an optional orbital energy vector for one spin space, which is a one-dimensional
numpy
array of size \(N_{\mathrm{MO}}\). Each value in this array gives the orbital energy for the corresponding molecular orbital. -
PySlaterDeterminantReal
constructs a real-valued Slater determinant object. If a complex-valued Slater determinant is required instead, usePySlaterDeterminantComplex
. - This specifies the spin constraint applicable to the Slater determinant being specified. The possible options are:
PySpinConstraint.Restricted
: this specifies the restricted spin constraint where spatial molecular orbitals are identical across both spin spaces,PySpinConstraint.Unrestricted
: this specifies the unrestricted spin constraint where spatial molecular orbitals can be different across the two spin spaces,PySpinConstraint.Generalised
: this specifies the generalised spin constraint where each spin-orbital is now expressed in a spin-spatial direct product basis.
- This specifies whether the Slater determinant, and hence the overall multi-determinantal wavefunction, is to be symmetry-analysed using the bilinear inner product instead of the conventional sesquilinear inner product.
- This specifies the coefficient matrices constituting this Slater determinant. Each matrix in this list is for one spin space.
- This specifies the occupation numbers for the specified molecular orbitals. Each vector in this list is for one spin space.
- This specifies a threshold for comparing Slater determinants. This is of no consequence for symmetry analysis.
- This is optional.
- This is optional.
- This executes a non-orthogonal configuration interaction (NOCI) calculation on the specified Slater determinants to obtain the NOCI energies (
energies
) and coefficients (coefficients
). Here,energies
is a one-dimensionalnumpy
array andcoefficients
a two-dimensionalnumpy
array where each column contains the coefficients for one NOCI solution. Note that this NOCI calculation is executed outside of the QSym² run, which is different fromrep_analyse_multideterminants_orbit_basis
where the NOCI calculation is called inside the QSym² run. - This is the Python driver function for representation analysis of multi-determinantal wavefunctions using an eager basis.
This is a Python-exposed Rust function,
rep_analyse_multideterminants_eager_basis
. See the API documentation of this function for more details. - This specifies the path to the
.qsym2.sym
file that contains the serialised results of the symmetry-group detection (see the documentation for theout_sym
parameter of the Pythondetect_symmetry_group
function in Symmetry-group detection/#Parameters). This file should have been generated by thedetect_symmetry_group
function on the underlying molecular system prior to representation analysis. This name does not need to contain the.qsym2.sym
extension. The symmetry results in this file will be used to construct the symmetry group \(\mathcal{G}\) to be used in the subsequent representation analysis. - This specifies all Slater determinants in the basis for non-orthogonal configuration interaction (NOCI).
- This specifies the non-orthogonal configuration interaction (NOCI) energies calculated elsewhere and supplied as a one-dimensional
numpy
array. - This specifies the non-orthogonal configuration interaction (NOCI) coefficients calculated elsewhere and supplied as a two-dimensional
numpy
array where each column contains the coefficients for one NOCI solution. - This specifies the basis angular order information for the underlying basis. See Basics/Requirements/#Atomic-orbital basis angular order for details of how to specify this.
- This specifies the two-centre atomic-orbital spatial overlap matrix as a two-dimensional
numpy
array. - This specifies a floating-point value for the linear independence threshold \(\lambda^{\mathrm{thresh}}_{\mathbfit{S}}\). For more information, see Basics/#Thresholds.
- This specifies a floating-point value for the integrality threshold \(\lambda^{\mathrm{thresh}}_{\mathrm{int}}\). For more information, see Basics/#Thresholds.
- This specifies the threshold comparison mode for the eigenvalues of the orbit overlap matrix \(\mathbfit{S}\). The possible options are:
EigenvalueComparisonMode.Real
: this specifies the real comparison mode where the real parts of the eigenvalues are compared against the threshold,EigenvalueComparisonMode.Modulus
: this specifies the modulus comparison mode where the absolute values of the eigenvalues are compared against the threshold. For more information, see Basics/#Thresholds.
- This specifies whether magnetic groups, if present, shall be used for symmetry analysis. The possible options are:
None
: this specifies choice 1 of Basics/Analysis options/#Magnetic groups — use the irreducible representations of the unitary group \(\mathcal{G}\),MagneticSymmetryAnalysisKind.Representation
: this specifies choice 2 of Basics/Analysis options/#Magnetic groups — use the irreducible representations of the magnetic group \(\mathcal{M}\), if \(\mathcal{M}\) is available,MagneticSymmetryAnalysisKind.Corepresentation
: this specifies choice 3 of Basics/Analysis options/#Magnetic groups — use the irreducible corepresentations of the magnetic group \(\mathcal{M}\), if \(\mathcal{M}\) is available. For more information, see Basics/Analysis options/#Magnetic groups.
- This is a boolean specifying if double groups shall be used for symmetry analysis. The possible options are:
False
: use only conventional irreducible representations or corepresentations of \(\mathcal{G}\),True
: use projective irreducible representations or corepresentations of \(\mathcal{G}\) obtainable via its double cover \(\mathcal{G}^*\). For more information, see Basics/Analysis options/#Double groups.
- This is a boolean specifying if the Cayley table for the group, if available, should be used to speed up the computation of orbit overlap matrices.
Default:
True
. - This specifies the kind of symmetry transformations to be applied to generate the orbit for symmetry analysis.
The possible options are:
SymmetryTransformationKind.Spatial
: spatial transformation only,SymmetryTransformationKind.SpatialWithSpinTimeReversal
: spatial transformation with spin-including time reversal,SymmetryTransformationKind.Spin
: spin transformation only,SymmetryTransformationKind.SpinSpatial
: coupled spin and spatial transformations. For more information, see Basics/Analysis options/#Transformation kinds.
- This specifies the finite order \(n\) to which all infinite-order symmetry elements, if any, are restricted. The possible options are:
None
: do not restrict infinite-order symmetry elements to finite order,- a positive integer value: restrict all infinite-order symmetry elements to this finite order (this will be ignored if the system has no infinite-order symmetry elements). For more information, see Basics/Analysis options/#Infinite-order symmetry elements. Default:
None
. - This boolean indicates if the symbolic character table of the prevailing symmetry group is to be printed in the output.
Default:
True
. - This boolean indicates if the eigenspectrum of the overlap matrix for each multi-determinantal wavefunction orbit should be printed out.
Default:
True
.