--- trunk/OOPSE/libmdtools/ForceFields.cpp 2003/03/24 15:26:05 389 +++ trunk/OOPSE/libmdtools/ForceFields.cpp 2003/07/02 21:26:55 572 @@ -1,3 +1,8 @@ +#include + +using namespace std; + + #include #ifdef IS_MPI @@ -11,28 +16,50 @@ void ForceFields::doForces( int calcPot, int calcStres #include "fortranWrappers.hpp" +void ForceFields::calcRcut( void ){ + +#ifdef IS_MPI + double tempBig = bigSigma; + MPI_Allreduce( &tempBig, &bigSigma, 1, MPI_DOUBLE, MPI_MAX, + MPI_COMM_WORLD); +#endif //is_mpi + + //calc rCut and rList + + entry_plug->rCut = 2.5 * bigSigma; + if(entry_plug->rCut > (entry_plug->boxLx / 2.0)) + entry_plug->rCut = entry_plug->boxLx / 2.0; + if(entry_plug->rCut > (entry_plug->boxLy / 2.0)) + entry_plug->rCut = entry_plug->boxLy / 2.0; + if(entry_plug->rCut > (entry_plug->boxLz / 2.0)) + entry_plug->rCut = entry_plug->boxLz / 2.0; + + entry_plug->rList = entry_plug->rCut + 1.0; + +} + void ForceFields::doForces( int calcPot, int calcStress ){ int i, isError; double* frc; double* pos; double* trq; - double* tau; double* A; - double* u_l; + double* u_l;; + DirectionalAtom* dAtom; short int passedCalcPot = (short int)calcPot; short int passedCalcStress = (short int)calcStress; - // forces are zeroed here, before any are acumulated. + // forces are zeroed here, before any are accumulated. // NOTE: do not rezero the forces in Fortran. for(i=0; in_atoms; i++){ - entry_plug->atoms[i]->zeroForces(); + entry_plug->atoms[i]->zeroForces(); } - for(i=0; in_SRI; i++ ){ - entry_plug->sr_interactions[i]->calc_forces(); + for(i=0; in_mol; i++ ){ + entry_plug->molecules[i].calcForces(); } frc = Atom::getFrcArray(); @@ -41,22 +68,24 @@ void ForceFields::doForces( int calcPot, int calcStres A = Atom::getAmatArray(); u_l = Atom::getUlArray(); - tau = entry_plug->tau; - isError = 0; entry_plug->lrPot = 0.0; + + for (i=0; i<9; i++) { + entry_plug->tau[i] = 0.0; + } + fortranForceLoop( pos, A, u_l, frc, trq, - tau, + entry_plug->tau, &(entry_plug->lrPot), &passedCalcPot, &passedCalcStress, &isError ); - if( isError ){ sprintf( painCave.errMsg, "Error returned from the fortran force calculation.\n" );