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 1282 by chrisfen, Mon Jun 21 15:10:29 2004 UTC vs.
Revision 1283 by gezelter, Mon Jun 21 15:54:27 2004 UTC

# Line 9 | Line 9 | GridBuilder::GridBuilder(RigidBody* rb, int bandWidth)
9    thetaStep = PI / bandwidth;
10    thetaMin = thetaStep / 2.0;
11    phiStep = thetaStep * 2.0;
12        
13  //zero out the rot mats
14  for (i=0; i<3; i++) {
15    for (j=0; j<3; j++) {
16      rotX[i][j] = 0.0;
17      rotZ[i][j] = 0.0;
18      rbMatrix[i][j] = 0.0;
19    }
20  }
12   }
13  
14   GridBuilder::~GridBuilder() {
15   }
16  
17 < void GridBuilder::launchProbe(int forceField, vector<double> sigmaGrid, vector<double> sGrid,
18 <                              vector<double> epsGrid){
17 > void GridBuilder::launchProbe(int forceField, vector<double> sigmaGrid,
18 >                              vector<double> sGrid, vector<double> epsGrid){
19    ofstream sigmaOut("sigma.grid");
20    ofstream sOut("s.grid");
21    ofstream epsOut("eps.grid");
# Line 43 | Line 34 | void GridBuilder::launchProbe(int forceField, vector<d
34    if (startDist < minDist)
35      startDist = minDist;
36  
37 +  printf("startDist = %lf\n", startDist);
38 +
39    //set the initial orientation of the body and loop over theta values
40 <  phiVal = 0.0;
41 <  thetaVal = thetaMin;
42 <  rotBody(phiVal, thetaVal);
43 <  for (k=0; k<bandwidth; k++){  
44 <        //loop over phi values starting with phi = 0.0
45 <    for (j=0; j<bandwidth; j++){
40 >
41 >  for (k =0; k < bandwidth; k++) {
42 >    thetaVal = thetaMin + k*thetaStep;
43 >    for (j=0; j < bandwidth; j++) {
44 >      phiVal = j*phiStep;
45 >
46 >      printf("setting Euler, phi = %lf\ttheta = %lf\n", phiVal, thetaVal);
47 >
48 >      rbMol->setEuler(0.0, thetaVal, phiVal);
49 >
50        releaseProbe(startDist);
51  
52 +      printf("found sigDist = %lf\t sDist = %lf \t epsVal = %lf\n",
53 +             sigDist, sDist, epsVal);
54 +
55        sigList.push_back(sigDist);
56        sList.push_back(sDist);
57        epsList.push_back(epsVal);
58 <      
59 <      phiVal += phiStep;
60 <      rotBody(phiVal, thetaVal);
58 >
59      }
62    phiVal = 0.0;
63    thetaVal += thetaStep;
64    rotBody(phiVal, thetaVal);
65    printf("step theta %i\n",k);
60    }            
61   }
62  
# Line 78 | Line 72 | void GridBuilder::releaseProbe(double farPos){
72    tooClose = 0;
73    epsVal = 0;
74    rhoStep = 0.1; //the distance the probe atom moves between steps
75 <        
82 <        
75 >                
76    while (!tooClose){
77      calcEnergy();
78      potProgress.push_back(potEnergy);
# Line 149 | Line 142 | void GridBuilder::calcEnergy(){
142    }
143    
144    potEnergy = 0.0;
145 +
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    
152    for(i=0; i<rbMol->getNumAtoms(); i++){
153      rbMol->getAtomPos(rbAtomPos, i);
# Line 216 | Line 215 | void GridBuilder::calcEnergy(){
215    }
216   }
217  
219 void GridBuilder::rotBody(double pValue, double tValue){
220  //zero out the euler angles
221  for (l=0; l<3; l++)
222    angles[i] = 0.0;
223        
224  //the phi euler angle is for rotation about the z-axis (we use the zxz convention)
225  angles[0] = pValue;
226  //the second euler angle is for rotation about the x-axis (we use the zxz convention)
227  angles[1] = tValue;
228        
229  //obtain the rotation matrix through the rigid body class
230  rbMol->doEulerToRotMat(angles, rotX);
231  
232  //start from the reference position
233  identityMat3(rbMatrix);
234  rbMol->setA(rbMatrix);
235  
236  //rotate the rigid body
237  matMul3(rotX, rbMatrix, rotatedMat);
238  rbMol->setA(rotatedMat);      
239 }
240
218   void GridBuilder::printGridFiles(){
219    ofstream sigmaOut("sigma.grid");
220    ofstream sOut("s.grid");
# Line 248 | Line 225 | void GridBuilder::printGridFiles(){
225      sOut << sList[k] << "\n0\n";    
226      epsOut << epsList[k] << "\n0\n";
227    }
228 < }
228 > }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines