28#ifndef _mpqc_src_lib_chemistry_qc_lcao_fockbuildruntime_h
29#define _mpqc_src_lib_chemistry_qc_lcao_fockbuildruntime_h
31#include <util/ref/ref.h>
32#include <util/group/thread.h>
33#include <util/group/message.h>
34#include <math/scmat/matrix.h>
35#include <chemistry/qc/basis/basis.h>
36#include <chemistry/qc/basis/integral.h>
37#include <util/misc/registry.h>
38#include <chemistry/qc/wfn/spin.h>
39#include <chemistry/qc/lcao/df_runtime.h>
66 bool exists(
const std::string& key)
const;
77 const Ref<ThreadGrp>& thr()
const {
return thr_; }
78 const Ref<GaussianBasisSet>& basis()
const {
return basis_; }
79 const Ref<DensityFittingInfo>& dfinfo()
const {
return dfinfo_; }
80 void dfinfo(
const Ref<DensityFittingInfo>& d) { dfinfo_ = d; }
81 const Ref<OrbitalSpaceRegistry>& orbital_registry()
const {
return oreg_; }
82 typedef Registry<std::string, RefSCMatrix, detail::NonsingletonCreationPolicy> FockMatrixRegistry;
83 const Ref<FockMatrixRegistry>& fock_registry()
const {
return registry_; }
84 const Ref<AOSpaceRegistry>& ao_registry()
const {
return aoreg_; }
121 void obsolete_density_dependents();
124 static int debug() {
return 0; }
127 bool use_density_fitting() {
return dfinfo_; }
129 Ref<OrbitalSpaceRegistry> oreg_;
130 Ref<AOSpaceRegistry> aoreg_;
131 Ref<Integral> integral_;
132 Ref<MessageGrp> msg_;
134 Ref<GaussianBasisSet> basis_;
136 bool spin_polarized_;
137 double log2_precision_;
140 RefSymmSCMatrix P_, Po_;
143 Ref<FockMatrixRegistry> registry_;
146 void validate_key(
const std::string& key)
const;
154 RefSCMatrix electric_field_contribution(std::string bra_key,
155 std::string ket_key);
160 typedef Registry<RefSymmSCMatrix, Ref<OrbitalSpace>,
161 detail::NonsingletonCreationPolicy,
176 const std::string& key()
const {
return key_; }
177 const std::string& oper()
const {
return oper_; }
178 const std::string& params()
const {
return params_; }
181 static std::string
key(
const std::string& oper,
182 const std::string& params);
184 template <
int NumCenters>
191 template<
int NumCenters>
206 "ParsedOneBodyOperKey::create_descr() -- unknown oper",
223 const std::string& key()
const {
return key_; }
224 const std::string& bra()
const {
return bra_; }
225 const std::string& ket()
const {
return ket_; }
226 const std::string& oper()
const {
return oper_; }
227 SpinCase1 spin()
const {
return spin_; }
230 static std::string
key(
const std::string& bra,
231 const std::string& ket,
232 const std::string& oper,
233 SpinCase1 spin = AnySpinCase1);
237 std::string bra_, ket_;
Build Fock matrices using some combination of FockBuilder objects.
Definition fockbuild_runtime.h:44
void set_densities(const RefSymmSCMatrix &aodensity_alpha, const RefSymmSCMatrix &aodensity_beta)
sets AO densities. Unless these are identical to the current densities, density-dependent contents wi...
RefSymmSCMatrix P() const
return total density in AO basis
Definition fockbuild_runtime.h:95
void save_data_state(StateOut &so)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
void obsolete()
obsoletes this object
RefSymmSCMatrix Po() const
return open-shell density in AO basis
Definition fockbuild_runtime.h:97
Registry< RefSymmSCMatrix, Ref< OrbitalSpace >, detail::NonsingletonCreationPolicy, RefSymmSCMatrixEqual, RefObjectEqual< OrbitalSpace > > PSqrtRegistry
the way I compute exchange matrices is by computing square root of the density (P) this Registry keep...
Definition fockbuild_runtime.h:162
void set_log2_precision(double prec)
Specifies the precision of the computed operator matrices.
ResultType get(const std::string &key)
Returns the matrix corresponding to key.
const RefSCVector & electric_field() const
returns the uniform electric field (may be a null reference)
Definition fockbuild_runtime.h:100
void set_electric_field(const RefSCVector &efield)
sets uniform electric field.
double log2_precision() const
Definition fockbuild_runtime.h:89
bool exists(const std::string &key) const
Returns true if the given matrix is available.
static MessageGrp * get_default_messagegrp()
Returns the default message group.
Implements descriptors for various two-body evaluators.
Definition intdescr.h:254
static const Ref< ParamsRegistry > & instance()
this is a singleton
Parsed representation of a string key that represents a set of one-body integrals.
Definition fockbuild_runtime.h:219
static std::string key(const std::string &bra, const std::string &ket, const std::string &oper, SpinCase1 spin=AnySpinCase1)
computes key from its components
Parsed representation of a string key that represents a one-body operator set (OneBodyOperSet + assoc...
Definition fockbuild_runtime.h:171
static std::string key(const Ref< typename NCentersToIntDescr< NumCenters, 1 >::value > &descr)
computes key from the given OneBodyOperSetDescr object
Definition fockbuild_runtime.h:185
static std::string key(const std::string &oper, const std::string ¶ms)
computes key from its components
static Ref< typename NCentersToIntDescr< NumCenters, 1 >::value > create_descr(const std::string &operset_key, const Ref< IntParams > &p, const Ref< Integral > &integral)
this factory method constructs a descriptor given operator key + IntParams object + Integrals object
Definition fockbuild_runtime.h:192
This is thrown when a situations arises that should be impossible.
Definition scexception.h:92
The RefSCMatrix class is a smart pointer to an SCMatrix specialization.
Definition matrix.h:135
The RefSCVector class is a smart pointer to an SCVector specialization.
Definition matrix.h:55
The RefSymmSCMatrix class is a smart pointer to an SCSymmSCMatrix specialization.
Definition matrix.h:265
A template class that maintains references counts.
Definition ref.h:361
Base class for objects that can save/restore state.
Definition state.h:45
Restores fundamental and user-defined types from images created with StateOut.
Definition statein.h:79
Serializes fundamental and user-defined types.
Definition stateout.h:71
static ThreadGrp * get_default_threadgrp()
Returns the default ThreadGrp.
Contains all MPQC code up to version 3.
Definition mpqcin.h:14
Definition intdescr.h:156
@ T
{T}
Definition operator.h:170
@ S
{S}
Definition operator.h:169
this functor can be used as a binary predicate for standard algorithms.
Definition ref.h:659
this functor compares RefSymmSCMatrix objects.
Definition matrix.h:537