# MPQC_ChemistryOpt_CoordinateModel_Impl.hh

    00001 //
    00002 // File:          MPQC_ChemistryOpt_CoordinateModel_Impl.hh
    00003 // Symbol:        MPQC.ChemistryOpt_CoordinateModel-v0.2
    00004 // Symbol Type:   class
    00005 // Babel Version: 0.10.2
    00006 // Description:   Server-side implementation for MPQC.ChemistryOpt_CoordinateModel
    00007 //
    00008 // WARNING: Automatically generated; only changes within splicers preserved
    00009 //
    00010 // babel-version = 0.10.2
    00011 //
    00012
    00013 #ifndef included_MPQC_ChemistryOpt_CoordinateModel_Impl_hh
    00014 #define included_MPQC_ChemistryOpt_CoordinateModel_Impl_hh
    00015
    00016 #ifndef included_sidl_cxx_hh
    00017 #include "sidl_cxx.hh"
    00018 #endif
    00019 #ifndef included_MPQC_ChemistryOpt_CoordinateModel_IOR_h
    00020 #include "MPQC_ChemistryOpt_CoordinateModel_IOR.h"
    00021 #endif
    00022 //
    00023 // Includes for all method dependencies.
    00024 //
    00025 #ifndef included_Chemistry_QC_Model_hh
    00026 #include "Chemistry_QC_Model.hh"
    00027 #endif
    00028 #ifndef included_MPQC_ChemistryOpt_CoordinateModel_hh
    00029 #include "MPQC_ChemistryOpt_CoordinateModel.hh"
    00030 #endif
    00031 #ifndef included_gov_cca_CCAException_hh
    00032 #include "gov_cca_CCAException.hh"
    00033 #endif
    00034 #ifndef included_gov_cca_Services_hh
    00035 #include "gov_cca_Services.hh"
    00036 #endif
    00037 #ifndef included_sidl_BaseInterface_hh
    00038 #include "sidl_BaseInterface.hh"
    00039 #endif
    00040 #ifndef included_sidl_ClassInfo_hh
    00041 #include "sidl_ClassInfo.hh"
    00042 #endif
    00043
    00044
    00045 // DO-NOT-DELETE splicer.begin(MPQC.ChemistryOpt_CoordinateModel._includes)
    00046 #include <Chemistry_MoleculeViewer.hh>
    00047 #include <Chemistry_QC_ModelFactory.hh>
    00048 #include <chemistry/molecule/coor.h>
    00049 #include "CoordinateModel.h"
    00050 #include "Chemistry_Chemistry_Molecule.hh"
    00051 #include "cca.h"
    00052 #include "dc/babel/babel-cca/server/ccaffeine_TypeMap.hh"
    00053 #include "dc/babel/babel-cca/server/ccaffeine_ports_PortTranslator.hh"
    00054 #include "util/IO.h"
    00055 #include "jc++/jc++.h"
    00056 #include "jc++/util/jc++util.h"
    00057 #include "parameters/parametersStar.h"
    00058 #include "port/portInterfaces.h"
    00059 #include "port/supportInterfaces.h"
    00060 // DO-NOT-DELETE splicer.end(MPQC.ChemistryOpt_CoordinateModel._includes)
    00061
    00062 namespace MPQC {
    00063
    00067   class ChemistryOpt_CoordinateModel_impl
    00068   // DO-NOT-DELETE splicer.begin(MPQC.ChemistryOpt_CoordinateModel._inherits)
    00069   : public CcaChemGeneric::CoordinateModel
    00070
    00118   // DO-NOT-DELETE splicer.end(MPQC.ChemistryOpt_CoordinateModel._inherits)
    00119   {
    00120
    00121   private:
    00122     // Pointer back to IOR.
    00123     // Use this to dispatch back through IOR vtable.
    00124     ChemistryOpt_CoordinateModel self;
    00125
    00126     // DO-NOT-DELETE splicer.begin(MPQC.ChemistryOpt_CoordinateModel._implementation)
    00127     gov::cca::Services services_;
    00128     CcaChemGeneric::CoordinateModel genericModel_;
    00129     Chemistry::QC::Model model_;
    00130     Chemistry::Chemistry_Molecule molecule_;
    00131     sc::Ref<sc::MolecularCoor> scCoor_;
    00132     sc::Ref<sc::Molecule> scMol_;
    00133     sc::Ref<sc::SCMatrixKit> kit_;
    00134     sc::Ref<sc::SCMatrixKit> rkit_;
    00135     sc::RefSymmSCMatrix ihess_;
    00136     DoubleParameter *grad_rms_, *grad_max_, *disp_rms_, *disp_max_;
    00137     BoolParameter *multiple_guess_h_, *use_current_geom_;
    00138     StringParameter *coordinates_;
    00139     StringParameter *extra_bonds_;
    00140     double convFrom_;
    00141     bool have_guess_h_;
    00142     enum {cart,symm,redund};
    00143     int coorType_;
    00144     int numCoor_;
    00145     int natom3_;
    00146
    00147     ConfigurableParameterPort*
    00148     setup_parameters(ConfigurableParameterFactory *);
    00149
    00150     void draw();
    00151     // DO-NOT-DELETE splicer.end(MPQC.ChemistryOpt_CoordinateModel._implementation)
    00152
    00153   private:
    00154     // private default constructor (required)
    00155     ChemistryOpt_CoordinateModel_impl()
    00156     {}
    00157
    00158   public:
    00159     // sidl constructor (required)
    00160     // Note: alternate Skel constructor doesn't call addref()
    00161     // (fixes bug #275)
    00162     ChemistryOpt_CoordinateModel_impl( struct
    00163       MPQC_ChemistryOpt_CoordinateModel__object * s ) : self(s,
    00164       true) { _ctor(); }
    00165
    00166     // user defined construction
    00167     void _ctor();
    00168
    00169     // virtual destructor (required)
    00170     virtual ~ChemistryOpt_CoordinateModel_impl() { _dtor(); }
    00171
    00172     // user defined destruction
    00173     void _dtor();
    00174
    00175     // static class initializer
    00176     static void _load();
    00177
    00178   public:
    00179
    00180
    00186     int32_t
    00187     initialize() throw ()
    00188     ;
    00189
    00194     int32_t
    00195     finalize() throw ()
    00196     ;
    00197
    00204     void
    00205     set_model (
    00206       /* in */ ::Chemistry::QC::Model model
    00207     )
    00208     throw ()
    00209     ;
    00210
    00211
    00216     ::Chemistry::QC::Model
    00217     get_model() throw ()
    00218     ;
    00219
    00224     int32_t
    00225     get_n_coor() throw ()
    00226     ;
    00227
    00233     ::sidl::array<double>
    00234     get_coor() throw ()
    00235     ;
    00236
    00247     double
    00248     get_energy (
    00249       /* in */ ::sidl::array<double> x
    00250     )
    00251     throw ()
    00252     ;
    00253
    00254
    00266     ::sidl::array<double>
    00267     get_gradient (
    00268       /* in */ ::sidl::array<double> x
    00269     )
    00270     throw ()
    00271     ;
    00272
    00273
    00285     ::sidl::array<double>
    00286     get_hessian (
    00287       /* in */ ::sidl::array<double> x
    00288     )
    00289     throw ()
    00290     ;
    00291
    00292
    00306     void
    00307     get_energy_and_gradient (
    00308       /* in */ ::sidl::array<double> x,
    00309       /* out */ double& f,
    00310       /* in */ ::sidl::array<double> g
    00311     )
    00312     throw ()
    00313     ;
    00314
    00315
    00327     void
    00328     guess_hessian_solve (
    00329       /* in */ ::sidl::array<double> effective_grad,
    00330       /* in */ ::sidl::array<double> effective_step,
    00331       /* in */ void* first_geom
    00332     )
    00333     throw ()
    00334     ;
    00335
    00336
    00342     void
    00343     checkConvergence (
    00344       /* inout */ int32_t& flag
    00345     )
    00346     throw ()
    00347     ;
    00348
    00349
    00356     void
    00357     monitor() throw ()
    00358     ;
    00359
    00377     void
    00378     setServices (
    00379       /* in */ ::gov::cca::Services services
    00380     )
    00381     throw (
    00382       ::gov::cca::CCAException
    00383     );
    00384
    00385   };  // end class ChemistryOpt_CoordinateModel_impl
    00386
    00387 } // end namespace MPQC
    00388
    00389 // DO-NOT-DELETE splicer.begin(MPQC.ChemistryOpt_CoordinateModel._misc)
    00390 // Put miscellaneous things here...
    00391 // DO-NOT-DELETE splicer.end(MPQC.ChemistryOpt_CoordinateModel._misc)
    00392
    00393 #endif