--- trunk/OOPSE/libmdtools/DumpWriter.cpp 2003/04/03 20:21:54 447 +++ trunk/OOPSE/libmdtools/DumpWriter.cpp 2003/08/26 20:12:51 723 @@ -1,3 +1,5 @@ +#define _FILE_OFFSET_BITS 64 + #include #include #include @@ -27,8 +29,6 @@ DumpWriter::DumpWriter( SimInfo* the_entry_plug ){ if(worldRank == 0 ){ #endif // is_mpi - - strcpy( outName, entry_plug->sampleName ); outFile.open(outName, ios::out | ios::trunc ); @@ -41,7 +41,7 @@ DumpWriter::DumpWriter( SimInfo* the_entry_plug ){ painCave.isFatal = 1; simError(); } - + //outFile.setf( ios::scientific ); #ifdef IS_MPI @@ -72,34 +72,46 @@ void DumpWriter::writeDump( double currentTime ){ char tempBuffer[BUFFERSIZE]; char writeLine[BUFFERSIZE]; - int i, j, which_node, done, game_over, which_atom, local_index; + int i, j, which_node, done, which_atom, local_index; double q[4]; DirectionalAtom* dAtom; int nAtoms = entry_plug->n_atoms; Atom** atoms = entry_plug->atoms; + + double pos[3], vel[3]; #ifndef IS_MPI outFile << nAtoms << "\n"; - outFile << currentTime << "\t" - << entry_plug->box_x << "\t" - << entry_plug->box_y << "\t" - << entry_plug->box_z << "\n"; + outFile << currentTime << ";\t" + << entry_plug->Hmat[0][0] << "\t" + << entry_plug->Hmat[1][0] << "\t" + << entry_plug->Hmat[2][0] << ";\t" + + << entry_plug->Hmat[0][1] << "\t" + << entry_plug->Hmat[1][1] << "\t" + << entry_plug->Hmat[2][1] << ";\t" + + << entry_plug->Hmat[0][2] << "\t" + << entry_plug->Hmat[1][2] << "\t" + << entry_plug->Hmat[2][2] << ";\n"; for( i=0; igetPos(pos); + atoms[i]->getVel(vel); sprintf( tempBuffer, "%s\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf\t", atoms[i]->getType(), - atoms[i]->getX(), - atoms[i]->getY(), - atoms[i]->getZ(), - atoms[i]->get_vx(), - atoms[i]->get_vy(), - atoms[i]->get_vz()); + pos[0], + pos[1], + pos[2], + vel[0], + vel[1], + vel[2]); strcpy( writeLine, tempBuffer ); if( atoms[i]->isDirectional() ){ @@ -140,11 +152,20 @@ void DumpWriter::writeDump( double currentTime ){ if( worldRank == 0 ){ outFile << mpiSim->getTotAtoms() << "\n"; + + outFile << currentTime << ";\t" + << entry_plug->Hmat[0][0] << "\t" + << entry_plug->Hmat[1][0] << "\t" + << entry_plug->Hmat[2][0] << ";\t" + + << entry_plug->Hmat[0][1] << "\t" + << entry_plug->Hmat[1][1] << "\t" + << entry_plug->Hmat[2][1] << ";\t" + + << entry_plug->Hmat[0][2] << "\t" + << entry_plug->Hmat[1][2] << "\t" + << entry_plug->Hmat[2][2] << ";\n"; - outFile << currentTime << "\t" - << entry_plug->box_x << "\t" - << entry_plug->box_y << "\t" - << entry_plug->box_z << "\n"; outFile.flush(); for (i = 0 ; i < mpiSim->getTotAtoms(); i++ ) { // Get the Node number which has this atom; @@ -161,15 +182,19 @@ void DumpWriter::writeDump( double currentTime ){ } if (local_index != -1) { //format the line + + atoms[local_index]->getPos(pos); + atoms[local_index]->getVel(vel); + sprintf( tempBuffer, "%s\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf\t", atoms[local_index]->getType(), - atoms[local_index]->getX(), - atoms[local_index]->getY(), - atoms[local_index]->getZ(), - atoms[local_index]->get_vx(), - atoms[local_index]->get_vy(), - atoms[local_index]->get_vz()); // check here. + pos[0], + pos[1], + pos[2], + vel[0], + vel[1], + vel[2]); // check here. strcpy( writeLine, tempBuffer ); if( atoms[local_index]->isDirectional() ){ @@ -251,15 +276,19 @@ void DumpWriter::writeDump( double currentTime ){ } if (local_index != -1) { //format the line + + atoms[local_index]->getPos(pos); + atoms[local_index]->getVel(vel); + sprintf( tempBuffer, "%s\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf\t", atoms[local_index]->getType(), - atoms[local_index]->getX(), - atoms[local_index]->getY(), - atoms[local_index]->getZ(), - atoms[local_index]->get_vx(), - atoms[local_index]->get_vy(), - atoms[local_index]->get_vz()); // check here. + pos[0], + pos[1], + pos[2], + vel[0], + vel[1], + vel[2]); // check here. strcpy( writeLine, tempBuffer ); if( atoms[local_index]->isDirectional() ){ @@ -309,7 +338,7 @@ void DumpWriter::writeDump( double currentTime ){ #endif // is_mpi } -void DumpWriter::writeFinal(){ +void DumpWriter::writeFinal(double finalTime){ char finalName[500]; ofstream finalOut; @@ -324,6 +353,7 @@ void DumpWriter::writeFinal(){ Atom** atoms = entry_plug->atoms; int i, j, which_node, done, game_over, which_atom, local_index; + double pos[3], vel[3]; #ifdef IS_MPI if(worldRank == 0 ){ @@ -355,21 +385,33 @@ void DumpWriter::writeFinal(){ finalOut << nAtoms << "\n"; - finalOut << entry_plug->box_x << "\t" - << entry_plug->box_y << "\t" - << entry_plug->box_z << "\n"; + finalOut << finalTime << ";\t" + << entry_plug->Hmat[0][0] << "\t" + << entry_plug->Hmat[1][0] << "\t" + << entry_plug->Hmat[2][0] << ";\t" + + << entry_plug->Hmat[0][1] << "\t" + << entry_plug->Hmat[1][1] << "\t" + << entry_plug->Hmat[2][1] << ";\t" + + << entry_plug->Hmat[0][2] << "\t" + << entry_plug->Hmat[1][2] << "\t" + << entry_plug->Hmat[2][2] << ";\n"; for( i=0; igetPos(pos); + atoms[i]->getVel(vel); + sprintf( tempBuffer, "%s\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf\t", atoms[i]->getType(), - atoms[i]->getX(), - atoms[i]->getY(), - atoms[i]->getZ(), - atoms[i]->get_vx(), - atoms[i]->get_vy(), - atoms[i]->get_vz()); + pos[0], + pos[1], + pos[2], + vel[0], + vel[1], + vel[2]); strcpy( writeLine, tempBuffer ); if( atoms[i]->isDirectional() ){ @@ -413,9 +455,18 @@ void DumpWriter::writeFinal(){ if( worldRank == 0 ){ finalOut << mpiSim->getTotAtoms() << "\n"; - finalOut << entry_plug->box_x << "\t" - << entry_plug->box_y << "\t" - << entry_plug->box_z << "\n"; + finalOut << finalTime << ";\t" + << entry_plug->Hmat[0][0] << "\t" + << entry_plug->Hmat[1][0] << "\t" + << entry_plug->Hmat[2][0] << ";\t" + + << entry_plug->Hmat[0][1] << "\t" + << entry_plug->Hmat[1][1] << "\t" + << entry_plug->Hmat[2][1] << ";\t" + + << entry_plug->Hmat[0][2] << "\t" + << entry_plug->Hmat[1][2] << "\t" + << entry_plug->Hmat[2][2] << ";\n"; for (i = 0 ; i < mpiSim->getTotAtoms(); i++ ) { // Get the Node number which has this molecule: @@ -429,16 +480,20 @@ void DumpWriter::writeFinal(){ for (j=0; (jgetMyNlocal()) && (local_index < 0); j++) { if (atoms[j]->getGlobalIndex() == which_atom) local_index = j; } - if (local_index != -1) { + if (local_index != -1) { + + atoms[local_index]->getPos(pos); + atoms[local_index]->getVel(vel); + sprintf( tempBuffer, "%s\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf\t", atoms[local_index]->getType(), - atoms[local_index]->getX(), - atoms[local_index]->getY(), - atoms[local_index]->getZ(), - atoms[local_index]->get_vx(), - atoms[local_index]->get_vy(), - atoms[local_index]->get_vz()); + pos[0], + pos[1], + pos[2], + vel[0], + vel[1], + vel[2]); strcpy( writeLine, tempBuffer ); if( atoms[local_index]->isDirectional() ){ @@ -518,16 +573,19 @@ void DumpWriter::writeFinal(){ } if (local_index != -1) { + atoms[local_index]->getPos(pos); + atoms[local_index]->getVel(vel); + //format the line sprintf( tempBuffer, "%s\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf\t", atoms[local_index]->getType(), - atoms[local_index]->getX(), - atoms[local_index]->getY(), - atoms[local_index]->getZ(), - atoms[local_index]->get_vx(), - atoms[local_index]->get_vy(), - atoms[local_index]->get_vz()); // check here. + pos[0], + pos[1], + pos[2], + vel[0], + vel[1], + vel[2]); // check here. strcpy( writeLine, tempBuffer ); if( atoms[local_index]->isDirectional() ){