Class Integrals
Defined in File integrals.hpp
Class Documentation
-
class Integrals
Class for calculating and managing all integrals for df-UW12
This class calculates and stores mo transformed UW12 integrals. The class is initialised using a
BaseIntegralsobject which manages all untransformed three-index integrals and two-index df integrals.All mo transformed integrals may be accessed through this class, while functions to access untransformed integrals in
BaseIntegralsare also provided. No integrals are calculated until requested.Integrals are calculated via differing methods depending on which integrals are stored and which integrals storage is set to true. For example two-index mo transformed integrals may be calculated using
get_X3idx_two_trans. Ifstore_one_transis true then the one-index transformed integrals are calculated and stored before transforming the second-index. Else the two transformed integrals are calculated from 3idx ao integral fromBaseIntegralsor directly depending on the settings forstoring_ao_integralsinBaseIntegrals.Public Functions
-
Integrals(const BaseIntegrals &_base_integrals, const utils::Orbitals &_occ_orbitals, const utils::Orbitals &_active_orbitals, bool _store_one_trans = true, bool _store_one_trans_ri = true)
Constructor for
Integralsclass using aBaseIntegralsclass and the active and full occupied orbitals.
-
const utils::MatVec &get_X3idx_one_trans() const
Calculate the one mo-index transformed three index integrals \((\rho k| A)\). For
occ_orbitalsindex k. Returns a matrix of size (nao * n_occ, ndf) for each spin channel.
-
const utils::MatVec &get_X3idx_one_trans_ri() const
Calculate the one mo-index transformed three index ri integrals \((\mu i| A)\). For
active_orbitalsindex i. Returns a matrix of size (nao * n_occ, ndf) for each spin channel.
-
const utils::MatVec &get_X3idx_two_trans() const
Calculate the two mo-index transformed three index integrals \((i k| A)\). For
active_orbitalsindex i andocc_orbitalsindex k. Returns a matrix of size (nao * n_occ, ndf) for each spin channel.
-
linalg::Mat get_X4idx_three_trans(size_t sigma) const
Calculate the three mo-index transformed four-index integrals \((\rho k|j l)\) for spin channel
sigma. Foractive_orbitalsindex j andocc_orbitalsindices k,l.
-
linalg::Mat get_X4idx_four_trans(size_t sigma) const
Calculate the four mo-index transformed four-index integrals \((i k|j l)\) for spin channel
sigma. Foractive_orbitalsindices i,j andocc_orbitalsindices k,l.
-
std::vector<linalg::Vec> get_X_D() const
Transform base_integrals eigenvectors (lambda| w |alpha beta) over density to give total contribution for each eigen-component WV_D = Sum_j ( lambda | w | jj ) for each lambda for each spin channel
-
const linalg::Mat &get_P2() const
Wrapper for BaseIntegrals::get_P2()
-
const linalg::Vec &get_df_vals() const
Wrapper for BaseIntegrals::get_df_vals()
-
const linalg::Mat &get_J3() const
Wrapper for BaseIntegrals::get_J3()
-
const linalg::Mat &get_J3_ri() const
Wrapper for BaseIntegrals::get_J3_ri()
-
size_t spin_channels() const
Calculate the number of spin channels based on the orbitals provided.
-
size_t number_ao_orbitals() const
Determine the number of ao basis functions.
-
size_t number_occ_orbitals(size_t sigma) const
Get the number of occupied orbitals in channel sigma.
-
size_t number_active_orbitals(size_t sigma) const
Get the number of active occupied orbitals in channel sigma.
-
const BaseIntegrals &get_base_integrals() const
Obtain the base integrals stored in the class.
-
Integrals(const BaseIntegrals &_base_integrals, const utils::Orbitals &_occ_orbitals, const utils::Orbitals &_active_orbitals, bool _store_one_trans = true, bool _store_one_trans_ri = true)