X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDLoader%2FMEDFileStructureElement.cxx;h=b53ff049a64655dd7087ad90b1e90d605a38dd28;hb=88916ccf9c681624b682d10a62c1ee376324c946;hp=c8d6466f5e36d2c07e2cca5ec4efab495cd9d7d1;hpb=5333bed206ae35b171662cf2a5651243c840c036;p=tools%2Fmedcoupling.git diff --git a/src/MEDLoader/MEDFileStructureElement.cxx b/src/MEDLoader/MEDFileStructureElement.cxx index c8d6466f5..b53ff049a 100644 --- a/src/MEDLoader/MEDFileStructureElement.cxx +++ b/src/MEDLoader/MEDFileStructureElement.cxx @@ -1,4 +1,4 @@ -// 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 @@ -34,6 +34,11 @@ std::string MEDFileSEHolder::getModelName() const return _father->getName(); } +std::string MEDFileSEHolder::getName() const +{ + return _name; +} + void MEDFileSEHolder::setName(const std::string& name) { _name=name; @@ -178,6 +183,7 @@ MEDFileStructureElement::MEDFileStructureElement(med_idt fid, int idSE, const ME _name=MEDLoaderBase::buildStringFromFortran(modelName,MED_NAME_SIZE); _sup_mesh_name=MEDLoaderBase::buildStringFromFortran(supportMeshName,MED_NAME_SIZE); _geo_type=MEDFileMesh::ConvertFromMEDFileGeoType(sgeoType); + _tof=MEDFileMesh::ConvertFromMEDFileEntity(entiyType); _cst_att.resize(nConsAttr); for(int i=0;igetSupMeshWithName(_sup_mesh_name)); @@ -255,8 +261,43 @@ int MEDFileStructureElement::getDynGT() const return _id_type; } +TypeOfField MEDFileStructureElement::getEntity() const +{ + return _tof; +} + +std::string MEDFileStructureElement::getMeshName() const +{ + return _sup_mesh_name; +} + +std::vector MEDFileStructureElement::getVarAtts() const +{ + std::vector ret; + for(std::vector< MCAuto >::const_iterator it=_var_att.begin();it!=_var_att.end();it++) + if((*it).isNotNull()) + ret.push_back((*it)->getName()); + return ret; +} + +const MEDFileSEVarAtt *MEDFileStructureElement::getVarAtt(const std::string& varName) const +{ + for(std::vector< MCAuto >::const_iterator it=_var_att.begin();it!=_var_att.end();it++) + if((*it).isNotNull()) + if((*it)->getName()==varName) + return *it; + std::ostringstream oss; oss << "MEDFileStructureElement::getVarAtt : no var att with name \"" << varName << "\" !"; + throw INTERP_KERNEL::Exception(oss.str()); +} + //////////////////// +MEDFileStructureElements *MEDFileStructureElements::New(const std::string& fileName, const MEDFileMeshSupports *ms) +{ + MEDFileUtilities::AutoFid fid(OpenMEDFileForRead(fileName)); + return New(fid,ms); +} + MEDFileStructureElements *MEDFileStructureElements::New(med_idt fid, const MEDFileMeshSupports *ms) { return new MEDFileStructureElements(fid,ms); @@ -290,6 +331,7 @@ MEDFileStructureElements::MEDFileStructureElements(med_idt fid, const MEDFileMes _elems.resize(nbSE); for(int i=0;i MEDFileStructureElements::getDynGTAvail() const } return ret; } + +const MEDFileStructureElement *MEDFileStructureElements::getWithGT(int idGT) const +{ + for(std::vector< MCAuto >::const_iterator it=_elems.begin();it!=_elems.end();it++) + if((*it).isNotNull()) + { + if((*it)->getDynGT()==idGT) + return *it; + } + std::ostringstream oss; oss << "MEDFileStructureElements::getWithGT : no such geo type " << idGT << " !"; + throw INTERP_KERNEL::Exception(oss.str()); +} + +int MEDFileStructureElements::getNumberOfNodesPerSE(const std::string& seName) const +{ + if(seName=="MED_PARTICLE") + return 1; + const MEDFileStructureElement *se(getSEWithName(seName)); + std::string meshName(se->getMeshName()); + return _sup->getNumberOfNodesInConnOf(se->getEntity(),meshName); +} + +const MEDFileStructureElement *MEDFileStructureElements::getSEWithName(const std::string& seName) const +{ + for(std::vector< MCAuto >::const_iterator it=_elems.begin();it!=_elems.end();it++) + { + if((*it).isNotNull()) + if((*it)->getName()==seName) + return *it; + } + std::ostringstream oss; oss << "MEDFileStructureElements::getSEWithName : no such structure element with name " << seName << " !"; + throw INTERP_KERNEL::Exception(oss.str()); +} + +std::vector MEDFileStructureElements::getVarAttsOf(const std::string& seName) const +{ + const MEDFileStructureElement *se(getSEWithName(seName)); + return se->getVarAtts(); +} + +const MEDFileSEVarAtt *MEDFileStructureElements::getVarAttOf(const std::string &seName, const std::string& varName) const +{ + const MEDFileStructureElement *se(getSEWithName(seName)); + return se->getVarAtt(varName); +} + +const MEDFileUMesh *MEDFileStructureElements::getSupMeshWithName(const std::string& name) const +{ + return _sup->getSupMeshWithName(name); +}