mpqc::lcao::ExactKDiagonalBuilder< Tile, Policy > Class Template Reference
Collaboration diagram for mpqc::lcao::ExactKDiagonalBuilder< Tile, Policy >:

Documentation

template<typename Tile, typename Policy>
class mpqc::lcao::ExactKDiagonalBuilder< Tile, Policy >

ExactKDiagonalBuilder is an integral-direct implementation of FockBuilder in a Gaussian AO basis that uses 4-center integrals to compute the exact K diagonal and optimally takes / advantage of the permutational symmetry and shell-level screening.

Public Types

using base_type = JKFockBuilder< Tile, Policy >
 
using array_type = typename base_type::array_type
 
using arrayvec_type = typename base_type::arrayvec_type
 
using result_type = typename base_type::result_type
 
using const_data_ptr = typename Tile::const_pointer
 
using WorldObject_ = madness::WorldObject< ExactKDiagonalBuilder< Tile, Policy > >
 
using ExactKDiagonalBuilder_ = ExactKDiagonalBuilder< Tile, Policy >
 
using Basis = ::mpqc::lcao::gaussian::Basis
 
using Shell = ::mpqc::lcao::gaussian::Shell
 
using ShellVec = ::mpqc::lcao::gaussian::ShellVec
 
using shellpair_list_t = std::unordered_map< size_t, std::vector< size_t > >
 
using func_offset_list = std::unordered_map< size_t, std::tuple< size_t, size_t > >
 
- Public Types inherited from mpqc::lcao::JKFockBuilder< Tile, Policy >
using array_type = TA::DistArray< Tile, Policy >
 
using arrayvec_type = TA::DistArrayVector< Tile, Policy >
 
using result_type = std::tuple< arrayvec_type, std::optional< double > >
 
- Public Types inherited from mpqc::lcao::FockBuilder< Tile, Policy >
using array_type = TA::DistArray< Tile, Policy >
 
using arrayvec_type = TA::DistArrayVector< Tile, Policy >
 
using result_type = std::tuple< arrayvec_type, std::optional< double > >
 
- Public Types inherited from mpqc::DescribedClass
typedef std::shared_ptr< DescribedClass >(* keyval_ctor_wrapper_type) (const KeyVal &)
 

Public Member Functions

 ExactKDiagonalBuilder (madness::World &world, std::shared_ptr< const Basis > bra_basis, std::shared_ptr< const Basis > ket_basis, std::shared_ptr< const Basis > density_basis, std::string screen="dist", double screen_threshold=1.0e-12)
 
virtual ~ExactKDiagonalBuilder ()
 
result_type compute (arrayvec_type const &D, arrayvec_type const &LMO, double scale_J_by=1, double scale_K_by=1, double target_precision=std::numeric_limits< double >::epsilon()) override
 computes the J+K part of the Fock matrix with variable fraction of J and K More...
 
array_type compute_K_aaaa (array_type const &D, double target_precision)
 
void register_fock (const arrayvec_type &fock, FormulaRegistry< array_type > &registry) const override
 
- Public Member Functions inherited from mpqc::lcao::JKFockBuilder< Tile, Policy >
virtual ~JKFockBuilder ()=default
 
result_type operator() (arrayvec_type const &D, arrayvec_type const &C, double target_precision=std::numeric_limits< double >::epsilon()) override final
 computes the J+K contribution of the Fock matrix More...
 
- Public Member Functions inherited from mpqc::lcao::FockBuilder< Tile, Policy >
virtual ~FockBuilder ()
 
virtual void log_iter (std::ostream &os=ExEnv::out0()) const
 
- Public Member Functions inherited from mpqc::DescribedClass
 DescribedClass ()=default
 
virtual ~DescribedClass ()
 
std::string class_key () const
 
- Public Member Functions inherited from mpqc::enable_shared_from_this< DescribedClass >
virtual ~enable_shared_from_this ()=default
 
std::shared_ptr< DescribedClassshared_from_this ()
 returns the pointer to this object More...
 
std::shared_ptr< std::add_const_t< DescribedClass > > shared_from_this () const
 returns the pointer to this object More...
 
- Public Member Functions inherited from mpqc::detail::virt_base_of_enable_shared_from_this
virtual ~virt_base_of_enable_shared_from_this ()=default
 
bool shared_from_this_possible () const
 
