--- trunk/src/brains/SimInfo.cpp 2013/12/05 18:19:26 1953 +++ trunk/src/brains/SimInfo.cpp 2014/04/17 19:07:31 1987 @@ -74,11 +74,12 @@ namespace OpenMD { nGlobalMols_(0), nGlobalAtoms_(0), nGlobalCutoffGroups_(0), nGlobalIntegrableObjects_(0), nGlobalRigidBodies_(0), nGlobalFluctuatingCharges_(0), nGlobalBonds_(0), nGlobalBends_(0), - nGlobalTorsions_(0), nGlobalInversions_(0), nAtoms_(0), nBonds_(0), - nBends_(0), nTorsions_(0), nInversions_(0), nRigidBodies_(0), - nIntegrableObjects_(0), nCutoffGroups_(0), nConstraints_(0), - nFluctuatingCharges_(0), sman_(NULL), topologyDone_(false), - calcBoxDipole_(false), useAtomicVirial_(true) { + nGlobalTorsions_(0), nGlobalInversions_(0), nGlobalConstraints_(0), + nAtoms_(0), nBonds_(0), nBends_(0), nTorsions_(0), nInversions_(0), + nRigidBodies_(0), nIntegrableObjects_(0), nCutoffGroups_(0), + nConstraints_(0), nFluctuatingCharges_(0), sman_(NULL), + topologyDone_(false), calcBoxDipole_(false), useAtomicVirial_(true), + hasNGlobalConstraints_(false) { MoleculeStamp* molStamp; int nMolWithSameStamp; @@ -281,9 +282,9 @@ namespace OpenMD { ndf_local -= nConstraints_; #ifdef IS_MPI - MPI::COMM_WORLD.Allreduce(&ndf_local, &ndf_, 1, MPI::INT,MPI::SUM); - MPI::COMM_WORLD.Allreduce(&nfq_local, &nGlobalFluctuatingCharges_, 1, - MPI::INT, MPI::SUM); + MPI_Allreduce(&ndf_local, &ndf_, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD); + MPI_Allreduce(&nfq_local, &nGlobalFluctuatingCharges_, 1, + MPI_INT, MPI_SUM, MPI_COMM_WORLD); #else ndf_ = ndf_local; nGlobalFluctuatingCharges_ = nfq_local; @@ -297,7 +298,7 @@ namespace OpenMD { int SimInfo::getFdf() { #ifdef IS_MPI - MPI::COMM_WORLD.Allreduce(&fdf_local, &fdf_, 1, MPI::INT, MPI::SUM); + MPI_Allreduce(&fdf_local, &fdf_, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD); #else fdf_ = fdf_local; #endif @@ -353,7 +354,7 @@ namespace OpenMD { } #ifdef IS_MPI - MPI::COMM_WORLD.Allreduce(&ndfRaw_local, &ndfRaw_, 1, MPI::INT, MPI::SUM); + MPI_Allreduce(&ndfRaw_local, &ndfRaw_, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD); #else ndfRaw_ = ndfRaw_local; #endif @@ -364,16 +365,14 @@ namespace OpenMD { ndfTrans_local = 3 * nIntegrableObjects_ - nConstraints_; - #ifdef IS_MPI - MPI::COMM_WORLD.Allreduce(&ndfTrans_local, &ndfTrans_, 1, - MPI::INT, MPI::SUM); + MPI_Allreduce(&ndfTrans_local, &ndfTrans_, 1, MPI_INT, MPI_SUM, + MPI_COMM_WORLD); #else ndfTrans_ = ndfTrans_local; #endif ndfTrans_ = ndfTrans_ - 3 - nZconstraint_; - } void SimInfo::addInteractionPairs(Molecule* mol) { @@ -710,6 +709,7 @@ namespace OpenMD { */ void SimInfo::update() { setupSimVariables(); + calcNConstraints(); calcNdf(); calcNdfRaw(); calcNdfTrans(); @@ -749,7 +749,8 @@ namespace OpenMD { // count_local holds the number of found types on this processor int count_local = foundTypes.size(); - int nproc = MPI::COMM_WORLD.Get_size(); + int nproc; + MPI_Comm_size( MPI_COMM_WORLD, &nproc); // we need arrays to hold the counts and displacement vectors for // all processors @@ -757,8 +758,8 @@ namespace OpenMD { vector disps(nproc, 0); // fill the counts array - MPI::COMM_WORLD.Allgather(&count_local, 1, MPI::INT, &counts[0], - 1, MPI::INT); + MPI_Allgather(&count_local, 1, MPI_INT, &counts[0], + 1, MPI_INT, MPI_COMM_WORLD); // use the processor counts to compute the displacement array disps[0] = 0; @@ -772,9 +773,9 @@ namespace OpenMD { vector ftGlobal(totalCount); // now spray out the foundTypes to all the other processors: - MPI::COMM_WORLD.Allgatherv(&foundTypes[0], count_local, MPI::INT, - &ftGlobal[0], &counts[0], &disps[0], - MPI::INT); + MPI_Allgatherv(&foundTypes[0], count_local, MPI_INT, + &ftGlobal[0], &counts[0], &disps[0], + MPI_INT, MPI_COMM_WORLD); vector::iterator j; @@ -838,22 +839,23 @@ namespace OpenMD { } #ifdef IS_MPI - bool temp; + int temp; + temp = usesDirectional; - MPI::COMM_WORLD.Allreduce(&temp, &usesDirectionalAtoms_, 1, MPI::BOOL, - MPI::LOR); - - temp = usesMetallic; - MPI::COMM_WORLD.Allreduce(&temp, &usesMetallicAtoms_, 1, MPI::BOOL, - MPI::LOR); + MPI_Allreduce(MPI_IN_PLACE, &temp, 1, MPI_INT, MPI_LOR, MPI_COMM_WORLD); + usesDirectionalAtoms_ = (temp == 0) ? false : true; + temp = usesMetallic; + MPI_Allreduce(MPI_IN_PLACE, &temp, 1, MPI_INT, MPI_LOR, MPI_COMM_WORLD); + usesMetallicAtoms_ = (temp == 0) ? false : true; + temp = usesElectrostatic; - MPI::COMM_WORLD.Allreduce(&temp, &usesElectrostaticAtoms_, 1, MPI::BOOL, - MPI::LOR); + MPI_Allreduce(MPI_IN_PLACE, &temp, 1, MPI_INT, MPI_LOR, MPI_COMM_WORLD); + usesElectrostaticAtoms_ = (temp == 0) ? false : true; temp = usesFluctuatingCharges; - MPI::COMM_WORLD.Allreduce(&temp, &usesFluctuatingCharges_, 1, MPI::BOOL, - MPI::LOR); + MPI_Allreduce(MPI_IN_PLACE, &temp, 1, MPI_INT, MPI_LOR, MPI_COMM_WORLD); + usesFluctuatingCharges_ = (temp == 0) ? false : true; #else usesDirectionalAtoms_ = usesDirectional; @@ -1068,15 +1070,13 @@ namespace OpenMD { IOIndexToIntegrableObject= v; } - int SimInfo::getNGlobalConstraints() { - int nGlobalConstraints; + void SimInfo::calcNConstraints() { #ifdef IS_MPI - MPI::COMM_WORLD.Allreduce(&nConstraints_, &nGlobalConstraints, 1, - MPI::INT, MPI::SUM); + MPI_Allreduce(&nConstraints_, &nGlobalConstraints_, 1, + MPI_INT, MPI_SUM, MPI_COMM_WORLD); #else - nGlobalConstraints = nConstraints_; + nGlobalConstraints_ = nConstraints_; #endif - return nGlobalConstraints; } }//end namespace OpenMD