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 1157 by tim, Tue May 11 20:33:41 2004 UTC vs.
Revision 1180 by chrisfen, Thu May 20 20:24:07 2004 UTC

# Line 185 | Line 185 | void SimSetup::makeMolecules(void){
185    RigidBodyStamp* currentRigidBody;
186    CutoffGroupStamp* currentCutoffGroup;
187    CutoffGroup* myCutoffGroup;
188 <  
188 >  int nCutoffGroups;// number of cutoff group of a molecule defined in mdl file
189 >  set<int> cutoffAtomSet; //atoms belong to  cutoffgroup defined at mdl file
190 >
191    bond_pair* theBonds;
192    bend_set* theBends;
193    torsion_set* theTorsions;
# Line 218 | Line 220 | void SimSetup::makeMolecules(void){
220        molInfo.nBends = comp_stamps[stampID]->getNBends();
221        molInfo.nTorsions = comp_stamps[stampID]->getNTorsions();
222        molInfo.nRigidBodies = comp_stamps[stampID]->getNRigidBodies();
223 <      molInfo.nCutoffGroups = comp_stamps[stampID]->getNCutoffGroups();
223 >
224 >      nCutoffGroups = comp_stamps[stampID]->getNCutoffGroups();
225        
226        molInfo.myAtoms = &(info[k].atoms[atomOffset]);
227  
228        if (molInfo.nBonds > 0)
229 <        molInfo.myBonds = new (Bond *) [molInfo.nBonds];
229 >        molInfo.myBonds = new Bond*[molInfo.nBonds];
230        else
231          molInfo.myBonds = NULL;
232  
233        if (molInfo.nBends > 0)
234 <        molInfo.myBends = new (Bend *) [molInfo.nBends];
234 >        molInfo.myBends = new Bend*[molInfo.nBends];
235        else
236          molInfo.myBends = NULL;
237  
238        if (molInfo.nTorsions > 0)
239 <        molInfo.myTorsions = new (Torsion *) [molInfo.nTorsions];
239 >        molInfo.myTorsions = new Torsion *[molInfo.nTorsions];
240        else
241          molInfo.myTorsions = NULL;
242  
# Line 484 | Line 487 | void SimSetup::makeMolecules(void){
487        }
488        
489  
490 <      //creat cutoff group for molecule
490 >      //create cutoff group for molecule
491 >
492 >      cutoffAtomSet.clear();
493        molInfo.myCutoffGroups.clear();
494 <      for (j = 0; j < molInfo.nCutoffGroups; j++){
494 >      
495 >      for (j = 0; j < nCutoffGroups; j++){
496  
497          currentCutoffGroup = comp_stamps[stampID]->getCutoffGroup(j);
498          nMembers = currentCutoffGroup->getNMembers();
# Line 500 | Line 506 | void SimSetup::makeMolecules(void){
506  
507            // tempI is atom numbering on local processor
508            tempI = molI + atomOffset;
509 <
509 >          
510            myCutoffGroup->addAtom(info[k].atoms[tempI]);          
511 +
512 +          cutoffAtomSet.insert(tempI);
513          }
514  
515          molInfo.myCutoffGroups.push_back(myCutoffGroup);
516        }//end for (j = 0; j < molInfo.nCutoffGroups; j++)
517 <      
517 >
518 >      //creat a cutoff group for every atom  in current molecule which does not belong to cutoffgroup defined at mdl file
519 >
520 >      for(j = 0; j < molInfo.nAtoms; j++){
521  
522 +        if(cutoffAtomSet.find(molInfo.myAtoms[j]->getIndex()) == cutoffAtomSet.end()){
523 +          myCutoffGroup = new CutoffGroup();
524 +          myCutoffGroup->addAtom(molInfo.myAtoms[j]);
525 +          molInfo.myCutoffGroups.push_back(myCutoffGroup);
526 +        }
527 +          
528 +      }
529  
530 +              
531 +
532 +
533        // After this is all set up, scan through the atoms to
534        // see if they can be added to the integrableObjects:
535  
# Line 564 | Line 585 | void SimSetup::makeMolecules(void){
585    MPIcheckPoint();
586   #endif // is_mpi
587  
567  // clean up the forcefield
568
569  if (!globals->haveRcut()){
570
571    the_ff->calcRcut();
572
573  } else {
574    
575    the_ff->setRcut( globals->getRcut() );
576  }
577
578  the_ff->cleanMe();
588   }
589  
590   void SimSetup::initFromBass(void){
# Line 939 | Line 948 | void SimSetup::gatherInfo(void){
948  
949      info[i].useInitXSstate = globals->getUseInitXSstate();
950      info[i].orthoTolerance = globals->getOrthoBoxTolerance();
951 <    
951 >
952 >    // check for thermodynamic integration
953 >    if (globals->haveThermIntLambda() && globals->haveThermIntK()) {
954 >      info[i].thermIntLambda = globals->getThermIntLambda();
955 >      info[i].thermIntK = globals->getThermIntK();
956 >      info[i].useThermInt = 1;
957 >      
958 >      Restraints *myRestraint = new Restraints(tot_nmol, info[i].thermIntLambda, info[i].thermIntK);
959 >      info[i].restraint = myRestraint;
960 >    }
961    }
962    
963    //setup seed for random number generator
# Line 1017 | Line 1035 | void SimSetup::finalInfoCheck(void){
1035  
1036      double theRcut, theRsw;
1037  
1038 +    if (globals->haveRcut()) {
1039 +      theRcut = globals->getRcut();
1040 +
1041 +      if (globals->haveRsw())
1042 +        theRsw = globals->getRsw();
1043 +      else
1044 +        theRsw = theRcut;
1045 +      
1046 +      info[i].setDefaultRcut(theRcut, theRsw);
1047 +
1048 +    } else {
1049 +      
1050 +      the_ff->calcRcut();
1051 +      theRcut = info[i].getRcut();
1052 +
1053 +      if (globals->haveRsw())
1054 +        theRsw = globals->getRsw();
1055 +      else
1056 +        theRsw = theRcut;
1057 +      
1058 +      info[i].setDefaultRcut(theRcut, theRsw);
1059 +    }
1060 +
1061      if (globals->getUseRF()){
1062        info[i].useReactionField = 1;
1063 <
1063 >      
1064        if (!globals->haveRcut()){
1065          sprintf(painCave.errMsg,
1066                  "SimSetup Warning: No value was set for the cutoffRadius.\n"
# Line 1096 | Line 1137 | void SimSetup::finalInfoCheck(void){
1137    strcpy(checkPointMsg, "post processing checks out");
1138    MPIcheckPoint();
1139   #endif // is_mpi
1140 +
1141 +  // clean up the forcefield
1142 +  the_ff->cleanMe();
1143   }
1144    
1145   void SimSetup::initSystemCoords(void){
# Line 1226 | Line 1270 | void SimSetup::makeOutNames(void){
1270          }
1271        }
1272  
1273 +      strcpy(info[k].rawPotName, inFileName);
1274 +      nameLength = strlen(info[k].rawPotName);
1275 +      endTest = &(info[k].rawPotName[nameLength - 5]);
1276 +      if (!strcmp(endTest, ".bass")){
1277 +        strcpy(endTest, ".raw");
1278 +      }
1279 +      else if (!strcmp(endTest, ".BASS")){
1280 +        strcpy(endTest, ".raw");
1281 +      }
1282 +      else{
1283 +        endTest = &(info[k].rawPotName[nameLength - 4]);
1284 +        if (!strcmp(endTest, ".bss")){
1285 +          strcpy(endTest, ".raw");
1286 +        }
1287 +        else if (!strcmp(endTest, ".mdl")){
1288 +          strcpy(endTest, ".raw");
1289 +        }
1290 +        else{
1291 +          strcat(info[k].rawPotName, ".raw");
1292 +        }
1293 +      }
1294 +
1295   #ifdef IS_MPI
1296  
1297      }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines