--- trunk/OOPSE/libmdtools/SimInfo.cpp 2003/03/31 21:50:59 438 +++ trunk/OOPSE/libmdtools/SimInfo.cpp 2003/04/04 19:47:19 458 @@ -16,6 +16,8 @@ SimInfo::SimInfo(){ n_constraints = 0; n_oriented = 0; n_dipoles = 0; + ndf = 0; + ndfRaw = 0; the_integrator = NULL; setTemp = 0; thermalTime = 0.0; @@ -29,11 +31,53 @@ SimInfo::SimInfo(){ useGB = 0; useEAM = 0; + wrapMeSimInfo( this ); +} +void SimInfo::setBox(double newBox[3]) { + box_x = newBox[0]; + box_y = newBox[1]; + box_z = newBox[2]; + setFortranBoxSize(newBox); +} - wrapMeSimInfo( this ); +void SimInfo::getBox(double theBox[3]) { + theBox[0] = box_x; + theBox[1] = box_y; + theBox[2] = box_z; } + +int SimInfo::getNDF(){ + int ndf_local, ndf; + + ndf_local = 3 * n_atoms + 3 * n_oriented - n_constraints; +#ifdef IS_MPI + MPI_Allreduce(&ndf_local,&ndf,1,MPI_INT,MPI_SUM, MPI_COMM_WORLD); +#else + ndf = ndf_local; +#endif + + ndf = ndf - 3; + + return ndf; +} + +int SimInfo::getNDFraw() { + int ndfRaw_local, ndfRaw; + + // Raw degrees of freedom that we have to set + ndfRaw_local = 3 * n_atoms + 3 * n_oriented; + +#ifdef IS_MPI + MPI_Allreduce(&ndfRaw_local,&ndfRaw,1,MPI_INT,MPI_SUM, MPI_COMM_WORLD); +#else + ndfRaw = ndfRaw_local; +#endif + + return ndfRaw; +} + void SimInfo::refreshSim(){ simtype fInfo; @@ -51,13 +95,14 @@ void SimInfo::refreshSim(){ fInfo.dielect = dielectric; fInfo.SIM_uses_PBC = usePBC; - // fInfo.SIM_uses_LJ = useLJ; - fInfo.SIM_uses_LJ = 0; - //fInfo.SIM_uses_sticky = useSticky; - fInfo.SIM_uses_sticky = 0; + //fInfo.SIM_uses_LJ = 0; + fInfo.SIM_uses_LJ = useLJ; + fInfo.SIM_uses_sticky = useSticky; + //fInfo.SIM_uses_sticky = 0; fInfo.SIM_uses_dipoles = useDipole; //fInfo.SIM_uses_dipoles = 0; - fInfo.SIM_uses_RF = useReactionField; + //fInfo.SIM_uses_RF = useReactionField; + fInfo.SIM_uses_RF = 0; fInfo.SIM_uses_GB = useGB; fInfo.SIM_uses_EAM = useEAM; @@ -65,14 +110,14 @@ void SimInfo::refreshSim(){ isError = 0; - fInfo; - n_atoms; - identArray; - n_exclude; - excludes; - nGlobalExcludes; - globalExcludes; - isError; +// fInfo; +// n_atoms; +// identArray; +// n_exclude; +// excludes; +// nGlobalExcludes; +// globalExcludes; +// isError; setFsimulation( &fInfo, &n_atoms, identArray, &n_exclude, excl, &nGlobalExcludes, globalExcludes, &isError ); @@ -90,5 +135,9 @@ void SimInfo::refreshSim(){ "succesfully sent the simulation information to fortran.\n"); MPIcheckPoint(); #endif // is_mpi + + ndf = this->getNDF(); + ndfRaw = this->getNDFraw(); + }