Function sequant::mbpt::add_ao_basis(std::shared_ptr<IndexBasisRegistry>&, IndexSpace::QuantumNumbers)¶
Defined in File convention.cpp
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
α'(pin 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:
ibr – the IndexBasisRegistry to which add the AO basis
spin_any – the quantum numbers of the spin-agnostic orbital spaces in the target convention (Spin::null for SpinConvention::Legacy, else Spin::any)
- 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