--- trunk/OOPSE/libmdtools/DumpWriter.cpp 2004/01/13 20:04:28 934 +++ trunk/OOPSE/libmdtools/DumpWriter.cpp 2004/01/13 20:35:25 936 @@ -40,15 +40,6 @@ DumpWriter::DumpWriter( SimInfo* the_entry_plug ){ simError(); } - finalOut.open( entry_plug->finalName, ios::out | ios::trunc ); - if( !finalOut ){ - sprintf( painCave.errMsg, - "Could not open \"%s\" for final dump output.\n", - entry_plug->finalName ); - painCave.isFatal = 1; - simError(); - } - #ifdef IS_MPI } @@ -68,7 +59,6 @@ DumpWriter::~DumpWriter( ){ #endif // is_mpi dumpFile.close(); - finalOut.close(); #ifdef IS_MPI } @@ -111,11 +101,20 @@ void DumpWriter::writeDump(double currentTime){ void DumpWriter::writeDump(double currentTime){ + ofstream finalOut; vector fileStreams; #ifdef IS_MPI if(worldRank == 0 ){ - finalOut.seekp(0); + + finalOut.open( entry_plug->finalName, ios::out | ios::trunc ); + if( !finalOut ){ + sprintf( painCave.errMsg, + "Could not open \"%s\" for final dump output.\n", + entry_plug->finalName ); + painCave.isFatal = 1; + simError(); + } } #endif // is_mpi @@ -123,21 +122,40 @@ void DumpWriter::writeDump(double currentTime){ fileStreams.push_back(&dumpFile); writeFrame(fileStreams, currentTime); + +#ifdef IS_MPI + finalOut.close(); +#endif } void DumpWriter::writeFinal(double currentTime){ + ofstream finalOut; vector fileStreams; #ifdef IS_MPI if(worldRank == 0 ){ - finalOut.seekp(0); + + finalOut.open( entry_plug->finalName, ios::out | ios::trunc ); + + if( !finalOut ){ + sprintf( painCave.errMsg, + "Could not open \"%s\" for final dump output.\n", + entry_plug->finalName ); + painCave.isFatal = 1; + simError(); + } + } #endif // is_mpi fileStreams.push_back(&finalOut); writeFrame(fileStreams, currentTime); + +#ifdef IS_MPI + finalOut.close(); +#endif } @@ -146,7 +164,7 @@ void DumpWriter::writeFrame( vector& outFil const int BUFFERSIZE = 2000; const int MINIBUFFERSIZE = 100; - char tempBuffer[BUFFERSIZE]; + char tempBuffer[BUFFERSIZE]; char writeLine[BUFFERSIZE]; int i, k;