ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/branches/development/src/io/RestReader.cpp
(Generate patch)

Comparing trunk/src/io/RestReader.cpp (file contents):
Revision 423 by chrisfen, Thu Mar 10 19:11:02 2005 UTC vs.
Revision 985 by chrisfen, Wed Jun 7 18:05:19 2006 UTC

# Line 68 | Line 68 | namespace oopse {
68   namespace oopse {
69    
70    RestReader::RestReader( SimInfo* info ) : info_(info){
71 <        
71 >    
72      idealName = "idealCrystal.in";
73      
74      isScanned = false;
# Line 92 | Line 92 | namespace oopse {
92              "File \"idealCrystal.in\" opened successfully for reading." );
93      MPIcheckPoint();
94   #endif
95 +
96      return;  
97    }
98    
# Line 225 | Line 226 | namespace oopse {
226  
227      nTotObjs = info_->getNGlobalIntegrableObjects();
228      haveError = 0;
229 <    
229 >
230      if (worldRank == masterNode) {
231        eof_test = fgets(read_buffer, sizeof(read_buffer), inIdealFile);
232        if( eof_test == NULL ){
# Line 258 | Line 259 | namespace oopse {
259          painCave.isFatal = 1;
260          simError();
261        }
262 <      
262 >
263        for (i=0 ; i < info_->getNGlobalMolecules(); i++) {
264          int which_node = info_->getMolToProc(i);
265          
# Line 269 | Line 270 | namespace oopse {
270            
271            if(mol == NULL) {
272              sprintf(painCave.errMsg,
273 <                   "RestReader Error: Molecule not found on node %d!\n",
274 <                   worldRank);
273 >                    "RestReader Error: Molecule not found on node %d!\n",
274 >                    worldRank);
275              painCave.isFatal = 1;
276              simError();
277            }
# Line 290 | Line 291 | namespace oopse {
291                painCave.isFatal = 1;
292                simError();
293              }
294 <            
295 <            parseIdealLine(read_buffer, integrableObjects[j]);
294 >        
295 >            parseIdealLine(read_buffer, integrableObject);
296 >        
297            }
298          } else {
299            //molecule belongs to slave nodes
# Line 364 | Line 366 | namespace oopse {
366      
367      char *foo; // the pointer to the current string token
368      
369 <    double pos[3];        // position place holders
370 <    double q[4];          // the quaternions
371 <    double RfromQ[3][3];  // the rotation matrix
372 <    double normalize;     // to normalize the reference unit vector
373 <    double uX, uY, uZ;    // reference unit vector place holders
374 <    double uselessToken;
369 >    RealType pos[3];        // position place holders
370 >    RealType q[4];          // the quaternions
371 >    RealType RfromQ[3][3];  // the rotation matrix
372 >    RealType normalize;     // to normalize the reference unit vector
373 >    RealType uX, uY, uZ;    // reference unit vector place holders
374 >    RealType uselessToken;
375      StringTokenizer tokenizer(readLine);
376      int nTokens;
377      
378      nTokens = tokenizer.countTokens();
379 <    
379 >
380      if (nTokens < 14) {
381        sprintf(painCave.errMsg,
382                "RestReader Error: Not enough Tokens.\n");
# Line 383 | Line 385 | namespace oopse {
385      }
386      
387      std::string name = tokenizer.nextToken();
388 <    
388 >
389      if (name != sd->getType()) {
390        
391        sprintf(painCave.errMsg,
# Line 398 | Line 400 | namespace oopse {
400      pos[0] = tokenizer.nextTokenAsDouble();
401      pos[1] = tokenizer.nextTokenAsDouble();
402      pos[2] = tokenizer.nextTokenAsDouble();
403 <    
403 >
404      // store the positions in the stuntdouble as generic data doubles
405      DoubleGenericData* refPosX = new DoubleGenericData();
406      refPosX->setID("refPosX");
407      refPosX->setData(pos[0]);
408      sd->addProperty(refPosX);
409 <    
409 >
410      DoubleGenericData* refPosY = new DoubleGenericData();
411      refPosY->setID("refPosY");
412      refPosY->setData(pos[1]);
# Line 414 | Line 416 | namespace oopse {
416      refPosZ->setID("refPosZ");
417      refPosZ->setData(pos[2]);
418      sd->addProperty(refPosZ);
419 <    
419 >
420      // we don't need the velocities
421      uselessToken = tokenizer.nextTokenAsDouble();
422      uselessToken = tokenizer.nextTokenAsDouble();
# Line 490 | Line 492 | namespace oopse {
492      char *parseErr;
493      
494      std::vector<StuntDouble*> vecParticles;
495 <    std::vector<double> tempZangs;
495 >    std::vector<RealType> tempZangs;
496        
497      inAngFileName = info_->getRestFileName();
498      
# Line 598 | Line 600 | namespace oopse {
600      int index;    
601  
602      int nCurObj;
603 <    double angleTranfer;
603 >    RealType angleTranfer;
604      
605      nTotObjs = info_->getNGlobalIntegrableObjects();
606      haveError = 0;
# Line 642 | Line 644 | namespace oopse {
644          // Get the Node number which has this atom
645          which_node = info_->getMolToProc(i);
646          
647 <        if (worldRank == masterNode) {
647 >        if (which_node == masterNode) {
648            mol = info_->getMoleculeByGlobalIndex(i);
649 <          
649 >
650            if(mol == NULL) {
651              strcpy(painCave.errMsg, "Molecule not found on node 0!");
652              haveError = 1;
653              simError();
654            }
655 <          
655 >
656            for (integrableObject = mol->beginIntegrableObject(ii);
657                 integrableObject != NULL;
658                 integrableObject = mol->nextIntegrableObject(ii)){
# Line 667 | Line 669 | namespace oopse {
669            
670            for(j=0; j < nCurObj; j++){            
671              angleTransfer = tempZangs[index];
672 <            MPI_Send(&angleTransfer, 1, MPI_DOUBLE, which_node,
672 >            MPI_Send(&angleTransfer, 1, MPI_REALTYPE, which_node,
673                       TAKE_THIS_TAG_DOUBLE, MPI_COMM_WORLD);              
674              index++;
675            }
# Line 702 | Line 704 | namespace oopse {
704                 integrableObject != NULL;
705                 integrableObject = mol->nextIntegrableObject(ii)){
706              
707 <            MPI_Recv(&angleTransfer, 1, MPI_DOUBLE, 0,
707 >            MPI_Recv(&angleTransfer, 1, MPI_REALTYPE, 0,
708                       TAKE_THIS_TAG_DOUBLE, MPI_COMM_WORLD, &istatus);
709  
710              integrableObject->setZangle(angleTransfer);
# Line 751 | Line 753 | namespace oopse {
753      MPI_Status istatus;
754      
755      int nCurObj;
756 <    double angleTranfer;
756 >    RealType angleTranfer;
757      
758      nTotObjs = info_->getNGlobalIntegrableObjects();
759      haveError = 0;
# Line 787 | Line 789 | namespace oopse {
789            
790            for(j=0; j < nCurObj; j++){            
791              angleTransfer = 0.0;
792 <            MPI_Send(&angleTransfer, 1, MPI_DOUBLE, which_node,
792 >            MPI_Send(&angleTransfer, 1, MPI_REALTYPE, which_node,
793                       TAKE_THIS_TAG_DOUBLE, MPI_COMM_WORLD);              
794              
795            }
# Line 820 | Line 822 | namespace oopse {
822                 integrableObject != NULL;
823                 integrableObject = mol->nextIntegrableObject(ii)){
824              
825 <            MPI_Recv(&angleTransfer, 1, MPI_DOUBLE, 0,
825 >            MPI_Recv(&angleTransfer, 1, MPI_REALTYPE, 0,
826                       TAKE_THIS_TAG_DOUBLE, MPI_COMM_WORLD, &istatus);
827              vecParticles[j]->setZangle(angleTransfer);
828            }    

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines