+
+std::vector<std::string> MEDFileMeshSupports::getSupMeshNames() const
+{
+ std::vector<std::string> ret;
+ for(std::vector< MCAuto<MEDFileUMesh> >::const_iterator it=_supports.begin();it!=_supports.end();it++)
+ if((*it).isNotNull())
+ ret.push_back((*it)->getName());
+ return ret;
+}
+
+const MEDFileUMesh *MEDFileMeshSupports::getSupMeshWithName(const std::string& name) const
+{
+ std::vector<std::string> mns;
+ for(std::vector< MCAuto<MEDFileUMesh> >::const_iterator it=_supports.begin();it!=_supports.end();it++)
+ {
+ if((*it).isNotNull())
+ {
+ std::string na((*it)->getName());
+ if(na==name)
+ return *it;
+ else
+ mns.push_back(na);
+ }
+ }
+ std::ostringstream oss;
+ oss << "MEDFileMeshSupports::getSupMeshWithName : no such name \"" << name << "\". Possibilities are :";
+ std::copy(mns.begin(),mns.end(),std::ostream_iterator<std::string>(oss,","));
+ oss << " !";
+ throw INTERP_KERNEL::Exception(oss.str());
+}
+
+int MEDFileMeshSupports::getNumberOfNodesInConnOf(TypeOfField entity, const std::string& name) const
+{
+ const MEDFileUMesh *sup(getSupMeshWithName(name));
+ switch(entity)
+ {
+ case ON_NODES:
+ 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();
+ }
+ default:
+ throw INTERP_KERNEL::Exception("MEDFileMeshSupports::getNumberOfNodesInConnOf : not recognized entity type !");
+ }
+}