# 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