-// Copyright (C) 2007-2021 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
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)
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 !");