--- trunk/OOPSE/libmdtools/SimInfo.cpp 2004/04/12 20:32:20 1097 +++ trunk/OOPSE/libmdtools/SimInfo.cpp 2004/04/19 03:52:27 1118 @@ -322,10 +322,16 @@ int SimInfo::getNDF(){ int SimInfo::getNDF(){ int ndf_local; + ndf_local = 0; + for(int i = 0; i < integrableObjects.size(); i++){ ndf_local += 3; - if (integrableObjects[i]->isDirectional()) - ndf_local += 3; + if (integrableObjects[i]->isDirectional()) { + if (integrableObjects[i]->isLinear()) + ndf_local += 2; + else + ndf_local += 3; + } } // n_constraints is local, so subtract them on each processor: @@ -350,11 +356,16 @@ int SimInfo::getNDFraw() { int ndfRaw_local; // Raw degrees of freedom that we have to set + ndfRaw_local = 0; for(int i = 0; i < integrableObjects.size(); i++){ ndfRaw_local += 3; - if (integrableObjects[i]->isDirectional()) - ndfRaw_local += 3; + if (integrableObjects[i]->isDirectional()) { + if (integrableObjects[i]->isLinear()) + ndfRaw_local += 2; + else + ndfRaw_local += 3; + } } #ifdef IS_MPI @@ -381,6 +392,23 @@ int SimInfo::getNDFtranslational() { ndfTrans = ndfTrans - 3 - nZconstraints; return ndfTrans; +} + +int SimInfo::getTotIntegrableObjects() { + int nObjs_local; + int nObjs; + + nObjs_local = integrableObjects.size(); + + +#ifdef IS_MPI + MPI_Allreduce(&nObjs_local,&nObjs,1,MPI_INT,MPI_SUM, MPI_COMM_WORLD); +#else + nObjs = nObjs_local; +#endif + + + return nObjs; } void SimInfo::refreshSim(){ @@ -561,13 +589,3 @@ GenericData* SimInfo::getProperty(const string& propNa return NULL; } -vector SimInfo::getProperties(){ - - vector result; - map::iterator i; - - for(i = properties.begin(); i != properties.end(); i++) - result.push_back((*i).second); - - return result; -}