diff --git a/iodata/basis.py b/iodata/basis.py index 99225f180..a32e11e64 100644 --- a/iodata/basis.py +++ b/iodata/basis.py @@ -181,7 +181,7 @@ def ncon(self) -> int: # noqa: D401 class MolecularBasis(NamedTuple): - """A complete molecular orbital or density basis set. + """A complete molecular orbital or density basis set as a collection of contracted shells. Attributes ---------- @@ -225,6 +225,29 @@ class MolecularBasis(NamedTuple): primitive_normalization The normalization convention of primitives, which can be 'L2' (orbitals) or 'L1' (densities) normalized. + Methods + ------- + get_segmented + Return molecular basis object that is segmented. + get_decontracted + Return molecular basis object that is decontracted. + convert_kind + Return molecular basis object whose kinds are the same type. + + Notes + ----- + - Primitive Contracted Shell with exponent :math:`\alpha`: + Set of all contractions in a contracted shell that have the exponent :math:`\alpha`. + Since there is a single exponent, then the degree of these contractions is one. + + - Segmented Molecular Basis: + Molecular basis where each contracted shell has contractions that all correspond to the + same total angular momentum number. There could only be the same shell-type inside a + contracted shell. There could only be one kind of shell-type inside a contracted shell. + + - Decontracted Molecular Basis: + Segmented molecular basis where each contracted shell is a primitive contracted shell with + its single exponent. """ @@ -238,7 +261,11 @@ def nbasis(self) -> int: # noqa: D401 return sum(shell.nbasis for shell in self.shells) def get_segmented(self): - """Unroll generalized contractions.""" + """Convert Generalized Molecular Basis to Segmented Molecular Basis. + + Segmented Molecular basis is a Molecular basis where all contracted shell in it share + a specific total angular momentum number. + """ shells = [] for shell in self.shells: for angmom, kind, coeffs in zip(shell.angmoms, shell.kinds, shell.coeffs.T): @@ -249,7 +276,7 @@ def get_segmented(self): def get_decontracted(self): r""" - Get Decontracted Molecular Basis from a Molecular Basis. + Convert to Decontracted Molecular Basis from a Molecular Basis. Decontracted Molecular basis is a Molecular basis where each contracted shell is a primitive contracted shell (ie contracted shell with only one exponent and one kind). @@ -289,7 +316,7 @@ def convert_kind(self, to: str): See Also -------- - convert_primitive_kind : Converts individual groups of primitive shells. + convert_primitive_kind : Converts primitive shells with no averaging. """ if to != "c" and to != "p":