mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-11-13 17:18:35 +05:00
Some fixes
This commit is contained in:
parent
2a2216e5d2
commit
02ad02e211
@ -119,6 +119,9 @@ bool testShape (const TopoDS_Shape theShape,
|
|||||||
GridInitAndIntersectWithShape( grid, theGridSpacing, theSizeThreshold,
|
GridInitAndIntersectWithShape( grid, theGridSpacing, theSizeThreshold,
|
||||||
theShape, edge2faceIDsMap, 1 );
|
theShape, edge2faceIDsMap, 1 );
|
||||||
|
|
||||||
|
SMESH_subMesh * aSubMesh = aMesh->GetSubMesh(theShape);
|
||||||
|
aSubMesh->DependsOn(); // init sub-meshes
|
||||||
|
|
||||||
Hexahedron hex( &grid );
|
Hexahedron hex( &grid );
|
||||||
int nbAdded = hex.MakeElements( helper, edge2faceIDsMap, 1 );
|
int nbAdded = hex.MakeElements( helper, edge2faceIDsMap, 1 );
|
||||||
if (nbAdded != theNbCreatedExpected) {
|
if (nbAdded != theNbCreatedExpected) {
|
||||||
@ -155,10 +158,9 @@ bool testPrimitives()
|
|||||||
/*gridSpacing*/10, /*theSizeThreshold*/4, /*theNbCreatedExpected*/6))
|
/*gridSpacing*/10, /*theSizeThreshold*/4, /*theNbCreatedExpected*/6))
|
||||||
isOK = false;
|
isOK = false;
|
||||||
|
|
||||||
// TODO: debug this case
|
if (!testShape (aShape, /*toAddEdges*/false, /*toCreateFaces*/true,
|
||||||
//if (!testShape (aShape, /*toAddEdges*/false, /*toCreateFaces*/true,
|
/*gridSpacing*/10, /*theSizeThreshold*/4, /*theNbCreatedExpected*/6))
|
||||||
// /*gridSpacing*/10, /*theSizeThreshold*/4, /*theNbCreatedExpected*/8))
|
isOK = false;
|
||||||
// isOK = false;
|
|
||||||
|
|
||||||
if (!testShape (aShape, /*toAddEdges*/false, /*toCreateFaces*/false,
|
if (!testShape (aShape, /*toAddEdges*/false, /*toCreateFaces*/false,
|
||||||
/*gridSpacing*/5, /*theSizeThreshold*/4, /*theNbCreatedExpected*/48))
|
/*gridSpacing*/5, /*theSizeThreshold*/4, /*theNbCreatedExpected*/48))
|
||||||
|
@ -134,6 +134,9 @@ bool testNRTM1()
|
|||||||
TEdge2faceIDsMap edge2faceIDsMap;
|
TEdge2faceIDsMap edge2faceIDsMap;
|
||||||
GridInitAndIntersectWithShape( grid, 1.0, 4.0, aShape, edge2faceIDsMap, nThreads );
|
GridInitAndIntersectWithShape( grid, 1.0, 4.0, aShape, edge2faceIDsMap, nThreads );
|
||||||
|
|
||||||
|
SMESH_subMesh * aSubMesh = aMesh->GetSubMesh(aShape);
|
||||||
|
aSubMesh->DependsOn(); // init sub-meshes
|
||||||
|
|
||||||
Hexahedron hex( &grid );
|
Hexahedron hex( &grid );
|
||||||
int nbAdded = hex.MakeElements( helper, edge2faceIDsMap, nThreads );
|
int nbAdded = hex.MakeElements( helper, edge2faceIDsMap, nThreads );
|
||||||
CPPUNIT_ASSERT_MESSAGE( "Number of computed elements does not match", nbAdded == 1024 );
|
CPPUNIT_ASSERT_MESSAGE( "Number of computed elements does not match", nbAdded == 1024 );
|
||||||
@ -175,7 +178,12 @@ bool testNRTJ4()
|
|||||||
grid._sizeThreshold = testThreshold;
|
grid._sizeThreshold = testThreshold;
|
||||||
|
|
||||||
TEdge2faceIDsMap edge2faceIDsMap;
|
TEdge2faceIDsMap edge2faceIDsMap;
|
||||||
GridInitAndIntersectWithShape( grid, 2.0, testThreshold, aShape, edge2faceIDsMap, nThreads );
|
GridInitAndIntersectWithShape( grid, 2.0, testThreshold,
|
||||||
|
aShape, edge2faceIDsMap, nThreads );
|
||||||
|
|
||||||
|
SMESH_subMesh * aSubMesh = aMesh->GetSubMesh(aShape);
|
||||||
|
aSubMesh->DependsOn(); // init sub-meshes
|
||||||
|
|
||||||
Hexahedron hex( &grid );
|
Hexahedron hex( &grid );
|
||||||
int nbAdded = hex.MakeElements( helper, edge2faceIDsMap, nThreads );
|
int nbAdded = hex.MakeElements( helper, edge2faceIDsMap, nThreads );
|
||||||
CPPUNIT_ASSERT_MESSAGE( "Number of computed elements does not match", nbAdded == 35150 );
|
CPPUNIT_ASSERT_MESSAGE( "Number of computed elements does not match", nbAdded == 35150 );
|
||||||
|
@ -361,10 +361,14 @@ void StdMeshers_CartesianParameters3D::ComputeCoordinates(const double x0,
|
|||||||
++iCell;
|
++iCell;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (coords.size() < 2)
|
||||||
|
coords.push_back ( p1 );
|
||||||
|
else {
|
||||||
const double lastCellLen = coords.back() - coords[ coords.size() - 2 ];
|
const double lastCellLen = coords.back() - coords[ coords.size() - 2 ];
|
||||||
if ( fabs( coords.back() - p1 ) > 0.5 * lastCellLen )
|
if ( fabs( coords.back() - p1 ) > 0.5 * lastCellLen )
|
||||||
coords.push_back ( p1 );
|
coords.push_back ( p1 );
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// correct coords if a forced point is too close to a neighbor node
|
// correct coords if a forced point is too close to a neighbor node
|
||||||
if ( forced )
|
if ( forced )
|
||||||
|
@ -1100,7 +1100,7 @@ size_t Hexahedron::findCoplanarPolygon
|
|||||||
const size_t nbQuadPolygons,
|
const size_t nbQuadPolygons,
|
||||||
std::vector< _OrientedLink* >& freeLinks,
|
std::vector< _OrientedLink* >& freeLinks,
|
||||||
int& nbFreeLinks,
|
int& nbFreeLinks,
|
||||||
const E_IntersectPoint ipTmp,
|
const E_IntersectPoint& ipTmp,
|
||||||
std::set< StdMeshers::Cartesian3D::TGeomID >& usedFaceIDs,
|
std::set< StdMeshers::Cartesian3D::TGeomID >& usedFaceIDs,
|
||||||
std::map< StdMeshers::Cartesian3D::TGeomID, std::vector< const B_IntersectPoint* > >& tmpAddedFace,
|
std::map< StdMeshers::Cartesian3D::TGeomID, std::vector< const B_IntersectPoint* > >& tmpAddedFace,
|
||||||
const StdMeshers::Cartesian3D::TGeomID& curFace)
|
const StdMeshers::Cartesian3D::TGeomID& curFace)
|
||||||
@ -2840,7 +2840,6 @@ int Hexahedron::addVolumes( SMESH_MesherHelper& helper )
|
|||||||
_hexNodes[3].BoundaryNode(), _hexNodes[1].BoundaryNode(),
|
_hexNodes[3].BoundaryNode(), _hexNodes[1].BoundaryNode(),
|
||||||
_hexNodes[4].BoundaryNode(), _hexNodes[6].BoundaryNode(),
|
_hexNodes[4].BoundaryNode(), _hexNodes[6].BoundaryNode(),
|
||||||
_hexNodes[7].BoundaryNode(), _hexNodes[5].BoundaryNode() );
|
_hexNodes[7].BoundaryNode(), _hexNodes[5].BoundaryNode() );
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -107,7 +107,7 @@ namespace Cartesian3D
|
|||||||
char _isInternalFlags;
|
char _isInternalFlags;
|
||||||
|
|
||||||
_Node(const SMDS_MeshNode* n=0, const StdMeshers::Cartesian3D::B_IntersectPoint* ip=0)
|
_Node(const SMDS_MeshNode* n=0, const StdMeshers::Cartesian3D::B_IntersectPoint* ip=0)
|
||||||
:_node(n), _intPoint(ip), _usedInFace(0), _isInternalFlags(0) {}
|
:_node(n), _boundaryCornerNode(0), _intPoint(ip), _usedInFace(0), _isInternalFlags(0) {}
|
||||||
const SMDS_MeshNode* Node() const
|
const SMDS_MeshNode* Node() const
|
||||||
{ return ( _intPoint && _intPoint->_node ) ? _intPoint->_node : _node; }
|
{ return ( _intPoint && _intPoint->_node ) ? _intPoint->_node : _node; }
|
||||||
const SMDS_MeshNode* BoundaryNode() const
|
const SMDS_MeshNode* BoundaryNode() const
|
||||||
@ -166,7 +166,7 @@ namespace Cartesian3D
|
|||||||
std::vector< const StdMeshers::Cartesian3D::F_IntersectPoint* > _fIntPoints; // GridLine intersections with FACEs
|
std::vector< const StdMeshers::Cartesian3D::F_IntersectPoint* > _fIntPoints; // GridLine intersections with FACEs
|
||||||
std::vector< _Node* > _fIntNodes; // _Node's at _fIntPoints
|
std::vector< _Node* > _fIntNodes; // _Node's at _fIntPoints
|
||||||
std::vector< _Link > _splits;
|
std::vector< _Link > _splits;
|
||||||
_Link(): _faces{ 0, 0 } {}
|
_Link(): _nodes{ 0, 0 }, _faces{ 0, 0 } {}
|
||||||
};
|
};
|
||||||
|
|
||||||
// --------------------------------------------------------------------------------
|
// --------------------------------------------------------------------------------
|
||||||
@ -460,7 +460,7 @@ namespace Cartesian3D
|
|||||||
const size_t nbQuadPolygons,
|
const size_t nbQuadPolygons,
|
||||||
std::vector< _OrientedLink* >& freeLinks,
|
std::vector< _OrientedLink* >& freeLinks,
|
||||||
int& nbFreeLinks,
|
int& nbFreeLinks,
|
||||||
const E_IntersectPoint ipTmp,
|
const E_IntersectPoint& ipTmp,
|
||||||
std::set< StdMeshers::Cartesian3D::TGeomID >& usedFaceIDs,
|
std::set< StdMeshers::Cartesian3D::TGeomID >& usedFaceIDs,
|
||||||
std::map< StdMeshers::Cartesian3D::TGeomID, std::vector< const B_IntersectPoint* > >& tmpAddedFace,
|
std::map< StdMeshers::Cartesian3D::TGeomID, std::vector< const B_IntersectPoint* > >& tmpAddedFace,
|
||||||
const StdMeshers::Cartesian3D::TGeomID& curFace);
|
const StdMeshers::Cartesian3D::TGeomID& curFace);
|
||||||
|
Loading…
Reference in New Issue
Block a user