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
protected:
00042
Ref<Int2eCints> int2ecints_;
00043
00044
public:
00045
TwoBodyIntCints(
Integral*integral,
00046
const Ref<GaussianBasisSet>&b1,
00047
const Ref<GaussianBasisSet>&b2,
00048
const Ref<GaussianBasisSet>&b3,
00049
const Ref<GaussianBasisSet>&b4,
00050 size_t storage, tbinteval int2etype);
00051 ~
TwoBodyIntCints();
00052
00053
int log2_shell_bound(
int,
int,
int,
int);
00054
void compute_shell(
int,
int,
int,
int);
00055
00056 size_t used_storage()
const {
return int2ecints_->storage_used(); }
00057
void set_integral_storage(size_t storage);
00058
00059 const double *
buffer(tbint_type te_type)
const {
00060
return int2ecints_->buffer(te_type);
00061 }
00062 };
00063
00066 class TwoBodyDerivIntCints :
public TwoBodyDerivInt {
00067
protected:
00068
Ref<Int2eCints> int2ecints_;
00069
00070
public:
00071
TwoBodyDerivIntCints(
Integral*integral,
00072
const Ref<GaussianBasisSet>&b1,
00073
const Ref<GaussianBasisSet>&b2,
00074
const Ref<GaussianBasisSet>&b3,
00075
const Ref<GaussianBasisSet>&b4,
00076 size_t storage, tbinteval int2etype);
00077 ~
TwoBodyDerivIntCints();
00078
00079
int log2_shell_bound(
int,
int,
int,
int);
00080
void compute_shell(
int,
int,
int,
int,
DerivCenters&);
00081
00082 size_t used_storage()
const {
return int2ecints_->storage_used(); }
00083 };
00084
00085 }
00086
00087
#endif
00088
00089
00090
00091
00092