mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-12-26 01:10:35 +05:00
#16914: EDF 19401 - Wrong quadratic mesh (bis)
- don't force3DOutOfBoundary() for quadrangles and hexahedrons - don't force3DOutOfBoundary() for bad-shaped tetras
This commit is contained in:
parent
e63b88c7f3
commit
f0f37f1fc7
@ -4646,6 +4646,7 @@ namespace { // Structures used by FixQuadraticElements()
|
|||||||
const SMDS_MeshElement* f = faceIt->next();
|
const SMDS_MeshElement* f = faceIt->next();
|
||||||
if ( !faceSM->Contains( f ) ||
|
if ( !faceSM->Contains( f ) ||
|
||||||
f->NbNodes() < 6 || // check quadratic triangles only
|
f->NbNodes() < 6 || // check quadratic triangles only
|
||||||
|
f->NbNodes() > 7 ||
|
||||||
!checkedFaces.insert( f ).second )
|
!checkedFaces.insert( f ).second )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@ -4857,7 +4858,12 @@ namespace { // Structures used by FixQuadraticElements()
|
|||||||
gp_Pnt pMedium = SMESH_TNodeXYZ( linkIt->second );
|
gp_Pnt pMedium = SMESH_TNodeXYZ( linkIt->second );
|
||||||
double hMedium = faceNorm * gp_Vec( pOnFace0, pMedium ).XYZ();
|
double hMedium = faceNorm * gp_Vec( pOnFace0, pMedium ).XYZ();
|
||||||
double hVol = faceNorm * gp_Vec( pOnFace0, pInSolid ).XYZ();
|
double hVol = faceNorm * gp_Vec( pOnFace0, pInSolid ).XYZ();
|
||||||
isDistorted = ( Abs( hMedium ) > Abs( hVol * 0.75 ));
|
if ( Abs( hMedium ) > Abs( hVol * 0.75 ))
|
||||||
|
{
|
||||||
|
SMESH_TNodeXYZ pI( nOnFace[i]), pJ( nOnFace[j]);
|
||||||
|
double angle = gp_Vec( pI, pMedium ).Angle( gp_Vec( pI, pJ ));
|
||||||
|
isDistorted = ( angle > M_PI / 20 );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user