| 88 |  | */ | 
| 89 |  |  | 
| 90 |  | void DumpWriter::sortByGlobalIndex(){ | 
| 91 | < | Atom** atoms = entry_plug->atoms; | 
| 92 | < |  | 
| 91 | > | Molecule* mols = entry_plug->molecules; | 
| 92 |  | indexArray.clear(); | 
| 93 |  |  | 
| 94 |  | for(int i = 0; i < mpiSim->getMyNlocal();i++) | 
| 95 | < | indexArray.push_back(make_pair(i, atoms[i]->getGlobalIndex())); | 
| 95 | > | indexArray.push_back(make_pair(i, mols[i].getGlobalIndex())); | 
| 96 |  |  | 
| 97 |  | sort(indexArray.begin(), indexArray.end(), indexSortingCriterion); | 
| 98 |  | } | 
| 221 |  | int isDirectional; | 
| 222 |  | char* atomTypeString; | 
| 223 |  | char MPIatomTypeString[MINIBUFFERSIZE]; | 
| 224 | < |  | 
| 226 | < | #else //is_mpi | 
| 227 | < | int nAtoms = entry_plug->n_atoms; | 
| 224 | > | int nObjects; | 
| 225 |  | #endif //is_mpi | 
| 226 |  |  | 
| 227 |  | double q[4], ji[3]; | 
| 228 |  | DirectionalAtom* dAtom; | 
| 232 | – | Atom** atoms = entry_plug->atoms; | 
| 229 |  | double pos[3], vel[3]; | 
| 230 | < |  | 
| 230 | > | int nTotObjects; | 
| 231 | > | StuntDouble* sd; | 
| 232 | > | char* molName; | 
| 233 | > | vector<StuntDouble*> integrableObjects; | 
| 234 | > | vector<StuntDouble*>::iterator iter; | 
| 235 | > | nTotObjects = entry_plug->getTotIntegrableObjects(); | 
| 236 |  | #ifndef IS_MPI | 
| 237 |  |  | 
| 238 |  | for(k = 0; k < outFile.size(); k++){ | 
| 239 | < | *outFile[k] << nAtoms << "\n"; | 
| 239 | > | *outFile[k] << nTotObjects << "\n"; | 
| 240 |  |  | 
| 241 |  | *outFile[k] << currentTime << ";\t" | 
| 242 |  | << entry_plug->Hmat[0][0] << "\t" | 
| 255 |  | *outFile[k] << entry_plug->the_integrator->getAdditionalParameters() << endl; | 
| 256 |  | } | 
| 257 |  |  | 
| 258 | < | for( i=0; i<nAtoms; i++ ){ | 
| 258 | > | for( i=0; i< entry_plug->n_mol; i++ ){ | 
| 259 |  |  | 
| 260 | < | atoms[i]->getPos(pos); | 
| 261 | < | atoms[i]->getVel(vel); | 
| 260 | > | integrableObjects = entry_plug->molecules[i].getIntegrableObjects(); | 
| 261 | > | molName = (entry_plug->compStamps[entry_plug->molecules[i].getStampID()])->getID(); | 
| 262 | > |  | 
| 263 | > | for( iter = integrableObjects.begin();iter !=  integrableObjects.end(); ++iter){ | 
| 264 | > | sd = *iter; | 
| 265 | > | sd->getPos(pos); | 
| 266 | > | sd->getVel(vel); | 
| 267 |  |  | 
| 268 | < | sprintf( tempBuffer, | 
| 269 | < | "%s\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf\t", | 
| 270 | < | atoms[i]->getType(), | 
| 271 | < | pos[0], | 
| 272 | < | pos[1], | 
| 273 | < | pos[2], | 
| 274 | < | vel[0], | 
| 275 | < | vel[1], | 
| 276 | < | vel[2]); | 
| 277 | < | strcpy( writeLine, tempBuffer ); | 
| 268 | > | sprintf( tempBuffer, | 
| 269 | > | "%s\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf\t", | 
| 270 | > | sd->getType(), | 
| 271 | > | pos[0], | 
| 272 | > | pos[1], | 
| 273 | > | pos[2], | 
| 274 | > | vel[0], | 
| 275 | > | vel[1], | 
| 276 | > | vel[2]); | 
| 277 | > | strcpy( writeLine, tempBuffer ); | 
| 278 |  |  | 
| 279 | < | if( atoms[i]->isDirectional() ){ | 
| 279 | > | if( sd->isDirectional() ){ | 
| 280 |  |  | 
| 281 | < | dAtom = (DirectionalAtom *)atoms[i]; | 
| 282 | < | dAtom->getQ( q ); | 
| 277 | < | dAtom->getJ( ji ); | 
| 281 | > | sd->getQ( q ); | 
| 282 | > | sd->getJ( ji ); | 
| 283 |  |  | 
| 284 | < | sprintf( tempBuffer, | 
| 285 | < | "%lf\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf\n", | 
| 286 | < | q[0], | 
| 287 | < | q[1], | 
| 288 | < | q[2], | 
| 289 | < | q[3], | 
| 290 | < | ji[0], | 
| 291 | < | ji[1], | 
| 292 | < | ji[2]); | 
| 293 | < | strcat( writeLine, tempBuffer ); | 
| 284 | > | sprintf( tempBuffer, | 
| 285 | > | "%lf\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf\n", | 
| 286 | > | q[0], | 
| 287 | > | q[1], | 
| 288 | > | q[2], | 
| 289 | > | q[3], | 
| 290 | > | ji[0], | 
| 291 | > | ji[1], | 
| 292 | > | ji[2]); | 
| 293 | > | strcat( writeLine, tempBuffer ); | 
| 294 | > | } | 
| 295 | > | else | 
| 296 | > | strcat( writeLine, "0.0\t0.0\t0.0\t0.0\t0.0\t0.0\t0.0\n" ); | 
| 297 |  | } | 
| 290 | – | else | 
| 291 | – | strcat( writeLine, "0.0\t0.0\t0.0\t0.0\t0.0\t0.0\t0.0\n" ); | 
| 298 |  |  | 
| 299 | + |  | 
| 300 |  | for(k = 0; k < outFile.size(); k++) | 
| 301 |  | *outFile[k] << writeLine; | 
| 302 | < | } | 
| 302 | > | } | 
| 303 |  |  | 
| 304 |  | #else // is_mpi | 
| 305 |  |  | 
| 316 |  | int haveError; | 
| 317 |  |  | 
| 318 |  | MPI_Status istatus; | 
| 319 | < | int *AtomToProcMap = mpiSim->getAtomToProcMap(); | 
| 319 | > | int nCurObj; | 
| 320 | > | int *MolToProcMap = mpiSim->getMolToProcMap(); | 
| 321 |  |  | 
| 322 |  | // write out header and node 0's coordinates | 
| 323 |  |  | 
| 333 |  | potatoes[i] = 0; | 
| 334 |  |  | 
| 335 |  | for(k = 0; k < outFile.size(); k++){ | 
| 336 | < | *outFile[k] << mpiSim->getTotAtoms() << "\n"; | 
| 336 | > | *outFile[k] << nTotObjects << "\n"; | 
| 337 |  |  | 
| 338 |  | *outFile[k] << currentTime << ";\t" | 
| 339 |  | << entry_plug->Hmat[0][0] << "\t" | 
| 353 |  |  | 
| 354 |  | currentIndex = 0; | 
| 355 |  |  | 
| 356 | < | for (i = 0 ; i < mpiSim->getTotAtoms(); i++ ) { | 
| 356 | > | for (i = 0 ; i < mpiSim->getTotNmol(); i++ ) { | 
| 357 |  |  | 
| 358 |  | // Get the Node number which has this atom; | 
| 359 |  |  | 
| 360 | < | which_node = AtomToProcMap[i]; | 
| 360 | > | which_node = MolToProcMap[i]; | 
| 361 |  |  | 
| 362 |  | if (which_node != 0) { | 
| 363 | < |  | 
| 364 | < | if (potatoes[which_node] + 3 >= MAXTAG) { | 
| 363 | > |  | 
| 364 | > | if (potatoes[which_node] + 1 >= MAXTAG) { | 
| 365 |  | // The potato was going to exceed the maximum value, | 
| 366 |  | // so wrap this processor potato back to 0: | 
| 367 |  |  | 
| 371 |  | } | 
| 372 |  |  | 
| 373 |  | myPotato = potatoes[which_node]; | 
| 366 | – |  | 
| 367 | – | MPI_Recv(MPIatomTypeString, MINIBUFFERSIZE, MPI_CHAR, which_node, | 
| 368 | – | myPotato, MPI_COMM_WORLD, &istatus); | 
| 369 | – |  | 
| 370 | – | atomTypeString = MPIatomTypeString; | 
| 371 | – |  | 
| 372 | – | myPotato++; | 
| 374 |  |  | 
| 375 | < | MPI_Recv(&isDirectional, 1, MPI_INT, which_node, | 
| 375 | > | //recieve the number of integrableObject in current molecule | 
| 376 | > | MPI_Recv(&nCurObj, 1, MPI_INT, which_node, | 
| 377 |  | myPotato, MPI_COMM_WORLD, &istatus); | 
| 378 | + |  | 
| 379 | + | for(int l = 0; l < nCurObj; l++){ | 
| 380 | + |  | 
| 381 | + | if (potatoes[which_node] + 3 >= MAXTAG) { | 
| 382 | + | // The potato was going to exceed the maximum value, | 
| 383 | + | // so wrap this processor potato back to 0: | 
| 384 | + |  | 
| 385 | + | potatoes[which_node] = 0; | 
| 386 | + | MPI_Send(0, 1, MPI_INT, which_node, 0, MPI_COMM_WORLD); | 
| 387 | + |  | 
| 388 | + | } | 
| 389 | + |  | 
| 390 | + | MPI_Recv(MPIatomTypeString, MINIBUFFERSIZE, MPI_CHAR, which_node, | 
| 391 | + | myPotato, MPI_COMM_WORLD, &istatus); | 
| 392 | + |  | 
| 393 | + | atomTypeString = MPIatomTypeString; | 
| 394 | + |  | 
| 395 | + | myPotato++; | 
| 396 | + |  | 
| 397 | + | MPI_Recv(&isDirectional, 1, MPI_INT, which_node, | 
| 398 | + | myPotato, MPI_COMM_WORLD, &istatus); | 
| 399 |  |  | 
| 400 | < | myPotato++; | 
| 400 | > | myPotato++; | 
| 401 |  |  | 
| 402 | < | if (isDirectional) { | 
| 402 | > | if (isDirectional) { | 
| 403 |  | MPI_Recv(atomData13, 13, MPI_DOUBLE, which_node, | 
| 404 |  | myPotato, MPI_COMM_WORLD, &istatus); | 
| 405 | < | } else { | 
| 405 | > | } else { | 
| 406 |  | MPI_Recv(atomData6, 6, MPI_DOUBLE, which_node, | 
| 407 |  | myPotato, MPI_COMM_WORLD, &istatus); | 
| 408 | + | } | 
| 409 | + |  | 
| 410 | + | myPotato++; | 
| 411 |  | } | 
| 386 | – |  | 
| 387 | – | myPotato++; | 
| 412 |  | potatoes[which_node] = myPotato; | 
| 413 |  |  | 
| 414 |  | } else { | 
| 415 |  |  | 
| 416 |  | haveError = 0; | 
| 393 | – | which_atom = i; | 
| 417 |  |  | 
| 418 | < | local_index = indexArray[currentIndex].first; | 
| 396 | < |  | 
| 397 | < | if (which_atom == indexArray[currentIndex].second) { | 
| 398 | < |  | 
| 399 | < | atomTypeString = atoms[local_index]->getType(); | 
| 400 | < |  | 
| 401 | < | atoms[local_index]->getPos(pos); | 
| 402 | < | atoms[local_index]->getVel(vel); | 
| 403 | < |  | 
| 404 | < | atomData6[0] = pos[0]; | 
| 405 | < | atomData6[1] = pos[1]; | 
| 406 | < | atomData6[2] = pos[2]; | 
| 418 | > | local_index = indexArray[currentIndex].first; | 
| 419 |  |  | 
| 420 | < | atomData6[3] = vel[0]; | 
| 409 | < | atomData6[4] = vel[1]; | 
| 410 | < | atomData6[5] = vel[2]; | 
| 411 | < |  | 
| 412 | < | isDirectional = 0; | 
| 420 | > | integrableObjects = (entry_plug->molecules[local_index]).getIntegrableObjects(); | 
| 421 |  |  | 
| 422 | < | if( atoms[local_index]->isDirectional() ){ | 
| 422 | > | for(iter= integrableObjects.begin(); iter != integrableObjects.end(); ++iter){ | 
| 423 | > | sd = *iter; | 
| 424 | > | atomTypeString = sd->getType(); | 
| 425 | > |  | 
| 426 | > | sd->getPos(pos); | 
| 427 | > | sd->getVel(vel); | 
| 428 | > |  | 
| 429 | > | atomData6[0] = pos[0]; | 
| 430 | > | atomData6[1] = pos[1]; | 
| 431 | > | atomData6[2] = pos[2]; | 
| 432 |  |  | 
| 433 | < | isDirectional = 1; | 
| 434 | < |  | 
| 435 | < | dAtom = (DirectionalAtom *)atoms[local_index]; | 
| 436 | < | dAtom->getQ( q ); | 
| 437 | < | dAtom->getJ( ji ); | 
| 433 | > | atomData6[3] = vel[0]; | 
| 434 | > | atomData6[4] = vel[1]; | 
| 435 | > | atomData6[5] = vel[2]; | 
| 436 | > |  | 
| 437 | > | isDirectional = 0; | 
| 438 |  |  | 
| 439 | < | for (int j = 0; j < 6 ; j++) | 
| 440 | < | atomData13[j] = atomData6[j]; | 
| 441 | < |  | 
| 442 | < | atomData13[6] = q[0]; | 
| 443 | < | atomData13[7] = q[1]; | 
| 444 | < | atomData13[8] = q[2]; | 
| 445 | < | atomData13[9] = q[3]; | 
| 446 | < |  | 
| 447 | < | atomData13[10] = ji[0]; | 
| 448 | < | atomData13[11] = ji[1]; | 
| 449 | < | atomData13[12] = ji[2]; | 
| 450 | < | } | 
| 451 | < |  | 
| 452 | < | } else { | 
| 453 | < | sprintf(painCave.errMsg, | 
| 454 | < | "Atom %d not found on processor %d, currentIndex = %d, local_index = %d\n", | 
| 455 | < | which_atom, worldRank, currentIndex, local_index ); | 
| 456 | < | haveError= 1; | 
| 457 | < | simError(); | 
| 458 | < | } | 
| 459 | < |  | 
| 443 | < | if(haveError) DieDieDie(); | 
| 439 | > | if( sd->isDirectional() ){ | 
| 440 | > |  | 
| 441 | > | isDirectional = 1; | 
| 442 | > |  | 
| 443 | > | sd->getQ( q ); | 
| 444 | > | sd->getJ( ji ); | 
| 445 | > |  | 
| 446 | > | for (int j = 0; j < 6 ; j++) | 
| 447 | > | atomData13[j] = atomData6[j]; | 
| 448 | > |  | 
| 449 | > | atomData13[6] = q[0]; | 
| 450 | > | atomData13[7] = q[1]; | 
| 451 | > | atomData13[8] = q[2]; | 
| 452 | > | atomData13[9] = q[3]; | 
| 453 | > |  | 
| 454 | > | atomData13[10] = ji[0]; | 
| 455 | > | atomData13[11] = ji[1]; | 
| 456 | > | atomData13[12] = ji[2]; | 
| 457 | > | } | 
| 458 | > |  | 
| 459 | > | } | 
| 460 |  |  | 
| 461 | < | currentIndex++; | 
| 461 | > | currentIndex++; | 
| 462 |  | } | 
| 463 |  | // If we've survived to here, format the line: | 
| 464 |  |  | 
| 520 |  | myPotato = 0; | 
| 521 |  | currentIndex = 0; | 
| 522 |  |  | 
| 523 | < | for (i = 0 ; i < mpiSim->getTotAtoms(); i++ ) { | 
| 523 | > | for (i = 0 ; i < mpiSim->getTotNmol(); i++ ) { | 
| 524 |  |  | 
| 525 | < | // Am I the node which has this atom? | 
| 525 | > | // Am I the node which has this integrableObject? | 
| 526 |  |  | 
| 527 | < | if (AtomToProcMap[i] == worldRank) { | 
| 527 | > | if (MolToProcMap[i] == worldRank) { | 
| 528 |  |  | 
| 529 | < | if (myPotato + 3 >= MAXTAG) { | 
| 529 | > |  | 
| 530 | > | if (myPotato + 1 >= MAXTAG) { | 
| 531 |  |  | 
| 532 |  | // The potato was going to exceed the maximum value, | 
| 533 |  | // so wrap this processor potato back to 0 (and block until | 
| 536 |  | MPI_Recv(&myPotato, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, &istatus); | 
| 537 |  |  | 
| 538 |  | } | 
| 522 | – | which_atom = i; | 
| 539 |  |  | 
| 540 | < | local_index = indexArray[currentIndex].first; | 
| 540 | > | local_index = indexArray[currentIndex].first; | 
| 541 | > | integrableObjects = entry_plug->molecules[local_index].getIntegrableObjects(); | 
| 542 | > |  | 
| 543 | > | nCurObj = integrableObjects.size(); | 
| 544 | > |  | 
| 545 | > | MPI_Send(&nCurObj, 1, MPI_INT, 0, | 
| 546 | > | myPotato, MPI_COMM_WORLD); | 
| 547 | > |  | 
| 548 | > | for( iter = integrableObjects.begin(); iter  != integrableObjects.end(); iter++){ | 
| 549 | > |  | 
| 550 | > | if (myPotato + 3 >= MAXTAG) { | 
| 551 | > |  | 
| 552 | > | // The potato was going to exceed the maximum value, | 
| 553 | > | // so wrap this processor potato back to 0 (and block until | 
| 554 | > | // node 0 says we can go: | 
| 555 | > |  | 
| 556 | > | MPI_Recv(&myPotato, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, &istatus); | 
| 557 | > |  | 
| 558 | > | } | 
| 559 | > |  | 
| 560 | > | sd = *iter; | 
| 561 | > |  | 
| 562 | > | atomTypeString = sd->getType(); | 
| 563 | > |  | 
| 564 | > | sd->getPos(pos); | 
| 565 | > | sd->getVel(vel); | 
| 566 | > |  | 
| 567 | > | atomData6[0] = pos[0]; | 
| 568 | > | atomData6[1] = pos[1]; | 
| 569 | > | atomData6[2] = pos[2]; | 
| 570 | > |  | 
| 571 | > | atomData6[3] = vel[0]; | 
| 572 | > | atomData6[4] = vel[1]; | 
| 573 | > | atomData6[5] = vel[2]; | 
| 574 | > |  | 
| 575 | > | isDirectional = 0; | 
| 576 | > |  | 
| 577 | > | if( sd->isDirectional() ){ | 
| 578 | > |  | 
| 579 | > | isDirectional = 1; | 
| 580 |  |  | 
| 581 | < | if (which_atom == indexArray[currentIndex].second) { | 
| 582 | < |  | 
| 583 | < | atomTypeString = atoms[local_index]->getType(); | 
| 584 | < |  | 
| 585 | < | atoms[local_index]->getPos(pos); | 
| 586 | < | atoms[local_index]->getVel(vel); | 
| 587 | < |  | 
| 588 | < | atomData6[0] = pos[0]; | 
| 589 | < | atomData6[1] = pos[1]; | 
| 590 | < | atomData6[2] = pos[2]; | 
| 581 | > | sd->getQ( q ); | 
| 582 | > | sd->getJ( ji ); | 
| 583 | > |  | 
| 584 | > | for (int j = 0; j < 6 ; j++) | 
| 585 | > | atomData13[j] = atomData6[j]; | 
| 586 | > |  | 
| 587 | > | atomData13[6] = q[0]; | 
| 588 | > | atomData13[7] = q[1]; | 
| 589 | > | atomData13[8] = q[2]; | 
| 590 | > | atomData13[9] = q[3]; | 
| 591 | > |  | 
| 592 | > | atomData13[10] = ji[0]; | 
| 593 | > | atomData13[11] = ji[1]; | 
| 594 | > | atomData13[12] = ji[2]; | 
| 595 | > | } | 
| 596 |  |  | 
| 597 | < | atomData6[3] = vel[0]; | 
| 598 | < | atomData6[4] = vel[1]; | 
| 539 | < | atomData6[5] = vel[2]; | 
| 540 | < |  | 
| 541 | < | isDirectional = 0; | 
| 597 | > |  | 
| 598 | > | strncpy(MPIatomTypeString, atomTypeString, MINIBUFFERSIZE); | 
| 599 |  |  | 
| 600 | < | if( atoms[local_index]->isDirectional() ){ | 
| 600 | > | // null terminate the string before sending (just in case): | 
| 601 | > | MPIatomTypeString[MINIBUFFERSIZE-1] = '\0'; | 
| 602 |  |  | 
| 603 | < | isDirectional = 1; | 
| 603 | > | MPI_Send(MPIatomTypeString, MINIBUFFERSIZE, MPI_CHAR, 0, | 
| 604 | > | myPotato, MPI_COMM_WORLD); | 
| 605 |  |  | 
| 606 | < | dAtom = (DirectionalAtom *)atoms[local_index]; | 
| 607 | < | dAtom->getQ( q ); | 
| 608 | < | dAtom->getJ( ji ); | 
| 606 | > | myPotato++; | 
| 607 | > |  | 
| 608 | > | MPI_Send(&isDirectional, 1, MPI_INT, 0, | 
| 609 | > | myPotato, MPI_COMM_WORLD); | 
| 610 |  |  | 
| 611 | < | for (int j = 0; j < 6 ; j++) | 
| 552 | < | atomData13[j] = atomData6[j]; | 
| 611 | > | myPotato++; | 
| 612 |  |  | 
| 613 | < | atomData13[6] = q[0]; | 
| 555 | < | atomData13[7] = q[1]; | 
| 556 | < | atomData13[8] = q[2]; | 
| 557 | < | atomData13[9] = q[3]; | 
| 558 | < |  | 
| 559 | < | atomData13[10] = ji[0]; | 
| 560 | < | atomData13[11] = ji[1]; | 
| 561 | < | atomData13[12] = ji[2]; | 
| 562 | < | } | 
| 613 | > | if (isDirectional) { | 
| 614 |  |  | 
| 615 | < | } else { | 
| 616 | < | sprintf(painCave.errMsg, | 
| 617 | < | "Atom %d not found on processor %d, currentIndex = %d, local_index = %d\n", | 
| 618 | < | which_atom, worldRank, currentIndex, local_index ); | 
| 568 | < | haveError= 1; | 
| 569 | < | simError(); | 
| 570 | < | } | 
| 571 | < |  | 
| 572 | < | strncpy(MPIatomTypeString, atomTypeString, MINIBUFFERSIZE); | 
| 615 | > | MPI_Send(atomData13, 13, MPI_DOUBLE, 0, | 
| 616 | > | myPotato, MPI_COMM_WORLD); | 
| 617 | > |  | 
| 618 | > | } else { | 
| 619 |  |  | 
| 620 | < | // null terminate the string before sending (just in case): | 
| 621 | < | MPIatomTypeString[MINIBUFFERSIZE-1] = '\0'; | 
| 620 | > | MPI_Send(atomData6, 6, MPI_DOUBLE, 0, | 
| 621 | > | myPotato, MPI_COMM_WORLD); | 
| 622 | > | } | 
| 623 |  |  | 
| 624 | < | MPI_Send(MPIatomTypeString, MINIBUFFERSIZE, MPI_CHAR, 0, | 
| 578 | < | myPotato, MPI_COMM_WORLD); | 
| 579 | < |  | 
| 580 | < | myPotato++; | 
| 624 | > | myPotato++; | 
| 625 |  |  | 
| 626 | < | MPI_Send(&isDirectional, 1, MPI_INT, 0, | 
| 583 | < | myPotato, MPI_COMM_WORLD); | 
| 584 | < |  | 
| 585 | < | myPotato++; | 
| 586 | < |  | 
| 587 | < | if (isDirectional) { | 
| 626 | > | } | 
| 627 |  |  | 
| 628 | < | MPI_Send(atomData13, 13, MPI_DOUBLE, 0, | 
| 590 | < | myPotato, MPI_COMM_WORLD); | 
| 628 | > | currentIndex++; | 
| 629 |  |  | 
| 592 | – | } else { | 
| 593 | – |  | 
| 594 | – | MPI_Send(atomData6, 6, MPI_DOUBLE, 0, | 
| 595 | – | myPotato, MPI_COMM_WORLD); | 
| 630 |  | } | 
| 631 | < |  | 
| 598 | < | myPotato++; | 
| 599 | < | currentIndex++; | 
| 631 | > |  | 
| 632 |  | } | 
| 633 | + |  | 
| 634 |  | } | 
| 635 |  |  | 
| 636 |  | sprintf( checkPointMsg, | 
| 637 |  | "Sucessfully took a dump.\n"); | 
| 638 |  | MPIcheckPoint(); | 
| 639 |  |  | 
| 607 | – | } | 
| 640 |  |  | 
| 641 |  | #endif // is_mpi | 
| 642 |  | } |