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

Comparing trunk/OOPSE/libmdtools/SimSetup.cpp (file contents):
Revision 965 by gezelter, Mon Jan 19 21:17:39 2004 UTC vs.
Revision 999 by chrisfen, Fri Jan 30 15:01:09 2004 UTC

# Line 24 | Line 24
24   #define NPTxyz_ENS     4
25  
26  
27 < #define FF_DUFF 0
28 < #define FF_LJ   1
29 < #define FF_EAM  2
27 > #define FF_DUFF  0
28 > #define FF_LJ    1
29 > #define FF_EAM   2
30 > #define FF_H2O 3
31  
32   using namespace std;
33  
# Line 174 | Line 175 | void SimSetup::makeMolecules(void){
175    bend_set* theBends;
176    torsion_set* theTorsions;
177  
177
178    //init the forceField paramters
179  
180    the_ff->readParams();
# Line 182 | Line 182 | void SimSetup::makeMolecules(void){
182  
183    // init the atoms
184  
185 +  double phi, theta, psi;
186 +  double sux, suy, suz;
187 +  double Axx, Axy, Axz, Ayx, Ayy, Ayz, Azx, Azy, Azz;
188    double ux, uy, uz, u, uSqr;
189  
190    for (k = 0; k < nInfo; k++){
# Line 218 | Line 221 | void SimSetup::makeMolecules(void){
221            info[k].n_oriented++;
222            molInfo.myAtoms[j] = dAtom;
223  
224 <          ux = currentAtom->getOrntX();
225 <          uy = currentAtom->getOrntY();
226 <          uz = currentAtom->getOrntZ();
224 >          // Directional Atoms have standard unit vectors which are oriented
225 >          // in space using the three Euler angles.  We assume the standard
226 >          // unit vector was originally along the z axis below.
227 >
228 >          phi = currentAtom->getEulerPhi() * M_PI / 180.0;
229 >          theta = currentAtom->getEulerTheta() * M_PI / 180.0;
230 >          psi = currentAtom->getEulerPsi()* M_PI / 180.0;
231 >            
232 >          Axx = (cos(phi) * cos(psi)) - (sin(phi) * cos(theta) * sin(psi));
233 >          Axy = (sin(phi) * cos(psi)) + (cos(phi) * cos(theta) * sin(psi));
234 >          Axz = sin(theta) * sin(psi);
235 >          
236 >          Ayx = -(cos(phi) * sin(psi)) - (sin(phi) * cos(theta) * cos(psi));
237 >          Ayy = -(sin(phi) * sin(psi)) + (cos(phi) * cos(theta) * cos(psi));
238 >          Ayz = sin(theta) * cos(psi);
239 >          
240 >          Azx = sin(phi) * sin(theta);
241 >          Azy = -cos(phi) * sin(theta);
242 >          Azz = cos(theta);
243 >
244 >          sux = 0.0;
245 >          suy = 0.0;
246 >          suz = 1.0;
247 >
248 >          ux = (Axx * sux) + (Ayx * suy) + (Azx * suz);
249 >          uy = (Axy * sux) + (Ayy * suy) + (Azy * suz);
250 >          uz = (Axz * sux) + (Ayz * suy) + (Azz * suz);
251  
252            uSqr = (ux * ux) + (uy * uy) + (uz * uz);
253  
# Line 609 | Line 636 | void SimSetup::gatherInfo(void){
636    else if (!strcasecmp(force_field, "EAM")){
637      ffCase = FF_EAM;
638    }
639 +  else if (!strcasecmp(force_field, "WATER")){
640 +    ffCase = FF_H2O;
641 +  }
642    else{
643      sprintf(painCave.errMsg, "SimSetup Error. Unrecognized force field -> %s\n",
644              force_field);
# Line 813 | Line 843 | void SimSetup::gatherInfo(void){
843    }
844  
845   #ifdef IS_MPI
846 <  strcpy(checkPointMsg, "Succesfully gathered all information from Bass\n");
846 >  strcpy(checkPointMsg, "Successfully gathered all information from Bass\n");
847    MPIcheckPoint();
848   #endif // is_mpi
849   }
# Line 1110 | Line 1140 | void SimSetup::createFF(void){
1140        the_ff = new EAM_FF();
1141        break;
1142  
1143 +    case FF_H2O:
1144 +      the_ff = new WATER();
1145 +      break;
1146 +
1147      default:
1148        sprintf(painCave.errMsg,
1149                "SimSetup Error. Unrecognized force field in case statement.\n");

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines