• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

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

Commit MetaInfo

Revisión01c0d984120c38a35f02f8c46892792a660ef201 (tree)
Tiempo2011-01-26 17:49:57
AutorMikiya Fujii <mikiya.fujii@gmai...>
CommiterMikiya Fujii

Log Message

Natom and Oatom are added.

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

Cambiar Resumen

Diferencia incremental

--- a/src/MolDS.cpp
+++ b/src/MolDS.cpp
@@ -19,6 +19,8 @@
1919 #include"base/atoms/Atom.h"
2020 #include"base/atoms/Hatom.h"
2121 #include"base/atoms/Catom.h"
22+#include"base/atoms/Natom.h"
23+#include"base/atoms/Oatom.h"
2224 #include"base/atoms/Liatom.h"
2325 #include"base/atoms/Satom.h"
2426 #include"base/MallocerFreer.h"
--- a/src/base/InputParser.h
+++ b/src/base/InputParser.h
@@ -215,6 +215,12 @@ void InputParser::Parse(Molecule* molecule){
215215 else if(inputTerms[j] == "c"){
216216 molecule->GetAtomVect()->push_back(new Catom(x, y, z));
217217 }
218+ else if(inputTerms[j] == "n"){
219+ molecule->GetAtomVect()->push_back(new Natom(x, y, z));
220+ }
221+ else if(inputTerms[j] == "o"){
222+ molecule->GetAtomVect()->push_back(new Oatom(x, y, z));
223+ }
218224 else if(inputTerms[j] == "s"){
219225 molecule->GetAtomVect()->push_back(new Satom(x, y, z));
220226 }
--- a/src/base/atoms/Atom.h
+++ b/src/base/atoms/Atom.h
@@ -81,8 +81,8 @@ protected:
8181 double effectiveNuclearChargeMsp; // Table 1.5 in J. A. Pople book
8282 double effectiveNuclearChargeMd; // Table 1.5 in J. A. Pople book
8383 int GetEffectivePrincipalQuantumNumber(ShellType shellType); // Table 1.4 in J. A. Pople book
84- double indoF2; // (3.89) in J. A. Pople book
85- double indoG1; // (3.88) in J. A. Pople book
84+ double indoF2; // Table 3.6 in J. A. Pople book
85+ double indoG1; // Table 3.6 in J. A. Pople book
8686 double zindoF0ss; // Table 1 in ref. [RZ_1976], Table 1 in [AEZ_1986], or Table 1 in [GD_1972]
8787 double zindoF0sd; // Table 1 in [AEZ_1986]
8888 double zindoF0dd; // Table 1 in [AEZ_1986]
--- /dev/null
+++ b/src/base/atoms/Natom.h
@@ -0,0 +1,103 @@
1+#ifndef INCLUDED_NATOM
2+#define INCLUDED_NATOM
3+#include"Atom.h"
4+
5+using namespace std;
6+using namespace MolDS_base;
7+
8+namespace MolDS_base_atoms{
9+
10+class Natom : public Atom {
11+public:
12+ Natom(double x, double y, double z);
13+ double GetCoreIntegral(OrbitalType orbital, double gamma, bool isGuess, TheoryType theory);
14+private:
15+};
16+
17+Natom::Natom(double x, double y, double z) : Atom(x, y, z){
18+ this->atomType = N;
19+ this->atomicMass = 14.00674*Parameters::GetInstance()->GetGMolin2AU();
20+ this->valence.push_back(s);
21+ this->valence.push_back(py);
22+ this->valence.push_back(pz);
23+ this->valence.push_back(px);
24+ this->bondingParameter = -25.0*Parameters::GetInstance()->GetEV2AU();
25+ this->bondingParameterSZindo = -26.0*Parameters::GetInstance()->GetEV2AU();
26+ this->bondingParameterDZindo = 0.0;
27+ this->coreCharge = 5.0;
28+ this->imuAmuS = 19.316*Parameters::GetInstance()->GetEV2AU();
29+ this->imuAmuP = 7.275*Parameters::GetInstance()->GetEV2AU();
30+ this->imuAmuD = 0.0;
31+ this->valenceShellType = l;
32+ this->effectiveNuclearChargeK = 6.7;
33+ this->effectiveNuclearChargeL = 3.90;
34+ this->effectiveNuclearChargeMsp = 0.0;
35+ this->effectiveNuclearChargeMd = 0.0;
36+ this->numberValenceElectrons = 5;
37+ this->indoG1 = 0.346029;
38+ this->indoF2 = 0.219055;
39+ this->zindoF0ss = 12.01 * Parameters::GetInstance()->GetEV2AU();
40+ this->zindoF0sd = 0.0;
41+ this->zindoF0dd = 0.0;
42+ this->zindoG1sp = 72255*Parameters::GetInstance()->GetKayser2AU();
43+ this->zindoF2pp = 52100*Parameters::GetInstance()->GetKayser2AU();
44+ this->zindoG2sd = 0.0;
45+ this->zindoG1pd = 0.0;
46+ this->zindoF2pd = 0.0;
47+ this->zindoG3pd = 0.0;
48+ this->zindoF2dd = 0.0;
49+ this->zindoF4dd = 0.0;
50+ this->IonPotS = 25.69 * Parameters::GetInstance()->GetEV2AU();
51+ this->IonPotP = 14.05 * Parameters::GetInstance()->GetEV2AU();
52+ this->IonPotD = 0.0 * Parameters::GetInstance()->GetEV2AU();
53+}
54+
55+double Natom::GetCoreIntegral(OrbitalType orbital, double gamma, bool isGuess, TheoryType theory){
56+ double value = 0.0;
57+
58+ if(theory == INDO){
59+ if(orbital == s){
60+ value = -1.0*this->imuAmuS;
61+ if(!isGuess){
62+ value -= (this->coreCharge-0.5)*gamma - (this->coreCharge - 1.5)*this->indoG1/6.0;
63+ }
64+ }
65+ else if(orbital == px || orbital == py || orbital == pz){
66+ value = -1.0*this->imuAmuP;
67+ if(!isGuess){
68+ value -= (this->coreCharge-0.5)*gamma
69+ - this->indoG1/3.0
70+ - (this->coreCharge - 2.5)*this->indoF2*2.0/25.0;
71+ }
72+ }
73+ else{
74+ stringstream ss;
75+ ss << this->errorMessageIndoCoreIntegral;
76+ ss << this->errorMessageAtomType << AtomTypeStr(this->atomType) << endl;
77+ ss << this->errorMessageOrbitalType << OrbitalTypeStr(orbital) << endl;
78+ throw MolDSException(ss.str());
79+ }
80+ }
81+ else if(theory == ZINDOS){
82+ if(orbital == s){
83+ value = this->GetZindoCoreIntegral(orbital, 2, 3, 0);
84+ }
85+ else if(orbital == px || orbital == py || orbital == pz){
86+ value = this->GetZindoCoreIntegral(orbital, 2, 3, 0);
87+ }
88+ else{
89+ stringstream ss;
90+ ss << this->errorMessageZindoSCoreIntegral;
91+ ss << this->errorMessageAtomType << AtomTypeStr(this->atomType) << endl;
92+ ss << this->errorMessageOrbitalType << OrbitalTypeStr(orbital) << endl;
93+ throw MolDSException(ss.str());
94+ }
95+ }
96+
97+ return value;
98+}
99+
100+
101+
102+}
103+#endif
--- /dev/null
+++ b/src/base/atoms/Oatom.h
@@ -0,0 +1,103 @@
1+#ifndef INCLUDED_OATOM
2+#define INCLUDED_OATOM
3+#include"Atom.h"
4+
5+using namespace std;
6+using namespace MolDS_base;
7+
8+namespace MolDS_base_atoms{
9+
10+class Oatom : public Atom {
11+public:
12+ Oatom(double x, double y, double z);
13+ double GetCoreIntegral(OrbitalType orbital, double gamma, bool isGuess, TheoryType theory);
14+private:
15+};
16+
17+Oatom::Oatom(double x, double y, double z) : Atom(x, y, z){
18+ this->atomType = O;
19+ this->atomicMass = 15.9994*Parameters::GetInstance()->GetGMolin2AU();
20+ this->valence.push_back(s);
21+ this->valence.push_back(py);
22+ this->valence.push_back(pz);
23+ this->valence.push_back(px);
24+ this->bondingParameter = -31.0*Parameters::GetInstance()->GetEV2AU();
25+ this->bondingParameterSZindo = -34.0*Parameters::GetInstance()->GetEV2AU();
26+ this->bondingParameterDZindo = 0.0;
27+ this->coreCharge = 6.0;
28+ this->imuAmuS = 25.390*Parameters::GetInstance()->GetEV2AU();
29+ this->imuAmuP = 9.111*Parameters::GetInstance()->GetEV2AU();
30+ this->imuAmuD = 0.0;
31+ this->valenceShellType = l;
32+ this->effectiveNuclearChargeK = 7.70;
33+ this->effectiveNuclearChargeL = 4.55;
34+ this->effectiveNuclearChargeMsp = 0.0;
35+ this->effectiveNuclearChargeMd = 0.0;
36+ this->numberValenceElectrons = 6;
37+ this->indoG1 = 0.346029;
38+ this->indoF2 = 0.219055;
39+ this->zindoF0ss = 13.00 * Parameters::GetInstance()->GetEV2AU();
40+ this->zindoF0sd = 0.0;
41+ this->zindoF0dd = 0.0;
42+ this->zindoG1sp = 95298*Parameters::GetInstance()->GetKayser2AU();
43+ this->zindoF2pp = 55675*Parameters::GetInstance()->GetKayser2AU();
44+ this->zindoG2sd = 0.0;
45+ this->zindoG1pd = 0.0;
46+ this->zindoF2pd = 0.0;
47+ this->zindoG3pd = 0.0;
48+ this->zindoF2dd = 0.0;
49+ this->zindoF4dd = 0.0;
50+ this->IonPotS = 32.90 * Parameters::GetInstance()->GetEV2AU();
51+ this->IonPotP = 17.28 * Parameters::GetInstance()->GetEV2AU();
52+ this->IonPotD = 0.0 * Parameters::GetInstance()->GetEV2AU();
53+}
54+
55+double Oatom::GetCoreIntegral(OrbitalType orbital, double gamma, bool isGuess, TheoryType theory){
56+ double value = 0.0;
57+
58+ if(theory == INDO){
59+ if(orbital == s){
60+ value = -1.0*this->imuAmuS;
61+ if(!isGuess){
62+ value -= (this->coreCharge-0.5)*gamma - (this->coreCharge - 1.5)*this->indoG1/6.0;
63+ }
64+ }
65+ else if(orbital == px || orbital == py || orbital == pz){
66+ value = -1.0*this->imuAmuP;
67+ if(!isGuess){
68+ value -= (this->coreCharge-0.5)*gamma
69+ - this->indoG1/3.0
70+ - (this->coreCharge - 2.5)*this->indoF2*2.0/25.0;
71+ }
72+ }
73+ else{
74+ stringstream ss;
75+ ss << this->errorMessageIndoCoreIntegral;
76+ ss << this->errorMessageAtomType << AtomTypeStr(this->atomType) << endl;
77+ ss << this->errorMessageOrbitalType << OrbitalTypeStr(orbital) << endl;
78+ throw MolDSException(ss.str());
79+ }
80+ }
81+ else if(theory == ZINDOS){
82+ if(orbital == s){
83+ value = this->GetZindoCoreIntegral(orbital, 2, 4, 0);
84+ }
85+ else if(orbital == px || orbital == py || orbital == pz){
86+ value = this->GetZindoCoreIntegral(orbital, 2, 4, 0);
87+ }
88+ else{
89+ stringstream ss;
90+ ss << this->errorMessageZindoSCoreIntegral;
91+ ss << this->errorMessageAtomType << AtomTypeStr(this->atomType) << endl;
92+ ss << this->errorMessageOrbitalType << OrbitalTypeStr(orbital) << endl;
93+ throw MolDSException(ss.str());
94+ }
95+ }
96+
97+ return value;
98+}
99+
100+
101+
102+}
103+#endif
--- a/src/input.in
+++ b/src/input.in
@@ -19,6 +19,9 @@ CIS
1919 nstates 1000
2020 CIS_END
2121
22+
23+
24+
2225 //INERTIA
2326 // origin 1.0 2.0 30.0
2427 //INERTIA_END
@@ -37,6 +40,22 @@ TRANSLATE
3740 //difference 100.0 200.0 300.0
3841 TRANSLATE_END
3942
43+
44+// NH3
45+//GEOMETRY
46+// N 0.950135 0.471698 0.000000
47+// H 1.283457 -0.471115 0.000000
48+// H 1.283474 0.943098 0.816497
49+// H 1.283474 0.943098 -0.816497
50+//GEOMETRY_END
51+
52+// H2O
53+GEOMETRY
54+ O 0.869272 0.767931 0.020109
55+ H 1.829272 0.767931 0.020109
56+ H 0.548818 1.672867 0.020109
57+GEOMETRY_END
58+
4059 // S2
4160 //GEOMETRY
4261 // S 0.424528 0.741240 0.000000
@@ -55,13 +74,13 @@ TRANSLATE_END
5574 //GEOMETRY_END
5675
5776 //metane
58-GEOMETRY
59- C 0.647389 0.820131 0.000000
60- H 1.004043 -0.188679 0.000000
61- H 1.004062 1.324529 0.873652
62- H 1.004062 1.324529 -0.873652
63- H -0.422611 0.820144 0.000000
64-GEOMETRY_END
77+//GEOMETRY
78+// C 0.647389 0.820131 0.000000
79+// H 1.004043 -0.188679 0.000000
80+// H 1.004062 1.324529 0.873652
81+// H 1.004062 1.324529 -0.873652
82+// H -0.422611 0.820144 0.000000
83+//GEOMETRY_END
6584
6685
6786 // c2