X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDLoader%2FMEDFileStructureElement.cxx;h=b53ff049a64655dd7087ad90b1e90d605a38dd28;hb=844b1a4785909ad42206965838a6d0f826dfb5c1;hp=4ef945d155ea954eef73fff399af99df15a3483d;hpb=b4e470d2031b5ead9b21f4f0fbb0b053cd632c91;p=tools%2Fmedcoupling.git diff --git a/src/MEDLoader/MEDFileStructureElement.cxx b/src/MEDLoader/MEDFileStructureElement.cxx index 4ef945d15..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; @@ -90,7 +95,6 @@ MEDFileSEConstAtt::MEDFileSEConstAtt(med_idt fid, MEDFileStructureElement *fathe } if(constatttype==MED_ATT_NAME) pflSz++; - std::cerr << "******* " << pflSz << std::endl; _val->alloc(pflSz,nbCompo); MEDFILESAFECALLERRD0(MEDstructElementConstAttRd,(fid,modelName.c_str(),name.c_str(),_val->getVoidStarPointer())); if(constatttype==MED_ATT_NAME) @@ -179,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)); @@ -251,8 +256,48 @@ int MEDFileStructureElement::EffectiveNbCompo(med_attribute_type mat, int nbComp } } +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); @@ -286,6 +331,7 @@ MEDFileStructureElements::MEDFileStructureElements(med_idt fid, const MEDFileMes _elems.resize(nbSE); for(int i=0;i MEDFileStructureElements::getDynGTAvail() const +{ + std::vector ret; + for(std::vector< MCAuto >::const_iterator it=_elems.begin();it!=_elems.end();it++) + { + const MEDFileStructureElement *elt(*it); + if(elt) + ret.push_back(elt->getDynGT()); + } + 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); +}