From: ageay Date: Wed, 17 Jul 2013 12:32:39 +0000 (+0000) Subject: On the road of last imps for MEDReader X-Git-Tag: B4KillOfAutomake~9 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=9e99c9970595e737d156a25ac21e5e53a9c370f1;p=modules%2Fmed.git On the road of last imps for MEDReader --- diff --git a/src/MEDLoader/MEDFileFieldOverView.cxx b/src/MEDLoader/MEDFileFieldOverView.cxx index cfdd4202b..d531e4dd7 100644 --- a/src/MEDLoader/MEDFileFieldOverView.cxx +++ b/src/MEDLoader/MEDFileFieldOverView.cxx @@ -503,7 +503,9 @@ bool MEDFileField1TSStruct::isCompatibleWithNodesDiscr(const MEDFileAnyTypeField } else ret=_already_checked[found].isCompatibleWithNodesDiscr(other1,meshSt,other->contentNotNull()); - return true;//tony + if(ret) + _already_checked.push_back(other1); + return ret; } std::size_t MEDFileField1TSStruct::getHeapMemorySize() const diff --git a/src/MEDLoader/MEDFileMesh.cxx b/src/MEDLoader/MEDFileMesh.cxx index 6e17704e6..638681ece 100644 --- a/src/MEDLoader/MEDFileMesh.cxx +++ b/src/MEDLoader/MEDFileMesh.cxx @@ -2620,30 +2620,36 @@ int MEDFileUMesh::getNumberOfNodes() const throw(INTERP_KERNEL::Exception) void MEDFileUMesh::whichAreNodesFetched(const MEDFileField1TSStructItem& st, const MEDFileFieldGlobs *globs, std::vector& nodesFetched) const throw(INTERP_KERNEL::Exception) { - /*if(st.getNumberOfItems()!=1) - throw INTERP_KERNEL::Exception("MEDFileUMesh::whichAreNodesFetched : The sturture of field is not lying on single geo type ! it is not managed yet for structured mesh !"); - if(st[0].getGeo()!=MEDCouplingStructuredMesh::GetGeoTypeGivenMeshDimension(getMeshDimension())) - throw INTERP_KERNEL::Exception("MEDFileUMesh::whichAreNodesFetched : The sturture of field is not lying on expected geo type !"); - if(getNumberOfNodes()!=(int)nodesFetched.size()) - throw INTERP_KERNEL::Exception("MEDFileUMesh::whichAreNodesFetched : invalid size of array !"); - if(st.getPflName().empty()) + std::size_t sz(st.getNumberOfItems()); + int mdim(getMeshDimension()); + for(std::size_t i=0;i um(getMeshAtLevel(relDim)); + std::vector d(um->getDistributionOfTypes()); + std::size_t nbOfTypes(d.size()/3); + int offset=0,nbOfEltWT=-1; + for(std::size_t j=0;j(um->buildPartOfMySelf2(offset,offset+nbOfEltWT,1,true)); + if(st[i].getPflName().empty()) + um->computeNodeIdsAlg(nodesFetched); + else + { + const DataArrayInt *arr(globs->getProfile(st[i].getPflName().c_str())); + um=dynamic_cast(um->buildPartOfMySelf(arr->begin(),arr->end(),true)); + um->computeNodeIdsAlg(nodesFetched); + } } - const DataArrayInt *arr(globs->getProfile(st.getPflName().c_str())); - const MEDCouplingStructuredMesh *cmesh=getStructuredMesh();//cmesh not null because getNumberOfNodes called before - int sz(nodesFetched.size()); - for(const int *work=arr->begin();work!=arr->end();work++) - { - std::vector conn; - cmesh->getNodeIdsOfCell(*work,conn); - for(std::vector::const_iterator it=conn.begin();it!=conn.end();it++) - if(*it>=0 && *it