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

Documentation

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

ThreeCenterContractionBuilder is an integral-direct implementation of two types of contractions (X|μν) D_μν and (X|μν) X that appear in periodic DF-J method. This builder takes advantage of shell-level screening and parallelized summation over unit cells for coulomb interaction

Public Types

using array_type = TA::DistArray< Tile, Policy >
 
using const_data_ptr = typename Tile::const_pointer
 
using WorldObject_ = madness::WorldObject< ThreeCenterContractionBuilder< Tile, Policy > >
 
using ThreeCenterContractionBuilder_ = ThreeCenterContractionBuilder< Tile, Policy >
 
using Factory = ::mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >
 
using Engine = ::mpqc::lcao::gaussian::ShrPool< libint2::Engine >
 
using Basis = ::mpqc::lcao::gaussian::Basis
 
using Shell = ::mpqc::lcao::gaussian::Shell
 
using shellpair_list_t = std::vector< std::vector< size_t > >
 
using func_offset_list = std::unordered_map< size_t, std::tuple< size_t, size_t > >
 

Public Member Functions

 ThreeCenterContractionBuilder (madness::World &world, std::shared_ptr< const Basis > basis, std::shared_ptr< const Basis > aux_basis, const std::shared_ptr< const UnitCell > &unitcell, const Vector3i &R_max, const Vector3i &RJ_max, const Vector3i &RD_max, const shellpair_list_t &sig_shellpair_list, const std::string &screen="dist", double density_threshold=Policy::shape_type::threshold())
 This constructs ThreeCenterContractionBuilder using specific basis sets, lattice params, and thresholds. More...
 
 ThreeCenterContractionBuilder (Factory &ao_factory)
 This constructs ThreeCenterContractionBuilder using a Factory object. More...
 
 ~ThreeCenterContractionBuilder ()
 
template<size_t target_rank>
array_type contract_with (array_type const &M, double target_precision)
 This computes either (X|μν) D_μν or (X|μν) X contraction. More...
 
void init_screener (double target_precision) const
 
array_type compute_contr_Xmn_mn (array_type const &D, double target_precision) const
 This is the implementation of (X|μν) D_μν contraction. More...
 
array_type compute_contr_Xmn_X (array_type const &X, double target_precision) const
 This is the implementation of (X|μν) X contraction. More...
 

Member Typedef Documentation

◆ array_type

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

◆ Basis

template<typename Tile , typename Policy >
using mpqc::lcao::pbc::ThreeCenterContractionBuilder< Tile, Policy >::Basis = ::mpqc::lcao::gaussian::Basis

◆ const_data_ptr

template<typename Tile , typename Policy >
using mpqc::lcao::pbc::ThreeCenterContractionBuilder< Tile, Policy >::const_data_ptr = typename Tile::const_pointer

◆ Engine

template<typename Tile , typename Policy >
using mpqc::lcao::pbc::ThreeCenterContractionBuilder< Tile, Policy >::Engine = ::mpqc::lcao::gaussian::ShrPool<libint2::Engine>

◆ Factory

template<typename Tile , typename Policy >
using mpqc::lcao::pbc::ThreeCenterContractionBuilder< Tile, Policy >::Factory = ::mpqc::lcao::pbc::gaussian::AOFactory<Tile, Policy>

◆ func_offset_list

template<typename Tile , typename Policy >
using mpqc::lcao::pbc::ThreeCenterContractionBuilder< Tile, Policy >::func_offset_list = std::unordered_map<size_t, std::tuple<size_t, size_t> >

◆ Shell

template<typename Tile , typename Policy >
using mpqc::lcao::pbc::ThreeCenterContractionBuilder< Tile, Policy >::Shell = ::mpqc::lcao::gaussian::Shell

◆ shellpair_list_t

template<typename Tile , typename Policy >
using mpqc::lcao::pbc::ThreeCenterContractionBuilder< Tile, Policy >::shellpair_list_t = std::vector<std::vector<size_t> >

