iodata.orbitals module¶
Data structure for molecular orbitals.
- class MolecularOrbitals(kind, norba, norbb, occs=None, coeffs=None, energies=None, irreps=None, occs_aminusb=None)[source]¶
Bases:
object
Class of Orthonormal Molecular Orbitals.
Notes
For restricted wavefunctions, the occupation numbers are spin-summed values and several rules are used to deduce the alpha and beta occupation numbers:
When
occs_aminusb
is set, alpha and beta occupation numbers are derived trivially as(occs + occs_aminusb) / 2
and(occs - occs_aminusb) / 2
, respectively.When
occs_aminusb
is not set, there are two possibilities. When the occupation numbers are integers, it is assumed that the orbitals represent a restricted open-shell HF or KS wavefunction. An occupation number of 1 is then interpreted as an occupied alpha orbital and a virtual beta orbital. When the occupation numbers are fractional, it is assumed that the orbitals are closed-shell natural orbitals.
One can always describe all cases by setting
occs_aminusb
. While this seems appealing, keep in mind that most wavefunction file formats (FCHK, Molden, Molekel, WFN and WFX) do not support it.- __init__(kind, norba, norbb, occs=None, coeffs=None, energies=None, irreps=None, occs_aminusb=None)¶
Method generated by attrs for class MolecularOrbitals.
-
coeffs:
Optional
[ndarray
[Any
,dtype
[float
]]]¶ Molecular orbital coefficients. In case of restricted: shape = (nbasis, norba) = (nbasis, norbb). In case of unrestricted: shape = (nbasis, norba + norbb). In case of generalized: shape = (2 * nbasis, norb), where norb is the total number of orbitals. (optional)
- property coeffsa¶
Return alpha orbital coefficients.
- property coeffsb¶
Return beta orbital coefficients.
-
energies:
Optional
[ndarray
[Any
,dtype
[float
]]]¶ Molecular orbital energies. The length equals the number of columns of coeffs. (optional)
- property energiesa¶
Return alpha orbital energies.
- property energiesb¶
Return beta orbital energies.
-
irreps:
Optional
[ndarray
[Any
,dtype
[TypeVar
(_ScalarType_co
, bound=generic
, covariant=True)]]]¶ Irreducible representation. The length equals the number of columns of coeffs. (optional)
- property irrepsa¶
Return alpha irreps.
- property irrepsb¶
Return beta irreps.
- property nbasis¶
Return the number of spatial basis functions.
- property norb¶
Return the number of spatially distinct orbitals.
Notes
In case of restricted wavefunctions, this may be less than just the sum of
norba
andnorbb
, because alpha and beta orbitals share the same spatical dependence.
-
norba:
int
¶ Number of (occupied and virtual) alpha molecular orbitals. Set to None in case oftype==’generalized’.
-
norbb:
int
¶ Number of (occupied and virtual) beta molecular orbitals. Set to None in case of type==’generalized’. This is expected to be equal to norba for the restricted kind.
-
occs:
Optional
[ndarray
[Any
,dtype
[float
]]]¶ Molecular orbital occupation numbers. The length equals the number of columns of coeffs. (optional)
-
occs_aminusb:
Optional
[ndarray
[Any
,dtype
[float
]]]¶ The difference between alpha and beta occupation numbers. The length equals the number of columns of coeffs. (optional and only allowed to be not None for restricted wavefunctions)
- property occsa¶
Return alpha occupation numbers.
Notes
For restricted wavefunctions, in-place assignment to occsa will not work. In this case, the array is derived from
mo.occs
and optionallymo.occs_aminusb
. To avoid that in-place assignment of occsa is silently ignored, it is returned as a non-writeable array. To change occsa, one can assign a whole new array, e.g.mo.occsa = new_occsa
will work, whilemo.occsa[1] = 0.3
will not.
- property occsb¶
Return beta occupation numbers.
Notes
For restricted wavefunctions, in-place assignment to occsb will not work. In this case, the array is derived from
mo.occs
and optionallymo.occs_aminusb
. To avoid that in-place assignment of occsb is silently ignored, it is returned as a non-writeable array. To change occsb, one can assign a whole new array, e.g.mo.occsb = new_occsb
will work, whilemo.occsb[1] = 0.3
will not.