ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/SHAPES/GridBuilder.cpp
(Generate patch)

Comparing trunk/SHAPES/GridBuilder.cpp (file contents):
Revision 1283 by gezelter, Mon Jun 21 15:54:27 2004 UTC vs.
Revision 1293 by chrisfen, Wed Jun 23 23:47:56 2004 UTC

# Line 1 | Line 1
1   #include "GridBuilder.hpp"
2 #include "MatVec3.h"
2   #define PI 3.14159265359
3  
4  
5 < GridBuilder::GridBuilder(RigidBody* rb, int bandWidth) {
5 > GridBuilder::GridBuilder(RigidBody* rb, int gridWidth) {
6    rbMol = rb;
7 <  bandwidth = bandWidth;
8 <  thetaStep = PI / bandwidth;
7 >  gridwidth = gridWidth;
8 >  thetaStep = PI / gridwidth;
9    thetaMin = thetaStep / 2.0;
10    phiStep = thetaStep * 2.0;
11   }
# Line 22 | Line 21 | void GridBuilder::launchProbe(int forceField, vector<d
21    double startDist;
22    double phiVal;
23    double thetaVal;
24 +  double sigTemp, sTemp, epsTemp, sigProbe;
25    double minDist = 10.0; //minimum start distance
26          
27  sList = sGrid;
27    sigList = sigmaGrid;
28 +  sList = sGrid;
29    epsList = epsGrid;
30    forcefield = forceField;
31 +  
32 +  //load the probe atom parameters
33 +  switch(forcefield){
34 +    case 1:{
35 +      rparHe = 1.4800;
36 +      epsHe = -0.021270;
37 +    }; break;
38 +    case 2:{
39 +      rparHe = 1.14;
40 +      epsHe = 0.0203;
41 +    }; break;
42 +    case 3:{
43 +      rparHe = 2.28;
44 +      epsHe = 0.020269601874;
45 +    }; break;
46 +    case 4:{
47 +      rparHe = 2.5560;
48 +      epsHe = 0.0200;
49 +    }; break;
50 +    case 5:{
51 +      rparHe = 1.14;
52 +      epsHe = 0.0203;
53 +    }; break;
54 +  }
55      
56 <  //first determine the start distance - we always start at least minDist away
56 >  if (rparHe < 2.2)
57 >    sigProbe = 2*rparHe/1.12246204831;
58 >  else
59 >    sigProbe = rparHe;
60 >  
61 >  //determine the start distance - we always start at least minDist away
62    startDist = rbMol->findMaxExtent() + minDist;
63    if (startDist < minDist)
64      startDist = minDist;
65  
37  printf("startDist = %lf\n", startDist);
38
66    //set the initial orientation of the body and loop over theta values
67  
68 <  for (k =0; k < bandwidth; k++) {
68 >  for (k =0; k < gridwidth; k++) {
69      thetaVal = thetaMin + k*thetaStep;
70 <    for (j=0; j < bandwidth; j++) {
70 >    for (j=0; j < gridwidth; j++) {
71        phiVal = j*phiStep;
72  
46      printf("setting Euler, phi = %lf\ttheta = %lf\n", phiVal, thetaVal);
47
73        rbMol->setEuler(0.0, thetaVal, phiVal);
74  
75        releaseProbe(startDist);
76  
77 <      printf("found sigDist = %lf\t sDist = %lf \t epsVal = %lf\n",
78 <             sigDist, sDist, epsVal);
79 <
80 <      sigList.push_back(sigDist);
81 <      sList.push_back(sDist);
82 <      epsList.push_back(epsVal);
83 <
77 >      //translate the values to sigma, s, and epsilon of the rigid body
78 >      sigTemp = 2*sigDist - sigProbe;
79 >      sTemp = (2*(sDist - sigDist))/(0.122462048309) - sigProbe;
80 >      epsTemp = pow(epsVal, 2)/fabs(epsHe);
81 >      
82 >      sigList.push_back(sigTemp);
83 >      sList.push_back(sTemp);
84 >      epsList.push_back(epsTemp);
85      }
86    }            
87   }
# Line 113 | Line 139 | void GridBuilder::calcEnergy(){
139    double rXij, rYij, rZij;
140    double rijSquared;
141    double rValSquared, rValPowerSix;
116  double rparHe, epsHe;
142    double atomRpar, atomEps;
143    double rbAtomPos[3];
144 <  
120 <  //first get the probe atom parameters
121 <  switch(forcefield){
122 <    case 1:{
123 <      rparHe = 1.4800;
124 <      epsHe = -0.021270;
125 <    }; break;
126 <    case 2:{
127 <      rparHe = 1.14;
128 <      epsHe = 0.0203;
129 <    }; break;
130 <    case 3:{
131 <      rparHe = 2.28;
132 <      epsHe = 0.020269601874;
133 <    }; break;
134 <    case 4:{
135 <      rparHe = 2.5560;
136 <      epsHe = 0.0200;
137 <    }; break;
138 <    case 5:{
139 <      rparHe = 1.14;
140 <      epsHe = 0.0203;
141 <    }; break;
142 <  }
143 <  
144 >    
145    potEnergy = 0.0;
146  
146  rbMol->getAtomPos(rbAtomPos, 0);
147
148  printf("atom0 pos = %lf\t%lf\t%lf\n", rbAtomPos[0], rbAtomPos[1], rbAtomPos[2]);
149
150
151  
147    for(i=0; i<rbMol->getNumAtoms(); i++){
148      rbMol->getAtomPos(rbAtomPos, i);
149      
# Line 158 | Line 153 | void GridBuilder::calcEnergy(){
153      
154      rijSquared = rXij * rXij + rYij * rYij + rZij * rZij;
155      
156 <    //in the interest of keeping the code more compact, we are being less efficient by placing
157 <    //a switch statement in the calculation loop
156 >    //in the interest of keeping the code more compact, we are being less
157 >    //efficient by placing a switch statement in the calculation loop
158      switch(forcefield){
159        case 1:{
160          //we are using the CHARMm force field
# Line 226 | Line 221 | void GridBuilder::printGridFiles(){
221      epsOut << epsList[k] << "\n0\n";
222    }
223   }
224 +

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines