mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-11-11 16:19:16 +05:00
22834: [CEA 1347] Viscous layers: be able to choose the extrusion method (imp_1347_viscous_layers.py)
+ fix some regressions
This commit is contained in:
parent
6bac08c1a8
commit
59912620be
@ -4352,6 +4352,7 @@ void SMESH_MeshEditor::sweepElement(const SMDS_MeshElement* elem,
|
||||
std::swap( itNN[0], itNN[1] );
|
||||
std::swap( prevNod[0], prevNod[1] );
|
||||
std::swap( nextNod[0], nextNod[1] );
|
||||
isSingleNode.swap( isSingleNode[0], isSingleNode[1] );
|
||||
if ( nbSame > 0 )
|
||||
sames[0] = 1 - sames[0];
|
||||
iNotSameNode = 1 - iNotSameNode;
|
||||
|
@ -4739,7 +4739,6 @@ SMESH_Mesh_i::MakeGroupsOfBadInputElements( int theSubShapeID,
|
||||
SALOMEDS::SObject_wrap aSO =
|
||||
_gen_i->PublishGroup( study, mesh, groups[ iG ],
|
||||
GEOM::GEOM_Object::_nil(), theGroupName);
|
||||
aSO->_is_nil(); // avoid "unused variable" warning
|
||||
}
|
||||
SMESH_GroupBase_i* grp_i = SMESH::DownCast< SMESH_GroupBase_i* >( groups[ iG ]);
|
||||
if ( !grp_i ) continue;
|
||||
|
@ -144,7 +144,7 @@ class StdMeshersBuilder_Segment(Mesh_Algorithm):
|
||||
reversedEdges, UseExisting = [], reversedEdges
|
||||
entry = self.MainShapeEntry()
|
||||
reversedEdgeInd = self.ReversedEdgeIndices(reversedEdges)
|
||||
if s == []:
|
||||
if not s:
|
||||
hyp = self.Hypothesis("NumberOfSegments", [n, reversedEdgeInd, entry],
|
||||
UseExisting=UseExisting,
|
||||
CompareMethod=self._compareNumberOfSegments)
|
||||
@ -152,7 +152,6 @@ class StdMeshersBuilder_Segment(Mesh_Algorithm):
|
||||
hyp = self.Hypothesis("NumberOfSegments", [n,s, reversedEdgeInd, entry],
|
||||
UseExisting=UseExisting,
|
||||
CompareMethod=self._compareNumberOfSegments)
|
||||
hyp.SetDistrType( 1 )
|
||||
hyp.SetScaleFactor(s)
|
||||
hyp.SetNumberOfSegments(n)
|
||||
hyp.SetReversedEdges( reversedEdgeInd )
|
||||
@ -1038,11 +1037,10 @@ class StdMeshersBuilder_Prism3D(Mesh_Algorithm):
|
||||
if self.algoType != "RadialPrism_3D":
|
||||
print "Prism_3D algorith doesn't support any hyposesis"
|
||||
return None
|
||||
if s == []:
|
||||
if not s:
|
||||
hyp = self.OwnHypothesis("NumberOfSegments", [n])
|
||||
else:
|
||||
hyp = self.OwnHypothesis("NumberOfSegments", [n,s])
|
||||
hyp.SetDistrType( 1 )
|
||||
hyp.SetScaleFactor(s)
|
||||
hyp.SetNumberOfSegments(n)
|
||||
return hyp
|
||||
|
@ -185,8 +185,8 @@ void StdMeshers_NumberOfSegments::SetScaleFactor(double scaleFactor)
|
||||
//throw SALOME_Exception(LOCALIZED("not a scale distribution"));
|
||||
if (scaleFactor < PRECISION)
|
||||
throw SALOME_Exception(LOCALIZED("scale factor must be positive"));
|
||||
//if (fabs(scaleFactor - 1.0) < PRECISION)
|
||||
// throw SALOME_Exception(LOCALIZED("scale factor must not be equal to 1"));
|
||||
if (fabs(scaleFactor - 1.0) < PRECISION)
|
||||
_distrType = DT_Regular;
|
||||
|
||||
if (fabs(_scaleFactor - scaleFactor) > PRECISION)
|
||||
{
|
||||
|
@ -2920,6 +2920,7 @@ bool _ViscousBuilder::setEdgeData(_LayerEdge& edge,
|
||||
}
|
||||
else // !useGeometry - get _normal using surrounding mesh faces
|
||||
{
|
||||
set<TGeomID> faceIds;
|
||||
|
||||
SMDS_ElemIteratorPtr fIt = node->GetInverseElementIterator(SMDSAbs_Face);
|
||||
while ( fIt->more() )
|
||||
@ -2927,6 +2928,8 @@ bool _ViscousBuilder::setEdgeData(_LayerEdge& edge,
|
||||
const SMDS_MeshElement* face = fIt->next();
|
||||
if ( eos.GetNormal( face, geomNorm ))
|
||||
{
|
||||
if ( onShrinkShape && !faceIds.insert( face->getshapeId() ).second )
|
||||
continue; // use only one mesh face on FACE
|
||||
edge._normal += geomNorm.XYZ();
|
||||
totalNbFaces++;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user