Class Integrals

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 BaseIntegrals object 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 BaseIntegrals are 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. If store_one_trans is 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 from BaseIntegrals or directly depending on the settings for storing_ao_integrals in BaseIntegrals.

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 Integrals class using a BaseIntegrals class 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_orbitals index 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_orbitals index 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_orbitals index i and occ_orbitals index 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. For active_orbitals index j and occ_orbitals indices 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. For active_orbitals indices i,j and occ_orbitals indices 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.