◆ ThreeCenterContractionBuilder_

template<typename Tile , typename Policy >
using mpqc::lcao::pbc::ThreeCenterContractionBuilder< Tile, Policy >::ThreeCenterContractionBuilder_ = ThreeCenterContractionBuilder<Tile, Policy>

◆ WorldObject_

template<typename Tile , typename Policy >
using mpqc::lcao::pbc::ThreeCenterContractionBuilder< Tile, Policy >::WorldObject_ = madness::WorldObject<ThreeCenterContractionBuilder<Tile, Policy> >

Constructor & Destructor Documentation

◆ ThreeCenterContractionBuilder() [1/2]

template<typename Tile , typename Policy >
mpqc::lcao::pbc::ThreeCenterContractionBuilder< Tile, Policy >::ThreeCenterContractionBuilder ( madness::World &  world,
std::shared_ptr< const Basis basis,
std::shared_ptr< const Basis aux_basis,
const std::shared_ptr< const UnitCell > &  unitcell,
const Vector3i R_max,
const Vector3i RJ_max,
const Vector3i RD_max,
const shellpair_list_t sig_shellpair_list,
const std::string &  screen = "dist",
double  density_threshold = Policy::shape_type::threshold() 
)
inline

This constructs ThreeCenterContractionBuilder using specific basis sets, lattice params, and thresholds.

Parameters
worldMADNESS world object
basisorbital basis set
aux_basisauxiliary fitting basis set
unitcellunit cell
R_maxrange of expansion of Bloch Gaussians in AO Gaussians
RJ_maxrange of Coulomb operation
RD_maxrange of density representation
sig_shellpair_lista non-negligible (μ, ν) shell pair list where μ is in the reference unit cell and ν is in the neighboring unit cells
screenmethod for screening three-body integrals
density_thresholdthreshold for screening density blocks

◆ ThreeCenterContractionBuilder() [2/2]

template<typename Tile , typename Policy >
mpqc::lcao::pbc::ThreeCenterContractionBuilder< Tile, Policy >::ThreeCenterContractionBuilder ( Factory ao_factory)
inline

This constructs ThreeCenterContractionBuilder using a Factory object.

Parameters
ao_factorya Factory object

◆ ~ThreeCenterContractionBuilder()

template<typename Tile , typename Policy >
mpqc::lcao::pbc::ThreeCenterContractionBuilder< Tile, Policy >::~ThreeCenterContractionBuilder ( )
inline

Member Function Documentation

◆ compute_contr_Xmn_mn()

template<typename Tile , typename Policy >
array_type mpqc::lcao::pbc::ThreeCenterContractionBuilder< Tile, Policy >::compute_contr_Xmn_mn ( array_type const &  D,
double  target_precision 
) const
inline

This is the implementation of (X|μν) D_μν contraction.

Parameters
Ddensity matrix
target_precision
Returns

◆ compute_contr_Xmn_X()

template<typename Tile , typename Policy >
array_type mpqc::lcao::pbc::ThreeCenterContractionBuilder< Tile, Policy >::compute_contr_Xmn_X ( array_type const &  X,
double  target_precision 
) const
inline

This is the implementation of (X|μν) X contraction.

Parameters
Xis array X
target_precision
Returns

◆ contract_with()

template<typename Tile , typename Policy >
template<size_t target_rank>
array_type mpqc::lcao::pbc::ThreeCenterContractionBuilder< Tile, Policy >::contract_with ( array_type const &  M,
double  target_precision 
)
inline

This computes either (X|μν) D_μν or (X|μν) X contraction.

Template Parameters
target_rankis 1 for (X|μν) D_μν and is 2 for (X|μν) X
Parameters
Mis density matrix or X
target_precision
Returns
result array should have same rank as
Template Parameters
target_rank

◆ init_screener()

template<typename Tile , typename Policy >
void mpqc::lcao::pbc::ThreeCenterContractionBuilder< Tile, Policy >::init_screener ( double  target_precision) const
inline

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