| 68 |  | namespace oopse { | 
| 69 |  |  | 
| 70 |  | RestReader::RestReader( SimInfo* info ) : info_(info){ | 
| 71 | < |  | 
| 71 | > |  | 
| 72 |  | idealName = "idealCrystal.in"; | 
| 73 |  |  | 
| 74 |  | isScanned = false; | 
| 92 |  | "File \"idealCrystal.in\" opened successfully for reading." ); | 
| 93 |  | MPIcheckPoint(); | 
| 94 |  | #endif | 
| 95 | + |  | 
| 96 |  | return; | 
| 97 |  | } | 
| 98 |  |  | 
| 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 ){ | 
| 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 |  |  | 
| 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 |  | } | 
| 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 | 
| 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"); | 
| 385 |  | } | 
| 386 |  |  | 
| 387 |  | std::string name = tokenizer.nextToken(); | 
| 388 | < |  | 
| 388 | > |  | 
| 389 |  | if (name != sd->getType()) { | 
| 390 |  |  | 
| 391 |  | sprintf(painCave.errMsg, | 
| 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]); | 
| 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(); | 
| 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 |  |  | 
| 600 |  | int index; | 
| 601 |  |  | 
| 602 |  | int nCurObj; | 
| 603 | < | double angleTranfer; | 
| 603 | > | RealType angleTranfer; | 
| 604 |  |  | 
| 605 |  | nTotObjs = info_->getNGlobalIntegrableObjects(); | 
| 606 |  | haveError = 0; | 
| 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 |  | } | 
| 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); | 
| 753 |  | MPI_Status istatus; | 
| 754 |  |  | 
| 755 |  | int nCurObj; | 
| 756 | < | double angleTranfer; | 
| 756 | > | RealType angleTranfer; | 
| 757 |  |  | 
| 758 |  | nTotObjs = info_->getNGlobalIntegrableObjects(); | 
| 759 |  | haveError = 0; | 
| 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 |  | } | 
| 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 |  | } |