--- trunk/OOPSE/libmdtools/InitializeFromFile.cpp 2004/04/22 03:29:30 1129 +++ trunk/OOPSE/libmdtools/InitializeFromFile.cpp 2004/06/11 17:16:21 1268 @@ -16,8 +16,8 @@ #ifdef IS_MPI #include #include "mpiSimulation.hpp" -#define TAKE_THIS_TAG_CHAR 0 -#define TAKE_THIS_TAG_INT 1 +#define TAKE_THIS_TAG_CHAR 3134 +#define TAKE_THIS_TAG_INT 3135 namespace initFile{ void nodeZeroError( void ); @@ -220,6 +220,7 @@ void InitializeFromFile :: readInit( SimInfo* the_simn MPI_Bcast(read_buffer, BUFFERSIZE, MPI_CHAR, 0, MPI_COMM_WORLD); + parseErr = parseCommentLine( read_buffer, simnfo); if( parseErr != NULL ){ @@ -228,7 +229,7 @@ void InitializeFromFile :: readInit( SimInfo* the_simn simError(); } - for (i=0 ; i < mpiSim->getTotNmol(); i++) { + for (i=0 ; i < mpiSim->getNMolGlobal(); i++) { which_node = MolToProcMap[i]; if(which_node == 0){ //molecules belong to master node @@ -268,8 +269,8 @@ void InitializeFromFile :: readInit( SimInfo* the_simn MPI_Recv(&nCurObj, 1, MPI_INT, which_node, TAKE_THIS_TAG_INT, MPI_COMM_WORLD, &istatus); - - for(j=0; j < integrableObjects.size(); j++){ + + for(j=0; j < nCurObj; j++){ eof_test = fgets(read_buffer, sizeof(read_buffer), c_in_file); if(eof_test == NULL){ @@ -286,7 +287,7 @@ void InitializeFromFile :: readInit( SimInfo* the_simn MPI_Send(read_buffer, BUFFERSIZE, MPI_CHAR, which_node, TAKE_THIS_TAG_CHAR, MPI_COMM_WORLD); - + } } @@ -307,7 +308,7 @@ void InitializeFromFile :: readInit( SimInfo* the_simn simError(); } - for (i=0 ; i < mpiSim->getTotNmol(); i++) { + for (i=0 ; i < mpiSim->getNMolGlobal(); i++) { which_node = MolToProcMap[i]; if(which_node == worldRank){ @@ -517,6 +518,12 @@ char* InitializeFromFile::parseDumpLine(char* readLine qSqr = (q[0] * q[0]) + (q[1] * q[1]) + (q[2] * q[2]) + (q[3] * q[3]); + if (fabs(qSqr) < 1e-6) { + sprintf(painCave.errMsg, + "initial quaternion error (q0^2 + q1^2 + q2^2 + q3^2 ~ 0).\n"); + return strdup(painCave.errMsg); + } + qLength = sqrt( qSqr ); q[0] = q[0] / qLength; q[1] = q[1] / qLength; @@ -648,7 +655,7 @@ void initFile::nodeZeroError( void ){ int j, myStatus; myStatus = 0; - for (j = 0; j < mpiSim->getNumberProcessors(); j++) { + for (j = 0; j < mpiSim->getNProcessors(); j++) { MPI_Send( &myStatus, 1, MPI_INT, j, TAKE_THIS_TAG_INT, MPI_COMM_WORLD); }