QCMndoParam.hpp

Go to the documentation of this file.
00001 //*****************************************************************************//
00002 //                                                                             //
00003 //   Copyright (c) 2001                                                        //
00004 //      INRIA                                                                  //
00005 //      54600 VILLERS LES NANCY                                                //
00006 //      France                                                                 //
00007 //                                                                             //
00008 //*****************************************************************************//
00009 //                                                                             //
00010 //               *** NOTICE OF PROPRIETARY INFORMATION ***                     //
00011 //                                                                             //
00012 // The information contained in this file is considered proprietary and the    //
00013 // exclusive property of  INRIA. This information may not be disclosed,        //
00014 // duplicated or used, in whole or in part, for  any purpose  whatsoever       //
00015 // without express written authorization from INRIA                            //
00016 //                                                                             //
00017 //*****************************************************************************//
00018 
00019 
00020 #ifndef QC_MNDOPARAM_H_
00021 #define QC_MNDOPARAM_H_
00022 
00023 
00024 
00025 #include <string>
00026 
00027 #include "QCCommon.hpp"
00028 #include "QCParameter.hpp"
00029 
00030 
00031 
00032 template <class TPParam> class QCMndoT;
00033 template <class TPModel, class TPSystem> class QCManager;
00034 
00035 
00036 
00042 class QCMndoParam : 
00043 public QCParameter 
00044 {
00045 
00046   template <class TPParam>
00047   friend class QCMndoT;
00048 
00049   friend class QCReader;
00050 
00051   template <class TPModel, class TPSystem>
00052   friend class QCManager;
00053   
00054   friend ostream& operator << (ostream& out, const QCMndoParam& param);
00055   
00057 public:
00058 
00062   QCFloat    getDzetaS (void)    const { return dzetaS; };
00063   QCFloat    getDzetaP (void)    const { return dzetaP; };
00064   QCFloat    getDzetaD (void)    const { return 0e0; };
00065   QCFloat    getBeta (int i)     const { return betaPtr[i]; };
00066   QCFloat    getU (int i)        const { return UPtr[i]; }
00067   QCFloat    getG (int i, int j) const { return GPtr[i][j]; };
00068   QCFloat    getH (int i, int j) const { return HPtr[i][j]; };
00069   QCFloat    getAlpha (void)     const { return alpha; };
00070   QCFloat    getD1 (void)        const { return D1; };
00071   QCFloat    getD2 (void)        const { return D2; };
00072   QCFloat    getRo0 (void)       const { return ro0; };
00073   QCFloat    getRo1 (void)       const { return ro1; };
00074   QCFloat    getRo2 (void)       const { return ro2; };
00075   QCFloat    getHeatOfFormation (void)  const { return heatOfFormation; };
00076   QCFloat    getElecEnergyOfAtom (void) const { return elecEnergyOfAtom; };
00080   static int    getNbSOrb (void) { return NB_S_ORB; }
00081 
00082   
00084 protected:
00085 
00089   QCMndoParam (void);
00090 
00091 
00095   virtual ~QCMndoParam (void);
00096 
00097 
00101   const QCMndoParam * getBase (void) { return this; }
00102 
00103 
00107   QCFloat   getGss (void) const { 
00108     return GPtr[S_ORB_IND][S_ORB_IND]; 
00109   };
00110 
00111   QCFloat   getGsp (void) const { 
00112     return GPtr[FIRST_P_ORB_IND][S_ORB_IND];
00113   }
00114 
00115   QCFloat   getGpp (void) const { 
00116     return GPtr[FIRST_P_ORB_IND][FIRST_P_ORB_IND];
00117   }
00118 
00119   QCFloat   getGp2 (void) const {
00120     return GPtr[FIRST_P_ORB_IND+1][FIRST_P_ORB_IND];
00121   }
00122   
00123   QCFloat   getHsp (void) const { 
00124     return HPtr[FIRST_P_ORB_IND][S_ORB_IND];
00125   }
00126 
00127   
00131   void      setRo0 (const QCFloat& extVal);
00132   void      setRo1 (const QCFloat& extVal);
00133   void      setRo2 (const QCFloat& extVal);
00134   
00135 
00139   void      readSetOfParameters (QCReader *reader);
00140 
00141   
00142 
00146   const QCMndoParam& asBase (void) const { return *this; };
00147 
00148 
00150 private:
00151 
00152   static const string& getName (void) { return QCCommon::MndoParamStr; };
00156   void      fillGPtr (const QCFloat& Gss, const QCFloat& Gsp,
00157                       const QCFloat& Gpp, const QCFloat& Gp2);
00161   void      fillHPtr (const QCFloat& Gss, const QCFloat& Gpp, 
00162                       const QCFloat& Gp2, const QCFloat& Hsp);
00163 
00164 
00166 public:
00167 
00172   static const int   S_ORB_IND      ;
00174   static const int   FIRST_P_ORB_IND;
00176   static const int   FIRST_D_ORB_IND;
00178   static const int   NB_S_ORB       ;
00180   static const int   NB_P_ORB       ;
00182   static const int   NB_D_ORB       ;
00183 
00184 
00185 
00186 protected:
00187 
00191   QCFloat **    GPtr;
00195   QCFloat **    HPtr;
00199   QCFloat       D1;
00200   QCFloat       D2;
00204   QCFloat       ro0;
00205   QCFloat       ro1;
00206   QCFloat       ro2;
00210   QCFloat *     UPtr;
00214   QCFloat *     betaPtr;
00218   QCFloat       dzetaS;
00219   QCFloat       dzetaP;
00223   QCFloat       alpha;
00227   QCFloat       elecEnergyOfAtom;
00231   QCFloat       heatOfFormation;
00232 
00233   
00234 
00235 
00236 private:
00237 
00241   static const string   U_S;
00242   static const string   U_P;
00243   static const string   DZETA_S;
00244   static const string   DZETA_P;
00245   static const string   BETA_S;
00246   static const string   BETA_P;
00247   static const string   ALPHA;
00248   static const string   G_SS;
00249   static const string   G_SP;
00250   static const string   G_PP;
00251   static const string   G_P2;
00252   static const string   H_SP;
00253   static const string   D_1;
00254   static const string   D_2;
00255   static const string   R_O0;
00256   static const string   R_O1;
00257   static const string   R_O2;
00258   static const string   ELECTRONIC_ENERGY;
00259   static const string   HEAT_OF_FORMATION;
00260 
00261 
00262 };
00263 
00264 
00268 extern ostream&
00269 operator << (ostream& out, const QCMndoParam& param);
00270 
00271 
00272 
00273 #endif // QC_MNDOPARAM_H

Generated on Sat Jan 28 21:07:28 2006 for QC++ by  doxygen 1.4.4