| 64 |  | namespace OpenMD { | 
| 65 |  |  | 
| 66 |  | DumpWriter::DumpWriter(SimInfo* info) | 
| 67 | < | : info_(info), filename_(info->getDumpFileName()), eorFilename_(info->getFinalConfigFileName()){ | 
| 67 | > | : info_(info), filename_(info->getDumpFileName()), | 
| 68 | > | eorFilename_(info->getFinalConfigFileName()){ | 
| 69 |  |  | 
| 70 |  | Globals* simParams = info->getSimParams(); | 
| 71 |  | needCompression_   = simParams->getCompressDumpFile(); | 
| 73 |  | needParticlePot_   = simParams->getOutputParticlePotential(); | 
| 74 |  | needFlucQ_         = simParams->getOutputFluctuatingCharges(); | 
| 75 |  | needElectricField_ = simParams->getOutputElectricField(); | 
| 76 | + | needSitePotential_ = simParams->getOutputSitePotential(); | 
| 77 |  |  | 
| 78 | < | if (needParticlePot_ || needFlucQ_ || needElectricField_) { | 
| 78 | > | if (needParticlePot_ || needFlucQ_ || needElectricField_ || | 
| 79 | > | needSitePotential_) { | 
| 80 |  | doSiteData_ = true; | 
| 81 |  | } else { | 
| 82 |  | doSiteData_ = false; | 
| 124 |  | needParticlePot_   = simParams->getOutputParticlePotential(); | 
| 125 |  | needFlucQ_         = simParams->getOutputFluctuatingCharges(); | 
| 126 |  | needElectricField_ = simParams->getOutputElectricField(); | 
| 127 | + | needSitePotential_ = simParams->getOutputSitePotential(); | 
| 128 |  |  | 
| 129 | < | if (needParticlePot_ || needFlucQ_ || needElectricField_) { | 
| 129 | > | if (needParticlePot_ || needFlucQ_ || needElectricField_ || | 
| 130 | > | needSitePotential_) { | 
| 131 |  | doSiteData_ = true; | 
| 132 |  | } else { | 
| 133 |  | doSiteData_ = false; | 
| 175 |  | needParticlePot_   = simParams->getOutputParticlePotential(); | 
| 176 |  | needFlucQ_         = simParams->getOutputFluctuatingCharges(); | 
| 177 |  | needElectricField_ = simParams->getOutputElectricField(); | 
| 178 | + | needSitePotential_ = simParams->getOutputSitePotential(); | 
| 179 |  |  | 
| 180 | < | if (needParticlePot_ || needFlucQ_ || needElectricField_) { | 
| 180 | > | if (needParticlePot_ || needFlucQ_ || needElectricField_ || | 
| 181 | > | needSitePotential_) { | 
| 182 |  | doSiteData_ = true; | 
| 183 |  | } else { | 
| 184 |  | doSiteData_ = false; | 
| 398 |  |  | 
| 399 |  | for (int i = 1; i < nProc; ++i) { | 
| 400 |  | // tell processor i to start sending us data: | 
| 401 | + |  | 
| 402 |  | MPI_Bcast(&i, 1, MPI_INT, masterNode, MPI_COMM_WORLD); | 
| 403 |  |  | 
| 404 |  | // receive the length of the string buffer that was | 
| 428 |  | MPI_Bcast(&myturn, 1, MPI_INT, masterNode, MPI_COMM_WORLD); | 
| 429 |  | if (myturn == worldRank){ | 
| 430 |  | // send the length of our buffer: | 
| 431 | + |  | 
| 432 |  | MPI_Send(&sendBufferLength, 1, MPI_INT, masterNode, 0, MPI_COMM_WORLD); | 
| 433 |  |  | 
| 434 |  | // send our buffer: | 
| 719 |  | line += tempBuffer; | 
| 720 |  | } | 
| 721 |  | } | 
| 713 | – |  | 
| 722 |  |  | 
| 723 | + | if (needSitePotential_) { | 
| 724 | + | if (storageLayout & DataStorage::dslSitePotential) { | 
| 725 | + | type += "s"; | 
| 726 | + | RealType sPot = sd->getSitePotential(); | 
| 727 | + | if (isinf(sPot) || isnan(sPot) ) { | 
| 728 | + | sprintf( painCave.errMsg, | 
| 729 | + | "DumpWriter detected a numerical error writing the" | 
| 730 | + | " site potential for object %s", id.c_str()); | 
| 731 | + | painCave.isFatal = 1; | 
| 732 | + | simError(); | 
| 733 | + | } | 
| 734 | + | sprintf(tempBuffer, " %13e ", sPot); | 
| 735 | + | line += tempBuffer; | 
| 736 | + | } | 
| 737 | + | } | 
| 738 | + |  | 
| 739 |  | if (needParticlePot_) { | 
| 740 |  | if (storageLayout & DataStorage::dslParticlePot) { | 
| 741 |  | type += "u"; | 
| 761 |  | } | 
| 762 |  |  | 
| 763 |  | void DumpWriter::writeEor() { | 
| 764 | < | std::ostream* eorStream; | 
| 765 | < |  | 
| 764 | > |  | 
| 765 | > | std::ostream* eorStream = NULL; | 
| 766 | > |  | 
| 767 |  | #ifdef IS_MPI | 
| 768 |  | if (worldRank == 0) { | 
| 769 |  | #endif // is_mpi | 
| 792 |  |  | 
| 793 |  | void DumpWriter::writeDumpAndEor() { | 
| 794 |  | std::vector<std::streambuf*> buffers; | 
| 795 | < | std::ostream* eorStream; | 
| 795 | > | std::ostream* eorStream = NULL; | 
| 796 |  | #ifdef IS_MPI | 
| 797 |  | if (worldRank == 0) { | 
| 798 |  | #endif // is_mpi |