template<typename Target , typename = std::enable_if_t<!std::is_const_v<Target>>>
std::shared_ptr< Target > cast_shared_from_this_to ()
 returns the pointer to this cast to a particular type More...
 
template<typename Target >
std::shared_ptr< std::add_const_t< Target > > cast_shared_from_this_to () const
 returns the pointer to this cast to a particular type More...
 

Additional Inherited Members

- Static Public Member Functions inherited from mpqc::DescribedClass
static keyval_ctor_wrapper_type type_to_keyval_ctor (const std::string &type_name)
 
template<typename T >
static void register_keyval_ctor ()
 
template<typename T >
static bool is_registered ()
 
template<typename T >
static std::string class_key ()
 
static const keyval_ctor_registry_type & keyval_ctor_registry ()
 returns const ref to the keyval ctor registry More...
 

Member Typedef Documentation

◆ array_type

template<typename Tile , typename Policy >
using mpqc::lcao::ExactKDiagonalBuilder< Tile, Policy >::array_type = typename base_type::array_type

◆ arrayvec_type

template<typename Tile , typename Policy >
using mpqc::lcao::ExactKDiagonalBuilder< Tile, Policy >::arrayvec_type = typename base_type::arrayvec_type

◆ base_type

template<typename Tile , typename Policy >
using mpqc::lcao::ExactKDiagonalBuilder< Tile, Policy >::base_type = JKFockBuilder<Tile, Policy>

◆ Basis

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

◆ const_data_ptr

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

◆ ExactKDiagonalBuilder_

template<typename Tile , typename Policy >
using mpqc::lcao::ExactKDiagonalBuilder< Tile, Policy >::ExactKDiagonalBuilder_ = ExactKDiagonalBuilder<Tile, Policy>

◆ func_offset_list

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

◆ result_type

template<typename Tile , typename Policy >
using mpqc::lcao::ExactKDiagonalBuilder< Tile, Policy >::result_type = typename base_type::result_type

◆ Shell

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

◆ shellpair_list_t

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

◆ ShellVec

template<typename Tile , typename Policy >
using mpqc::lcao::ExactKDiagonalBuilder< Tile, Policy >::ShellVec = ::mpqc::lcao::gaussian::ShellVec

◆ WorldObject_

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

Constructor & Destructor Documentation

◆ ExactKDiagonalBuilder()

template<typename Tile , typename Policy >
mpqc::lcao::ExactKDiagonalBuilder< Tile, Policy >::ExactKDiagonalBuilder ( madness::World &  world,
std::shared_ptr< const Basis bra_basis,
std::shared_ptr< const Basis ket_basis,
std::shared_ptr< const Basis density_basis,
std::string  screen = "dist",
double  screen_threshold = 1.0e-12 
)
inline

◆ ~ExactKDiagonalBuilder()

template<typename Tile , typename Policy >
virtual mpqc::lcao::ExactKDiagonalBuilder< Tile, Policy >::~ExactKDiagonalBuilder ( )
inlinevirtual

Member Function Documentation

◆ compute()

template<typename Tile , typename Policy >
result_type mpqc::lcao::ExactKDiagonalBuilder< Tile, Policy >::compute ( arrayvec_type const &  D,
arrayvec_type const &  C,
double  scale_J_by = 1,
double  scale_K_by = 1,
double  target_precision = std::numeric_limits< double >::epsilon() 
)
inlineoverridevirtual

computes the J+K part of the Fock matrix with variable fraction of J and K

Parameters
Dthe (1-particle) density matrix
Cthe occupied orbital AO coefficient matrix
scale_J_bythe coefficient of J in the result
scale_K_bythe coefficient of K in the result
target_precisionthe (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.
Returns
the J+K contribution to the Fock matrix an optional energy correction

Implements mpqc::lcao::JKFockBuilder< Tile, Policy >.

◆ compute_K_aaaa()

template<typename Tile , typename Policy >
array_type mpqc::lcao::ExactKDiagonalBuilder< Tile, Policy >::compute_K_aaaa ( array_type const &  D,
double  target_precision 
)
inline

◆ register_fock()

template<typename Tile , typename Policy >
void mpqc::lcao::ExactKDiagonalBuilder< Tile, Policy >::register_fock ( const arrayvec_type fock,
FormulaRegistry< array_type > &  registry 
) const
inlineoverridevirtual

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