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

Documentation

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

Bloch-AO Integral Factory.

This class computes atomic integrals involved in periodic calculations.

Public Types

using PbcAOFactoryBase = pbc::AOFactory< Tile, Policy >
 
using TArray = typename PbcAOFactoryBase::TArray
 
using DirectTArray = DirectArray< Tile, Policy >
 
using Op = std::function< Tile(Tile &&)>
 
using shellpair_list_t = std::vector< std::vector< size_t > >
 

Public Member Functions

 AOFactory ()=default
 
 AOFactory (AOFactory &&)=default
 
AOFactoryoperator= (AOFactory &&)=default
 
 AOFactory (const KeyVal &kv)
 KeyVal constructor for AOFactory. More...
 
virtual ~AOFactory () noexcept=default
 
TArray compute (const std::wstring &)
 wrapper to compute function More...
 
TArray compute (const Formula &formula) override
 This computes integral by Formula. More...
 
TArray compute_direct (const std::wstring &)
 wrapper to compute_direct More...
 
TArray compute_direct (const Formula &formula) override
 This computes integral direct by Formula. More...
 
std::vector< DirectTArraycompute_direct_vector (const std::wstring &)
 wrapper to compute_direct_vector More...
 
std::vector< DirectTArraycompute_direct_vector (const Formula &formula)
 This computes a vector of direct integrals for periodic systems. More...
 
template<libint2::Operator Operator, typename Result = std::array<TArray, libint2::operator_traits<Operator>::nopers>>
Result compute (const std::wstring &formula_string)
 wrapper to compute<Operator> function template More...
 
template<libint2::Operator Operator, typename Result = std::array<TArray, libint2::operator_traits<Operator>::nopers>>
Result compute (const Formula &formula)
 This computes integrals by Formula for those operators that have more than one components, e.g. multipole moments, geometrical derivatives, etc. More...
 
template<typename Bases >
TArray compute_integrals (madness::World &world, ShrPool< libint2::Engine > &engine, Bases &&bases, std::shared_ptr< Screener > p_screen=std::make_shared< Screener >(Screener{}))
 This computes sparse complex array. More...
 
template<libint2::Operator Operator, typename Result = std::array<TArray, libint2::operator_traits<Operator>::nopers>, typename Bases >
Result compute_integrals (madness::World &world, ShrPool< libint2::Engine > &engine, Bases &&bases, std::shared_ptr< Screener > p_screen=std::make_shared< Screener >(Screener{}))
 This computes integrals specified by engine and bases for those operators that have more than one components, e.g. multipole moments, geometrical derivatives, etc. More...
 
template<typename Bases >
DirectTArray compute_direct_integrals (madness::World &world, ShrPool< libint2::Engine > &engine, Bases &&bases, std::shared_ptr< Screener > p_screen=std::make_shared< Screener >(Screener{}))
 
const std::string & screen () const
 
auto screen_threshold () const
 
auto screen_threshold_push (double thr)
 
auto screen_threshold_pop ()
 
auto shell_pair_threshold () const
 
auto density_threshold () const
 
auto effective_condition_number () const
 
auto effective_condition_number_push (double ecn)
 
auto effective_condition_number_pop ()
 
void conditioned_screen_on ()
 
void conditioned_screen_off ()
 reverts the effect of the last call to conditioned_screen_on() More...
 
bool print_detail ()
 
void set_density (const TArray &D)
 This sets the density for coulomb and exchange computations. More...
 
TArray get_density ()
 
const shellpair_list_tsignificant_shell_pairs ()
 
bool force_hermiticity ()
 whether to force hermiticity of Fock matrix More...
 
auto engine_precision ()
 
const KeyValkeyval ()
 

Member Typedef Documentation

◆ DirectTArray

template<typename Tile , typename Policy >
using mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >::DirectTArray = DirectArray<Tile,Policy>

◆ Op

template<typename Tile , typename Policy >
using mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >::Op = std::function<Tile(Tile &&)>

◆ PbcAOFactoryBase

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

◆ shellpair_list_t

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

◆ TArray

template<typename Tile , typename Policy >
using mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >::TArray = typename PbcAOFactoryBase::TArray

Constructor & Destructor Documentation

◆ AOFactory() [1/3]

template<typename Tile , typename Policy >
mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >::AOFactory ( )
default

◆ AOFactory() [2/3]

template<typename Tile , typename Policy >
mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >::AOFactory ( AOFactory< Tile, Policy > &&  )
default

◆ AOFactory() [3/3]

template<typename Tile , typename Policy >
mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >::AOFactory ( const KeyVal kv)

KeyVal constructor for AOFactory.

