MPQC 2.3.1
|
00001 // 00002 // File: MPQC_IntegralEvaluator2_Impl.hh 00003 // Symbol: MPQC.IntegralEvaluator2-v0.2 00004 // Symbol Type: class 00005 // Babel Version: 0.10.2 00006 // Description: Server-side implementation for MPQC.IntegralEvaluator2 00007 // 00008 // WARNING: Automatically generated; only changes within splicers preserved 00009 // 00010 // babel-version = 0.10.2 00011 // 00012 00013 #ifndef included_MPQC_IntegralEvaluator2_Impl_hh 00014 #define included_MPQC_IntegralEvaluator2_Impl_hh 00015 00016 #ifndef included_sidl_cxx_hh 00017 #include "sidl_cxx.hh" 00018 #endif 00019 #ifndef included_MPQC_IntegralEvaluator2_IOR_h 00020 #include "MPQC_IntegralEvaluator2_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_IntegralEvaluator2_hh 00032 #include "MPQC_IntegralEvaluator2.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.IntegralEvaluator2._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.IntegralEvaluator2._includes) 00051 00052 namespace MPQC { 00053 00057 class IntegralEvaluator2_impl 00058 // DO-NOT-DELETE splicer.begin(MPQC.IntegralEvaluator2._inherits) 00059 00070 // Put additional inheritance here... 00071 // DO-NOT-DELETE splicer.end(MPQC.IntegralEvaluator2._inherits) 00072 { 00073 00074 private: 00075 // Pointer back to IOR. 00076 // Use this to dispatch back through IOR vtable. 00077 IntegralEvaluator2 self; 00078 00079 // DO-NOT-DELETE splicer.begin(MPQC.IntegralEvaluator2._implementation) 00080 Chemistry::Molecule molecule_; 00081 std::string evaluator_label_; 00082 Ref<GaussianBasisSet> bs1_, bs2_; 00083 Ref<Integral> integral_; 00084 Ref<OneBodyInt> eval_; 00085 Ref<OneBodyDerivInt> deriv_eval_; 00086 int max_nshell2_; 00087 int maxam_; 00088 sidl::array<double> sidl_buffer_; 00089 const double *sc_buffer_; 00090 double *temp_buffer_; 00091 double *buf_; 00092 enum { one_body, one_body_deriv}; 00093 int int_type_; 00094 int deriv_level_; 00095 std::string package_; 00096 int **reorder_; 00097 Chemistry::QC::GaussianBasis::DerivCenters deriv_centers_; 00098 00099 void reorder_intv3(int64_t, int64_t); 00100 void initialize_reorder_intv3(); 00101 void reorder_doublet( sc::GaussianShell*, sc::GaussianShell*, int, int, int ); 00102 // DO-NOT-DELETE splicer.end(MPQC.IntegralEvaluator2._implementation) 00103 00104 private: 00105 // private default constructor (required) 00106 IntegralEvaluator2_impl() 00107 {} 00108 00109 public: 00110 // sidl constructor (required) 00111 // Note: alternate Skel constructor doesn't call addref() 00112 // (fixes bug #275) 00113 IntegralEvaluator2_impl( struct MPQC_IntegralEvaluator2__object * s ) : 00114 self(s,true) { _ctor(); } 00115 00116 // user defined construction 00117 void _ctor(); 00118 00119 // virtual destructor (required) 00120 virtual ~IntegralEvaluator2_impl() { _dtor(); } 00121 00122 // user defined destruction 00123 void _dtor(); 00124 00125 // static class initializer 00126 static void _load(); 00127 00128 public: 00129 00133 void 00134 set_integral_package ( 00135 /* in */ const ::std::string& label 00136 ) 00137 throw () 00138 ; 00139 00140 00148 void 00149 initialize ( 00150 /* in */ ::Chemistry::QC::GaussianBasis::Molecular bs1, 00151 /* in */ ::Chemistry::QC::GaussianBasis::Molecular bs2, 00152 /* in */ const ::std::string& label, 00153 /* in */ int64_t max_deriv 00154 ) 00155 throw () 00156 ; 00157 00158 00163 void* 00164 get_buffer() throw () 00165 ; 00166 00173 void 00174 set_derivcenters ( 00175 /* in */ ::Chemistry::QC::GaussianBasis::DerivCenters dc 00176 ) 00177 throw () 00178 ; 00179 00180 00188 void 00189 compute ( 00190 /* in */ int64_t shellnum1, 00191 /* in */ int64_t shellnum2, 00192 /* in */ int64_t deriv_level, 00193 /* in */ ::Chemistry::QC::GaussianBasis::DerivCenters deriv_ctr 00194 ) 00195 throw () 00196 ; 00197 00198 00208 ::sidl::array<double> 00209 compute_array ( 00210 /* in */ int64_t shellnum1, 00211 /* in */ int64_t shellnum2, 00212 /* in */ int64_t deriv_level, 00213 /* in */ ::Chemistry::QC::GaussianBasis::DerivCenters deriv_ctr 00214 ) 00215 throw () 00216 ; 00217 00218 }; // end class IntegralEvaluator2_impl 00219 00220 } // end namespace MPQC 00221 00222 // DO-NOT-DELETE splicer.begin(MPQC.IntegralEvaluator2._misc) 00223 // Put miscellaneous things here... 00224 // DO-NOT-DELETE splicer.end(MPQC.IntegralEvaluator2._misc) 00225 00226 #endif