修订版 | 84421e62fbb49b6a4cf181c2f55af747fe16d1ea (tree) |
---|---|
时间 | 2011-10-12 17:44:18 |
作者 | Mikiya Fujii <mikiya.fujii@gmai...> |
Commiter | Mikiya Fujii |
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
@@ -58,6 +58,11 @@ public: | ||
58 | 58 | double GetZindoF2ddLower(); // Apendix in ref. [BZ_1979] |
59 | 59 | double GetZindoF4ddLower(); // Apendix in ref. [BZ_1979] |
60 | 60 | 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. | |
61 | 66 | protected: |
62 | 67 | string errorMessageIndoCoreIntegral; |
63 | 68 | string errorMessageZindoSCoreIntegral; |
@@ -107,11 +112,8 @@ protected: | ||
107 | 112 | 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. |
108 | 113 | 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. |
109 | 114 | 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. | |
115 | 117 | 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. |
116 | 118 | 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. |
117 | 119 | double GetZindoCoreIntegral(OrbitalType orbital, int l, int m, int n); // Eq. (13) in [BZ_1979] |
@@ -126,6 +128,11 @@ private: | ||
126 | 128 | string errorMessageMndoCoreIntegral; |
127 | 129 | string errorMessageGetOrbitalExponentBadTheory; |
128 | 130 | string errorMessageTheoryType; |
131 | + string errorMessageGetBondingParameterBadTheoryBadOrbital; | |
132 | + string errorMessageGetDerivedParameterDBadDIndex; | |
133 | + string errorMessageDIndex; | |
134 | + string errorMessageGetDerivedParameterRhoBadRhoIndex; | |
135 | + string errorMessageRhoIndex; | |
129 | 136 | double GetJss(); // Part of Eq. (13) in [BZ_1979] |
130 | 137 | double GetJsp(); // Part of Eq. (13) in [BZ_1979] |
131 | 138 | double GetJsd(); // Part of Eq. (13) in [BZ_1979] |
@@ -165,6 +172,7 @@ void Atom::SetMessages(){ | ||
165 | 172 | this->errorMessageOrbitalExponent = "Error in base_atoms::Atom::GetOrbitalExponent: Invalid shelltype or orbitalType.\n"; |
166 | 173 | this->errorMessageIndoCoreIntegral = "Error in base_atoms::Atom::GetCoreIntegral: Invalid orbitalType for INDO.\n"; |
167 | 174 | 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"; | |
168 | 176 | this->errorMessageIonPot = "Error in base_atoms::Atom::GetIonPot: Invalid orbitalType.\n"; |
169 | 177 | this->errorMessageAtomType = "\tatom type = "; |
170 | 178 | this->errorMessageOrbitalType = "\torbital type = "; |
@@ -172,9 +180,13 @@ void Atom::SetMessages(){ | ||
172 | 180 | this->errorMessageEffectivPrincipalQuantumNumber = |
173 | 181 | "Error in base::Atom::GetEffectivePrincipalQuantumNumber: invalid shelltype.\n"; |
174 | 182 | this->errorMessageZindoCoreIntegral = "Error in base_atoms::Atom::GetZindoCoreINtegral: Invalid orbitalType.\n"; |
175 | - this->errorMessageMndoCoreIntegral = "Error in base_atoms::Atom::GetMndoCoreINtegral: Invalid orbitalType.\n"; | |
176 | 183 | this->errorMessageGetOrbitalExponentBadTheory = "Erro in base_atoms::Atom::GetOrbitalExponent: Bad theory is set.\n"; |
177 | 184 | 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 = "; | |
178 | 190 | } |
179 | 191 | |
180 | 192 | AtomType Atom::GetAtomType(){ |
@@ -228,6 +240,21 @@ double Atom::GetBondingParameter(TheoryType theory, OrbitalType orbital){ | ||
228 | 240 | orbital == dxxyy ) ){ |
229 | 241 | value = this->bondingParameterDZindo; |
230 | 242 | } |
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 | + } | |
231 | 258 | |
232 | 259 | return value; |
233 | 260 |
@@ -460,6 +487,41 @@ double Atom::GetIndoG1(){ | ||
460 | 487 | return this->indoG1; |
461 | 488 | } |
462 | 489 | |
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 | +} | |
463 | 525 | |
464 | 526 | // Table 1 in ref. [RZ_1976], Table 1 in [AEZ_1986], or Table 1 in [GD_1972] |
465 | 527 | double Atom::GetZindoF0ss(){ |
@@ -56,11 +56,11 @@ Catom::Catom(double x, double y, double z) : Atom(x, y, z){ | ||
56 | 56 | this->mndoBondingParameterS = -18.985044 * Parameters::GetInstance()->GetEV2AU(); |
57 | 57 | this->mndoBondingParameterP = -7.934122 * Parameters::GetInstance()->GetEV2AU(); |
58 | 58 | 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(); | |
64 | 64 | this->mndoElecEnergyAtom = -120.500606 * Parameters::GetInstance()->GetEV2AU(); |
65 | 65 | this->mndoHeatsFormAtom = 170.89 * Parameters::GetInstance()->GetKcalMolin2AU(); |
66 | 66 | } |
@@ -53,11 +53,11 @@ Hatom::Hatom(double x, double y, double z) : Atom(x, y, z){ | ||
53 | 53 | this->mndoBondingParameterS = -6.989064 * Parameters::GetInstance()->GetEV2AU(); |
54 | 54 | this->mndoBondingParameterP = 0.0; |
55 | 55 | 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; | |
61 | 61 | this->mndoElecEnergyAtom = -11.906276 * Parameters::GetInstance()->GetEV2AU(); |
62 | 62 | this->mndoHeatsFormAtom = 52.102 * Parameters::GetInstance()->GetKcalMolin2AU(); |
63 | 63 | } |
@@ -56,11 +56,11 @@ Natom::Natom(double x, double y, double z) : Atom(x, y, z){ | ||
56 | 56 | this->mndoBondingParameterS = -20.495758 * Parameters::GetInstance()->GetEV2AU(); |
57 | 57 | this->mndoBondingParameterP = -20.495758 * Parameters::GetInstance()->GetEV2AU(); |
58 | 58 | 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(); | |
64 | 64 | this->mndoElecEnergyAtom = -202.581201 * Parameters::GetInstance()->GetEV2AU(); |
65 | 65 | this->mndoHeatsFormAtom = 113.00 * Parameters::GetInstance()->GetKcalMolin2AU(); |
66 | 66 | } |
@@ -56,11 +56,11 @@ Oatom::Oatom(double x, double y, double z) : Atom(x, y, z){ | ||
56 | 56 | this->mndoBondingParameterS = -32.688082 * Parameters::GetInstance()->GetEV2AU(); |
57 | 57 | this->mndoBondingParameterP = -32.688082 * Parameters::GetInstance()->GetEV2AU(); |
58 | 58 | 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(); | |
64 | 64 | this->mndoElecEnergyAtom = -317.868506 * Parameters::GetInstance()->GetEV2AU(); |
65 | 65 | this->mndoHeatsFormAtom = 59.559 * Parameters::GetInstance()->GetKcalMolin2AU(); |
66 | 66 | } |
@@ -81,11 +81,11 @@ Satom::Satom(double x, double y, double z) : Atom(x, y, z){ | ||
81 | 81 | this->mndoBondingParameterS = -10.761670 * Parameters::GetInstance()->GetEV2AU(); |
82 | 82 | this->mndoBondingParameterP = -10.108433 * Parameters::GetInstance()->GetEV2AU(); |
83 | 83 | 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(); | |
89 | 89 | this->mndoElecEnergyAtom = -226.01239 * Parameters::GetInstance()->GetEV2AU(); |
90 | 90 | this->mndoHeatsFormAtom = 66.40 * Parameters::GetInstance()->GetKcalMolin2AU(); |
91 | 91 | } |