MPQC 2.3.1
|
00001 // 00002 // File: MPQC_IntegralEvaluator4_Impl.hh 00003 // Symbol: MPQC.IntegralEvaluator4-v0.2 00004 // Symbol Type: class 00005 // Babel Version: 0.10.2 00006 // Description: Server-side implementation for MPQC.IntegralEvaluator4 00007 // 00008 // WARNING: Automatically generated; only changes within splicers preserved 00009 // 00010 // babel-version = 0.10.2 00011 // 00012 00013 #ifndef included_MPQC_IntegralEvaluator4_Impl_hh 00014 #define included_MPQC_IntegralEvaluator4_Impl_hh 00015 00016 #ifndef included_sidl_cxx_hh 00017 #include "sidl_cxx.hh" 00018 #endif 00019 #ifndef included_MPQC_IntegralEvaluator4_IOR_h 00020 #include "MPQC_IntegralEvaluator4_IOR.h" 00021 #endif 00022 // 00023 // Includes for all method dependencies. 00024 // 00025 #ifndef included_Chemistry_QC_GaussianBasis_DerivCenters_hh 00026 #include "Chemistry_QC_GaussianBasis_DerivCenters.hh" 00027 #endif 00028 #ifndef included_Chemistry_QC_GaussianBasis_Molecular_hh 00029 #include "Chemistry_QC_GaussianBasis_Molecular.hh" 00030 #endif 00031 #ifndef included_MPQC_IntegralEvaluator4_hh 00032 #include "MPQC_IntegralEvaluator4.hh" 00033 #endif 00034 #ifndef included_sidl_BaseInterface_hh 00035 #include "sidl_BaseInterface.hh" 00036 #endif 00037 #ifndef included_sidl_ClassInfo_hh 00038 #include "sidl_ClassInfo.hh" 00039 #endif 00040 00041 00042 // DO-NOT-DELETE splicer.begin(MPQC.IntegralEvaluator4._includes) 00043 #include <chemistry/qc/basis/gaussbas.h> 00044 #include <chemistry/qc/intv3/cartitv3.h> 00045 #include <chemistry/qc/intv3/intv3.h> 00046 #ifdef HAVE_CINTS 00047 #include <chemistry/qc/cints/cints.h> 00048 #endif 00049 using namespace sc; 00050 // DO-NOT-DELETE splicer.end(MPQC.IntegralEvaluator4._includes) 00051 00052 namespace MPQC { 00053 00057 class IntegralEvaluator4_impl 00058 // DO-NOT-DELETE splicer.begin(MPQC.IntegralEvaluator4._inherits) 00059 00070 // Put additional inheritance here... 00071 // DO-NOT-DELETE splicer.end(MPQC.IntegralEvaluator4._inherits) 00072 { 00073 00074 private: 00075 // Pointer back to IOR. 00076 // Use this to dispatch back through IOR vtable. 00077 IntegralEvaluator4 self; 00078 00079 // DO-NOT-DELETE splicer.begin(MPQC.IntegralEvaluator4._implementation) 00080 Chemistry::Molecule molecule_; 00081 std::string evaluator_label_; 00082 Ref<sc::GaussianBasisSet> bs1_; 00083 Ref<sc::GaussianBasisSet> bs2_; 00084 Ref<sc::GaussianBasisSet> bs3_; 00085 Ref<sc::GaussianBasisSet> bs4_; 00086 Ref<sc::Integral> integral_; 00087 Ref<sc::TwoBodyInt> eval_; 00088 Ref<sc::TwoBodyDerivInt> deriv_eval_; 00089 int max_nshell4_; 00090 sidl::array<double> sidl_buffer_; 00091 const double* sc_buffer_; 00092 enum { two_body, two_body_deriv}; 00093 int int_type_; 00094 int deriv_level_; 00095 std::string package_; 00096 00097 // reorder stuff 00098 int bufn_; 00099 int **reorder_; 00100 double *buf_; 00101 double *temp_buffer_; 00102 int index_, con2_offset_, con3_offset_, con4_offset_, con_offset_, 00103 local2_offset_, local3_offset_, local4_offset_, 00104 c1_base_, c2_base_, c3_base_, c4_base_, 00105 s1_is_cart_, s2_is_cart_, s3_is_cart_, s4_is_cart_, 00106 s1_nfunc_, s2_nfunc_, s3_nfunc_, s4_nfunc_, 00107 nc1_, nc2_, nc3_, nc4_; 00108 sc::GaussianShell *s1_, *s2_, *s3_, *s4_; 00109 00110 void reorder_intv3(int64_t,int64_t,int64_t,int64_t); 00111 void reorder_quartet( sc::GaussianShell*, sc::GaussianShell*, 00112 sc::GaussianShell*, sc::GaussianShell*, 00113 int, int, int, int, int ); 00114 void reorder_intv3_inline(int64_t,int64_t,int64_t,int64_t); 00115 void initialize_reorder_intv3(); 00116 void reorder_c4(int,int,int,int,int,int); 00117 // DO-NOT-DELETE splicer.end(MPQC.IntegralEvaluator4._implementation) 00118 00119 private: 00120 // private default constructor (required) 00121 IntegralEvaluator4_impl() 00122 {} 00123 00124 public: 00125 // sidl constructor (required) 00126 // Note: alternate Skel constructor doesn't call addref() 00127 // (fixes bug #275) 00128 IntegralEvaluator4_impl( struct MPQC_IntegralEvaluator4__object * s ) : 00129 self(s,true) { _ctor(); } 00130 00131 // user defined construction 00132 void _ctor(); 00133 00134 // virtual destructor (required) 00135 virtual ~IntegralEvaluator4_impl() { _dtor(); } 00136 00137 // user defined destruction 00138 void _dtor(); 00139 00140 // static class initializer 00141 static void _load(); 00142 00143 public: 00144 00148 void 00149 set_integral_package ( 00150 /* in */ const ::std::string& label 00151 ) 00152 throw () 00153 ; 00154 00155 00165 void 00166 initialize ( 00167 /* in */ ::Chemistry::QC::GaussianBasis::Molecular bs1, 00168 /* in */ ::Chemistry::QC::GaussianBasis::Molecular bs2, 00169 /* in */ ::Chemistry::QC::GaussianBasis::Molecular bs3, 00170 /* in */ ::Chemistry::QC::GaussianBasis::Molecular bs4, 00171 /* in */ const ::std::string& label, 00172 /* in */ int64_t max_deriv 00173 ) 00174 throw () 00175 ; 00176 00177 00182 void* 00183 get_buffer() throw () 00184 ; 00185 00195 void 00196 compute ( 00197 /* in */ int64_t shellnum1, 00198 /* in */ int64_t shellnum2, 00199 /* in */ int64_t shellnum3, 00200 /* in */ int64_t shellnum4, 00201 /* in */ int64_t deriv_level, 00202 /* in */ ::Chemistry::QC::GaussianBasis::DerivCenters deriv_ctr 00203 ) 00204 throw () 00205 ; 00206 00207 00219 ::sidl::array<double> 00220 compute_array ( 00221 /* in */ int64_t shellnum1, 00222 /* in */ int64_t shellnum2, 00223 /* in */ int64_t shellnum3, 00224 /* in */ int64_t shellnum4, 00225 /* in */ int64_t deriv_level, 00226 /* in */ ::Chemistry::QC::GaussianBasis::DerivCenters deriv_ctr 00227 ) 00228 throw () 00229 ; 00230 00231 }; // end class IntegralEvaluator4_impl 00232 00233 } // end namespace MPQC 00234 00235 // DO-NOT-DELETE splicer.begin(MPQC.IntegralEvaluator4._misc) 00236 // Put miscellaneous things here... 00237 // DO-NOT-DELETE splicer.end(MPQC.IntegralEvaluator4._misc) 00238 00239 #endif