Salome HOME
Fix computation height of isocel triangle with base equal zero : NaN
[tools/medcoupling.git] / src / MEDLoader / MEDFileMeshSupport.cxx
index 4be2a9116d2d2d5f42b155fd34eb5f037d1eecdc..5e1697ab9cf50c055d6e57144c0492eb5441da52 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2023  CEA, EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -120,7 +120,7 @@ const MEDFileUMesh *MEDFileMeshSupports::getSupMeshWithName(const std::string& n
   throw INTERP_KERNEL::Exception(oss.str());
 }
 
-mcIdType MEDFileMeshSupports::getNumberOfNodesInConnOf(TypeOfField entity, const std::string& name) const
+mcIdType MEDFileMeshSupports::getNumberOfNodesInConnOf(TypeOfField entity, INTERP_KERNEL::NormalizedCellType gt, const std::string& name) const
 {
   const MEDFileUMesh *sup(getSupMeshWithName(name));
   switch(entity)
@@ -129,11 +129,11 @@ mcIdType MEDFileMeshSupports::getNumberOfNodesInConnOf(TypeOfField entity, const
       return sup->getNumberOfNodes();
     case ON_CELLS:
       {
-        std::vector<INTERP_KERNEL::NormalizedCellType> gt(sup->getAllGeoTypes());
-        if(gt.size()!=1)
-          throw INTERP_KERNEL::Exception("MEDFileMeshSupports::getNumberOfNodesInConnOf : on cells only one geometric type allowed !");
-        const INTERP_KERNEL::CellModel& cm(INTERP_KERNEL::CellModel::GetCellModel(gt[0]));
-        return sup->getNumberOfCellsAtLevel(0)*cm.getNumberOfNodes();
+        std::vector<INTERP_KERNEL::NormalizedCellType> gts(sup->getAllGeoTypes());
+        if(std::find(gts.begin(),gts.end(),gt) == gts.end())
+          throw INTERP_KERNEL::Exception("MEDFileMeshSupports::getNumberOfNodesInConnOf : specified geometric type not found !");
+        const INTERP_KERNEL::CellModel& cm(INTERP_KERNEL::CellModel::GetCellModel(gt));
+        return sup->getNumberOfCellsWithType(gt)*cm.getNumberOfNodes();
       }
     default:
       throw INTERP_KERNEL::Exception("MEDFileMeshSupports::getNumberOfNodesInConnOf : not recognized entity type !");