MPQC 2.3.1
|
00001 // 00002 // tbintv3.h 00003 // 00004 // Copyright (C) 1996 Limit Point Systems, Inc. 00005 // 00006 // Author: Curtis Janssen <cljanss@limitpt.com> 00007 // Maintainer: LPS 00008 // 00009 // This file is part of the SC Toolkit. 00010 // 00011 // The SC Toolkit is free software; you can redistribute it and/or modify 00012 // it under the terms of the GNU Library General Public License as published by 00013 // the Free Software Foundation; either version 2, or (at your option) 00014 // any later version. 00015 // 00016 // The SC Toolkit is distributed in the hope that it will be useful, 00017 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00018 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00019 // GNU Library General Public License for more details. 00020 // 00021 // You should have received a copy of the GNU Library General Public License 00022 // along with the SC Toolkit; see the file COPYING.LIB. If not, write to 00023 // the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. 00024 // 00025 // The U.S. Government is granted a limited license as per AL 91-7. 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 // Local Variables: 00124 // mode: c++ 00125 // c-file-style: "CLJ" 00126 // End: