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_cints_tbint_h
00029 #define _chemistry_qc_cints_tbint_h
00030
00031 #include <chemistry/qc/basis/tbint.h>
00032 #include <chemistry/qc/cints/int2e.h>
00033
00034 namespace sc {
00035
00036
00037 typedef enum {erieval = 0, grteval = 1, greval = 2} tbinteval;
00038
00040 class TwoBodyIntCints : public TwoBodyInt {
00041
00042 unsigned int num_tbint_types_;
00043
00044 protected:
00045 tbinteval int2etype_;
00046 Ref<Int2eCints> int2ecints_;
00047
00048 public:
00049 TwoBodyIntCints(Integral*integral,
00050 const Ref<GaussianBasisSet>&b1,
00051 const Ref<GaussianBasisSet>&b2,
00052 const Ref<GaussianBasisSet>&b3,
00053 const Ref<GaussianBasisSet>&b4,
00054 size_t storage, tbinteval int2etype);
00055 ~TwoBodyIntCints();
00056
00057 unsigned int num_tbint_types() const {
00058 return num_tbint_types_;
00059 }
00061 unsigned int inttype(tbint_type t) const;
00063 TwoBodyInt::tbint_type inttype(unsigned int t) const;
00064
00065 int log2_shell_bound(int,int,int,int);
00066 void compute_shell(int,int,int,int);
00067
00068 size_t used_storage() const { return int2ecints_->storage_used(); }
00069 void set_integral_storage(size_t storage);
00070
00071 const double *buffer(tbint_type te_type) const {
00072 return int2ecints_->buffer( inttype(te_type) );
00073 }
00074 };
00075
00078 class TwoBodyDerivIntCints : public TwoBodyDerivInt {
00079 protected:
00080 Ref<Int2eCints> int2ecints_;
00081
00082 public:
00083 TwoBodyDerivIntCints(Integral*integral,
00084 const Ref<GaussianBasisSet>&b1,
00085 const Ref<GaussianBasisSet>&b2,
00086 const Ref<GaussianBasisSet>&b3,
00087 const Ref<GaussianBasisSet>&b4,
00088 size_t storage, tbinteval int2etype);
00089 ~TwoBodyDerivIntCints();
00090
00091 int log2_shell_bound(int,int,int,int);
00092 void compute_shell(int,int,int,int,DerivCenters&);
00093
00094 size_t used_storage() const { return int2ecints_->storage_used(); }
00095 };
00096
00097 }
00098
00099 #endif
00100
00101
00102
00103
00104