00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
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