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 #ifndef _chemistry_qc_intv3_tbintv3_h
00029 #define _chemistry_qc_intv3_tbintv3_h
00030
00031 #include <chemistry/qc/basis/tbint.h>
00032 #include <chemistry/qc/intv3/int2e.h>
00033
00034 namespace sc {
00035
00037 class TwoBodyIntV3 : public TwoBodyInt {
00038 protected:
00039 Ref<Int2eV3> int2ev3_;
00040
00041 public:
00042 TwoBodyIntV3(Integral*integral,
00043 const Ref<GaussianBasisSet>&b1,
00044 const Ref<GaussianBasisSet>&b2,
00045 const Ref<GaussianBasisSet>&b3,
00046 const Ref<GaussianBasisSet>&b4,
00047 size_t storage);
00048 ~TwoBodyIntV3();
00049
00050 int log2_shell_bound(int,int,int,int);
00051 void compute_shell(int,int,int,int);
00052
00053 size_t storage_used() { return int2ev3_->storage_used(); }
00054 void set_integral_storage(size_t storage);
00055 };
00056
00059 class TwoBodyDerivIntV3 : public TwoBodyDerivInt {
00060 protected:
00061 Ref<Int2eV3> int2ev3_;
00062
00063 public:
00064 TwoBodyDerivIntV3(Integral*integral,
00065 const Ref<GaussianBasisSet>&b1,
00066 const Ref<GaussianBasisSet>&b2,
00067 const Ref<GaussianBasisSet>&b3,
00068 const Ref<GaussianBasisSet>&b4,
00069 size_t storage);
00070 ~TwoBodyDerivIntV3();
00071
00072 int log2_shell_bound(int,int,int,int);
00073 void compute_shell(int,int,int,int,DerivCenters&);
00074
00075 size_t storage_used() { return int2ev3_->storage_used(); }
00076 };
00077
00078 }
00079
00080 #endif
00081
00082
00083
00084
00085