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:
objectClass 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_aminusbis set, alpha and beta occupation numbers are derived trivially as(occs + occs_aminusb) / 2and(occs - occs_aminusb) / 2, respectively.When
occs_aminusbis 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[tuple[int,...],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[tuple[int,...],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[tuple[int,...],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
norbaandnorbb, 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[tuple[int,...],dtype[float]]]¶ Molecular orbital occupation numbers. The length equals the number of columns of coeffs. (optional)
-
occs_aminusb:
Optional[ndarray[tuple[int,...],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.occsand 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_occsawill work, whilemo.occsa[1] = 0.3will 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.occsand 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_occsbwill work, whilemo.occsb[1] = 0.3will not.