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 #ifdef __GNUG__
00029 #pragma interface
00030 #endif
00031
00032 #ifndef _chemistry_qc_intcca_tbintcca_h
00033 #define _chemistry_qc_intcca_tbintcca_h
00034
00035 #include <chemistry/qc/basis/tbint.h>
00036 #include <chemistry/qc/intcca/int2e.h>
00037 #include <Chemistry_QC_GaussianBasis_IntegralEvaluatorFactory.hh>
00038
00039 using namespace std;
00040 using namespace Chemistry::QC::GaussianBasis;
00041
00042 namespace sc {
00043
00045 class TwoBodyIntCCA : public TwoBodyInt {
00046 protected:
00047 Ref<Int2eCCA> int2ecca_;
00048
00049 public:
00050 TwoBodyIntCCA(Integral*,
00051 const Ref<GaussianBasisSet>&b1,
00052 const Ref<GaussianBasisSet>&b2,
00053 const Ref<GaussianBasisSet>&b3,
00054 const Ref<GaussianBasisSet>&b4,
00055 size_t storage, IntegralEvaluatorFactory,
00056 bool, string );
00057 ~TwoBodyIntCCA() {};
00058
00059 int log2_shell_bound(int,int,int,int);
00060 void compute_shell(int,int,int,int);
00061
00062 size_t storage_used();
00063 void set_integral_storage(size_t storage);
00064 int redundant() const { return int2ecca_->redundant(); }
00065 void set_redundant(int i) { int2ecca_->set_redundant(i); }
00066 };
00067
00070 class TwoBodyDerivIntCCA : public TwoBodyDerivInt {
00071 protected:
00072 Ref<Int2eCCA> int2ecca_;
00073
00074 public:
00075 TwoBodyDerivIntCCA(Integral*,
00076 const Ref<GaussianBasisSet>&b1,
00077 const Ref<GaussianBasisSet>&b2,
00078 const Ref<GaussianBasisSet>&b3,
00079 const Ref<GaussianBasisSet>&b4,
00080 size_t storage, IntegralEvaluatorFactory, bool, string);
00081 ~TwoBodyDerivIntCCA() {};
00082
00083 int log2_shell_bound(int,int,int,int);
00084 void compute_shell(int,int,int,int,DerivCenters&);
00085
00086 size_t storage_used();
00087 void set_integral_storage(size_t storage);
00088 int redundant() const { return int2ecca_->redundant(); }
00089 void set_redundant(int i) { int2ecca_->set_redundant(i); }
00090 };
00091
00092 }
00093
00094 #endif
00095
00096
00097
00098
00099