--- trunk/OOPSE/libmdtools/Restraints.cpp 2004/05/24 21:23:36 1194 +++ trunk/OOPSE/libmdtools/Restraints.cpp 2004/06/02 14:56:18 1221 @@ -23,45 +23,69 @@ Restraints::Restraints(int nMolInfo, double lambdaVal, const char *jolt = " \t\n;,"; - strcpy(springName, "HarmSpringConsts.txt"); +#ifdef IS_MPI + if(worldRank == 0 ){ +#endif // is_mpi - ifstream springs(springName); - - if (!springs) { - sprintf(painCave.errMsg, - "Restraints Warning: Unable to open HarmSpringConsts.txt for reading.\n" - "\tDefault spring constants will be loaded. If you want to specify\n" - "\tspring constants, include a three line HarmSpringConsts.txt file\n" - "\tin the current directory.\n"); - painCave.isFatal = 0; - simError(); - - // load default spring constants - kDist = 6; // spring constant in units of kcal/(mol*ang^2) - kTheta = 7.5; // in units of kcal/mol - kOmega = 13.5; // in units of kcal/mol - return; + strcpy(springName, "HarmSpringConsts.txt"); + + ifstream springs(springName); + + if (!springs) { + sprintf(painCave.errMsg, + "In Restraints: Unable to open HarmSpringConsts.txt for reading.\n" + "\tDefault spring constants will be loaded. If you want to specify\n" + "\tspring constants, include a three line HarmSpringConsts.txt file\n" + "\tin the current directory.\n"); + painCave.severity = OOPSE_WARNING; + painCave.isFatal = 0; + simError(); + + // load default spring constants + kDist = 6; // spring constant in units of kcal/(mol*ang^2) + kTheta = 7.5; // in units of kcal/mol + kOmega = 13.5; // in units of kcal/mol + } else { + + springs.getline(inLine,999,'\n'); + springs.getline(inLine,999,'\n'); + token = strtok(inLine,jolt); + token = strtok(NULL,jolt); + strcpy(inValue,token); + kDist = (atof(inValue)); + springs.getline(inLine,999,'\n'); + token = strtok(inLine,jolt); + token = strtok(NULL,jolt); + strcpy(inValue,token); + kTheta = (atof(inValue)); + springs.getline(inLine,999,'\n'); + token = strtok(inLine,jolt); + token = strtok(NULL,jolt); + strcpy(inValue,token); + kOmega = (atof(inValue)); + springs.close(); + } +#ifdef IS_MPI } + + MPI_Bcast(&kDist, 1, MPI_DOUBLE, 0, MPI_COMM_WORLD); + MPI_Bcast(&kTheta, 1, MPI_DOUBLE, 0, MPI_COMM_WORLD); + MPI_Bcast(&kOmega, 1, MPI_DOUBLE, 0, MPI_COMM_WORLD); + + sprintf( checkPointMsg, + "Sucessfully opened and read spring file.\n"); + MPIcheckPoint(); - springs.getline(inLine,999,'\n'); - springs.getline(inLine,999,'\n'); - token = strtok(inLine,jolt); - token = strtok(NULL,jolt); - strcpy(inValue,token); - kDist = (atof(inValue)); - springs.getline(inLine,999,'\n'); - token = strtok(inLine,jolt); - token = strtok(NULL,jolt); - strcpy(inValue,token); - kTheta = (atof(inValue)); - springs.getline(inLine,999,'\n'); - token = strtok(inLine,jolt); - token = strtok(NULL,jolt); - strcpy(inValue,token); - kOmega = (atof(inValue)); - springs.close(); - - cout << "The Spring Constants are:\n\tkDist = " << kDist << "\n\tkTheta = " << kTheta << "\n\tkOmega = " << kOmega << "\n"; +#endif // is_mpi + + sprintf(painCave.errMsg, + "The spring constants for thermodynamic integration are:\n" + "\tkDist = %lf\n" + "\tkTheta = %lf\n" + "\tkOmega = %lf\n", kDist, kTheta, kOmega); + painCave.severity = OOPSE_INFO; + painCave.isFatal = 0; + simError(); } Restraints::~Restraints(){