mpqc::lcao::pbc::DfJBuilder< Tile, Policy, Factory > Class Template Reference

Documentation

template<typename Tile, typename Policy, typename Factory>
class mpqc::lcao::pbc::DfJBuilder< Tile, Policy, Factory >

Computes Coulomb matrix using multipole-conserved DF-J approach.

Note
the multipole-conserved approach is insipred and contains as a special case (for 1-d periodic crystals) the PBC-RI-J approach of Burow, Sierka, and Mohamed (DOI 10.1063/1.3267858)

PBC DF-J precision control notes:

  • evaluates 2-c Coulomb CNF (V) matrix to machine precision
  • DF multipole moment ints are computed to machine precision / condition number of V(CNF)
  • OBC multipole moment ints are computed to machine precision / condition number of OBS (~magnitude of D)
  • CNF Coulomb potential matrix in DF basis (gamma) computed to target precision / condition number of V_p

Public Types

using array_type = TA::DistArray< Tile, Policy >
 
using result_type = std::tuple< array_type, std::optional< double > >
 
using PTC_Builder = ThreeCenterContractionBuilder< Tile, Policy >
 

Public Member Functions

template<typename... DummyArgs>
 DfJBuilder (Factory &ao_factory, DummyArgs &&...)
 
 ~DfJBuilder ()=default
 
result_type operator() (array_type const &D, double target_precision)
 
template<typename MA_Builder >
result_type operator() (array_type const &D, double target_precision, MA_Builder *ma_builder)
 
const Vector3ifock_lattice_range () const
 
const array_typerho () const
 
double cnf_energy_correction () const
 

Member Typedef Documentation

◆ array_type

template<typename Tile , typename Policy , typename Factory >
using mpqc::lcao::pbc::DfJBuilder< Tile, Policy, Factory >::array_type = TA::DistArray<Tile, Policy>

◆ PTC_Builder

template<typename Tile , typename Policy , typename Factory >
using mpqc::lcao::pbc::DfJBuilder< Tile, Policy, Factory >::PTC_Builder = ThreeCenterContractionBuilder<Tile, Policy>

◆ result_type

template<typename Tile , typename Policy , typename Factory >
using mpqc::lcao::pbc::DfJBuilder< Tile, Policy, Factory >::result_type = std::tuple<array_type, std::optional<double> >

Constructor & Destructor Documentation

◆ DfJBuilder()

template<typename Tile , typename Policy , typename Factory >
template<typename... DummyArgs>
mpqc::lcao::pbc::DfJBuilder< Tile, Policy, Factory >::DfJBuilder ( Factory ao_factory,
DummyArgs &&  ... 
)
inline

◆ ~DfJBuilder()

template<typename Tile , typename Policy , typename Factory >
mpqc::lcao::pbc::DfJBuilder< Tile, Policy, Factory >::~DfJBuilder ( )
default

Member Function Documentation

◆ cnf_energy_correction()

template<typename Tile , typename Policy , typename Factory >
double mpqc::lcao::pbc::DfJBuilder< Tile, Policy, Factory >::cnf_energy_correction ( ) const
inline
Returns
the CNF part of the first-order correction to the repulsion energy between exact and fitted densities in Eq. (45) of Eq. 10.1063/1.3267858, i.e.: $ \frac{1}{2} (\rho - \tilde{\rho}|\tilde{\rho}_\mathbf{L}) $

◆ fock_lattice_range()

template<typename Tile , typename Policy , typename Factory >
const Vector3i& mpqc::lcao::pbc::DfJBuilder< Tile, Policy, Factory >::fock_lattice_range ( ) const
inline

◆ operator()() [1/2]

template<typename Tile , typename Policy , typename Factory >
DfJBuilder< Tile, Policy, Factory >::result_type mpqc::lcao::pbc::DfJBuilder< Tile, Policy, Factory >::operator() ( array_type const &  D,
double  target_precision 
)

◆ operator()() [2/2]

template<typename Tile , typename Policy , typename Factory >
template<typename MA_Builder >
DfJBuilder< Tile, Policy, Factory >::result_type mpqc::lcao::pbc::DfJBuilder< Tile, Policy, Factory >::operator() ( array_type const &  D,
double  target_precision,
MA_Builder *  ma_builder 
)

◆ rho()

template<typename Tile , typename Policy , typename Factory >
const array_type& mpqc::lcao::pbc::DfJBuilder< Tile, Policy, Factory >::rho ( ) const
inline
Returns
the fitted charge density

The documentation for this class was generated from the following files: