MPQC_IntegralEvaluator4_Impl.hh

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

Generated at Mon Dec 3 23:23:39 2007 for MPQC 2.3.1 using the documentation package Doxygen 1.5.2.