Salome HOME
projects
/
modules
/
smesh.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Copyright update 2022
[modules/smesh.git]
/
src
/
StdMeshers
/
StdMeshers_Prism_3D.cxx
diff --git
a/src/StdMeshers/StdMeshers_Prism_3D.cxx
b/src/StdMeshers/StdMeshers_Prism_3D.cxx
index b35e76ae357ce433a4196246835d0aa49dbcf82b..ad6cf5550d2df8160c7d09dd30b74d4042421440 100644
(file)
--- a/
src/StdMeshers/StdMeshers_Prism_3D.cxx
+++ b/
src/StdMeshers/StdMeshers_Prism_3D.cxx
@@
-1,4
+1,4
@@
-// Copyright (C) 2007-202
0
CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-202
2
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
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@
-99,7
+99,7
@@
namespace
{
TmpMesh() {
_isShapeToMesh = (_id = 0);
{
TmpMesh() {
_isShapeToMesh = (_id = 0);
- _m
yM
eshDS = new SMESHDS_Mesh( _id, true );
+ _meshDS = new SMESHDS_Mesh( _id, true );
}
};
//=======================================================================
}
};
//=======================================================================
@@
-554,7
+554,7
@@
namespace
{
SMESH_subMesh* faceSm = *smIt;
SMESHDS_SubMesh* faceSmDS = faceSm->GetSubMeshDS();
{
SMESH_subMesh* faceSm = *smIt;
SMESHDS_SubMesh* faceSmDS = faceSm->GetSubMeshDS();
-
int
nbQuads = faceSmDS ? faceSmDS->NbElements() : 0;
+
smIdType
nbQuads = faceSmDS ? faceSmDS->NbElements() : 0;
bool toRemove;
if ( nbQuads > 0 )
toRemove = helper->IsStructured( faceSm );
bool toRemove;
if ( nbQuads > 0 )
toRemove = helper->IsStructured( faceSm );
@@
-595,7
+595,7
@@
namespace
//================================================================================
int countNbSides( const Prism_3D::TPrismTopo & thePrism,
//================================================================================
int countNbSides( const Prism_3D::TPrismTopo & thePrism,
- vector<int> &
nbUnitePerEdge
,
+ vector<int> &
/*nbUnitePerEdge*/
,
vector< double > & edgeLength)
{
int nbEdges = thePrism.myNbEdgesInWires.front(); // nb outer edges
vector< double > & edgeLength)
{
int nbEdges = thePrism.myNbEdgesInWires.front(); // nb outer edges
@@
-718,6
+718,8
@@
namespace
cout << "mesh.AddNode( " << p[i].X() << ", "<< p[i].Y() << ", "<< p[i].Z() << ") # " << i <<" " ;
SMESH_Block::DumpShapeID( i, cout ) << endl;
}
cout << "mesh.AddNode( " << p[i].X() << ", "<< p[i].Y() << ", "<< p[i].Z() << ") # " << i <<" " ;
SMESH_Block::DumpShapeID( i, cout ) << endl;
}
+#else
+ (void)p; // unused in release mode
#endif
}
#endif
}
@@
-760,8
+762,8
@@
StdMeshers_Prism_3D::~StdMeshers_Prism_3D()
//purpose :
//=======================================================================
//purpose :
//=======================================================================
-bool StdMeshers_Prism_3D::CheckHypothesis(SMESH_Mesh&
aMesh
,
- const TopoDS_Shape&
aShape
,
+bool StdMeshers_Prism_3D::CheckHypothesis(SMESH_Mesh&
/*aMesh*/
,
+ const TopoDS_Shape&
/*aShape*/
,
SMESH_Hypothesis::Hypothesis_Status& aStatus)
{
// no hypothesis
SMESH_Hypothesis::Hypothesis_Status& aStatus)
{
// no hypothesis
@@
-984,7
+986,7
@@
bool StdMeshers_Prism_3D::Compute(SMESH_Mesh& theMesh, const TopoDS_Shape& theSh
}
else
{
}
else
{
-
meshed
Faces.push_back( prism.myBottom );
+
suspectSource
Faces.push_back( prism.myBottom );
if ( prism.myAlgoSM && prism.myAlgoSM->GetAlgo() )
meshedFace2AlgoSM.Bind( prism.myBottom, prism.myAlgoSM );
}
if ( prism.myAlgoSM && prism.myAlgoSM->GetAlgo() )
meshedFace2AlgoSM.Bind( prism.myBottom, prism.myAlgoSM );
}
@@
-1023,7
+1025,7
@@
bool StdMeshers_Prism_3D::Compute(SMESH_Mesh& theMesh, const TopoDS_Shape& theSh
SMESH_subMesh* faceSM = theMesh.GetSubMesh( face );
if ( !faceSM->IsEmpty() )
{
SMESH_subMesh* faceSM = theMesh.GetSubMesh( face );
if ( !faceSM->IsEmpty() )
{
-
int
nbFaces = faceSM->GetSubMeshDS()->NbElements();
+
smIdType
nbFaces = faceSM->GetSubMeshDS()->NbElements();
if ( prevNbFaces < nbFaces )
{
if ( !meshedFaces.empty() ) meshedFaces.pop_back();
if ( prevNbFaces < nbFaces )
{
if ( !meshedFaces.empty() ) meshedFaces.pop_back();
@@
-1151,7
+1153,7
@@
bool StdMeshers_Prism_3D::getWallFaces( Prism_3D::TPrismTopo & thePrism,
if ( !quadList.back() )
return toSM( error(TCom("Side face #") << shapeID( face )
<< " not meshable with quadrangles"));
if ( !quadList.back() )
return toSM( error(TCom("Side face #") << shapeID( face )
<< " not meshable with quadrangles"));
- bool isCompositeBase = ! setBottomEdge( *edge, quadList.back(), face );
+ bool isCompositeBase = ! setBottomEdge( *edge, quadList.back(), face );
// -> orient CCW
if ( isCompositeBase )
{
// it's OK if all EDGEs of the bottom side belongs to the bottom FACE
if ( isCompositeBase )
{
// it's OK if all EDGEs of the bottom side belongs to the bottom FACE
@@
-1747,7
+1749,7
@@
bool StdMeshers_Prism_3D::computeWalls(const Prism_3D::TPrismTopo& thePrism)
}
// assure that all the source (left) EDGEs are meshed
}
// assure that all the source (left) EDGEs are meshed
-
int
nbSrcSegments = 0;
+
smIdType
nbSrcSegments = 0;
for ( int i = 0; i < lftSide->NbEdges(); ++i )
{
if ( isArtificialQuad )
for ( int i = 0; i < lftSide->NbEdges(); ++i )
{
if ( isArtificialQuad )
@@
-1839,6
+1841,8
@@
bool StdMeshers_Prism_3D::computeWalls(const Prism_3D::TPrismTopo& thePrism)
mesh->GetSubMesh( v )->ComputeStateEngine( SMESH_subMesh::COMPUTE );
const SMDS_MeshNode* n = SMESH_Algo::VertexNode( v, meshDS );
newNodes[ is2ndV ? newNodes.size()-1 : 0 ] = (SMDS_MeshNode*) n;
mesh->GetSubMesh( v )->ComputeStateEngine( SMESH_subMesh::COMPUTE );
const SMDS_MeshNode* n = SMESH_Algo::VertexNode( v, meshDS );
newNodes[ is2ndV ? newNodes.size()-1 : 0 ] = (SMDS_MeshNode*) n;
+ if ( !n )
+ return toSM( error( TCom("No node on vertex #") << meshDS->ShapeToIndex( v )));
}
// compute nodes on target EDGEs
}
// compute nodes on target EDGEs
@@
-2142,9
+2146,9
@@
bool StdMeshers_Prism_3D::Evaluate(SMESH_Mesh& theMesh,
if( anIt==aResMap.end() )
return toSM( error( "Submesh can not be evaluated"));
if( anIt==aResMap.end() )
return toSM( error( "Submesh can not be evaluated"));
- std::vector<
int
> aVec = (*anIt).second;
-
int nbtri = M
ax(aVec[SMDSEntity_Triangle],aVec[SMDSEntity_Quad_Triangle]);
-
int nbqua = M
ax(aVec[SMDSEntity_Quadrangle],aVec[SMDSEntity_Quad_Quadrangle]);
+ std::vector<
smIdType
> aVec = (*anIt).second;
+
smIdType nbtri = std::m
ax(aVec[SMDSEntity_Triangle],aVec[SMDSEntity_Quad_Triangle]);
+
smIdType nbqua = std::m
ax(aVec[SMDSEntity_Quadrangle],aVec[SMDSEntity_Quad_Quadrangle]);
if( nbtri==0 && nbqua>0 ) {
NbQFs++;
}
if( nbtri==0 && nbqua>0 ) {
NbQFs++;
}
@@
-2154,7
+2158,7
@@
bool StdMeshers_Prism_3D::Evaluate(SMESH_Mesh& theMesh,
}
if(NbQFs<4) {
}
if(NbQFs<4) {
- std::vector<
int
> aResVec(SMDSEntity_Last);
+ std::vector<
smIdType
> aResVec(SMDSEntity_Last);
for(int i=SMDSEntity_Node; i<SMDSEntity_Last; i++) aResVec[i] = 0;
SMESH_subMesh * sm = theMesh.GetSubMesh(theShape);
aResMap.insert(std::make_pair(sm,aResVec));
for(int i=SMDSEntity_Node; i<SMDSEntity_Last; i++) aResVec[i] = 0;
SMESH_subMesh * sm = theMesh.GetSubMesh(theShape);
aResMap.insert(std::make_pair(sm,aResVec));
@@
-2164,7
+2168,7
@@
bool StdMeshers_Prism_3D::Evaluate(SMESH_Mesh& theMesh,
if(NumBase==0) NumBase = 1; // only quads => set 1 faces as base
// find number of 1d elems for base face
if(NumBase==0) NumBase = 1; // only quads => set 1 faces as base
// find number of 1d elems for base face
-
int
nb1d = 0;
+
smIdType
nb1d = 0;
TopTools_MapOfShape Edges1;
for (TopExp_Explorer exp(aFaces.Value(NumBase), TopAbs_EDGE); exp.More(); exp.Next()) {
Edges1.Add(exp.Current());
TopTools_MapOfShape Edges1;
for (TopExp_Explorer exp(aFaces.Value(NumBase), TopAbs_EDGE); exp.More(); exp.Next()) {
Edges1.Add(exp.Current());
@@
-2172,8
+2176,8
@@
bool StdMeshers_Prism_3D::Evaluate(SMESH_Mesh& theMesh,
if( sm ) {
MapShapeNbElemsItr anIt = aResMap.find(sm);
if( anIt == aResMap.end() ) continue;
if( sm ) {
MapShapeNbElemsItr anIt = aResMap.find(sm);
if( anIt == aResMap.end() ) continue;
- std::vector<
int
> aVec = (*anIt).second;
- nb1d +=
M
ax(aVec[SMDSEntity_Edge],aVec[SMDSEntity_Quad_Edge]);
+ std::vector<
smIdType
> aVec = (*anIt).second;
+ nb1d +=
std::m
ax(aVec[SMDSEntity_Edge],aVec[SMDSEntity_Quad_Edge]);
}
}
// find face opposite to base face
}
}
// find face opposite to base face
@@
-2193,25
+2197,25
@@
bool StdMeshers_Prism_3D::Evaluate(SMESH_Mesh& theMesh,
}
}
// find number of 2d elems on side faces
}
}
// find number of 2d elems on side faces
-
int
nb2d = 0;
+
smIdType
nb2d = 0;
for(i=1; i<=6; i++) {
if( i==OppNum || i==NumBase ) continue;
MapShapeNbElemsItr anIt = aResMap.find( meshFaces[i-1] );
if( anIt == aResMap.end() ) continue;
for(i=1; i<=6; i++) {
if( i==OppNum || i==NumBase ) continue;
MapShapeNbElemsItr anIt = aResMap.find( meshFaces[i-1] );
if( anIt == aResMap.end() ) continue;
- std::vector<
int
> aVec = (*anIt).second;
- nb2d +=
M
ax(aVec[SMDSEntity_Quadrangle],aVec[SMDSEntity_Quad_Quadrangle]);
+ std::vector<
smIdType
> aVec = (*anIt).second;
+ nb2d +=
std::m
ax(aVec[SMDSEntity_Quadrangle],aVec[SMDSEntity_Quad_Quadrangle]);
}
MapShapeNbElemsItr anIt = aResMap.find( meshFaces[NumBase-1] );
}
MapShapeNbElemsItr anIt = aResMap.find( meshFaces[NumBase-1] );
- std::vector<
int
> aVec = (*anIt).second;
+ std::vector<
smIdType
> aVec = (*anIt).second;
bool IsQuadratic = (aVec[SMDSEntity_Quad_Triangle]>aVec[SMDSEntity_Triangle]) ||
(aVec[SMDSEntity_Quad_Quadrangle]>aVec[SMDSEntity_Quadrangle]);
bool IsQuadratic = (aVec[SMDSEntity_Quad_Triangle]>aVec[SMDSEntity_Triangle]) ||
(aVec[SMDSEntity_Quad_Quadrangle]>aVec[SMDSEntity_Quadrangle]);
-
int nb2d_face0_3 = M
ax(aVec[SMDSEntity_Triangle],aVec[SMDSEntity_Quad_Triangle]);
-
int nb2d_face0_4 = M
ax(aVec[SMDSEntity_Quadrangle],aVec[SMDSEntity_Quad_Quadrangle]);
-
int
nb0d_face0 = aVec[SMDSEntity_Node];
-
int
nb1d_face0_int = ( nb2d_face0_3*3 + nb2d_face0_4*4 - nb1d ) / 2;
+
smIdType nb2d_face0_3 = std::m
ax(aVec[SMDSEntity_Triangle],aVec[SMDSEntity_Quad_Triangle]);
+
smIdType nb2d_face0_4 = std::m
ax(aVec[SMDSEntity_Quadrangle],aVec[SMDSEntity_Quad_Quadrangle]);
+
smIdType
nb0d_face0 = aVec[SMDSEntity_Node];
+
smIdType
nb1d_face0_int = ( nb2d_face0_3*3 + nb2d_face0_4*4 - nb1d ) / 2;
- std::vector<
int
> aResVec(SMDSEntity_Last);
+ std::vector<
smIdType
> aResVec(SMDSEntity_Last);
for(int i=SMDSEntity_Node; i<SMDSEntity_Last; i++) aResVec[i] = 0;
if(IsQuadratic) {
aResVec[SMDSEntity_Quad_Penta] = nb2d_face0_3 * ( nb2d/nb1d );
for(int i=SMDSEntity_Node; i<SMDSEntity_Last; i++) aResVec[i] = 0;
if(IsQuadratic) {
aResVec[SMDSEntity_Quad_Penta] = nb2d_face0_3 * ( nb2d/nb1d );
@@
-2425,10
+2429,11
@@
bool StdMeshers_Prism_3D::assocOrProjBottom2Top( const gp_Trsf & bottomToTopTrsf
{
for ( int iE = 0; iE < botSide->NbEdges(); ++iE )
{
{
for ( int iE = 0; iE < botSide->NbEdges(); ++iE )
{
+ // sides are CWW oriented
NSProjUtils::InsertAssociation( botSide->Edge( iE ),
topSide->Edge( iE ), shape2ShapeMap );
NSProjUtils::InsertAssociation( botSide->Edge( iE ),
topSide->Edge( iE ), shape2ShapeMap );
- NSProjUtils::InsertAssociation(
myHelper->IthVertex( 0, botSide->Edge( iE )
),
-
myHelper->IthVertex( 0, topSide->Edge( iE )
),
+ NSProjUtils::InsertAssociation(
botSide->FirstVertex( iE
),
+
topSide->LastVertex ( iE
),
shape2ShapeMap );
}
}
shape2ShapeMap );
}
}
@@
-2479,7
+2484,7
@@
bool StdMeshers_Prism_3D::assocOrProjBottom2Top( const gp_Trsf & bottomToTopTrsf
// Fill myBotToColumnMap
// Fill myBotToColumnMap
-
in
t zSize = myBlock.VerticalSize();
+
size_
t zSize = myBlock.VerticalSize();
TNodeNodeMap::const_iterator bN_tN = n2nMapPtr->begin();
for ( ; bN_tN != n2nMapPtr->end(); ++bN_tN )
{
TNodeNodeMap::const_iterator bN_tN = n2nMapPtr->begin();
for ( ; bN_tN != n2nMapPtr->end(); ++bN_tN )
{
@@
-2551,7
+2556,7
@@
bool StdMeshers_Prism_3D::projectBottomToTop( const gp_Trsf & bottom
// Fill myBotToColumnMap
// Fill myBotToColumnMap
-
in
t zSize = myBlock.VerticalSize();
+
size_
t zSize = myBlock.VerticalSize();
Prism_3D::TNode prevTNode;
SMDS_NodeIteratorPtr nIt = botSMDS->GetNodes();
while ( nIt->more() )
Prism_3D::TNode prevTNode;
SMDS_NodeIteratorPtr nIt = botSMDS->GetNodes();
while ( nIt->more() )
@@
-2911,7
+2916,7
@@
bool StdMeshers_Prism_3D::project2dMesh(const TopoDS_Face& theSrcFace,
*/
//================================================================================
*/
//================================================================================
-bool StdMeshers_Prism_3D::setFaceAndEdgesXYZ( const int faceID, const gp_XYZ& params, int
z
)
+bool StdMeshers_Prism_3D::setFaceAndEdgesXYZ( const int faceID, const gp_XYZ& params, int
/*z*/
)
{
// find base and top edges of the face
enum { BASE = 0, TOP, LEFT, RIGHT };
{
// find base and top edges of the face
enum { BASE = 0, TOP, LEFT, RIGHT };
@@
-3906,7
+3911,7
@@
bool StdMeshers_PrismAsBlock::Init(SMESH_MesherHelper* helper,
return error(COMPERR_BAD_INPUT_MESH, TCom("Can't find regular quadrangle mesh ")
<< "on a side face #" << MeshDS()->ShapeToIndex( (*quad)->face ));
}
return error(COMPERR_BAD_INPUT_MESH, TCom("Can't find regular quadrangle mesh ")
<< "on a side face #" << MeshDS()->ShapeToIndex( (*quad)->face ));
}
- if ( !faceColumns.empty() &&
(int)
faceColumns.begin()->second.size() != VerticalSize() )
+ if ( !faceColumns.empty() && faceColumns.begin()->second.size() != VerticalSize() )
return error(COMPERR_BAD_INPUT_MESH, "Different 'vertical' discretization");
// edge columns
return error(COMPERR_BAD_INPUT_MESH, "Different 'vertical' discretization");
// edge columns
@@
-4222,7
+4227,7
@@
bool StdMeshers_PrismAsBlock::GetLayersTransformation(vector<gp_Trsf> &
const Prism_3D::TPrismTopo& prism) const
{
const bool itTopMeshed = !SubMesh( ID_BOT_FACE )->IsEmpty();
const Prism_3D::TPrismTopo& prism) const
{
const bool itTopMeshed = !SubMesh( ID_BOT_FACE )->IsEmpty();
- const
in
t zSize = VerticalSize();
+ const
size_
t zSize = VerticalSize();
if ( zSize < 3 && !itTopMeshed ) return true;
trsf.resize( zSize - 1 );
if ( zSize < 3 && !itTopMeshed ) return true;
trsf.resize( zSize - 1 );
@@
-4269,7
+4274,7
@@
bool StdMeshers_PrismAsBlock::GetLayersTransformation(vector<gp_Trsf> &
gp_Ax3 cs0 = getLayerCoordSys(0, columns, xCol );
//double dist0 = cs0.Location().Distance( gpXYZ( (*columns[0])[0]));
toCs0.SetTransformation( cs0 );
gp_Ax3 cs0 = getLayerCoordSys(0, columns, xCol );
//double dist0 = cs0.Location().Distance( gpXYZ( (*columns[0])[0]));
toCs0.SetTransformation( cs0 );
- for (
in
t z = 1; z < zSize; ++z )
+ for (
size_
t z = 1; z < zSize; ++z )
{
gp_Ax3 csZ = getLayerCoordSys(z, columns, xCol );
//double distZ = csZ.Location().Distance( gpXYZ( (*columns[0])[z]));
{
gp_Ax3 csZ = getLayerCoordSys(z, columns, xCol );
//double distZ = csZ.Location().Distance( gpXYZ( (*columns[0])[z]));
@@
-4373,7
+4378,9
@@
void StdMeshers_PrismAsBlock::faceGridToPythonDump(const SMESH_Block::TShapeID f
<< n << ", " << n+1 << ", "
<< n+nb+2 << ", " << n+nb+1 << "]) " << endl;
}
<< n << ", " << n+1 << ", "
<< n+nb+2 << ", " << n+nb+1 << "]) " << endl;
}
-
+#else
+ (void)face; // unused in release mode
+ (void)nb; // unused in release mode
#endif
}
#endif
}
@@
-4993,6
+5000,8
@@
void StdMeshers_PrismAsBlock::TSideFace::dumpNodes(int nbNodes) const
TVerticalEdgeAdaptor* vSide1 = (TVerticalEdgeAdaptor*) VertiCurve(1);
cout << "Verti side 1: "; vSide1->dumpNodes(nbNodes); cout << endl;
delete hSize0; delete hSize1; delete vSide0; delete vSide1;
TVerticalEdgeAdaptor* vSide1 = (TVerticalEdgeAdaptor*) VertiCurve(1);
cout << "Verti side 1: "; vSide1->dumpNodes(nbNodes); cout << endl;
delete hSize0; delete hSize1; delete vSide0; delete vSide1;
+#else
+ (void)nbNodes; // unused in release mode
#endif
}
#endif
}
@@
-5039,6
+5048,8
@@
void StdMeshers_PrismAsBlock::TVerticalEdgeAdaptor::dumpNodes(int nbNodes) const
cout << (*myNodeColumn)[i]->GetID() << " ";
if ( nbNodes < (int) myNodeColumn->size() )
cout << myNodeColumn->back()->GetID();
cout << (*myNodeColumn)[i]->GetID() << " ";
if ( nbNodes < (int) myNodeColumn->size() )
cout << myNodeColumn->back()->GetID();
+#else
+ (void)nbNodes; // unused in release mode
#endif
}
#endif
}
@@
-5097,6
+5108,8
@@
void StdMeshers_PrismAsBlock::THorizontalEdgeAdaptor::dumpNodes(int nbNodes) con
side->GetColumns( u , col, col2 );
if ( n != col->second[ i ] )
cout << col->second[ i ]->GetID();
side->GetColumns( u , col, col2 );
if ( n != col->second[ i ] )
cout << col->second[ i ]->GetID();
+#else
+ (void)nbNodes; // unused in release mode
#endif
}
#endif
}
@@
-5602,7
+5615,7
@@
bool StdMeshers_Sweeper::ComputeNodesOnStraight()
int botTriaNodes[3], topTriaNodes[3];
bool checkUV = true;
int botTriaNodes[3], topTriaNodes[3];
bool checkUV = true;
-
in
t nbInternalNodes = myIntColumns.size();
+
size_
t nbInternalNodes = myIntColumns.size();
myBotDelaunay->InitTraversal( nbInternalNodes );
while (( botNode = myBotDelaunay->NextNode( botBC, botTriaNodes )))
myBotDelaunay->InitTraversal( nbInternalNodes );
while (( botNode = myBotDelaunay->NextNode( botBC, botTriaNodes )))
@@
-5751,7
+5764,7
@@
bool StdMeshers_Sweeper::findDelaunayTriangles()
TopBotTriangles tbTrias;
bool checkUV = true;
TopBotTriangles tbTrias;
bool checkUV = true;
-
in
t nbInternalNodes = myIntColumns.size();
+
size_
t nbInternalNodes = myIntColumns.size();
myTopBotTriangles.resize( nbInternalNodes );
myBotDelaunay->InitTraversal( nbInternalNodes );
myTopBotTriangles.resize( nbInternalNodes );
myBotDelaunay->InitTraversal( nbInternalNodes );