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
00029
00030 #ifndef _chemistry_qc_intv3_intv3_h
00031 #define _chemistry_qc_intv3_intv3_h
00032
00033 #include <chemistry/qc/basis/integral.h>
00034
00035 class SphericalTransformV3;
00036 class ISphericalTransformV3;
00037
00039 class IntegralV3 : public Integral {
00040 private:
00041 int maxl_;
00042 SphericalTransformV3 ***st_;
00043 ISphericalTransformV3 ***ist_;
00044
00045 void free_transforms();
00046 void initialize_transforms();
00047 public:
00048 IntegralV3(const Ref<GaussianBasisSet> &b1=0,
00049 const Ref<GaussianBasisSet> &b2=0,
00050 const Ref<GaussianBasisSet> &b3=0,
00051 const Ref<GaussianBasisSet> &b4=0);
00052 IntegralV3(StateIn&);
00053 IntegralV3(const Ref<KeyVal>&);
00054 ~IntegralV3();
00055
00056 void save_data_state(StateOut&);
00057
00058 CartesianIter * new_cartesian_iter(int);
00059 RedundantCartesianIter * new_redundant_cartesian_iter(int);
00060 RedundantCartesianSubIter * new_redundant_cartesian_sub_iter(int);
00061 SphericalTransformIter * new_spherical_transform_iter(int l,
00062 int inv=0,
00063 int subl=-1);
00064 const SphericalTransform * spherical_transform(int l,
00065 int inv=0, int subl=-1);
00066
00067 Ref<OneBodyInt> overlap();
00068
00069 Ref<OneBodyInt> kinetic();
00070
00071 Ref<OneBodyInt> point_charge(const Ref<PointChargeData>& =0);
00072
00073 Ref<OneBodyInt> nuclear();
00074
00075 Ref<OneBodyInt> hcore();
00076
00077 Ref<OneBodyInt> efield_dot_vector(const Ref<EfieldDotVectorData>& =0);
00078
00079 Ref<OneBodyInt> dipole(const Ref<DipoleData>& =0);
00080
00081 Ref<OneBodyDerivInt> overlap_deriv();
00082
00083 Ref<OneBodyDerivInt> kinetic_deriv();
00084
00085 Ref<OneBodyDerivInt> nuclear_deriv();
00086
00087 Ref<OneBodyDerivInt> hcore_deriv();
00088
00089 Ref<TwoBodyInt> electron_repulsion();
00090
00091 Ref<TwoBodyDerivInt> electron_repulsion_deriv();
00092
00093 void set_basis(const Ref<GaussianBasisSet> &b1,
00094 const Ref<GaussianBasisSet> &b2 = 0,
00095 const Ref<GaussianBasisSet> &b3 = 0,
00096 const Ref<GaussianBasisSet> &b4 = 0);
00097 };
00098
00099
00100 #endif
00101
00102
00103
00104
00105