• 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ón164f33d2c737f8c0d0cc55da4d2a0b6e81c71c10 (tree)
Tiempo2011-09-28 22:02:32
AutorMikiya Fujii <mikiya.fujii@gmai...>
CommiterMikiya Fujii

Log Message

Cndo2::GetGaussianOverlap is refactored.

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

Cambiar Resumen

Diferencia incremental

--- a/src/cndo/Cndo2.h
+++ b/src/cndo/Cndo2.h
@@ -1242,8 +1242,10 @@ double Cndo2::GetGaussianOverlapSaSb(double gaussianExponentA,
12421242 double value;
12431243 double temp1 = 0.0;
12441244 double temp2 = 0.0;
1245- temp1 = 2.0*pow(gaussianExponentA*gaussianExponentB, 0.5)/(gaussianExponentA+gaussianExponentB);
1246- temp2 = -1.0* gaussianExponentA*gaussianExponentB/(gaussianExponentA+gaussianExponentB);
1245+ temp1 = 2.0*pow(gaussianExponentA*gaussianExponentB, 0.5)
1246+ /(gaussianExponentA+gaussianExponentB);
1247+ temp2 = -1.0* gaussianExponentA*gaussianExponentB
1248+ /(gaussianExponentA+gaussianExponentB);
12471249 value = pow(temp1, 1.5)*exp(temp2*pow(Rab, 2.0));
12481250 return value;
12491251 }
@@ -1258,32 +1260,32 @@ double Cndo2::GetGaussianOverlap(AtomType atomTypeA,
12581260 double gaussianExponentB,
12591261 double dx, double dy, double dz, double Rab){
12601262
1261- double value = this->GetGaussianOverlapSaSb(gaussianExponentA,
1262- gaussianExponentB, Rab);
1263+ double value = 0.0;
12631264 if(valenceOrbitalA == s && valenceOrbitalB == s){
1265+ value = 1.0;
12641266 }
12651267 else if(valenceOrbitalA == s && valenceOrbitalB == px){
1266- value *= 2.0*gaussianExponentA*pow(gaussianExponentB, 0.5)*dx;
1268+ value = 2.0*gaussianExponentA*pow(gaussianExponentB, 0.5)*dx;
12671269 value /= (gaussianExponentA+gaussianExponentB);
12681270 }
12691271 else if(valenceOrbitalA == s && valenceOrbitalB == py){
1270- value *= 2.0*gaussianExponentA*pow(gaussianExponentB, 0.5)*dy;
1272+ value = 2.0*gaussianExponentA*pow(gaussianExponentB, 0.5)*dy;
12711273 value /= (gaussianExponentA+gaussianExponentB);
12721274 }
12731275 else if(valenceOrbitalA == s && valenceOrbitalB == pz){
1274- value *= 2.0*gaussianExponentA*pow(gaussianExponentB, 0.5)*dz;
1276+ value = 2.0*gaussianExponentA*pow(gaussianExponentB, 0.5)*dz;
12751277 value /= (gaussianExponentA+gaussianExponentB);
12761278 }
12771279 else if(valenceOrbitalA == px && valenceOrbitalB == s){
1278- value *= -2.0*pow(gaussianExponentA, 0.5)*gaussianExponentB*dx;
1280+ value = -2.0*pow(gaussianExponentA, 0.5)*gaussianExponentB*dx;
12791281 value /= (gaussianExponentA+gaussianExponentB);
12801282 }
12811283 else if(valenceOrbitalA == py && valenceOrbitalB == s){
1282- value *= -2.0*pow(gaussianExponentA, 0.5)*gaussianExponentB*dy;
1284+ value = -2.0*pow(gaussianExponentA, 0.5)*gaussianExponentB*dy;
12831285 value /= (gaussianExponentA+gaussianExponentB);
12841286 }
12851287 else if(valenceOrbitalA == pz && valenceOrbitalB == s){
1286- value *= -2.0*pow(gaussianExponentA, 0.5)*gaussianExponentB*dz;
1288+ value = -2.0*pow(gaussianExponentA, 0.5)*gaussianExponentB*dz;
12871289 value /= (gaussianExponentA+gaussianExponentB);
12881290 }
12891291 else if(valenceOrbitalA == px && valenceOrbitalB == px){
@@ -1291,22 +1293,22 @@ double Cndo2::GetGaussianOverlap(AtomType atomTypeA,
12911293 temp = -1.0*pow(dx,2.0)*gaussianExponentA*gaussianExponentB;
12921294 temp /= (gaussianExponentA+gaussianExponentB);
12931295 temp += 0.5;
1294- value *= 4.0*pow(gaussianExponentA*gaussianExponentB, 0.5);
1296+ value = 4.0*pow(gaussianExponentA*gaussianExponentB, 0.5);
12951297 value /= (gaussianExponentA+gaussianExponentB);
12961298 value *= temp;
12971299 }
12981300 else if(valenceOrbitalA == px && valenceOrbitalB == py){
1299- value *= -4.0*pow(gaussianExponentA*gaussianExponentB, 1.5);
1301+ value = -4.0*pow(gaussianExponentA*gaussianExponentB, 1.5);
13001302 value *= pow(gaussianExponentA+gaussianExponentB, -2.0);
13011303 value *= dx*dy;
13021304 }
13031305 else if(valenceOrbitalA == px && valenceOrbitalB == pz){
1304- value *= -4.0*pow(gaussianExponentA*gaussianExponentB, 1.5);
1306+ value = -4.0*pow(gaussianExponentA*gaussianExponentB, 1.5);
13051307 value *= pow(gaussianExponentA+gaussianExponentB, -2.0);
13061308 value *= dx*dz;
13071309 }
13081310 else if(valenceOrbitalA == py && valenceOrbitalB == px){
1309- value *= -4.0*pow(gaussianExponentA*gaussianExponentB, 1.5);
1311+ value = -4.0*pow(gaussianExponentA*gaussianExponentB, 1.5);
13101312 value *= pow(gaussianExponentA+gaussianExponentB, -2.0);
13111313 value *= dy*dx;
13121314 }
@@ -1315,22 +1317,22 @@ double Cndo2::GetGaussianOverlap(AtomType atomTypeA,
13151317 temp = -1.0*pow(dy,2.0)*gaussianExponentA*gaussianExponentB;
13161318 temp /= (gaussianExponentA+gaussianExponentB);
13171319 temp += 0.5;
1318- value *= 4.0*pow(gaussianExponentA*gaussianExponentB, 0.5);
1320+ value = 4.0*pow(gaussianExponentA*gaussianExponentB, 0.5);
13191321 value /= (gaussianExponentA+gaussianExponentB);
13201322 value *= temp;
13211323 }
13221324 else if(valenceOrbitalA == py && valenceOrbitalB == pz){
1323- value *= -4.0*pow(gaussianExponentA*gaussianExponentB, 1.5);
1325+ value = -4.0*pow(gaussianExponentA*gaussianExponentB, 1.5);
13241326 value *= pow(gaussianExponentA+gaussianExponentB, -2.0);
13251327 value *= dy*dz;
13261328 }
13271329 else if(valenceOrbitalA == pz && valenceOrbitalB == px){
1328- value *= -4.0*pow(gaussianExponentA*gaussianExponentB, 1.5);
1330+ value = -4.0*pow(gaussianExponentA*gaussianExponentB, 1.5);
13291331 value *= pow(gaussianExponentA+gaussianExponentB, -2.0);
13301332 value *= dz*dx;
13311333 }
13321334 else if(valenceOrbitalA == pz && valenceOrbitalB == py){
1333- value *= -4.0*pow(gaussianExponentA*gaussianExponentB, 1.5);
1335+ value = -4.0*pow(gaussianExponentA*gaussianExponentB, 1.5);
13341336 value *= pow(gaussianExponentA+gaussianExponentB, -2.0);
13351337 value *= dz*dy;
13361338 }
@@ -1339,7 +1341,7 @@ double Cndo2::GetGaussianOverlap(AtomType atomTypeA,
13391341 temp = -1.0*pow(dz,2.0)*gaussianExponentA*gaussianExponentB;
13401342 temp /= (gaussianExponentA+gaussianExponentB);
13411343 temp += 0.5;
1342- value *= 4.0*pow(gaussianExponentA*gaussianExponentB, 0.5);
1344+ value = 4.0*pow(gaussianExponentA*gaussianExponentB, 0.5);
13431345 value /= (gaussianExponentA+gaussianExponentB);
13441346 value *= temp;
13451347 }
@@ -1354,6 +1356,9 @@ double Cndo2::GetGaussianOverlap(AtomType atomTypeA,
13541356 ss << this->errorMessageOrbitalType << OrbitalTypeStr(valenceOrbitalB) << endl;
13551357 throw MolDSException(ss.str());
13561358 }
1359+ double sasb = this->GetGaussianOverlapSaSb(gaussianExponentA,
1360+ gaussianExponentB, Rab);
1361+ value *= sasb;
13571362
13581363 return value;
13591364 }
--- a/src/input.in
+++ b/src/input.in
@@ -1,8 +1,8 @@
11 // example of the input file
22 THEORY
3- //cndo/2
3+ cndo/2
44 //indo
5- zindo/s
5+ //zindo/s
66 //none
77 //principal_axes
88 //translate