diff --git a/Geo/GModelIO_MED.cpp b/Geo/GModelIO_MED.cpp index e17b9441aefe04dd3b23703d858455e5a8ab173d..0457e827baa56d9a0528fe5612f44037b633576b 100644 --- a/Geo/GModelIO_MED.cpp +++ b/Geo/GModelIO_MED.cpp @@ -374,7 +374,7 @@ int GModel::readMED(const std::string &name, int meshIndex) for(int k = 0; k < numNodPerEle; k++) v[k] = verts[conn[numNodPerEle * j + med2mshNodeIndex(type, k)] - 1]; MElement *e = factory.create(mshType, v, eleTags.empty() ? 0 : eleTags[j]); - if(e) elements[-fam[j]].push_back(e); + if(e) elements[std::abs(fam[j])].push_back(e); } _storeElementsInEntities(elements); } @@ -431,12 +431,12 @@ int GModel::readMED(const std::string &name, int meshIndex) #endif // family tags are unique (for all dimensions) GEntity *ge; - if((ge = getRegionByTag(-familyNum))){} - else if((ge = getFaceByTag(-familyNum))){} - else if((ge = getEdgeByTag(-familyNum))){} - else ge = getVertexByTag(-familyNum); + if((ge = getRegionByTag(std::abs(familyNum)))){} + else if((ge = getFaceByTag(std::abs(familyNum)))){} + else if((ge = getEdgeByTag(std::abs(familyNum)))){} + else ge = getVertexByTag(std::abs(familyNum)); if(ge){ - elementaryNames[std::pair<int, int>(ge->dim(), -familyNum)] = familyName; + elementaryNames[std::pair<int, int>(ge->dim(), std::abs(familyNum))] = familyName; if(numGroups > 0){ for(int j = 0; j < numGroups; j++){ char tmp[MED_TAILLE_LNOM + 1]; @@ -558,8 +558,9 @@ int GModel::writeMED(const std::string &name, bool saveAll, double scalingFactor #endif Msg::Error("Could not create MED family 0"); - // create one family per elementary entity, with one group per - // physical entity and no attributes + // create one family per elementary entity, with one group per physical + // entity and no attributes; we use negative family numbers, as intructed by + // Code_Aster devs. for(unsigned int i = 0; i < entities.size(); i++){ if(saveAll || entities[i]->physicals.size()){ int num = - ((int)families.size() + 1);