-// Copyright (C) 2007-2017 CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019 CEA/DEN, EDF R&D
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
using namespace MEDCoupling;
+MEDFileMeshSupports *MEDFileMeshSupports::New(const std::string& fileName)
+{
+ MEDFileUtilities::AutoFid fid(OpenMEDFileForRead(fileName));
+ return New(fid);
+}
+
MEDFileMeshSupports *MEDFileMeshSupports::New(med_idt fid)
{
return new MEDFileMeshSupports(fid);
(*it)->writeLL(fid);
}
+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;
}
}
std::ostringstream oss;
- oss << "MEDFileMeshSupports::getSupMeshWithName : no such name \"" << name << "\". Possibilitities are :";
+ 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::getNumberOfNodesPerCellOf(const std::string& name) const
+int MEDFileMeshSupports::getNumberOfNodesInConnOf(TypeOfField entity, const std::string& name) const
{
const MEDFileUMesh *sup(getSupMeshWithName(name));
- return sup->getNumberOfNodes();
+ 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 !");
+ }
}