| 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: |
| 720 |
|
} |
| 721 |
|
} |
| 722 |
|
|
| 723 |
< |
|
| 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 |