Function sequant::mbpt::add_ao_basis(std::shared_ptr<IndexBasisRegistry>&, IndexSpace::QuantumNumbers)

Function Documentation

void sequant::mbpt::add_ao_basis(std::shared_ptr<IndexBasisRegistry> &ibr, IndexSpace::QuantumNumbers spin_any)

registers the OBS AO basis μ as a named instance of the orbital space it spans, with a general metric (the AOs are not orthonormal)

The OBS AOs span the complete space less the CABS, if the registry has a space spelled α' (p in the single-reference conventions, also those with an ABS); that space must be registered. The basis instance is default_ao_basis_instance; register μ by hand, with IndexBasisRegistry::add(label, space, instance, spec), for another. The extent defaults to the space’s dimension (populate it with IndexBasisRegistry::extent(label, n) before the registry is given to a Context, which holds it immutable). No spin-cased counterparts (μ↑, μ↓) are registered, unlike by add_pao_basis(): the AO basis is the target of csv_transform() after spin tracing, and spin-casing an index in it throws (see make_spinalpha()) unless they are registered by hand. The other AO bases of a computation (a VBS, an ABS and their unions) are the layout of the program’s basis registry, which registers them itself.

Parameters:
Throws:

Exception – if μ is already registered, the instance of the space is named, or the space is not registered; the registry is then left untouched