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.
|
| AOFactory ()=default |
|
| AOFactory (AOFactory &&)=default |
|
AOFactory & | operator= (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< DirectTArray > | compute_direct_vector (const std::wstring &) |
| wrapper to compute_direct_vector More...
|
|
std::vector< DirectTArray > | compute_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_t & | significant_shell_pairs () |
|
bool | force_hermiticity () |
| whether to force hermiticity of Fock matrix More...
|
|
auto | engine_precision () |
|
const KeyVal & | keyval () |
|
template<typename Tile , typename Policy >
KeyVal constructor for AOFactory.
- Parameters
-
kv | the 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]
}
template<typename Tile , typename Policy >
template<libint2::Operator Operator, typename Result = std::array<TArray, libint2::operator_traits<Operator>::nopers>>
This computes integrals by Formula
for those operators that have more than one components, e.g. multipole moments, geometrical derivatives, etc.
- Template Parameters
-
Operator | a libint2 operator type |
Result | a container of TArray |
- Parameters
-
- Returns
- a container of
TA::DistArray
objects
template<typename Tile , typename Policy >
template<libint2::Operator Operator, typename Result = std::array<TArray, libint2::operator_traits<Operator>::nopers>, typename Bases >
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
-
Operator | libint2 operator type |
Bases | a range of const Basis (or std::reference_wrapper<const Basis>, or std::shared_ptr<const Basis>) type |
- Parameters
-
- Returns
std::array
of TA::DistArray