mpqc::lcao::pbc::FockBuilderImpl< Tile, Policy, J_Builder, K_Builder, MA_Builder > Class Template Reference
Collaboration diagram for mpqc::lcao::pbc::FockBuilderImpl< Tile, Policy, J_Builder, K_Builder, MA_Builder >:
Documentation
template<typename Tile, typename Policy, typename J_Builder = DirectFockBuilder<Tile, Policy>, typename K_Builder = DirectFockBuilder<Tile, Policy>, typename MA_Builder = ::mpqc::pbc::ma::MA_CFFLatticeSum< pbc::gaussian::AOFactory<Tile, Policy>>>
class mpqc::lcao::pbc::FockBuilderImpl< Tile, Policy, J_Builder, K_Builder, MA_Builder >
pbc::MaJFockBuilder is an implementation of pbc::FockBuilder with multipole-accelerated 4-center Coulomb and 4-center exchange. For Coulomb, multipole approximation is used in Crystal Far Field. The builders for near-field Coulomb and exchange are customizable.
- Template Parameters
-
Tile Policy J_Builder the builder for near-field Coulomb; the default is pbc::DirectFockBuilder<Tile, Policy> which is a conventional (4-center-integral based) builder. K_Builder the builder for the exchange; the default is pbc::DirectFockBuilder<Tile, Policy> which is a conventional (4-center-integral based) builder.
Public Types | |
using | factory_type = pbc::gaussian::AOFactory< Tile, Policy > |
using | array_type = typename factory_type::TArray |
using | result_type = typename FockBuilder< Tile, Policy >::result_type |
Public Types inherited from mpqc::lcao::pbc::FockBuilder< Tile, Policy > | |
using | array_type = TA::DistArray< Tile, Policy > |
using | result_type = std::tuple< array_type, std::optional< double > > |
Public Member Functions | |
FockBuilderImpl (factory_type &factory) | |
~FockBuilderImpl () | |
result_type | operator() (array_type const &D, double target_precision, bool is_density_diagonal) override |
This computes the 2-e part of the closed-shell Fock matrix in periodic HF. More... | |
void | register_fock (const array_type &fock, FormulaRegistry< array_type > ®istry) const override |
Vector3i | fock_lattice_range () const override |
This returns the lattice range of Fock representation F(μ_0, ν_R) More... | |
const MA_Builder * | multipole_builder () const |
const J_Builder * | coulomb_builder () const |
const K_Builder * | exchange_builder () const |
Public Member Functions inherited from mpqc::lcao::pbc::FockBuilder< Tile, Policy > | |
virtual | ~FockBuilder () |
Static Public Attributes | |
static constexpr const bool | have_ma = !std::is_same_v<MA_Builder, void> |
Member Typedef Documentation
◆ array_type
template<typename Tile , typename Policy , typename J_Builder = DirectFockBuilder<Tile, Policy>, typename K_Builder = DirectFockBuilder<Tile, Policy>, typename MA_Builder = ::mpqc::pbc::ma::MA_CFFLatticeSum< pbc::gaussian::AOFactory<Tile, Policy>>>
using mpqc::lcao::pbc::FockBuilderImpl< Tile, Policy, J_Builder, K_Builder, MA_Builder >::array_type = typename factory_type::TArray |
◆ factory_type
template<typename Tile , typename Policy , typename J_Builder = DirectFockBuilder<Tile, Policy>, typename K_Builder = DirectFockBuilder<Tile, Policy>, typename MA_Builder = ::mpqc::pbc::ma::MA_CFFLatticeSum< pbc::gaussian::AOFactory<Tile, Policy>>>
using mpqc::lcao::pbc::FockBuilderImpl< Tile, Policy, J_Builder, K_Builder, MA_Builder >::factory_type = pbc::gaussian::AOFactory<Tile, Policy> |
◆ result_type
template<typename Tile , typename Policy , typename J_Builder = DirectFockBuilder<Tile, Policy>, typename K_Builder = DirectFockBuilder<Tile, Policy>, typename MA_Builder = ::mpqc::pbc::ma::MA_CFFLatticeSum< pbc::gaussian::AOFactory<Tile, Policy>>>
using mpqc::lcao::pbc::FockBuilderImpl< Tile, Policy, J_Builder, K_Builder, MA_Builder >::result_type = typename FockBuilder<Tile, Policy>::result_type |
Constructor & Destructor Documentation
◆ FockBuilderImpl()
template<typename Tile , typename Policy , typename J_Builder = DirectFockBuilder<Tile, Policy>, typename K_Builder = DirectFockBuilder<Tile, Policy>, typename MA_Builder = ::mpqc::pbc::ma::MA_CFFLatticeSum< pbc::gaussian::AOFactory<Tile, Policy>>>
|
inline |
◆ ~FockBuilderImpl()
template<typename Tile , typename Policy , typename J_Builder = DirectFockBuilder<Tile, Policy>, typename K_Builder = DirectFockBuilder<Tile, Policy>, typename MA_Builder = ::mpqc::pbc::ma::MA_CFFLatticeSum< pbc::gaussian::AOFactory<Tile, Policy>>>
|
inline |
Member Function Documentation
◆ coulomb_builder()
template<typename Tile , typename Policy , typename J_Builder = DirectFockBuilder<Tile, Policy>, typename K_Builder = DirectFockBuilder<Tile, Policy>, typename MA_Builder = ::mpqc::pbc::ma::MA_CFFLatticeSum< pbc::gaussian::AOFactory<Tile, Policy>>>
|
inline |
◆ exchange_builder()
template<typename Tile , typename Policy , typename J_Builder = DirectFockBuilder<Tile, Policy>, typename K_Builder = DirectFockBuilder<Tile, Policy>, typename MA_Builder = ::mpqc::pbc::ma::MA_CFFLatticeSum< pbc::gaussian::AOFactory<Tile, Policy>>>
|
inline |
◆ fock_lattice_range()
template<typename Tile , typename Policy , typename J_Builder = DirectFockBuilder<Tile, Policy>, typename K_Builder = DirectFockBuilder<Tile, Policy>, typename MA_Builder = ::mpqc::pbc::ma::MA_CFFLatticeSum< pbc::gaussian::AOFactory<Tile, Policy>>>
|
inlineoverridevirtual |
This returns the lattice range of Fock representation F(μ_0, ν_R)
- Returns
- a vector of number of unit cells included in each positive direction
Implements mpqc::lcao::pbc::FockBuilder< Tile, Policy >.
◆ multipole_builder()
template<typename Tile , typename Policy , typename J_Builder = DirectFockBuilder<Tile, Policy>, typename K_Builder = DirectFockBuilder<Tile, Policy>, typename MA_Builder = ::mpqc::pbc::ma::MA_CFFLatticeSum< pbc::gaussian::AOFactory<Tile, Policy>>>
|
inline |
◆ operator()()
template<typename Tile , typename Policy , typename J_Builder = DirectFockBuilder<Tile, Policy>, typename K_Builder = DirectFockBuilder<Tile, Policy>, typename MA_Builder = ::mpqc::pbc::ma::MA_CFFLatticeSum< pbc::gaussian::AOFactory<Tile, Policy>>>
|
inlineoverridevirtual |
This computes the 2-e part of the closed-shell Fock matrix in periodic HF.
- Parameters
-
D the (1-particle) density matrix D(μ_0, ν_Rd); this should be single-occupancy, i.e. integrate to half the number of electrons target_precision the (absolute) target precision of the Fock matrix; this precision is not in general guaranteed, but the actual precision of the Fock matrix is usually proportional to this value. is_density_diagonal true if D only has a D(μ_0, ν_0) block
- Returns
- Fock matrix + an optional energy correction
Implements mpqc::lcao::pbc::FockBuilder< Tile, Policy >.
◆ register_fock()
template<typename Tile , typename Policy , typename J_Builder = DirectFockBuilder<Tile, Policy>, typename K_Builder = DirectFockBuilder<Tile, Policy>, typename MA_Builder = ::mpqc::pbc::ma::MA_CFFLatticeSum< pbc::gaussian::AOFactory<Tile, Policy>>>
|
inlineoverridevirtual |
Implements mpqc::lcao::pbc::FockBuilder< Tile, Policy >.
Member Data Documentation
◆ have_ma
template<typename Tile , typename Policy , typename J_Builder = DirectFockBuilder<Tile, Policy>, typename K_Builder = DirectFockBuilder<Tile, Policy>, typename MA_Builder = ::mpqc::pbc::ma::MA_CFFLatticeSum< pbc::gaussian::AOFactory<Tile, Policy>>>
|
staticconstexpr |
The documentation for this class was generated from the following file:
- mpqc/chemistry/qc/lcao/scf/pbc/fock_builder.h