• R/O
  • HTTP
  • SSH
  • HTTPS

提交

标签
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

Commit MetaInfo

修订版84421e62fbb49b6a4cf181c2f55af747fe16d1ea (tree)
时间2011-10-12 17:44:18
作者Mikiya Fujii <mikiya.fujii@gmai...>
CommiterMikiya Fujii

Log Message

Methods to get MNDO-parameters are added. #26393

git-svn-id: https://svn.sourceforge.jp/svnroot/molds/MolDS/trunk@207 1136aad2-a195-0410-b898-f5ea1d11b9d8

更改概述

差异

--- a/src/base/atoms/Atom.h
+++ b/src/base/atoms/Atom.h
@@ -58,6 +58,11 @@ public:
5858 double GetZindoF2ddLower(); // Apendix in ref. [BZ_1979]
5959 double GetZindoF4ddLower(); // Apendix in ref. [BZ_1979]
6060 double GetIonPot(OrbitalType orbital);
61+ double GetMndoParameterAlpha(); // Table III in ref. [DT_1977-2] for H, B, C, N, O, and F. Table I & II in ref. [DMR_1978] and Table I in ref. [DR_1986] for S.
62+ double GetMndoDerivedParameterD(int dIndex); // Table III in ref. [DT_1977-2] for H, B, C, N, O, and F. Table I & II in ref. [DMR_1978] and Table I in ref. [DR_1986] for S.
63+ double GetMndoDerivedParameterRho(int rhoIndex); // Table III in ref. [DT_1977-2] for H, B, C, N, O, and F. Table I & II in ref. [DMR_1978] and Table I in ref. [DR_1986] for S.
64+ double GetMndoElecEnergyAtom(); // Table III in ref. [DT_1977-2] for H, B, C, N, O, and F. Table I & II in ref. [DMR_1978] and Table I in ref. [DR_1986] for S.
65+ double GetMndoHeatsFormAtom(); // Table III in ref. [DT_1977-2] for H, B, C, N, O, and F. Table I & II in ref. [DMR_1978] and Table I in ref. [DR_1986] for S.
6166 protected:
6267 string errorMessageIndoCoreIntegral;
6368 string errorMessageZindoSCoreIntegral;
@@ -107,11 +112,8 @@ protected:
107112 double mndoBondingParameterS; // Table III in ref. [DT_1977-2] for H, B, C, N, O, and F. Table I & II in ref. [DMR_1978] and Table I in ref. [DR_1986] for S.
108113 double mndoBondingParameterP; // Table III in ref. [DT_1977-2] for H, B, C, N, O, and F. Table I & II in ref. [DMR_1978] and Table I in ref. [DR_1986] for S.
109114 double mndoParameterAlpha; // Table III in ref. [DT_1977-2] for H, B, C, N, O, and F. Table I & II in ref. [DMR_1978] and Table I in ref. [DR_1986] for S.
110- double mndoDerivedParameterD1; // Table III in ref. [DT_1977-2] for H, B, C, N, O, and F. Table I & II in ref. [DMR_1978] and Table I in ref. [DR_1986] for S.
111- double mndoDerivedParameterD2; // Table III in ref. [DT_1977-2] for H, B, C, N, O, and F. Table I & II in ref. [DMR_1978] and Table I in ref. [DR_1986] for S.
112- double mndoDerivedParameterRho0; // Table III in ref. [DT_1977-2] for H, B, C, N, O, and F. Table I & II in ref. [DMR_1978] and Table I in ref. [DR_1986] for S.
113- double mndoDerivedParameterRho1; // Table III in ref. [DT_1977-2] for H, B, C, N, O, and F. Table I & II in ref. [DMR_1978] and Table I in ref. [DR_1986] for S.
114- double mndoDerivedParameterRho2; // Table III in ref. [DT_1977-2] for H, B, C, N, O, and F. Table I & II in ref. [DMR_1978] and Table I in ref. [DR_1986] for S.
115+ double mndoDerivedParameterD[2]; // Table III in ref. [DT_1977-2] for H, B, C, N, O, and F. Table I & II in ref. [DMR_1978] and Table I in ref. [DR_1986] for S.
116+ double mndoDerivedParameterRho[3]; // Table III in ref. [DT_1977-2] for H, B, C, N, O, and F. Table I & II in ref. [DMR_1978] and Table I in ref. [DR_1986] for S.
115117 double mndoElecEnergyAtom; // Table III in ref. [DT_1977-2] for H, B, C, N, O, and F. Table I & II in ref. [DMR_1978] and Table I in ref. [DR_1986] for S.
116118 double mndoHeatsFormAtom; // Table III in ref. [DT_1977-2] for H, B, C, N, O, and F. Table I & II in ref. [DMR_1978] and Table I in ref. [DR_1986] for S.
117119 double GetZindoCoreIntegral(OrbitalType orbital, int l, int m, int n); // Eq. (13) in [BZ_1979]
@@ -126,6 +128,11 @@ private:
126128 string errorMessageMndoCoreIntegral;
127129 string errorMessageGetOrbitalExponentBadTheory;
128130 string errorMessageTheoryType;
131+ string errorMessageGetBondingParameterBadTheoryBadOrbital;
132+ string errorMessageGetDerivedParameterDBadDIndex;
133+ string errorMessageDIndex;
134+ string errorMessageGetDerivedParameterRhoBadRhoIndex;
135+ string errorMessageRhoIndex;
129136 double GetJss(); // Part of Eq. (13) in [BZ_1979]
130137 double GetJsp(); // Part of Eq. (13) in [BZ_1979]
131138 double GetJsd(); // Part of Eq. (13) in [BZ_1979]
@@ -165,6 +172,7 @@ void Atom::SetMessages(){
165172 this->errorMessageOrbitalExponent = "Error in base_atoms::Atom::GetOrbitalExponent: Invalid shelltype or orbitalType.\n";
166173 this->errorMessageIndoCoreIntegral = "Error in base_atoms::Atom::GetCoreIntegral: Invalid orbitalType for INDO.\n";
167174 this->errorMessageZindoSCoreIntegral = "Error in base_atoms::Atom::GetCoreIntegral: Invalid orbitalType for ZINDO/S.\n";
175+ this->errorMessageMndoCoreIntegral = "Error in base_atoms::Atom::GetMndoCoreINtegral: Invalid orbitalType for MNDO.\n";
168176 this->errorMessageIonPot = "Error in base_atoms::Atom::GetIonPot: Invalid orbitalType.\n";
169177 this->errorMessageAtomType = "\tatom type = ";
170178 this->errorMessageOrbitalType = "\torbital type = ";
@@ -172,9 +180,13 @@ void Atom::SetMessages(){
172180 this->errorMessageEffectivPrincipalQuantumNumber =
173181 "Error in base::Atom::GetEffectivePrincipalQuantumNumber: invalid shelltype.\n";
174182 this->errorMessageZindoCoreIntegral = "Error in base_atoms::Atom::GetZindoCoreINtegral: Invalid orbitalType.\n";
175- this->errorMessageMndoCoreIntegral = "Error in base_atoms::Atom::GetMndoCoreINtegral: Invalid orbitalType.\n";
176183 this->errorMessageGetOrbitalExponentBadTheory = "Erro in base_atoms::Atom::GetOrbitalExponent: Bad theory is set.\n";
177184 this->errorMessageTheoryType = "Theory = ";
185+ this->errorMessageGetBondingParameterBadTheoryBadOrbital = "Error in base_atoms::Atom::GetBondingParameter: Bad Theory of bad orbital is set.\n";
186+ this->errorMessageGetDerivedParameterDBadDIndex = "Error in base_atoms::Atom::GetDerivedParameterD: Bad index for parameter D(dIndex). Only 0 and 1 are permitted.\n";
187+ this->errorMessageDIndex = "dIndex = ";
188+ this->errorMessageGetDerivedParameterRhoBadRhoIndex = "Error in base_atoms::Atom::GetDerivedParameterRho: Bad index for parameter rho(rhoIndex). Only 0, 1, and 2 are permitted.\n";
189+ this->errorMessageRhoIndex = "rhoIndex = ";
178190 }
179191
180192 AtomType Atom::GetAtomType(){
@@ -228,6 +240,21 @@ double Atom::GetBondingParameter(TheoryType theory, OrbitalType orbital){
228240 orbital == dxxyy ) ){
229241 value = this->bondingParameterDZindo;
230242 }
243+ else if(theory == MNDO && orbital == s){
244+ value = this->mndoBondingParameterS;
245+ }
246+ else if(theory == MNDO && ( orbital == px ||
247+ orbital == py ||
248+ orbital == pz ) ){
249+ value = this->mndoBondingParameterP;
250+ }
251+ else{
252+ stringstream ss;
253+ ss << this->errorMessageGetBondingParameterBadTheoryBadOrbital;
254+ ss << this->errorMessageTheoryType << TheoryTypeStr(theory) << "\n";
255+ ss << this->errorMessageOrbitalType << OrbitalTypeStr(orbital) << "\n";
256+ throw MolDSException(ss.str());
257+ }
231258
232259 return value;
233260
@@ -460,6 +487,41 @@ double Atom::GetIndoG1(){
460487 return this->indoG1;
461488 }
462489
490+double Atom::GetMndoParameterAlpha(){
491+ return this->mndoParameterAlpha;
492+}
493+
494+double Atom::GetMndoDerivedParameterD(int dIndex){
495+ if(dIndex == 0 || dIndex == 1){
496+ return this->mndoDerivedParameterD[dIndex];
497+ }
498+ else{
499+ stringstream ss;
500+ ss << this->errorMessageGetDerivedParameterDBadDIndex;
501+ ss << this->errorMessageDIndex << dIndex << endl;
502+ throw MolDSException(ss.str());
503+ }
504+}
505+
506+double Atom::GetMndoDerivedParameterRho(int rhoIndex){
507+ if(rhoIndex == 0 || rhoIndex == 1 || rhoIndex == 2){
508+ return this->mndoDerivedParameterRho[rhoIndex];
509+ }
510+ else{
511+ stringstream ss;
512+ ss << this->errorMessageGetDerivedParameterRhoBadRhoIndex;
513+ ss << this->errorMessageRhoIndex << rhoIndex << endl;
514+ throw MolDSException(ss.str());
515+ }
516+}
517+
518+double Atom::GetMndoElecEnergyAtom(){
519+ return this->mndoElecEnergyAtom;
520+}
521+
522+double Atom::GetMndoHeatsFormAtom(){
523+ return this->mndoHeatsFormAtom;
524+}
463525
464526 // Table 1 in ref. [RZ_1976], Table 1 in [AEZ_1986], or Table 1 in [GD_1972]
465527 double Atom::GetZindoF0ss(){
--- a/src/base/atoms/Catom.h
+++ b/src/base/atoms/Catom.h
@@ -56,11 +56,11 @@ Catom::Catom(double x, double y, double z) : Atom(x, y, z){
5656 this->mndoBondingParameterS = -18.985044 * Parameters::GetInstance()->GetEV2AU();
5757 this->mndoBondingParameterP = -7.934122 * Parameters::GetInstance()->GetEV2AU();
5858 this->mndoParameterAlpha = 2.546380 / Parameters::GetInstance()->GetAngstrom2AU();
59- this->mndoDerivedParameterD1 = 0.427284 * Parameters::GetInstance()->GetAngstrom2AU();
60- this->mndoDerivedParameterD2 = 0.362563 * Parameters::GetInstance()->GetAngstrom2AU();
61- this->mndoDerivedParameterRho0 = 0.588660 * Parameters::GetInstance()->GetAngstrom2AU();
62- this->mndoDerivedParameterRho1 = 0.430254 * Parameters::GetInstance()->GetAngstrom2AU();
63- this->mndoDerivedParameterRho2 = 0.395734 * Parameters::GetInstance()->GetAngstrom2AU();
59+ this->mndoDerivedParameterD[0] = 0.427284 * Parameters::GetInstance()->GetAngstrom2AU();
60+ this->mndoDerivedParameterD[1] = 0.362563 * Parameters::GetInstance()->GetAngstrom2AU();
61+ this->mndoDerivedParameterRho[0] = 0.588660 * Parameters::GetInstance()->GetAngstrom2AU();
62+ this->mndoDerivedParameterRho[1] = 0.430254 * Parameters::GetInstance()->GetAngstrom2AU();
63+ this->mndoDerivedParameterRho[2] = 0.395734 * Parameters::GetInstance()->GetAngstrom2AU();
6464 this->mndoElecEnergyAtom = -120.500606 * Parameters::GetInstance()->GetEV2AU();
6565 this->mndoHeatsFormAtom = 170.89 * Parameters::GetInstance()->GetKcalMolin2AU();
6666 }
--- a/src/base/atoms/Hatom.h
+++ b/src/base/atoms/Hatom.h
@@ -53,11 +53,11 @@ Hatom::Hatom(double x, double y, double z) : Atom(x, y, z){
5353 this->mndoBondingParameterS = -6.989064 * Parameters::GetInstance()->GetEV2AU();
5454 this->mndoBondingParameterP = 0.0;
5555 this->mndoParameterAlpha = 2.544134 / Parameters::GetInstance()->GetAngstrom2AU();
56- this->mndoDerivedParameterD1 = 0.0;
57- this->mndoDerivedParameterD2 = 0.0;
58- this->mndoDerivedParameterRho0 = 0.560345 * Parameters::GetInstance()->GetAngstrom2AU();
59- this->mndoDerivedParameterRho1 = 0.0;
60- this->mndoDerivedParameterRho2 = 0.0;
56+ this->mndoDerivedParameterD[0] = 0.0;
57+ this->mndoDerivedParameterD[1] = 0.0;
58+ this->mndoDerivedParameterRho[0] = 0.560345 * Parameters::GetInstance()->GetAngstrom2AU();
59+ this->mndoDerivedParameterRho[1] = 0.0;
60+ this->mndoDerivedParameterRho[2] = 0.0;
6161 this->mndoElecEnergyAtom = -11.906276 * Parameters::GetInstance()->GetEV2AU();
6262 this->mndoHeatsFormAtom = 52.102 * Parameters::GetInstance()->GetKcalMolin2AU();
6363 }
--- a/src/base/atoms/Natom.h
+++ b/src/base/atoms/Natom.h
@@ -56,11 +56,11 @@ Natom::Natom(double x, double y, double z) : Atom(x, y, z){
5656 this->mndoBondingParameterS = -20.495758 * Parameters::GetInstance()->GetEV2AU();
5757 this->mndoBondingParameterP = -20.495758 * Parameters::GetInstance()->GetEV2AU();
5858 this->mndoParameterAlpha = 2.861342 / Parameters::GetInstance()->GetAngstrom2AU();
59- this->mndoDerivedParameterD1 = 0.338616 * Parameters::GetInstance()->GetAngstrom2AU();
60- this->mndoDerivedParameterD2 = 0.287325 * Parameters::GetInstance()->GetAngstrom2AU();
61- this->mndoDerivedParameterRho0 = 0.529751 * Parameters::GetInstance()->GetAngstrom2AU();
62- this->mndoDerivedParameterRho1 = 0.337322 * Parameters::GetInstance()->GetAngstrom2AU();
63- this->mndoDerivedParameterRho2 = 0.324853 * Parameters::GetInstance()->GetAngstrom2AU();
59+ this->mndoDerivedParameterD[0] = 0.338616 * Parameters::GetInstance()->GetAngstrom2AU();
60+ this->mndoDerivedParameterD[1] = 0.287325 * Parameters::GetInstance()->GetAngstrom2AU();
61+ this->mndoDerivedParameterRho[0] = 0.529751 * Parameters::GetInstance()->GetAngstrom2AU();
62+ this->mndoDerivedParameterRho[1] = 0.337322 * Parameters::GetInstance()->GetAngstrom2AU();
63+ this->mndoDerivedParameterRho[2] = 0.324853 * Parameters::GetInstance()->GetAngstrom2AU();
6464 this->mndoElecEnergyAtom = -202.581201 * Parameters::GetInstance()->GetEV2AU();
6565 this->mndoHeatsFormAtom = 113.00 * Parameters::GetInstance()->GetKcalMolin2AU();
6666 }
--- a/src/base/atoms/Oatom.h
+++ b/src/base/atoms/Oatom.h
@@ -56,11 +56,11 @@ Oatom::Oatom(double x, double y, double z) : Atom(x, y, z){
5656 this->mndoBondingParameterS = -32.688082 * Parameters::GetInstance()->GetEV2AU();
5757 this->mndoBondingParameterP = -32.688082 * Parameters::GetInstance()->GetEV2AU();
5858 this->mndoParameterAlpha = 3.160604 / Parameters::GetInstance()->GetAngstrom2AU();
59- this->mndoDerivedParameterD1 = 0.282894 * Parameters::GetInstance()->GetAngstrom2AU();
60- this->mndoDerivedParameterD2 = 0.240043 * Parameters::GetInstance()->GetAngstrom2AU();
61- this->mndoDerivedParameterRho0 = 0.466882 * Parameters::GetInstance()->GetAngstrom2AU();
62- this->mndoDerivedParameterRho1 = 0.275822 * Parameters::GetInstance()->GetAngstrom2AU();
63- this->mndoDerivedParameterRho2 = 0.278628 * Parameters::GetInstance()->GetAngstrom2AU();
59+ this->mndoDerivedParameterD[0] = 0.282894 * Parameters::GetInstance()->GetAngstrom2AU();
60+ this->mndoDerivedParameterD[1] = 0.240043 * Parameters::GetInstance()->GetAngstrom2AU();
61+ this->mndoDerivedParameterRho[0] = 0.466882 * Parameters::GetInstance()->GetAngstrom2AU();
62+ this->mndoDerivedParameterRho[1] = 0.275822 * Parameters::GetInstance()->GetAngstrom2AU();
63+ this->mndoDerivedParameterRho[2] = 0.278628 * Parameters::GetInstance()->GetAngstrom2AU();
6464 this->mndoElecEnergyAtom = -317.868506 * Parameters::GetInstance()->GetEV2AU();
6565 this->mndoHeatsFormAtom = 59.559 * Parameters::GetInstance()->GetKcalMolin2AU();
6666 }
--- a/src/base/atoms/Satom.h
+++ b/src/base/atoms/Satom.h
@@ -81,11 +81,11 @@ Satom::Satom(double x, double y, double z) : Atom(x, y, z){
8181 this->mndoBondingParameterS = -10.761670 * Parameters::GetInstance()->GetEV2AU();
8282 this->mndoBondingParameterP = -10.108433 * Parameters::GetInstance()->GetEV2AU();
8383 this->mndoParameterAlpha = 2.478026 / Parameters::GetInstance()->GetAngstrom2AU();
84- this->mndoDerivedParameterD1 = 0.9189935 * Parameters::GetInstance()->GetAngstrom2AU();
85- this->mndoDerivedParameterD2 = 0.8328514 * Parameters::GetInstance()->GetAngstrom2AU();
86- this->mndoDerivedParameterRho0 = 0.4733554 * Parameters::GetInstance()->GetAngstrom2AU();
87- this->mndoDerivedParameterRho1 = 0.5544502 * Parameters::GetInstance()->GetAngstrom2AU();
88- this->mndoDerivedParameterRho2 = 0.5585244 * Parameters::GetInstance()->GetAngstrom2AU();
84+ this->mndoDerivedParameterD[0] = 0.9189935 * Parameters::GetInstance()->GetAngstrom2AU();
85+ this->mndoDerivedParameterD[1] = 0.8328514 * Parameters::GetInstance()->GetAngstrom2AU();
86+ this->mndoDerivedParameterRho[0] = 0.4733554 * Parameters::GetInstance()->GetAngstrom2AU();
87+ this->mndoDerivedParameterRho[1] = 0.5544502 * Parameters::GetInstance()->GetAngstrom2AU();
88+ this->mndoDerivedParameterRho[2] = 0.5585244 * Parameters::GetInstance()->GetAngstrom2AU();
8989 this->mndoElecEnergyAtom = -226.01239 * Parameters::GetInstance()->GetEV2AU();
9090 this->mndoHeatsFormAtom = 66.40 * Parameters::GetInstance()->GetKcalMolin2AU();
9191 }