X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FStdMeshers%2FStdMeshers_Penta_3D.cxx;h=978118aac8a2ed670ff05ab231aa2a8387693bb4;hp=29c935a64042f4f12735af016e75e944de6bfba5;hb=a274ade365bd0f0e19d56c577acc4a13aa1972a7;hpb=bd4e115a78b52e3fbc016e5e30bb0e19b2a9e7d6 diff --git a/src/StdMeshers/StdMeshers_Penta_3D.cxx b/src/StdMeshers/StdMeshers_Penta_3D.cxx index 29c935a64..978118aac 100644 --- a/src/StdMeshers/StdMeshers_Penta_3D.cxx +++ b/src/StdMeshers/StdMeshers_Penta_3D.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2021 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -6,7 +6,7 @@ // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either -// version 2.1 of the License. +// version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH StdMeshers_Penta_3D implementaion of SMESH idl descriptions +// SMESH StdMeshers_Penta_3D implementation of SMESH idl descriptions // File : StdMeshers_Penta_3D.cxx // Module : SMESH // @@ -33,12 +33,14 @@ #include "SMDS_MeshElement.hxx" #include "SMDS_VolumeOfNodes.hxx" #include "SMDS_VolumeTool.hxx" +#include "SMESHDS_Mesh.hxx" #include "SMESHDS_SubMesh.hxx" +#include "SMESH_Comment.hxx" #include "SMESH_Mesh.hxx" +#include "SMESH_MeshAlgos.hxx" #include "SMESH_MesherHelper.hxx" #include "SMESH_subMesh.hxx" #include "SMESH_subMeshEventListener.hxx" -#include "SMESH_Comment.hxx" #include #include @@ -94,8 +96,6 @@ StdMeshers_Penta_3D::~StdMeshers_Penta_3D() bool StdMeshers_Penta_3D::Compute(SMESH_Mesh& aMesh, const TopoDS_Shape& aShape) { - MESSAGE("StdMeshers_Penta_3D::Compute()"); - // bool bOK=false; // myShape=aShape; @@ -234,8 +234,7 @@ void StdMeshers_Penta_3D::MakeNodes() aTNode.SetBaseNodeID(aNodeID); // if ( SMESH_Block::IsEdgeID (aSID)) { - const SMDS_EdgePosition* epos = - static_cast(aNode->GetPosition()); + SMDS_EdgePositionPtr epos = aNode->GetPosition(); myBlock.ComputeParameters( epos->GetUParameter(), aS, aCoords ); } else { @@ -359,7 +358,7 @@ void StdMeshers_Penta_3D::MakeNodes() // set XYZ on horizontal edges and get node columns of faces: // 2 columns for each face, between which a base node is located vector* nColumns[8]; - double ratio[ NB_WALL_FACES ]; // base node position between columns [0.-1.] + double ratio[ NB_WALL_FACES ] = {0,0,0,0}; // base node position between columns [0.-1.] if ( createNode ) { for ( k = 0; k < NB_WALL_FACES ; ++k ) { ratio[ k ] = SetHorizEdgeXYZ (aBNXYZ, wallFaceID[ k ], @@ -421,10 +420,10 @@ void StdMeshers_Penta_3D::MakeNodes() aZ=(double)i/(double)(myISize-1); aCoords.SetCoord(aX, aY, aZ); // - // suporting shape ID + // supporting shape ID ShapeSupportID(bIsUpperLayer, aBNSSID, aSSID); if (!myErrorStatus->IsOK()) { - MESSAGE("StdMeshers_Penta_3D::MakeNodes() "); + MESSAGE("StdMeshers_Penta_3D::MakeNodes() pb"); return; } // @@ -471,7 +470,7 @@ void StdMeshers_Penta_3D::MakeNodes() } } if (!myErrorStatus->IsOK()) { - MESSAGE("StdMeshers_Penta_3D::MakeNodes() "); + MESSAGE("StdMeshers_Penta_3D::MakeNodes() err"); return; } // @@ -574,7 +573,7 @@ double StdMeshers_Penta_3D::SetHorizEdgeXYZ(const gp_XYZ& aBase SMESH_Block::GetFaceEdgesIDs( aFaceID, edgeVec ); // int coord = SMESH_Block::GetCoordIndOnEdge( edgeVec[ BASE ] ); - bool isForward = myBlock.IsForwadEdge( edgeVec[ BASE ] ); + bool isForward = myBlock.IsForwardEdge( edgeVec[ BASE ] ); double param = aBaseNodeParams.Coord( coord ); if ( !isForward) @@ -656,7 +655,7 @@ void StdMeshers_Penta_3D::MakeVolumeMesh() } // // 2. Make pentahedrons - int aID0, k , aJ[3]; + int aID0, k , aJ[4]; vector aN; // SMDS_ElemIteratorPtr itf, aItNodes; @@ -673,7 +672,7 @@ void StdMeshers_Penta_3D::MakeVolumeMesh() int nbFaceNodes = pE0->NbNodes(); if(myCreateQuadratic) nbFaceNodes = nbFaceNodes/2; - if ( aN.size() < nbFaceNodes * 2 ) + if ( (int) aN.size() < nbFaceNodes * 2 ) aN.resize( nbFaceNodes * 2 ); // for ( k=0; kGetID(); aJ[k] = GetIndexOnLayer(aID0); if (!myErrorStatus->IsOK()) { - MESSAGE("StdMeshers_Penta_3D::MakeVolumeMesh"); + MESSAGE("StdMeshers_Penta_3D::MakeVolumeMesh pb"); return; } } @@ -799,13 +798,13 @@ void StdMeshers_Penta_3D::MakeMeshOnFxy1() while(itf->more()) { const SMDS_MeshElement* pE0 = itf->next(); aElementType = pE0->GetType(); - if (!aElementType==SMDSAbs_Face) { + if (aElementType!=SMDSAbs_Face) { continue; } aNbNodes = pE0->NbNodes(); if(myCreateQuadratic) aNbNodes = aNbNodes/2; - if ( aNodes1.size() < aNbNodes ) + if ( (int) aNodes1.size() < aNbNodes ) aNodes1.resize( aNbNodes ); // k = aNbNodes-1; // reverse a face @@ -818,7 +817,7 @@ void StdMeshers_Penta_3D::MakeMeshOnFxy1() aID0 = pNode->GetID(); aJ = GetIndexOnLayer(aID0); if (!myErrorStatus->IsOK()) { - MESSAGE("StdMeshers_Penta_3D::MakeMeshOnFxy1() "); + MESSAGE("StdMeshers_Penta_3D::MakeMeshOnFxy1() pb"); return; } // @@ -1045,7 +1044,7 @@ void StdMeshers_Penta_3D::MakeBlock() if (iCnt>1) { // \begin{E.A.} // The current algorithm fails if there is more that one - // face wich contains triangles ... + // face which contains triangles ... // In that case, replace return by break to try another // method (coded in "if (iCnt != 1) { ... }") // @@ -1222,7 +1221,7 @@ void StdMeshers_Penta_3D::MakeBlock() // 1.1 Base vertex V000 iNbE = aME.Extent(); if (iNbE!= NB_WALL_FACES ){ - MESSAGE("StdMeshers_Penta_3D::MakeBlock() "); + MESSAGE("StdMeshers_Penta_3D::MakeBlock() err"); myErrorStatus->myName=7; // too few edges are in base face aFTr myErrorStatus->myComment=SMESH_Comment("Not a quadrilateral face #") <GetMeshDS()->ShapeToIndex( aFTr )<<": "<myName=7; // too few edges meet in base vertex myErrorStatus->myComment=SMESH_Comment("3 edges must share vertex #") <GetMeshDS()->ShapeToIndex( aV000 )<<" but there are "<myName=8; // can not find reper V001 myErrorStatus->myComment=SMESH_Comment("Can't find opposite vertex for vertex #") <GetMeshDS()->ShapeToIndex( aV000 ); @@ -1366,7 +1365,7 @@ bool StdMeshers_Penta_3D::LoadIJNodes(StdMeshers_IJNodeMap & theIJNodes, // find the other edges of theFace and orientation of e1 TopoDS_Edge e1, e2, eTop; - bool rev1, CumOri = false; + bool rev1 = false, CumOri = false; TopExp_Explorer exp( theFace, TopAbs_EDGE ); int nbEdges = 0; for ( ; exp.More(); exp.Next() ) { @@ -1465,17 +1464,15 @@ bool StdMeshers_Penta_3D::LoadIJNodes(StdMeshers_IJNodeMap & theIJNodes, node = nIt->next(); if(myTool->IsMedium(node)) continue; - const SMDS_EdgePosition* pos = - dynamic_cast( node->GetPosition() ); - if ( !pos ) { + SMDS_EdgePositionPtr pos = node->GetPosition(); + if ( !pos ) return false; - } double u = ( pos->GetUParameter() - f ) / range; vector & nVec = theIJNodes[ u ]; nVec.resize( vsize, nullNode ); loadedNodes.insert( nVec[ 0 ] = node ); } - if ( theIJNodes.size() != hsize ) { + if ( (int) theIJNodes.size() != hsize ) { MESSAGE( "Wrong node positions on theBaseEdge" ); return false; } @@ -1488,11 +1485,9 @@ bool StdMeshers_Penta_3D::LoadIJNodes(StdMeshers_IJNodeMap & theIJNodes, node = nIt->next(); if(myTool->IsMedium(node)) continue; - const SMDS_EdgePosition* pos = - dynamic_cast( node->GetPosition() ); - if ( !pos ) { + SMDS_EdgePositionPtr pos = node->GetPosition(); + if ( !pos ) return false; - } sortedNodes.insert( make_pair( pos->GetUParameter(), node )); } loadedNodes.insert( nVecf[ vsize - 1 ] = smVft->GetNodes()->next() ); @@ -1533,7 +1528,7 @@ bool StdMeshers_Penta_3D::LoadIJNodes(StdMeshers_IJNodeMap & theIJNodes, const SMDS_MeshElement* face = 0; do { // look for a face by 2 nodes - face = SMESH_MeshEditor::FindFaceInSet( n1, n2, allFaces, foundFaces ); + face = SMESH_MeshAlgos::FindFaceInSet( n1, n2, allFaces, foundFaces ); if ( face ) { int nbFaceNodes = face->NbNodes(); if ( (!myCreateQuadratic && nbFaceNodes>4) || @@ -1543,7 +1538,7 @@ bool StdMeshers_Penta_3D::LoadIJNodes(StdMeshers_IJNodeMap & theIJNodes, } // look for a not loaded node of the bool found = false; - const SMDS_MeshNode* n3 = 0; // a node defferent from n1 and n2 + const SMDS_MeshNode* n3 = 0; // a node different from n1 and n2 eIt = face->nodesIterator() ; while ( !found && eIt->more() ) { node = static_cast( eIt->next() ); @@ -1609,11 +1604,11 @@ StdMeshers_SMESHBlock::StdMeshers_SMESHBlock() } //======================================================================= -//function : IsForwadEdge +//function : IsForwardEdge //purpose : //======================================================================= -bool StdMeshers_SMESHBlock::IsForwadEdge(const int theEdgeID) +bool StdMeshers_SMESHBlock::IsForwardEdge(const int theEdgeID) { int index = myTBlock.ShapeIndex( theEdgeID ); if ( !myTBlock.IsEdgeID( theEdgeID )) @@ -1861,8 +1856,6 @@ bool StdMeshers_Penta_3D::Evaluate(SMESH_Mesh& aMesh, const TopoDS_Shape& aShape, MapShapeNbElems& aResMap) { - MESSAGE("StdMeshers_Penta_3D::Evaluate()"); - // find face contains only triangles vector < SMESH_subMesh * >meshFaces; TopTools_SequenceOfShape aFaces;