0021765: EDF 2334 SMESH: ConvertToQuadratic with medium node on geometry generates bad elements

Enables fixing node parameters by helper

+        helper.ToFixNodeParameters( true );
This commit is contained in:
eap 2012-08-07 09:18:15 +00:00
parent 6056cf7472
commit 9eedde53dd
3 changed files with 8 additions and 2 deletions

View File

@ -264,6 +264,8 @@ const vector<UVPtStruct>& StdMeshers_FaceSide::GetUVPtStruct(bool isXConst,
SMDS_NodeIteratorPtr nItr = sm->GetNodes(); SMDS_NodeIteratorPtr nItr = sm->GetNodes();
double paramSize = myLast[i] - myFirst[i]; double paramSize = myLast[i] - myFirst[i];
double r = myNormPar[i] - prevNormPar; double r = myNormPar[i] - prevNormPar;
helper.SetSubShape( myEdge[i] );
helper.ToFixNodeParameters( true );
if ( !myIsUniform[i] ) if ( !myIsUniform[i] )
while ( nItr->more() ) while ( nItr->more() )
{ {
@ -456,6 +458,8 @@ std::vector<const SMDS_MeshNode*> StdMeshers_FaceSide::GetOrderedNodes() const
SMDS_NodeIteratorPtr nItr = sm->GetNodes(); SMDS_NodeIteratorPtr nItr = sm->GetNodes();
double paramSize = myLast[i] - myFirst[i]; double paramSize = myLast[i] - myFirst[i];
double r = myNormPar[i] - prevNormPar; double r = myNormPar[i] - prevNormPar;
helper.SetSubShape( myEdge[i] );
helper.ToFixNodeParameters( true );
while ( nItr->more() ) while ( nItr->more() )
{ {
const SMDS_MeshNode* node = nItr->next(); const SMDS_MeshNode* node = nItr->next();

View File

@ -404,6 +404,7 @@ bool StdMeshers_Hexa_3D::Compute(SMESH_Mesh & aMesh,
// assure correctness of node positions on baseE: // assure correctness of node positions on baseE:
// helper.GetNodeU() will fix positions if they are wrong // helper.GetNodeU() will fix positions if they are wrong
helper.ToFixNodeParameters( true );
for ( int iE = 0; iE < baseQuadSide->NbEdges(); ++iE ) for ( int iE = 0; iE < baseQuadSide->NbEdges(); ++iE )
{ {
const TopoDS_Edge& baseE = baseQuadSide->Edge( iE ); const TopoDS_Edge& baseE = baseQuadSide->Edge( iE );

View File

@ -3460,6 +3460,7 @@ bool _ViscousBuilder::shrink()
} }
SMESH_MesherHelper helper( *_mesh ); SMESH_MesherHelper helper( *_mesh );
helper.ToFixNodeParameters( true );
// EDGE's to shrink // EDGE's to shrink
map< int, _Shrinker1D > e2shrMap; map< int, _Shrinker1D > e2shrMap;