• 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ón3bb6cba4f87ebfa76b9d049028961b1ee71e6f88 (tree)
Tiempo2012-06-03 18:49:34
AutorMikiya Fujii <mikiya.fujii@gmai...>
CommiterMikiya Fujii

Log Message

Equation numbers for NDDO-multipole-multipole interactions.

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

Cambiar Resumen

Diferencia incremental

--- a/src/mndo/Mndo.cpp
+++ b/src/mndo/Mndo.cpp
@@ -4039,9 +4039,11 @@ double Mndo::GetSemiEmpiricalMultipoleInteraction(MultipoleType multipoleA,
40394039 double value = 0.0;
40404040 double a = rhoA + rhoB;
40414041
4042+ // Eq. (52) in [DT_1977]
40424043 if(multipoleA == sQ && multipoleB == sQ){
40434044 value = pow(pow(Rab,2.0) + pow(a,2.0), -0.5);
40444045 }
4046+ // Eq. (53) in [DT_1977]
40454047 else if(multipoleA == sQ && multipoleB == muz){
40464048 double temp1 = pow(Rab+DB,2.0) + pow(a,2.0);
40474049 double temp2 = pow(Rab-DB,2.0) + pow(a,2.0);
@@ -4052,6 +4054,7 @@ double Mndo::GetSemiEmpiricalMultipoleInteraction(MultipoleType multipoleA,
40524054 rhoB, rhoA, DB, DA, Rab);
40534055 value *= pow(-1.0,1.0);
40544056 }
4057+ // Eq. (54) in [DT_1977]
40554058 else if(multipoleA == sQ && multipoleB == Qxx){
40564059 double temp1 = pow(Rab,2.0) + pow(2.0*DB,2.0) + pow(a,2.0);
40574060 double temp2 = pow(Rab,2.0) + pow(a,2.0);
@@ -4071,6 +4074,7 @@ double Mndo::GetSemiEmpiricalMultipoleInteraction(MultipoleType multipoleA,
40714074 rhoB, rhoA, DB, DA, Rab);
40724075 value *= pow(-1.0,2.0);
40734076 }
4077+ // Eq. (55) in [DT_1977]
40744078 else if(multipoleA == sQ && multipoleB == Qzz){
40754079 double temp1 = pow(Rab+2.0*DB,2.0) + pow(a,2.0);
40764080 double temp2 = pow(Rab,2.0) + pow(a,2.0);
@@ -4082,6 +4086,7 @@ double Mndo::GetSemiEmpiricalMultipoleInteraction(MultipoleType multipoleA,
40824086 rhoB, rhoA, DB, DA, Rab);
40834087 value *= pow(-1.0,2.0);
40844088 }
4089+ // Eq. (56) in [DT_1977]
40854090 else if(multipoleA == mux && multipoleB == mux){
40864091 double temp1 = pow(Rab,2.0) + pow(DA-DB,2.0) + pow(a,2.0);
40874092 double temp2 = pow(Rab,2.0) + pow(DA+DB,2.0) + pow(a,2.0);
@@ -4091,6 +4096,7 @@ double Mndo::GetSemiEmpiricalMultipoleInteraction(MultipoleType multipoleA,
40914096 value = this->GetSemiEmpiricalMultipoleInteraction(mux, mux,
40924097 rhoA, rhoB, DA, DB, Rab);
40934098 }
4099+ // Eq. (57) in [DT_1977]
40944100 else if(multipoleA == muz && multipoleB == muz){
40954101 double temp1 = pow(Rab+DA-DB,2.0) + pow(a,2.0);
40964102 double temp2 = pow(Rab+DA+DB,2.0) + pow(a,2.0);
@@ -4099,6 +4105,7 @@ double Mndo::GetSemiEmpiricalMultipoleInteraction(MultipoleType multipoleA,
40994105 value = pow(temp1,-0.5)/4.0 - pow(temp2,-0.5)/4.0
41004106 -pow(temp3,-0.5)/4.0 + pow(temp4,-0.5)/4.0;
41014107 }
4108+ // Eq. (58) in [DT_1977]
41024109 else if(multipoleA == mux && multipoleB == Qxz){
41034110 double temp1 = pow(Rab-DB,2.0) + pow(DA-DB,2.0) + pow(a,2.0);
41044111 double temp2 = pow(Rab-DB,2.0) + pow(DA+DB,2.0) + pow(a,2.0);
@@ -4121,6 +4128,7 @@ double Mndo::GetSemiEmpiricalMultipoleInteraction(MultipoleType multipoleA,
41214128 rhoB, rhoA, DB, DA, Rab);
41224129 value *= pow(-1.0,3.0);
41234130 }
4131+ // Eq. (59) in [DT_1977]
41244132 else if(multipoleA == muz && multipoleB == Qxx){
41254133 double temp1 = pow(Rab+DA,2.0) + pow(2.0*DB,2.0) + pow(a,2.0);
41264134 double temp2 = pow(Rab-DA,2.0) + pow(2.0*DB,2.0) + pow(a,2.0);
@@ -4143,6 +4151,7 @@ double Mndo::GetSemiEmpiricalMultipoleInteraction(MultipoleType multipoleA,
41434151 rhoB, rhoA, DB, DA, Rab);
41444152 value *= pow(-1.0,3.0);
41454153 }
4154+ // Eq. (60) in [DT_1977]
41464155 else if(multipoleA == muz && multipoleB == Qzz){
41474156 double temp1 = pow(Rab+DA-2.0*DB,2.0) + pow(a,2.0);
41484157 double temp2 = pow(Rab-DA-2.0*DB,2.0) + pow(a,2.0);
@@ -4159,6 +4168,7 @@ double Mndo::GetSemiEmpiricalMultipoleInteraction(MultipoleType multipoleA,
41594168 rhoB, rhoA, DB, DA, Rab);
41604169 value *= pow(-1.0,3.0);
41614170 }
4171+ // Eq. (61) in [DT_1977]
41624172 else if(multipoleA == Qxx && multipoleB == Qxx){
41634173 double temp1 = pow(Rab,2.0) + 4.0*pow(DA-DB,2.0) + pow(a,2.0);
41644174 double temp2 = pow(Rab,2.0) + 4.0*pow(DA+DB,2.0) + pow(a,2.0);
@@ -4173,6 +4183,7 @@ double Mndo::GetSemiEmpiricalMultipoleInteraction(MultipoleType multipoleA,
41734183 value = this->GetSemiEmpiricalMultipoleInteraction(Qxx, Qxx,
41744184 rhoA, rhoB, DA, DB, Rab);
41754185 }
4186+ // Eq. (62) in [DT_1977]
41764187 else if(multipoleA == Qxx && multipoleB == Qyy){
41774188 double temp1 = pow(Rab,2.0) + pow(2.0*DA,2.0) + pow(2.0*DB,2.0)+ pow(a,2.0);
41784189 double temp2 = pow(Rab,2.0) + pow(2.0*DA,2.0) + pow(a,2.0);
@@ -4186,6 +4197,7 @@ double Mndo::GetSemiEmpiricalMultipoleInteraction(MultipoleType multipoleA,
41864197 rhoB, rhoA, DB, DA, Rab);
41874198 value *= pow(-1.0,4.0);
41884199 }
4200+ // Eq. (63) in [DT_1977]
41894201 else if(multipoleA == Qxx && multipoleB == Qzz){
41904202 double temp1 = pow(Rab-2.0*DB,2.0) + pow(2.0*DA,2.0) + pow(a,2.0);
41914203 double temp2 = pow(Rab+2.0*DB,2.0) + pow(2.0*DA,2.0) + pow(a,2.0);
@@ -4211,6 +4223,7 @@ double Mndo::GetSemiEmpiricalMultipoleInteraction(MultipoleType multipoleA,
42114223 rhoB, rhoA, DB, DA, Rab);
42124224 value *= pow(-1.0,4.0);
42134225 }
4226+ // Eq. (64) in [DT_1977]
42144227 else if(multipoleA == Qzz && multipoleB == Qzz){
42154228 double temp1 = pow(Rab+2.0*DA-2.0*DB,2.0) + pow(a,2.0);
42164229 double temp2 = pow(Rab+2.0*DA+2.0*DB,2.0) + pow(a,2.0);
@@ -4227,6 +4240,7 @@ double Mndo::GetSemiEmpiricalMultipoleInteraction(MultipoleType multipoleA,
42274240 -pow(temp7,-0.5)/8.0 - pow(temp8,-0.5)/8.0
42284241 +pow(temp9,-0.5)/4.0;
42294242 }
4243+ // Eq. (65) in [DT_1977]
42304244 else if(multipoleA == Qxz && multipoleB == Qxz){
42314245 double temp1 = pow(Rab+DA-DB,2.0) + pow(DA-DB,2.0) + pow(a,2.0);
42324246 double temp2 = pow(Rab+DA-DB,2.0) + pow(DA+DB,2.0) + pow(a,2.0);
@@ -4245,6 +4259,7 @@ double Mndo::GetSemiEmpiricalMultipoleInteraction(MultipoleType multipoleA,
42454259 value = this->GetSemiEmpiricalMultipoleInteraction(Qxz, Qxz,
42464260 rhoA, rhoB, DA, DB, Rab);
42474261 }
4262+ // Eq. (66) in [DT_1977]
42484263 else if(multipoleA == Qxy && multipoleB == Qxy){
42494264 double temp1 = pow(Rab,2.0) + 2.0*pow(DA-DB,2.0) + pow(a,2.0);
42504265 double temp2 = pow(Rab,2.0) + 2.0*pow(DA+DB,2.0) + pow(a,2.0);
@@ -4276,9 +4291,11 @@ double Mndo::GetSemiEmpiricalMultipoleInteractionFirstDerivative(
42764291 double value = 0.0;
42774292 double a = rhoA + rhoB;
42784293
4294+ // Eq. (52) in [DT_1977]
42794295 if(multipoleA == sQ && multipoleB == sQ){
42804296 value = -1.0*Rab*pow(pow(Rab,2.0) + pow(a,2.0), -1.5);
42814297 }
4298+ // Eq. (53) in [DT_1977]
42824299 else if(multipoleA == sQ && multipoleB == muz){
42834300 double temp1 = pow(Rab+DB,2.0) + pow(a,2.0);
42844301 double temp2 = pow(Rab-DB,2.0) + pow(a,2.0);
@@ -4291,6 +4308,7 @@ double Mndo::GetSemiEmpiricalMultipoleInteractionFirstDerivative(
42914308 multipoleB, multipoleA, rhoB, rhoA, DB, DA, Rab);
42924309 value *= pow(-1.0,1.0);
42934310 }
4311+ // Eq. (54) in [DT_1977]
42944312 else if(multipoleA == sQ && multipoleB == Qxx){
42954313 double temp1 = pow(Rab,2.0) + pow(2.0*DB,2.0) + pow(a,2.0);
42964314 double temp2 = pow(Rab,2.0) + pow(a,2.0);
@@ -4312,6 +4330,7 @@ double Mndo::GetSemiEmpiricalMultipoleInteractionFirstDerivative(
43124330 multipoleB, multipoleA, rhoB, rhoA, DB, DA, Rab);
43134331 value *= pow(-1.0,2.0);
43144332 }
4333+ // Eq. (55) in [DT_1977]
43154334 else if(multipoleA == sQ && multipoleB == Qzz){
43164335 double temp1 = pow(Rab+2.0*DB,2.0) + pow(a,2.0);
43174336 double temp2 = pow(Rab,2.0) + pow(a,2.0);
@@ -4326,6 +4345,7 @@ double Mndo::GetSemiEmpiricalMultipoleInteractionFirstDerivative(
43264345 multipoleB, multipoleA, rhoB, rhoA, DB, DA, Rab);
43274346 value *= pow(-1.0,2.0);
43284347 }
4348+ // Eq. (56) in [DT_1977]
43294349 else if(multipoleA == mux && multipoleB == mux){
43304350 double temp1 = pow(Rab,2.0) + pow(DA-DB,2.0) + pow(a,2.0);
43314351 double temp2 = pow(Rab,2.0) + pow(DA+DB,2.0) + pow(a,2.0);
@@ -4337,6 +4357,7 @@ double Mndo::GetSemiEmpiricalMultipoleInteractionFirstDerivative(
43374357 value = this->GetSemiEmpiricalMultipoleInteractionFirstDerivative(
43384358 mux, mux, rhoA, rhoB, DA, DB, Rab);
43394359 }
4360+ // Eq. (57) in [DT_1977]
43404361 else if(multipoleA == muz && multipoleB == muz){
43414362 double temp1 = pow(Rab+DA-DB,2.0) + pow(a,2.0);
43424363 double temp2 = pow(Rab+DA+DB,2.0) + pow(a,2.0);
@@ -4348,6 +4369,7 @@ double Mndo::GetSemiEmpiricalMultipoleInteractionFirstDerivative(
43484369 +(Rab-DA+DB)*pow(temp4,-1.5)/4.0;
43494370 value *= -1.0;
43504371 }
4372+ // Eq. (58) in [DT_1977]
43514373 else if(multipoleA == mux && multipoleB == Qxz){
43524374 double temp1 = pow(Rab-DB,2.0) + pow(DA-DB,2.0) + pow(a,2.0);
43534375 double temp2 = pow(Rab-DB,2.0) + pow(DA+DB,2.0) + pow(a,2.0);
@@ -4373,6 +4395,7 @@ double Mndo::GetSemiEmpiricalMultipoleInteractionFirstDerivative(
43734395 multipoleB, multipoleA, rhoB, rhoA, DB, DA, Rab);
43744396 value *= pow(-1.0,3.0);
43754397 }
4398+ // Eq. (59) in [DT_1977]
43764399 else if(multipoleA == muz && multipoleB == Qxx){
43774400 double temp1 = pow(Rab+DA,2.0) + pow(2.0*DB,2.0) + pow(a,2.0);
43784401 double temp2 = pow(Rab-DA,2.0) + pow(2.0*DB,2.0) + pow(a,2.0);
@@ -4398,6 +4421,7 @@ double Mndo::GetSemiEmpiricalMultipoleInteractionFirstDerivative(
43984421 multipoleB, multipoleA, rhoB, rhoA, DB, DA, Rab);
43994422 value *= pow(-1.0,3.0);
44004423 }
4424+ // Eq. (60) in [DT_1977]
44014425 else if(multipoleA == muz && multipoleB == Qzz){
44024426 double temp1 = pow(Rab+DA-2.0*DB,2.0) + pow(a,2.0);
44034427 double temp2 = pow(Rab-DA-2.0*DB,2.0) + pow(a,2.0);
@@ -4418,6 +4442,7 @@ double Mndo::GetSemiEmpiricalMultipoleInteractionFirstDerivative(
44184442 multipoleB, multipoleA, rhoB, rhoA, DB, DA, Rab);
44194443 value *= pow(-1.0,3.0);
44204444 }
4445+ // Eq. (61) in [DT_1977]
44214446 else if(multipoleA == Qxx && multipoleB == Qxx){
44224447 double temp1 = pow(Rab,2.0) + 4.0*pow(DA-DB,2.0) + pow(a,2.0);
44234448 double temp2 = pow(Rab,2.0) + 4.0*pow(DA+DB,2.0) + pow(a,2.0);
@@ -4435,6 +4460,7 @@ double Mndo::GetSemiEmpiricalMultipoleInteractionFirstDerivative(
44354460 value = this->GetSemiEmpiricalMultipoleInteractionFirstDerivative(
44364461 Qxx, Qxx, rhoA, rhoB, DA, DB, Rab);
44374462 }
4463+ // Eq. (62) in [DT_1977]
44384464 else if(multipoleA == Qxx && multipoleB == Qyy){
44394465 double temp1 = pow(Rab,2.0) + pow(2.0*DA,2.0) + pow(2.0*DB,2.0)+ pow(a,2.0);
44404466 double temp2 = pow(Rab,2.0) + pow(2.0*DA,2.0) + pow(a,2.0);
@@ -4451,6 +4477,7 @@ double Mndo::GetSemiEmpiricalMultipoleInteractionFirstDerivative(
44514477 multipoleB, multipoleA, rhoB, rhoA, DB, DA, Rab);
44524478 value *= pow(-1.0,4.0);
44534479 }
4480+ // Eq. (63) in [DT_1977]
44544481 else if(multipoleA == Qxx && multipoleB == Qzz){
44554482 double temp1 = pow(Rab-2.0*DB,2.0) + pow(2.0*DA,2.0) + pow(a,2.0);
44564483 double temp2 = pow(Rab+2.0*DB,2.0) + pow(2.0*DA,2.0) + pow(a,2.0);
@@ -4480,6 +4507,7 @@ double Mndo::GetSemiEmpiricalMultipoleInteractionFirstDerivative(
44804507 multipoleB, multipoleA, rhoB, rhoA, DB, DA, Rab);
44814508 value *= pow(-1.0,4.0);
44824509 }
4510+ // Eq. (64) in [DT_1977]
44834511 else if(multipoleA == Qzz && multipoleB == Qzz){
44844512 double temp1 = pow(Rab+2.0*DA-2.0*DB,2.0) + pow(a,2.0);
44854513 double temp2 = pow(Rab+2.0*DA+2.0*DB,2.0) + pow(a,2.0);
@@ -4501,6 +4529,7 @@ double Mndo::GetSemiEmpiricalMultipoleInteractionFirstDerivative(
45014529 +(Rab)*pow(temp9,-1.5)/4.0;
45024530 value *= -1.0;
45034531 }
4532+ // Eq. (65) in [DT_1977]
45044533 else if(multipoleA == Qxz && multipoleB == Qxz){
45054534 double temp1 = pow(Rab+DA-DB,2.0) + pow(DA-DB,2.0) + pow(a,2.0);
45064535 double temp2 = pow(Rab+DA-DB,2.0) + pow(DA+DB,2.0) + pow(a,2.0);
@@ -4524,6 +4553,7 @@ double Mndo::GetSemiEmpiricalMultipoleInteractionFirstDerivative(
45244553 value = this->GetSemiEmpiricalMultipoleInteractionFirstDerivative(
45254554 Qxz, Qxz, rhoA, rhoB, DA, DB, Rab);
45264555 }
4556+ // Eq. (66) in [DT_1977]
45274557 else if(multipoleA == Qxy && multipoleB == Qxy){
45284558 double temp1 = pow(Rab,2.0) + 2.0*pow(DA-DB,2.0) + pow(a,2.0);
45294559 double temp2 = pow(Rab,2.0) + 2.0*pow(DA+DB,2.0) + pow(a,2.0);