Parameters
kvthe KeyVal object will be queried for all keywords of lcao::pbc:AOFactory as well as the following additional keywords:
Keyword Type Default Description
engine_precision real machine epsilon This gives the default integral engine precision used for computing integrals.
screener string dist method of screening; valid values are schwarz (2-norm based), schwarz_inf (infinity-norm based), dist (2-norm based distance-dependent screeners: QQR for 4-center integrals and SQVl for 3-center integrals), dist_inf (same as dist but infinity-norm based), or empty string to turn screening off
screen_threshold real 1e-12 screening threshold for integrals (integral tiles with per-element norm smaller than this value wil be neglected)
shell_pair_threshold real 1e-12 This gives threshold for screening non-negligible shell pairs.
density_threshold real sparse shape threshold This gives threshold for screening density blocks in Fock build.
print_detail bool false Print more details if true.

If any of these keywords do not exist, they will be queried in the WavefunctionWorld object's KeyVal object; only if missing there the default value will be assigned.

An example input in which the WavefunctionWorld object is specified separately:

"wfn_world": {
"atoms" : "$:water",
"basis" : "$:basis",
"df_basis" : "$:dfbs"
},
"ao_factory": {
"wfn_world" : "$:wfn_world",
"screen_threshold": 1.0e-20,
"shell_pair_threshold": 1.0e-20,
"density_threshold": 1.0e-10,
"rmax": [0, 0, 10],
"rjmax": [0, 0, 10],
"rdmax": [0, 0, 10]
}

An example input in which the AOFactory is specified together with the WavefunctionWorld

"wfn_world": {
"atoms" : "$:water",
"basis" : "$:basis",
"df_basis" : "$:dfbs",
"screen_threshold": 1.0e-20,
"shell_pair_threshold": 1.0e-20,
"density_threshold": 1.0e-10,
"rmax": [0, 0, 10],
"rjmax": [0, 0, 10],
"rdmax": [0, 0, 10]
}

◆ ~AOFactory()

template<typename Tile , typename Policy >
virtual mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >::~AOFactory ( )
virtualdefaultnoexcept

Member Function Documentation

◆ compute() [1/4]

template<typename Tile , typename Policy >
template<libint2::Operator Operator, typename Result = std::array<TArray, libint2::operator_traits<Operator>::nopers>>
Result mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >::compute ( const Formula formula)

This computes integrals by Formula for those operators that have more than one components, e.g. multipole moments, geometrical derivatives, etc.

Template Parameters
Operatora libint2 operator type
Resulta container of TArray
Parameters
formulathe desired Formula type
Returns
a container of TA::DistArray objects

◆ compute() [2/4]

template<typename Tile , typename Policy >
Result mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >::compute ( const Formula formula)
override

This computes integral by Formula.

This function will look into registry first if Formula computed, it will return it from registry if not, it will compute it

Parameters
formulathe desired Formula type
Returns
the TA::DistArray object

◆ compute() [3/4]

template<typename Tile , typename Policy >
Result mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >::compute ( const std::wstring &  formula_string)

wrapper to compute function

◆ compute() [4/4]

template<typename Tile , typename Policy >
template<libint2::Operator Operator, typename Result = std::array<TArray, libint2::operator_traits<Operator>::nopers>>
Result mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >::compute ( const std::wstring &  formula_string)

wrapper to compute<Operator> function template

◆ compute_direct() [1/2]

template<typename Tile , typename Policy >
AOFactory< Tile, Policy >::TArray mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >::compute_direct ( const Formula formula)
override

This computes integral direct by Formula.

◆ compute_direct() [2/2]

template<typename Tile , typename Policy >
AOFactory< Tile, Policy >::TArray mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >::compute_direct ( const std::wstring &  formula_string)

wrapper to compute_direct

◆ compute_direct_integrals()

template<typename Tile , typename Policy >
template<typename Bases >
DirectTArray mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >::compute_direct_integrals ( madness::World &  world,
ShrPool< libint2::Engine > &  engine,
Bases &&  bases,
std::shared_ptr< Screener p_screen = std::make_shared<Screener>(Screener{}) 
)
inline

This computes sparse complex array using integral direct

Template Parameters
Basesa range of const Basis (or std::reference_wrapper<const Basis>, or std::shared_ptr<const Basis>) type

◆ compute_direct_vector() [1/2]

template<typename Tile , typename Policy >
std::vector< typename AOFactory< Tile, Policy >::DirectTArray > mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >::compute_direct_vector ( const Formula formula)

This computes a vector of direct integrals for periodic systems.

◆ compute_direct_vector() [2/2]

template<typename Tile , typename Policy >
std::vector< typename AOFactory< Tile, Policy >::DirectTArray > mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >::compute_direct_vector ( const std::wstring &  formula_string)

wrapper to compute_direct_vector

◆ compute_integrals() [1/2]

