--- trunk/OOPSE/libmdtools/DumpWriter.cpp 2004/01/08 17:40:56 907 +++ trunk/OOPSE/libmdtools/DumpWriter.cpp 2004/01/08 18:59:36 912 @@ -66,7 +66,7 @@ void DumpWriter::writeDump( double currentTime ){ void DumpWriter::writeDump( double currentTime ){ const int BUFFERSIZE = 2000; - const int MINIBUFFERSIZE = 10; + const int MINIBUFFERSIZE = 100; char tempBuffer[BUFFERSIZE]; char writeLine[BUFFERSIZE]; @@ -78,6 +78,7 @@ void DumpWriter::writeDump( double currentTime ){ double atomOrientData[7]; int isDirectional; char* atomTypeString; + char MPIatomTypeString[MINIBUFFERSIZE]; int me; int atomTypeTag; int atomIsDirectionalTag; @@ -199,9 +200,15 @@ void DumpWriter::writeDump( double currentTime ){ atomTransDataTag = 4*i + 2; atomOrientDataTag = 4*i + 3; - MPI_Recv(atomTypeString, MINIBUFFERSIZE, MPI_CHAR, which_node, + MPI_Recv(MPIatomTypeString, MINIBUFFERSIZE, MPI_CHAR, which_node, atomTypeTag, MPI_COMM_WORLD, &istatus); + strncpy(atomTypeString, MPIatomTypeString, MINIBUFFERSIZE); + + // Null terminate the atomTypeString just in case: + + atomTypeString[strlen(atomTypeString) - 1] = '\0'; + MPI_Recv(&isDirectional, 1, MPI_INT, which_node, atomIsDirectionalTag, MPI_COMM_WORLD, &istatus); @@ -373,7 +380,13 @@ void DumpWriter::writeDump( double currentTime ){ atomTransDataTag = 4*i + 2; atomOrientDataTag = 4*i + 3; - MPI_Send(atomTypeString, MINIBUFFERSIZE, MPI_CHAR, 0, + + strncpy(MPIatomTypeString, atomTypeString, MINIBUFFERSIZE); + + // null terminate the string before sending (just in case): + MPIatomTypeString[MINIBUFFERSIZE-1] = '\0'; + + MPI_Send(MPIatomTypeString, MINIBUFFERSIZE, MPI_CHAR, 0, atomTypeTag, MPI_COMM_WORLD); MPI_Send(&isDirectional, 1, MPI_INT, 0, @@ -409,7 +422,7 @@ void DumpWriter::writeFinal(double finalTime){ ofstream finalOut; const int BUFFERSIZE = 2000; - const int MINIBUFFERSIZE = 10; + const int MINIBUFFERSIZE = 100; char tempBuffer[BUFFERSIZE]; char writeLine[BUFFERSIZE]; @@ -423,6 +436,7 @@ void DumpWriter::writeFinal(double finalTime){ double atomOrientData[7]; int isDirectional; char* atomTypeString; + char MPIatomTypeString[MINIBUFFERSIZE]; int atomTypeTag; int atomIsDirectionalTag; int atomTransDataTag; @@ -564,9 +578,11 @@ void DumpWriter::writeFinal(double finalTime){ atomTransDataTag = 4*i + 2; atomOrientDataTag = 4*i + 3; - MPI_Recv(atomTypeString, MINIBUFFERSIZE, MPI_CHAR, which_node, + MPI_Recv(MPIatomTypeString, MINIBUFFERSIZE, MPI_CHAR, which_node, atomTypeTag, MPI_COMM_WORLD, &istatus); + strncpy(atomTypeString, MPIatomTypeString, MINIBUFFERSIZE); + MPI_Recv(&isDirectional, 1, MPI_INT, which_node, atomIsDirectionalTag, MPI_COMM_WORLD, &istatus); @@ -738,7 +754,9 @@ void DumpWriter::writeFinal(double finalTime){ atomTransDataTag = 4*i + 2; atomOrientDataTag = 4*i + 3; - MPI_Send(atomTypeString, MINIBUFFERSIZE, MPI_CHAR, 0, + strncpy(MPIatomTypeString, atomTypeString, MINIBUFFERSIZE); + + MPI_Send(MPIatomTypeString, MINIBUFFERSIZE, MPI_CHAR, 0, atomTypeTag, MPI_COMM_WORLD); MPI_Send(&isDirectional, 1, MPI_INT, 0,