--- trunk/OOPSE/libmdtools/DumpWriter.cpp 2003/07/09 22:14:06 586 +++ trunk/OOPSE/libmdtools/DumpWriter.cpp 2003/10/28 16:03:37 829 @@ -1,4 +1,6 @@ -#include +#define _FILE_OFFSET_BITS 64 + +#include #include #include @@ -70,42 +72,54 @@ void DumpWriter::writeDump( double currentTime ){ char tempBuffer[BUFFERSIZE]; char writeLine[BUFFERSIZE]; - int i, j, which_node, done, which_atom, local_index; + int i; +#ifdef IS_MPI + int j, which_node, done, which_atom, local_index; +#else //is_mpi + int nAtoms = entry_plug->n_atoms; +#endif //is_mpi + double q[4]; DirectionalAtom* dAtom; - int nAtoms = entry_plug->n_atoms; Atom** atoms = entry_plug->atoms; + double pos[3], vel[3]; + + // write current frame to the eor file + this->writeFinal( currentTime ); + #ifndef IS_MPI outFile << nAtoms << "\n"; outFile << currentTime << ";\t" - << entry_plug->Hmat[0] << "\t" - << entry_plug->Hmat[1] << "\t" - << entry_plug->Hmat[2] << ";\t" + << entry_plug->Hmat[0][0] << "\t" + << entry_plug->Hmat[1][0] << "\t" + << entry_plug->Hmat[2][0] << ";\t" - << entry_plug->Hmat[3] << "\t" - << entry_plug->Hmat[4] << "\t" - << entry_plug->Hmat[5] << ";\t" + << entry_plug->Hmat[0][1] << "\t" + << entry_plug->Hmat[1][1] << "\t" + << entry_plug->Hmat[2][1] << ";\t" - << entry_plug->Hmat[6] << "\t" - << entry_plug->Hmat[7] << "\t" - << entry_plug->Hmat[8] << ";\n"; + << 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() ){ @@ -147,19 +161,19 @@ void DumpWriter::writeDump( double currentTime ){ if( worldRank == 0 ){ outFile << mpiSim->getTotAtoms() << "\n"; - outFile << currentTime << "\t" - << entry_plug->Hmat[0] << "\t" - << entry_plug->Hmat[1] << "\t" - << entry_plug->Hmat[2] << "\t" + outFile << currentTime << ";\t" + << entry_plug->Hmat[0][0] << "\t" + << entry_plug->Hmat[1][0] << "\t" + << entry_plug->Hmat[2][0] << ";\t" - << entry_plug->Hmat[3] << "\t" - << entry_plug->Hmat[4] << "\t" - << entry_plug->Hmat[5] << "\t" + << entry_plug->Hmat[0][1] << "\t" + << entry_plug->Hmat[1][1] << "\t" + << entry_plug->Hmat[2][1] << ";\t" - << entry_plug->Hmat[6] << "\t" - << entry_plug->Hmat[7] << "\t" - << entry_plug->Hmat[8] << "\n"; - ; + << entry_plug->Hmat[0][2] << "\t" + << entry_plug->Hmat[1][2] << "\t" + << entry_plug->Hmat[2][2] << ";\n"; + outFile.flush(); for (i = 0 ; i < mpiSim->getTotAtoms(); i++ ) { // Get the Node number which has this atom; @@ -176,15 +190,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() ){ @@ -266,15 +284,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() ){ @@ -335,10 +357,15 @@ void DumpWriter::writeFinal(double finalTime){ double q[4]; DirectionalAtom* dAtom; - int nAtoms = entry_plug->n_atoms; Atom** atoms = entry_plug->atoms; - int i, j, which_node, done, game_over, which_atom, local_index; + int i; +#ifdef IS_MPI + int j, which_node, done, which_atom, local_index; +#else //is_mpi + int nAtoms = entry_plug->n_atoms; +#endif //is_mpi + double pos[3], vel[3]; #ifdef IS_MPI if(worldRank == 0 ){ @@ -370,30 +397,33 @@ void DumpWriter::writeFinal(double finalTime){ finalOut << nAtoms << "\n"; - finalOut << finalTime << "\t" - << entry_plug->Hmat[0] << "\t" - << entry_plug->Hmat[1] << "\t" - << entry_plug->Hmat[2] << "\t" + finalOut << finalTime << ";\t" + << entry_plug->Hmat[0][0] << "\t" + << entry_plug->Hmat[1][0] << "\t" + << entry_plug->Hmat[2][0] << ";\t" - << entry_plug->Hmat[3] << "\t" - << entry_plug->Hmat[4] << "\t" - << entry_plug->Hmat[5] << "\t" + << entry_plug->Hmat[0][1] << "\t" + << entry_plug->Hmat[1][1] << "\t" + << entry_plug->Hmat[2][1] << ";\t" - << entry_plug->Hmat[6] << "\t" - << entry_plug->Hmat[7] << "\t" - << entry_plug->Hmat[8] << "\n"; + << 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() ){ @@ -437,18 +467,18 @@ void DumpWriter::writeFinal(double finalTime){ if( worldRank == 0 ){ finalOut << mpiSim->getTotAtoms() << "\n"; - finalOut << finalTime << "\t" - << entry_plug->Hmat[0] << "\t" - << entry_plug->Hmat[1] << "\t" - << entry_plug->Hmat[2] << "\t" + finalOut << finalTime << ";\t" + << entry_plug->Hmat[0][0] << "\t" + << entry_plug->Hmat[1][0] << "\t" + << entry_plug->Hmat[2][0] << ";\t" - << entry_plug->Hmat[3] << "\t" - << entry_plug->Hmat[4] << "\t" - << entry_plug->Hmat[5] << "\t" + << entry_plug->Hmat[0][1] << "\t" + << entry_plug->Hmat[1][1] << "\t" + << entry_plug->Hmat[2][1] << ";\t" - << entry_plug->Hmat[6] << "\t" - << entry_plug->Hmat[7] << "\t" - << entry_plug->Hmat[8] << "\n"; + << 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: @@ -462,16 +492,20 @@ void DumpWriter::writeFinal(double finalTime){ 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() ){ @@ -551,16 +585,19 @@ void DumpWriter::writeFinal(double finalTime){ } 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() ){