--- trunk/OOPSE/libmdtools/ForceFields.cpp 2004/04/05 19:42:13 1096 +++ trunk/OOPSE/libmdtools/ForceFields.cpp 2004/04/12 20:32:20 1097 @@ -34,6 +34,43 @@ void ForceFields::doForces( int calcPot, int calcStres } +void ForceFields::setRcut( double LJrcut ) { + +#ifdef IS_MPI + double tempBig = bigSigma; + MPI_Allreduce( &tempBig, &bigSigma, 1, MPI_DOUBLE, MPI_MAX, + MPI_COMM_WORLD); +#endif //is_mpi + + if (LJrcut < 2.5 * bigSigma) { + sprintf( painCave.errMsg, + "Setting Lennard-Jones cutoff radius to %lf.\n" + "\tThis value is smaller than %lf, which is\n" + "\t2.5 * bigSigma, where bigSigma is the largest\n" + "\tvalue of sigma present in the simulation.\n" + "\tThis is potentially a problem since the LJ potential may\n" + "\tbe appreciable at this distance. If you don't want the\n" + "\tsmaller cutoff, change the LJrcut variable.\n", + LJrcut, 2.5*bigSigma); + painCave.isFatal = 0; + simError(); + } else { + sprintf( painCave.errMsg, + "Setting Lennard-Jones cutoff radius to %lf.\n" + "\tThis value is larger than %lf, which is\n" + "\t2.5 * bigSigma, where bigSigma is the largest\n" + "\tvalue of sigma present in the simulation. This should\n" + "\tnot be a problem, but could adversely effect performance.\n", + LJrcut, 2.5*bigSigma); + painCave.isFatal = 0; + simError(); + } + + //calc rCut and rList + + entry_plug->setDefaultRcut( LJrcut ); +} + void ForceFields::doForces( int calcPot, int calcStress ){ int i, isError; @@ -59,6 +96,8 @@ void ForceFields::doForces( int calcPot, int calcStres #endif for(i=0; in_mol; i++ ){ + // CalcForces in molecules takes care of mapping rigid body coordinates + // into atomic coordinates entry_plug->molecules[i].calcForces(); } @@ -109,6 +148,11 @@ void ForceFields::doForces( int calcPot, int calcStres simError(); } + for(i=0; in_mol; i++ ){ + entry_plug->molecules[i].atoms2rigidBodies(); + } + + #ifdef IS_MPI sprintf( checkPointMsg, "returned from the force calculation.\n" );