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 TwoBodyThreeCenterIntV3 : public TwoBodyThreeCenterInt {
00060 protected:
00061 Ref<Int2eV3> int2ev3_;
00062
00063 public:
00064 TwoBodyThreeCenterIntV3(Integral*integral,
00065 const Ref<GaussianBasisSet>&b1,
00066 const Ref<GaussianBasisSet>&b2,
00067 const Ref<GaussianBasisSet>&b3,
00068 size_t storage);
00069 ~TwoBodyThreeCenterIntV3();
00070
00071 int log2_shell_bound(int,int,int);
00072 void compute_shell(int,int,int);
00073
00074 size_t storage_used() { return int2ev3_->storage_used(); }
00075 void set_integral_storage(size_t storage);
00076 };
00077
00080 class TwoBodyTwoCenterIntV3 : public TwoBodyTwoCenterInt {
00081 protected:
00082 Ref<Int2eV3> int2ev3_;
00083
00084 public:
00085 TwoBodyTwoCenterIntV3(Integral*integral,
00086 const Ref<GaussianBasisSet>&b1,
00087 const Ref<GaussianBasisSet>&b2,
00088 size_t storage);
00089 ~TwoBodyTwoCenterIntV3();
00090
00091 int log2_shell_bound(int,int);
00092 void compute_shell(int,int);
00093
00094 size_t storage_used() { return int2ev3_->storage_used(); }
00095 void set_integral_storage(size_t storage);
00096 };
00097
00100 class TwoBodyDerivIntV3 : public TwoBodyDerivInt {
00101 protected:
00102 Ref<Int2eV3> int2ev3_;
00103
00104 public:
00105 TwoBodyDerivIntV3(Integral*integral,
00106 const Ref<GaussianBasisSet>&b1,
00107 const Ref<GaussianBasisSet>&b2,
00108 const Ref<GaussianBasisSet>&b3,
00109 const Ref<GaussianBasisSet>&b4,
00110 size_t storage);
00111 ~TwoBodyDerivIntV3();
00112
00113 int log2_shell_bound(int,int,int,int);
00114 void compute_shell(int,int,int,int,DerivCenters&);
00115
00116 size_t storage_used() { return int2ev3_->storage_used(); }
00117 };
00118
00119 }
00120
00121 #endif
00122
00123
00124
00125
00126