| 58 |  | Globals* simParams = info->getSimParams(); | 
| 59 |  | needCompression_ = simParams->getCompressDumpFile(); | 
| 60 |  | needForceVector_ = simParams->getOutputForceVector(); | 
| 61 | < |  | 
| 61 | > | createDumpFile_ = true; | 
| 62 |  | #ifdef HAVE_LIBZ | 
| 63 |  | if (needCompression_) { | 
| 64 |  | filename_ += ".gz"; | 
| 71 |  | if (worldRank == 0) { | 
| 72 |  | #endif // is_mpi | 
| 73 |  |  | 
| 74 | < |  | 
| 74 | > |  | 
| 75 |  | dumpFile_ = createOStream(filename_); | 
| 76 |  |  | 
| 77 |  | if (!dumpFile_) { | 
| 101 |  |  | 
| 102 |  | needCompression_ = simParams->getCompressDumpFile(); | 
| 103 |  | needForceVector_ = simParams->getOutputForceVector(); | 
| 104 | < |  | 
| 104 | > | createDumpFile_ = true; | 
| 105 |  | #ifdef HAVE_LIBZ | 
| 106 |  | if (needCompression_) { | 
| 107 |  | filename_ += ".gz"; | 
| 114 |  | if (worldRank == 0) { | 
| 115 |  | #endif // is_mpi | 
| 116 |  |  | 
| 117 | < |  | 
| 117 | > |  | 
| 118 |  | dumpFile_ = createOStream(filename_); | 
| 119 |  |  | 
| 120 |  | if (!dumpFile_) { | 
| 134 |  | #endif // is_mpi | 
| 135 |  |  | 
| 136 |  | } | 
| 137 | + |  | 
| 138 | + | DumpWriter::DumpWriter(SimInfo* info, const std::string& filename, bool writeDumpFile) | 
| 139 | + | : info_(info), filename_(filename){ | 
| 140 | + |  | 
| 141 | + | Globals* simParams = info->getSimParams(); | 
| 142 | + | eorFilename_ = filename_.substr(0, filename_.rfind(".")) + ".eor"; | 
| 143 | + |  | 
| 144 | + | needCompression_ = simParams->getCompressDumpFile(); | 
| 145 | + | needForceVector_ = simParams->getOutputForceVector(); | 
| 146 | + |  | 
| 147 | + | #ifdef HAVE_LIBZ | 
| 148 | + | if (needCompression_) { | 
| 149 | + | filename_ += ".gz"; | 
| 150 | + | eorFilename_ += ".gz"; | 
| 151 | + | } | 
| 152 | + | #endif | 
| 153 | + |  | 
| 154 | + | #ifdef IS_MPI | 
| 155 | + |  | 
| 156 | + | if (worldRank == 0) { | 
| 157 | + | #endif // is_mpi | 
| 158 | + |  | 
| 159 | + | createDumpFile_ = writeDumpFile; | 
| 160 | + | if (createDumpFile_) { | 
| 161 | + | dumpFile_ = createOStream(filename_); | 
| 162 | + |  | 
| 163 | + | if (!dumpFile_) { | 
| 164 | + | sprintf(painCave.errMsg, "Could not open \"%s\" for dump output.\n", | 
| 165 | + | filename_.c_str()); | 
| 166 | + | painCave.isFatal = 1; | 
| 167 | + | simError(); | 
| 168 | + | } | 
| 169 | + | } | 
| 170 | + | #ifdef IS_MPI | 
| 171 | + |  | 
| 172 | + | } | 
| 173 | + |  | 
| 174 | + | sprintf(checkPointMsg, "Sucessfully opened output file for dumping.\n"); | 
| 175 | + | MPIcheckPoint(); | 
| 176 | + |  | 
| 177 | + | #endif // is_mpi | 
| 178 | + |  | 
| 179 | + | } | 
| 180 | + |  | 
| 181 | + |  | 
| 182 | + |  | 
| 183 | + |  | 
| 184 | + |  | 
| 185 |  |  | 
| 186 |  | DumpWriter::~DumpWriter() { | 
| 187 |  |  | 
| 189 |  |  | 
| 190 |  | if (worldRank == 0) { | 
| 191 |  | #endif // is_mpi | 
| 192 | < |  | 
| 193 | < | delete dumpFile_; | 
| 194 | < |  | 
| 192 | > | if (createDumpFile_){ | 
| 193 | > | delete dumpFile_; | 
| 194 | > | } | 
| 195 |  | #ifdef IS_MPI | 
| 196 |  |  | 
| 197 |  | } | 
| 202 |  |  | 
| 203 |  | void DumpWriter::writeCommentLine(std::ostream& os, Snapshot* s) { | 
| 204 |  |  | 
| 205 | < | double currentTime; | 
| 205 | > | RealType currentTime; | 
| 206 |  | Mat3x3d hmat; | 
| 207 | < | double chi; | 
| 208 | < | double integralOfChiDt; | 
| 207 | > | RealType chi; | 
| 208 | > | RealType integralOfChiDt; | 
| 209 |  | Mat3x3d eta; | 
| 210 |  |  | 
| 211 |  | currentTime = s->getTime(); | 
| 221 |  |  | 
| 222 |  | //write out additional parameters, such as chi and eta | 
| 223 |  |  | 
| 224 | < | os << chi << "\t" << integralOfChiDt << "\t;"; | 
| 224 | > | os << chi << "\t" << integralOfChiDt << ";\t"; | 
| 225 |  |  | 
| 226 |  | os << eta(0, 0) << "\t" << eta(1, 0) << "\t" << eta(2, 0) << ";\t" | 
| 227 |  | << eta(0, 1) << "\t" << eta(1, 1) << "\t" << eta(2, 1) << ";\t" | 
| 347 |  | int myPotato; | 
| 348 |  | int nProc; | 
| 349 |  | int which_node; | 
| 350 | < | double atomData[19]; | 
| 350 | > | RealType atomData[19]; | 
| 351 |  | int isDirectional; | 
| 352 |  | char MPIatomTypeString[MINIBUFFERSIZE]; | 
| 353 |  | int msgLen; // the length of message actually recieved at master nodes | 
| 422 |  |  | 
| 423 |  | myPotato++; | 
| 424 |  |  | 
| 425 | < | MPI_Recv(atomData, 19, MPI_DOUBLE, which_node, myPotato, | 
| 425 | > | MPI_Recv(atomData, 19, MPI_REALTYPE, which_node, myPotato, | 
| 426 |  | MPI_COMM_WORLD, &istatus); | 
| 427 |  | myPotato++; | 
| 428 |  |  | 
| 429 | < | MPI_Get_count(&istatus, MPI_DOUBLE, &msgLen); | 
| 429 | > | MPI_Get_count(&istatus, MPI_REALTYPE, &msgLen); | 
| 430 |  |  | 
| 431 |  | if (msgLen == 13 || msgLen == 19) | 
| 432 |  | isDirectional = 1; | 
| 606 |  | } | 
| 607 |  | } | 
| 608 |  |  | 
| 609 | < | sprintf(writeLine, "\n"); | 
| 562 | < | os << writeLine; | 
| 609 | > | os << writeLine << "\n"; | 
| 610 |  |  | 
| 611 |  | } //end for(iter = integrableObject.begin()) | 
| 612 |  | } | 
| 725 |  | myPotato++; | 
| 726 |  |  | 
| 727 |  | if (isDirectional && needForceVector_) { | 
| 728 | < | MPI_Send(atomData, 19, MPI_DOUBLE, 0, myPotato, | 
| 728 | > | MPI_Send(atomData, 19, MPI_REALTYPE, 0, myPotato, | 
| 729 |  | MPI_COMM_WORLD); | 
| 730 |  | } else if (isDirectional) { | 
| 731 | < | MPI_Send(atomData, 13, MPI_DOUBLE, 0, myPotato, | 
| 731 | > | MPI_Send(atomData, 13, MPI_REALTYPE, 0, myPotato, | 
| 732 |  | MPI_COMM_WORLD); | 
| 733 |  | } else if (needForceVector_) { | 
| 734 | < | MPI_Send(atomData, 12, MPI_DOUBLE, 0, myPotato, | 
| 734 | > | MPI_Send(atomData, 12, MPI_REALTYPE, 0, myPotato, | 
| 735 |  | MPI_COMM_WORLD); | 
| 736 |  | } else { | 
| 737 | < | MPI_Send(atomData, 6, MPI_DOUBLE, 0, myPotato, | 
| 737 | > | MPI_Send(atomData, 6, MPI_REALTYPE, 0, myPotato, | 
| 738 |  | MPI_COMM_WORLD); | 
| 739 |  | } | 
| 740 |  |  |