template<typename Tile , typename Policy >
template<typename Bases >
TArray mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >::compute_integrals ( madness::World &  world,
ShrPool< libint2::Engine > &  engine,
Bases &&  bases,
std::shared_ptr< Screener p_screen = std::make_shared<Screener>(Screener{}) 
)
inline

This computes sparse complex array.

Template Parameters
Basesa range of const Basis (or std::reference_wrapper<const Basis>, or std::shared_ptr<const Basis>) type
Parameters
worldMADNESS world
enginea utility::TSPool object that is initialized with Operator and bases
basesa range of basis sets
p_screenScreener
Returns
the integral sparse array

◆ compute_integrals() [2/2]

template<typename Tile , typename Policy >
template<libint2::Operator Operator, typename Result = std::array<TArray, libint2::operator_traits<Operator>::nopers>, typename Bases >
Result mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >::compute_integrals ( madness::World &  world,
ShrPool< libint2::Engine > &  engine,
Bases &&  bases,
std::shared_ptr< Screener p_screen = std::make_shared<Screener>(Screener{}) 
)
inline

This computes integrals specified by engine and bases for those operators that have more than one components, e.g. multipole moments, geometrical derivatives, etc.

Template Parameters
Operatorlibint2 operator type
Basesa range of const Basis (or std::reference_wrapper<const Basis>, or std::shared_ptr<const Basis>) type
Parameters
worldMADNESS World
enginea utility::TSPool object
basesa range of basis sets
p_screenScreener
Returns
std::array of TA::DistArray

◆ conditioned_screen_off()

template<typename Tile , typename Policy >
void mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >::conditioned_screen_off ( )
inline

reverts the effect of the last call to conditioned_screen_on()

◆ conditioned_screen_on()

template<typename Tile , typename Policy >
void mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >::conditioned_screen_on ( )
inline

from now on will tighten the screening threshold by the effective condition number

◆ density_threshold()

template<typename Tile , typename Policy >
auto mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >::density_threshold ( ) const
inline
Returns
density sparsity threshold

◆ effective_condition_number()

template<typename Tile , typename Policy >
auto mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >::effective_condition_number ( ) const
inline
Returns
the current value of effective condition number

◆ effective_condition_number_pop()

template<typename Tile , typename Policy >
auto mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >::effective_condition_number_pop ( )
inline

resets the effective condition number to the previous value

Returns
the current value of effective condition number

◆ effective_condition_number_push()

template<typename Tile , typename Policy >
auto mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >::effective_condition_number_push ( double  ecn)
inline

updates the new value of effective condition number

Parameters
thenew value of effective condition number
Returns
the previous value of effective condition number

◆ engine_precision()

template<typename Tile , typename Policy >
auto mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >::engine_precision ( )
inline
Returns
integral engine precision

◆ force_hermiticity()

template<typename Tile , typename Policy >
bool mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >::force_hermiticity ( )
inline

whether to force hermiticity of Fock matrix

◆ get_density()

template<typename Tile , typename Policy >
TArray mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >::get_density ( )
inline
Returns
density matrix

◆ keyval()

template<typename Tile , typename Policy >
const KeyVal& mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >::keyval ( )
inline
Returns
the KeyVal object accessor

◆ operator=()

template<typename Tile , typename Policy >
AOFactory& mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >::operator= ( AOFactory< Tile, Policy > &&  )
default

◆ print_detail()

template<typename Tile , typename Policy >
bool mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >::print_detail ( )
inline
Returns
boolean of whether to print detailed information

◆ screen()

template<typename Tile , typename Policy >
const std::string& mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >::screen ( ) const
inline
Returns
screen method

◆ screen_threshold()

template<typename Tile , typename Policy >
auto mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >::screen_threshold ( ) const
inline
Returns
the current value of screening threshold

◆ screen_threshold_pop()

template<typename Tile , typename Policy >
auto mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >::screen_threshold_pop ( )
inline

resets the screening threshold to the previous value

Returns
the current value of screening threshold

◆ screen_threshold_push()

template<typename Tile , typename Policy >
auto mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >::screen_threshold_push ( double  thr)
inline

updates the new value of screening threshold

Parameters
thenew value of screening thresholds
Returns
the previous value of screening threshold

◆ set_density()

template<typename Tile , typename Policy >
void mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >::set_density ( const TArray D)
inline

This sets the density for coulomb and exchange computations.

Parameters
Dthe density fed by user

◆ shell_pair_threshold()

template<typename Tile , typename Policy >
auto mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >::shell_pair_threshold ( ) const
inline
Returns
shell pair threshold

◆ significant_shell_pairs()

template<typename Tile , typename Policy >
const shellpair_list_t& mpqc::lcao::pbc::gaussian::AOFactory< Tile, Policy >::significant_shell_pairs ( )
inline
Returns
significant shell pairs

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