2 #ifndef _chemistry_qc_lcao_fockdist_h
3 #define _chemistry_qc_lcao_fockdist_h
6 #include <util/misc/scint.h>
7 #include <util/group/message.h>
8 #include <util/group/thread.h>
9 #include <chemistry/qc/basis/basis.h>
10 #include <chemistry/qc/basis/petite.h>
16 std::vector<int> begin_;
17 std::vector<int> end_;
18 std::vector<int> shell_to_block_;
20 typedef enum { Shell,
Atom } Method;
24 int nblock()
const {
return nblock_; }
25 int begin(
int iblock)
const {
return begin_[iblock];}
26 int end(
int iblock)
const {
return end_[iblock];}
27 int size(
int iblock)
const {
return end_[iblock]-begin_[iblock];}
28 int shell_to_block(
int ishell)
const {
return shell_to_block_[ishell]; }
37 int nthread_, mythread_;
46 int nthread,
int mythread);
48 virtual void init() = 0;
55 virtual bool get_blocks(
int &i,
int &j,
int &k,
int &l) = 0;
56 int nblock()
const {
return blocks_->nblock(); }
57 int begin(
int iblock)
const {
return blocks_->begin(iblock);}
58 int end(
int iblock)
const {
return blocks_->end(iblock);}
59 int size(
int iblock)
const {
return blocks_->size(iblock);}
63 virtual bool fixed_integral_map() = 0;
69 int nglobalthread_, myglobalthread_;
75 int nthread,
int mythread);
78 bool fixed_integral_map();
84 bool next_block(
int n);
90 int nthread,
int mythread);
92 bool get_blocks(
int&,
int&,
int&,
int&);
103 int nthread,
int mythread);
105 bool get_blocks(
int&,
int&,
int&,
int&);
110 typedef std::multimap<std::pair<int,int>, std::pair<int,int>, std::greater<std::pair<int,int> > > pairmap_t;
112 pairmap_t ijmap_, klmap_;
113 pairmap_t::const_iterator ij_iter_, kl_iter_;
119 bool static_distribution() {
return static_ != 0; }
125 int nthread,
int mythread,
126 const signed char *pmax,
130 bool fixed_integral_map();
139 bool server_get_blocks(
int&,
int&);
145 int nthread,
int mythread,
146 const signed char *pmax,
150 bool get_blocks(
int&,
int&,
int&,
int&);
156 typedef std::vector<std::pair<int,int> > pairvec_t;
157 pairvec_t ijvec_, klvec_;
164 bool requested_work_;
169 bool server_get_blocks(
int&,
int&,
int&,
int&);
170 bool ijkl(
int &i,
int &j,
int &k,
int &l);
176 int nthread,
int mythread,
177 const signed char *pmax,
181 bool get_blocks(
int&,
int&,
int&,
int&);
195 int cache_integrals_;
198 bool cache_integrals = 1);
208 int nthread,
int mythread,
209 const signed char *pmax,
213 bool cache_integrals()
const {
return cache_integrals_; }
void print(std::ostream &o=sc::ExEnv::out0()) const
Print the object.
Definition: fockdist.h:133
Definition: fockdist.h:108
Definition: message.h:135
Atom represents an atom in a Molecule.
Definition: atom.h:47
Definition: fockdist.h:31
FockDistribution is a factory for constructing the desired FockDist specialization.
Definition: fockdist.h:187
Definition: stateout.h:71
void save_data_state(sc::StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
Definition: fockdist.h:81
Definition: fockdist.h:154
static std::ostream & out0()
Return an ostream that writes from node 0.
Base class for objects that can save/restore state.
Definition: state.h:45
The base class for all reference counted objects.
Definition: ref.h:192
Definition: fockdist.h:14
Contains all MPQC code up to version 3.
Definition: mpqcin.h:14
Definition: fockdist.h:66
Definition: fockdist.h:95
Generated at Sun Jan 26 2020 23:23:58 for MPQC
3.0.0-alpha using the documentation package Doxygen
1.8.16.