X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDCoupling%2FMEDCouplingExtrudedMesh.cxx;h=d50304f6c3703c301f572fdd24776d0e3f006b4f;hb=f13ce72017fd205546293a53f7b041824cb50eec;hp=70fe722873d09abe23c56123b36c7b5cc64c4e9a;hpb=1123dccd6613b2e8abba35182759d5c4a11ecc8d;p=tools%2Fmedcoupling.git diff --git a/src/MEDCoupling/MEDCouplingExtrudedMesh.cxx b/src/MEDCoupling/MEDCouplingExtrudedMesh.cxx index 70fe72287..d50304f6c 100644 --- a/src/MEDCoupling/MEDCouplingExtrudedMesh.cxx +++ b/src/MEDCoupling/MEDCouplingExtrudedMesh.cxx @@ -104,7 +104,7 @@ try:_mesh2D(const_cast(mesh2D)),_mesh1D(MEDCouplingUMesh::Ne setName(mesh3D->getName()); } catch(INTERP_KERNEL::Exception& e) - { +{ if(_mesh2D) _mesh2D->decrRef(); if(_mesh1D) @@ -112,7 +112,7 @@ catch(INTERP_KERNEL::Exception& e) if(_mesh3D_ids) _mesh3D_ids->decrRef(); throw e; - } +} MEDCouplingExtrudedMesh::MEDCouplingExtrudedMesh():_mesh2D(0),_mesh1D(0),_mesh3D_ids(0),_cell_2D_id(-1) { @@ -224,13 +224,13 @@ bool MEDCouplingExtrudedMesh::isEqualWithoutConsideringStr(const MEDCouplingMesh } void MEDCouplingExtrudedMesh::checkDeepEquivalWith(const MEDCouplingMesh *other, int cellCompPol, double prec, - DataArrayInt *&cellCor, DataArrayInt *&nodeCor) const throw(INTERP_KERNEL::Exception) + DataArrayInt *&cellCor, DataArrayInt *&nodeCor) const { throw INTERP_KERNEL::Exception("MEDCouplingExtrudedMesh::checkDeepEquivalWith : not implemented yet !"); } void MEDCouplingExtrudedMesh::checkDeepEquivalOnSameNodesWith(const MEDCouplingMesh *other, int cellCompPol, double prec, - DataArrayInt *&cellCor) const throw(INTERP_KERNEL::Exception) + DataArrayInt *&cellCor) const { throw INTERP_KERNEL::Exception("MEDCouplingExtrudedMesh::checkDeepEquivalOnSameNodesWith : not implemented yet !"); } @@ -288,7 +288,7 @@ DataArrayInt *MEDCouplingExtrudedMesh::computeNbOfNodesPerCell() const MEDCouplingAutoRefCountObjectPtr ret3D=DataArrayInt::New(); ret3D->alloc(nbOfLevs*nbOfCells2D,1); int *pt=ret3D->getPointer(); for(int i=0;ibegin(),ret2D->end(),pt); + std::copy(ret2D->begin(),ret2D->end(),pt); ret3D->applyLin(2,0,0); return ret3D->renumberR(_mesh3D_ids->begin()); } @@ -301,7 +301,7 @@ DataArrayInt *MEDCouplingExtrudedMesh::computeNbOfFacesPerCell() const MEDCouplingAutoRefCountObjectPtr ret3D=DataArrayInt::New(); ret3D->alloc(nbOfLevs*nbOfCells2D,1); int *pt=ret3D->getPointer(); for(int i=0;ibegin(),ret2D->end(),pt); + std::copy(ret2D->begin(),ret2D->end(),pt); ret3D->applyLin(2,2,0); return ret3D->renumberR(_mesh3D_ids->begin()); } @@ -390,7 +390,7 @@ std::string MEDCouplingExtrudedMesh::advancedRepr() const return ret.str(); } -void MEDCouplingExtrudedMesh::checkCoherency() const throw (INTERP_KERNEL::Exception) +void MEDCouplingExtrudedMesh::checkCoherency() const { } @@ -533,7 +533,7 @@ void MEDCouplingExtrudedMesh::computeExtrusion(const MEDCouplingUMesh *mesh3D) void MEDCouplingExtrudedMesh::build1DExtrusion(int idIn3DDesc, int newId, int nbOf1DLev, MEDCouplingUMesh *subMesh, const int *desc3D, const int *descIndx3D, const int *revDesc3D, const int *revDescIndx3D, - bool computeMesh1D) throw(INTERP_KERNEL::Exception) + bool computeMesh1D) { int nbOf2DCells=_mesh2D->getNumberOfCells(); int start=revDescIndx3D[idIn3DDesc]; @@ -557,7 +557,7 @@ void MEDCouplingExtrudedMesh::build1DExtrusion(int idIn3DDesc, int newId, int nb if(computeMesh1D) computeBaryCenterOfFace(conn,i-1); current2DCell=findOppositeFaceOf(current2DCell,current3DCell,conn, - desc3D,descIndx3D,conn2D,conn2DIndx); + desc3D,descIndx3D,conn2D,conn2DIndx); start=revDescIndx3D[current2DCell]; end=revDescIndx3D[current2DCell+1]; if(end-start!=2) @@ -578,7 +578,7 @@ void MEDCouplingExtrudedMesh::build1DExtrusion(int idIn3DDesc, int newId, int nb std::sort(conn.begin(),conn.end()); computeBaryCenterOfFace(conn,nbOf1DLev-1); current2DCell=findOppositeFaceOf(current2DCell,current3DCell,conn, - desc3D,descIndx3D,conn2D,conn2DIndx); + desc3D,descIndx3D,conn2D,conn2DIndx); conn.clear(); conn.insert(conn.end(),conn2D+conn2DIndx[current2DCell]+1,conn2D+conn2DIndx[current2DCell+1]); std::sort(conn.begin(),conn.end()); @@ -588,7 +588,7 @@ void MEDCouplingExtrudedMesh::build1DExtrusion(int idIn3DDesc, int newId, int nb int MEDCouplingExtrudedMesh::findOppositeFaceOf(int current2DCell, int current3DCell, const std::vector& connSorted, const int *desc3D, const int *descIndx3D, - const int *conn2D, const int *conn2DIndx) throw(INTERP_KERNEL::Exception) + const int *conn2D, const int *conn2DIndx) { int start=descIndx3D[current3DCell]; int end=descIndx3D[current3DCell+1]; @@ -621,7 +621,7 @@ void MEDCouplingExtrudedMesh::computeBaryCenterOfFace(const std::vector& no std::transform(zoneToUpdate,zoneToUpdate+3,zoneToUpdate,std::bind2nd(std::multiplies(),(double)(1./(int)nodalConnec.size()))); } -int MEDCouplingExtrudedMesh::FindCorrespCellByNodalConn(const std::vector& nodalConnec, const int *revNodalPtr, const int *revNodalIndxPtr) throw(INTERP_KERNEL::Exception) +int MEDCouplingExtrudedMesh::FindCorrespCellByNodalConn(const std::vector& nodalConnec, const int *revNodalPtr, const int *revNodalIndxPtr) { std::vector::const_iterator iter=nodalConnec.begin(); std::set s1(revNodalPtr+revNodalIndxPtr[*iter],revNodalPtr+revNodalIndxPtr[*iter+1]); @@ -656,7 +656,7 @@ int MEDCouplingExtrudedMesh::FindCorrespCellByNodalConn(const std::vector& * @throw in case that m1 and m2 are not compatible each other. */ void MEDCouplingExtrudedMesh::Project1DMeshes(const MEDCouplingUMesh *m1, const MEDCouplingUMesh *m2, double eps, - MEDCouplingUMesh *&m1r, MEDCouplingUMesh *&m2r, double *v) throw(INTERP_KERNEL::Exception) + MEDCouplingUMesh *&m1r, MEDCouplingUMesh *&m2r, double *v) { if(m1->getSpaceDimension()!=3 || m1->getSpaceDimension()!=3) throw INTERP_KERNEL::Exception("Input meshes are expected to have a spaceDim==3 for Projec1D !"); @@ -674,7 +674,6 @@ void MEDCouplingExtrudedMesh::Project1DMeshes(const MEDCouplingUMesh *m1, const std::transform(v,v+3,v,std::bind2nd(std::multiplies(),1/n)); m1->project1D(&ref[0],v,eps,m1r->getCoords()->getPointer()); m2->project1D(&ref[0],v,eps,m2r->getCoords()->getPointer()); - } void MEDCouplingExtrudedMesh::rotate(const double *center, const double *vector, double angle) @@ -809,18 +808,18 @@ void MEDCouplingExtrudedMesh::computeExtrusionAlg(const MEDCouplingUMesh *mesh3D for(int i=0;i nodalConnec(nodal2D+nodal2DIndx[i]+1,nodal2D+nodal2DIndx[i+1]); - try - { + std::vector nodalConnec(nodal2D+nodal2DIndx[i]+1,nodal2D+nodal2DIndx[i+1]); + try + { idInSubMesh=FindCorrespCellByNodalConn(nodalConnec,revNodal2DPtr,revNodalIndx2DPtr); - } - catch(INTERP_KERNEL::Exception& e) - { - std::ostringstream ostr; ostr << "mesh2D cell # " << i << " is not part of any cell of 3D mesh !\n"; - ostr << e.what(); - throw INTERP_KERNEL::Exception(ostr.str().c_str()); - } - build1DExtrusion(idInSubMesh,i,nbOf1DLev,subMesh,descP,descIndxP,revDescP,revDescIndxP,i==_cell_2D_id); + } + catch(INTERP_KERNEL::Exception& e) + { + std::ostringstream ostr; ostr << "mesh2D cell # " << i << " is not part of any cell of 3D mesh !\n"; + ostr << e.what(); + throw INTERP_KERNEL::Exception(ostr.str().c_str()); + } + build1DExtrusion(idInSubMesh,i,nbOf1DLev,subMesh,descP,descIndxP,revDescP,revDescIndxP,i==_cell_2D_id); } // revNodal2D->decrRef();