00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef _chemistry_qc_mbpt_hsosv1e1_h
00030 #define _chemistry_qc_mbpt_hsosv1e1_h
00031
00032 #ifdef __GNUC__
00033 #pragma interface
00034 #endif
00035
00036 #include <util/misc/regtime.h>
00037 #include <util/group/memory.h>
00038 #include <util/group/thread.h>
00039 #include <chemistry/qc/basis/integral.h>
00040
00041 namespace sc {
00042
00043 class HSOSV1Erep1Qtr: public Thread {
00044 private:
00045 int mythread;
00046 int nthread;
00047 int me;
00048 int nproc;
00049 Ref<RegionTimer> timer;
00050 Ref<ThreadLock> lock;
00051 Ref<GaussianBasisSet> basis;
00052 Ref<TwoBodyInt> tbint;
00053 int ni,i_offset;
00054 double **scf_vector;
00055 double tol;
00056 int debug;
00057
00058 double *trans_int1;
00059 double aoint_computed_;
00060 int nfuncmax;
00061 int nbasis;
00062 int nshell;
00063
00064 int R,S,nr,ns;
00065 public:
00066 HSOSV1Erep1Qtr(int mythread_a, int nthread_a,
00067 int me_a, int nproc_a,
00068 const Ref<ThreadLock> &lock_a,
00069 const Ref<GaussianBasisSet> &basis_a,
00070 const Ref<TwoBodyInt> &tbint_a,
00071 int ni_a, double **scf_vector_a,
00072 double tol_a, int debug_a);
00073 ~HSOSV1Erep1Qtr();
00074
00075 void run();
00076
00077 void accum_buffer(double *buffer);
00078 void set_data(int R_a,int nr_a,int S_a,int ns_a,int ni_a, int ioffset_a);
00079 double aoint_computed() { return aoint_computed_; }
00080 };
00081
00082 }
00083
00084 #endif
00085
00086
00087
00088
00089
00090
00091