Function sequant::mbpt::add_pao_basis¶
Defined in File convention.cpp
Function Documentation¶
registers the PAO basis as a named instance of the particle space
expects
ibrto have a defined particle space. The PAOs are the AOs projected on the particle space, so the entry follows the AO basis they are projected from (IndexBasisRegistry::follow()),spec.ao_basis: the OBS AO basisμby default, which add_ao_basis() registers first ifibrhas noμ; any other AO basis (e.g. the OBS+VBS one of a program with a separate virtual basis) must be registered already, and must span the particle space. The PAO bases’ extent, metric (general) and field are those of that basis, set through its label (populate the extent with IndexBasisRegistry::extent(label, n) before the registry is given to a Context, which holds it immutable). The α- and β-spin PAO bases are registered alongside, as the same instance of the spin-cased particle spaces (ifibrhas them) under the spin-annotated label (μ̃↑,μ̃↓), so that a PAO index can be spin-cased (see make_spinalpha()); they follow the same basis, since the AOs do not depend on spin.- Parameters:
spin_any – the quantum numbers of the spin-agnostic particle space
spec – the label, the AO basis and the instance of the PAO basis, by name (see PAOBasisSpec), e.g.
{.ao_basis = L"Γ"}
- Throws:
Exception – if the label is that of the AO basis or it or a spin-annotated version of it is already registered, if the instance of a particle space is already named, if the AO basis is missing and is not
μorμcannot be registered (see add_ao_basis()), or if it is registered but is a space, follows an entry itself or does not span the particle space; the registry is then left untouched