From 70eb9c09d00f9c4b0e48d5aba70676e45e779f9c Mon Sep 17 00:00:00 2001 From: eap Date: Fri, 25 Oct 2019 16:55:08 +0300 Subject: [PATCH] #16522 [CEA 7599] Viscous layers hypothesis: extract layers as a group --- .../examples/defining_hypotheses_ex17.py | 23 +++- .../SMESH/images/viscous_layers_2d_hyp.png | Bin 26908 -> 32774 bytes .../gui/SMESH/images/viscous_layers_hyp.png | Bin 32154 -> 39441 bytes .../gui/SMESH/input/additional_hypo.rst | 2 + idl/SMESH_BasicHypothesis.idl | 6 + resources/StdMeshers.xml.in | 10 +- src/SMESHGUI/SMESHGUI_Hypotheses.cxx | 14 +- src/SMESHGUI/SMESHGUI_Hypotheses.h | 2 + src/SMESH_SWIG/smesh_algorithm.py | 27 +++- src/StdMeshers/StdMeshers_ViscousLayers.cxx | 130 ++++++++++++++---- src/StdMeshers/StdMeshers_ViscousLayers.hxx | 10 ++ src/StdMeshers/StdMeshers_ViscousLayers2D.cxx | 26 +++- src/StdMeshersGUI/CMakeLists.txt | 2 + .../StdMeshersGUI_NameCheckableGrpWdg.cxx | 68 +++++++++ .../StdMeshersGUI_NameCheckableGrpWdg.h | 53 +++++++ .../StdMeshersGUI_StdHypothesisCreator.cxx | 43 ++++++ src/StdMeshersGUI/StdMeshers_msg_en.ts | 8 ++ .../StdMeshers_ViscousLayers2D_i.cxx | 27 ++++ .../StdMeshers_ViscousLayers2D_i.hxx | 4 + .../StdMeshers_ViscousLayers_i.cxx | 26 ++++ .../StdMeshers_ViscousLayers_i.hxx | 6 +- 21 files changed, 436 insertions(+), 51 deletions(-) create mode 100644 src/StdMeshersGUI/StdMeshersGUI_NameCheckableGrpWdg.cxx create mode 100644 src/StdMeshersGUI/StdMeshersGUI_NameCheckableGrpWdg.h diff --git a/doc/salome/examples/defining_hypotheses_ex17.py b/doc/salome/examples/defining_hypotheses_ex17.py index f2b7d8c20..cadd71e24 100644 --- a/doc/salome/examples/defining_hypotheses_ex17.py +++ b/doc/salome/examples/defining_hypotheses_ex17.py @@ -33,16 +33,22 @@ mesh.Segment().NumberOfSegments( 4 ) mesh.Triangle() mesh.Quadrangle(face1) -mesh.Compute() algo3D = mesh.Tetrahedron() thickness = 20 numberOfLayers = 10 stretchFactor = 1.5 -layersHyp = algo3D.ViscousLayers(thickness,numberOfLayers,stretchFactor,ignoreFaces) +groupName = "Boundary layers" +layersHyp = algo3D.ViscousLayers(thickness,numberOfLayers,stretchFactor, + ignoreFaces, # optional + groupName = groupName) # optional mesh.Compute() +# retrieve boundary prisms created by mesh.Compute() +boundaryGroup = mesh.GetGroupByName( layersHyp.GetGroupName() )[0] +print( "Nb boundary prisms", boundaryGroup.Size() ) + mesh.MakeGroup("Tetras",SMESH.VOLUME,SMESH.FT_ElemGeomType,"=",SMESH.Geom_TETRA) mesh.MakeGroup("Pyras",SMESH.VOLUME,SMESH.FT_ElemGeomType,"=",SMESH.Geom_PYRAMID) mesh.MakeGroup("Prims",SMESH.VOLUME,SMESH.FT_ElemGeomType,"=",SMESH.Geom_PENTA) @@ -55,12 +61,17 @@ edgeIds = geompy.SubShapeAllIDs( face1, geompy.ShapeType["EDGE"])[:-1] mesh = smesh.Mesh(face1,"VicsousLayers2D") mesh.Segment().NumberOfSegments( 5 ) -# viscous layers should be created on 1 edge, as we set 3 edges to ignore -vlHyp = mesh.Triangle().ViscousLayers2D( 2, 3, 1.5, edgeIds, isEdgesToIgnore=True ) - +# viscous layers will be created on 1 edge, as we set 3 edges to ignore +vlHyp = mesh.Triangle().ViscousLayers2D( 2, 3, 1.5, + edgeIds, isEdgesToIgnore=True, # optional + groupName=groupName) # optional mesh.Compute() -# viscous layers should be created on 3 edges, as we pass isEdgesToIgnore=False +# retrieve boundary elements created by mesh.Compute() +quadrangles = mesh.GetGroupByName( vlHyp.GetGroupName() )[0] +print( "Nb boundary quadrangles", quadrangles.Size() ) + +# viscous layers will be created on 3 edges, as we pass isEdgesToIgnore=False vlHyp.SetEdges( edgeIds, False ) mesh.Compute() diff --git a/doc/salome/gui/SMESH/images/viscous_layers_2d_hyp.png b/doc/salome/gui/SMESH/images/viscous_layers_2d_hyp.png index 4ad6ee0ec4720ea1ee8c55ead9d8bcdb0cb7946f..f9b952fd7f9379a54d1640e8d1613c7c30ba4039 100644 GIT binary patch literal 32774 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 literal 26908 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%0ABD}=QEghK0ZDG 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 IIVCg!0M|_~Jpcdz literal 32154 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.MEFISTO) LengthFromEdges=LengthFromEdges() MaxElementArea=MaxElementArea(SetMaxElementArea()) - ViscousLayers2D=ViscousLayers2D(SetTotalThickness(),SetNumberLayers(),SetStretchFactor(),SetEdges(1),SetEdges(2)) + ViscousLayers2D=ViscousLayers2D(SetTotalThickness(),SetNumberLayers(),SetStretchFactor(),SetEdges(1),SetEdges(2),SetGroupName()) @@ -335,7 +335,7 @@ Quadrangle_2D=Quadrangle(algo=smeshBuilder.QUADRANGLE) QuadrangleParams=QuadrangleParameters(SetQuadType(),SetTriaVertex(),SetEnforcedNodes(1),SetEnforcedNodes(2),SetCorners()) - ViscousLayers2D=ViscousLayers2D(SetTotalThickness(),SetNumberLayers(),SetStretchFactor(),SetIgnoreEdges()) + ViscousLayers2D=ViscousLayers2D(SetTotalThickness(),SetNumberLayers(),SetStretchFactor(),SetEdges(1),SetEdges(2),SetGroupName()) @@ -351,7 +351,7 @@ dim ="2"> QuadFromMedialAxis_1D2D=Quadrangle(algo=smeshBuilder.QUAD_MA_PROJ) - ViscousLayers2D=ViscousLayers2D(SetTotalThickness(),SetNumberLayers(),SetStretchFactor(),SetIgnoreEdges()) + ViscousLayers2D=ViscousLayers2D(SetTotalThickness(),SetNumberLayers(),SetStretchFactor(),SetEdges(1),SetEdges(2),SetGroupName()) NumberOfLayers2D=NumberOfLayers(SetNumberOfLayers()) @@ -367,7 +367,7 @@ dim ="2"> PolygonPerFace_2D=Polygon() - ViscousLayers2D=ViscousLayers2D(SetTotalThickness(),SetNumberLayers(),SetStretchFactor(),SetIgnoreEdges()) + ViscousLayers2D=ViscousLayers2D(SetTotalThickness(),SetNumberLayers(),SetStretchFactor(),SetEdges(1),SetEdges(2),SetGroupName()) @@ -395,7 +395,7 @@ dim ="3"> Hexa_3D=Hexahedron(algo=smeshBuilder.Hexa) - ViscousLayers=ViscousLayers(SetTotalThickness(),SetNumberLayers(),SetStretchFactor(),SetFaces(1),SetFaces(2),SetMethod()) + ViscousLayers=ViscousLayers(SetTotalThickness(),SetNumberLayers(),SetStretchFactor(),SetFaces(1),SetFaces(2),SetMethod(),SetGroupName()) diff --git a/src/SMESHGUI/SMESHGUI_Hypotheses.cxx b/src/SMESHGUI/SMESHGUI_Hypotheses.cxx index 5078f0df7..521966bf7 100644 --- a/src/SMESHGUI/SMESHGUI_Hypotheses.cxx +++ b/src/SMESHGUI/SMESHGUI_Hypotheses.cxx @@ -185,10 +185,11 @@ QFrame* SMESHGUI_GenericHypothesisCreator::buildStdFrame() GroupC1Layout->setMargin( MARGIN ); ListOfStdParams::const_iterator anIt = params.begin(), aLast = params.end(); - for( int i=0; anIt!=aLast; anIt++, i++ ) + for( int i = 0; anIt != aLast; anIt++, i++ ) { - QLabel* lab = new QLabel( (*anIt).myName, GroupC1 ); - GroupC1Layout->addWidget( lab, i, 0 ); + QLabel* lab = anIt->hasName() ? new QLabel( anIt->myName, GroupC1 ) : NULL; + if ( lab ) + GroupC1Layout->addWidget( lab, i, 0 ); myParamLabels << lab; QWidget* w = getCustomWidget( *anIt, GroupC1, i ); @@ -251,9 +252,12 @@ QFrame* SMESHGUI_GenericHypothesisCreator::buildStdFrame() default:; } // switch( (*anIt).myValue.type() ) - if( w ) + if ( w ) { - GroupC1Layout->addWidget( w, i, 1 ); + if ( lab ) + GroupC1Layout->addWidget( w, i, 1 ); + else + GroupC1Layout->addWidget( w, i, 0, 1, 2 ); changeWidgets().append( w ); } } diff --git a/src/SMESHGUI/SMESHGUI_Hypotheses.h b/src/SMESHGUI/SMESHGUI_Hypotheses.h index 454ac1ae3..b50f5f128 100644 --- a/src/SMESHGUI/SMESHGUI_Hypotheses.h +++ b/src/SMESHGUI/SMESHGUI_Hypotheses.h @@ -92,6 +92,8 @@ protected: const char* text() const { ((QByteArray&) myTextAsBytes) = myText.toUtf8(); return myTextAsBytes.constData(); } + void setNoName() { myName.clear(); } // ==> widget occupies both columns + bool hasName() const { return !myName.isEmpty(); } }; typedef QList ListOfStdParams; diff --git a/src/SMESH_SWIG/smesh_algorithm.py b/src/SMESH_SWIG/smesh_algorithm.py index f14fa318d..7603ab2bc 100644 --- a/src/SMESH_SWIG/smesh_algorithm.py +++ b/src/SMESH_SWIG/smesh_algorithm.py @@ -290,7 +290,8 @@ class Mesh_Algorithm: return shape.GetStudyEntry() def ViscousLayers(self, thickness, numberOfLayers, stretchFactor, - faces=[], isFacesToIgnore=True, extrMethod=StdMeshers.SURF_OFFSET_SMOOTH ): + faces=[], isFacesToIgnore=True, + extrMethod=StdMeshers.SURF_OFFSET_SMOOTH, groupName=""): """ Defines "ViscousLayers" hypothesis to give parameters of layers of prisms to build near mesh boundary. This hypothesis can be used by several 3D algorithms: @@ -319,8 +320,17 @@ class Mesh_Algorithm: - StdMeshers.NODE_OFFSET method extrudes nodes along average normal of surrounding mesh faces by the layers thickness. Thickness of layers can be limited to avoid creation of invalid prisms. + groupName: name of a group to contain elements of layers. If not provided, + no group is created. The group is created upon mesh generation. + It can be retrieved by calling + :: + + group = mesh.GetGroupByName( groupName, SMESH.VOLUME )[0] + + Returns: + StdMeshers.StdMeshers_ViscousLayers hypothesis """ - + if not isinstance(self.algo, SMESH._objref_SMESH_3D_Algo): raise TypeError("ViscousLayers are supported by 3D algorithms only") if not "ViscousLayers" in self.GetCompatibleHypothesis(): @@ -342,11 +352,12 @@ class Mesh_Algorithm: hyp.SetStretchFactor( stretchFactor ) hyp.SetFaces( faces, isFacesToIgnore ) hyp.SetMethod( extrMethod ) + hyp.SetGroupName( groupName ) self.mesh.AddHypothesis( hyp, self.geom ) return hyp def ViscousLayers2D(self, thickness, numberOfLayers, stretchFactor, - edges=[], isEdgesToIgnore=True ): + edges=[], isEdgesToIgnore=True, groupName="" ): """ Defines "ViscousLayers2D" hypothesis to give parameters of layers of quadrilateral elements to build near mesh boundary. This hypothesis can be used by several 2D algorithms: @@ -361,6 +372,15 @@ class Mesh_Algorithm: the value of **isEdgesToIgnore** parameter. isEdgesToIgnore: if *True*, the Viscous layers are not generated on the edges specified by the previous parameter (**edges**). + groupName: name of a group to contain elements of layers. If not provided, + no group is created. The group is created upon mesh generation. + It can be retrieved by calling + :: + + group = mesh.GetGroupByName( groupName, SMESH.FACE )[0] + + Returns: + StdMeshers.StdMeshers_ViscousLayers2D hypothesis """ if not isinstance(self.algo, SMESH._objref_SMESH_2D_Algo): @@ -383,6 +403,7 @@ class Mesh_Algorithm: hyp.SetNumberLayers(numberOfLayers) hyp.SetStretchFactor(stretchFactor) hyp.SetEdges(edges, isEdgesToIgnore) + hyp.SetGroupName( groupName ) self.mesh.AddHypothesis( hyp, self.geom ) return hyp diff --git a/src/StdMeshers/StdMeshers_ViscousLayers.cxx b/src/StdMeshers/StdMeshers_ViscousLayers.cxx index 075d1b46d..270330be4 100644 --- a/src/StdMeshers/StdMeshers_ViscousLayers.cxx +++ b/src/StdMeshers/StdMeshers_ViscousLayers.cxx @@ -612,12 +612,16 @@ namespace VISCOUS_3D _thickness = Max( _thickness, hyp->GetTotalThickness() ); _stretchFactor += hyp->GetStretchFactor(); _method = hyp->GetMethod(); + if ( _groupName.empty() ) + _groupName = hyp->GetGroupName(); } } double GetTotalThickness() const { return _thickness; /*_nbHyps ? _thickness / _nbHyps : 0;*/ } double GetStretchFactor() const { return _nbHyps ? _stretchFactor / _nbHyps : 0; } int GetNumberLayers() const { return _nbLayers; } int GetMethod() const { return _method; } + bool ToCreateGroup() const { return !_groupName.empty(); } + const std::string& GetGroupName() const { return _groupName; } bool UseSurfaceNormal() const { return _method == StdMeshers_ViscousLayers::SURF_OFFSET_SMOOTH; } @@ -636,8 +640,9 @@ namespace VISCOUS_3D static bool Equals( double v1, double v2 ) { return Abs( v1 - v2 ) < 0.01 * ( v1 + v2 ); } private: - int _nbLayers, _nbHyps, _method; - double _thickness, _stretchFactor; + int _nbLayers, _nbHyps, _method; + double _thickness, _stretchFactor; + std::string _groupName; }; //-------------------------------------------------------------------------------- @@ -1247,7 +1252,8 @@ namespace VISCOUS_3D StdMeshers_ViscousLayers::StdMeshers_ViscousLayers(int hypId, SMESH_Gen* gen) :SMESH_Hypothesis(hypId, gen), _isToIgnoreShapes(1), _nbLayers(1), _thickness(1), _stretchFactor(1), - _method( SURF_OFFSET_SMOOTH ) + _method( SURF_OFFSET_SMOOTH ), + _groupName("") { _name = StdMeshers_ViscousLayers::GetHypType(); _param_algo_dim = -3; // auxiliary hyp used by 3D algos @@ -1279,6 +1285,15 @@ void StdMeshers_ViscousLayers::SetMethod( ExtrusionMethod method ) if ( _method != method ) _method = method, NotifySubMeshesHypothesisModification(); } // -------------------------------------------------------------------------------- +void StdMeshers_ViscousLayers::SetGroupName(const std::string& name) +{ + if ( _groupName != name ) + { + _groupName = name; + if ( !_groupName.empty() ) + NotifySubMeshesHypothesisModification(); + } +} // -------------------------------------------------------------------------------- SMESH_ProxyMesh::Ptr StdMeshers_ViscousLayers::Compute(SMESH_Mesh& theMesh, const TopoDS_Shape& theShape, @@ -1333,6 +1348,9 @@ std::ostream & StdMeshers_ViscousLayers::SaveTo(std::ostream & save) save << " " << _shapeIds[i]; save << " " << !_isToIgnoreShapes; // negate to keep the behavior in old studies. save << " " << _method; + save << " " << _groupName.size(); + if ( !_groupName.empty() ) + save << " " << _groupName; return save; } // -------------------------------------------------------------------------------- std::istream & StdMeshers_ViscousLayers::LoadFrom(std::istream & load) @@ -1345,6 +1363,13 @@ std::istream & StdMeshers_ViscousLayers::LoadFrom(std::istream & load) _isToIgnoreShapes = !shapeToTreat; if ( load >> method ) _method = (ExtrusionMethod) method; + int nameSize = 0; + if ( load >> nameSize && nameSize > 0 ) + { + _groupName.resize( nameSize ); + load.get( _groupName[0] ); // remove a white-space + load.getline( &_groupName[0], nameSize + 1 ); + } } else { _isToIgnoreShapes = true; // old behavior @@ -1378,6 +1403,36 @@ bool StdMeshers_ViscousLayers::IsShapeWithLayers(int shapeIndex) const ( std::find( _shapeIds.begin(), _shapeIds.end(), shapeIndex ) != _shapeIds.end() ); return IsToIgnoreShapes() ? !isIn : isIn; } + +// -------------------------------------------------------------------------------- +SMDS_MeshGroup* StdMeshers_ViscousLayers::CreateGroup( const std::string& theName, + SMESH_Mesh& theMesh, + SMDSAbs_ElementType theType) +{ + SMESH_Group* group = 0; + SMDS_MeshGroup* groupDS = 0; + + if ( theName.empty() ) + return groupDS; + + if ( SMESH_Mesh::GroupIteratorPtr grIt = theMesh.GetGroups() ) + while( grIt->more() && !group ) + { + group = grIt->next(); + if ( !group || + group->GetGroupDS()->GetType() != theType || + group->GetName() != theName || + !dynamic_cast< SMESHDS_Group* >( group->GetGroupDS() )) + group = 0; + } + if ( !group ) + group = theMesh.AddGroup( theType, theName.c_str() ); + + groupDS = & dynamic_cast< SMESHDS_Group* >( group->GetGroupDS() )->SMDSGroup(); + + return groupDS; +} + // END StdMeshers_ViscousLayers hypothesis //================================================================================ @@ -10230,6 +10285,11 @@ bool _ViscousBuilder::refine(_SolidData& data) const TGeomID faceID = getMeshDS()->ShapeToIndex( exp.Current() ); if ( data._ignoreFaceIds.count( faceID )) continue; + _EdgesOnShape* eos = data.GetShapeEdges( faceID ); + SMDS_MeshGroup* group = StdMeshers_ViscousLayers::CreateGroup( eos->_hyp.GetGroupName(), + *helper.GetMesh(), + SMDSAbs_Volume ); + std::vector< const SMDS_MeshElement* > vols; const bool isReversedFace = data._reversedFaceIds.count( faceID ); SMESHDS_SubMesh* fSubM = getMeshDS()->MeshElements( exp.Current() ); SMDS_ElemIteratorPtr fIt = fSubM->GetElements(); @@ -10260,14 +10320,20 @@ bool _ViscousBuilder::refine(_SolidData& data) if ( 0 < nnSet.size() && nnSet.size() < 3 ) continue; + vols.clear(); + const SMDS_MeshElement* vol; + switch ( nbNodes ) { case 3: // TRIA { // PENTA for ( size_t iZ = 1; iZ < minZ; ++iZ ) - helper.AddVolume( (*nnVec[0])[iZ-1], (*nnVec[1])[iZ-1], (*nnVec[2])[iZ-1], - (*nnVec[0])[iZ], (*nnVec[1])[iZ], (*nnVec[2])[iZ]); + { + vol = helper.AddVolume( (*nnVec[0])[iZ-1], (*nnVec[1])[iZ-1], (*nnVec[2])[iZ-1], + (*nnVec[0])[iZ], (*nnVec[1])[iZ], (*nnVec[2])[iZ]); + vols.push_back( vol ); + } for ( size_t iZ = minZ; iZ < maxZ; ++iZ ) { @@ -10280,16 +10346,18 @@ bool _ViscousBuilder::refine(_SolidData& data) int i2 = *degenEdgeInd.begin(); int i0 = helper.WrapIndex( i2 - 1, nbNodes ); int i1 = helper.WrapIndex( i2 + 1, nbNodes ); - helper.AddVolume( (*nnVec[i0])[iZ-1], (*nnVec[i1])[iZ-1], - (*nnVec[i1])[iZ ], (*nnVec[i0])[iZ ], (*nnVec[i2]).back()); + vol = helper.AddVolume( (*nnVec[i0])[iZ-1], (*nnVec[i1])[iZ-1], + (*nnVec[i1])[iZ ], (*nnVec[i0])[iZ ], (*nnVec[i2]).back()); + vols.push_back( vol ); } else // TETRA { int i3 = !degenEdgeInd.count(0) ? 0 : !degenEdgeInd.count(1) ? 1 : 2; - helper.AddVolume( (*nnVec[ 0 ])[ i3 == 0 ? iZ-1 : nnVec[0]->size()-1 ], - (*nnVec[ 1 ])[ i3 == 1 ? iZ-1 : nnVec[1]->size()-1 ], - (*nnVec[ 2 ])[ i3 == 2 ? iZ-1 : nnVec[2]->size()-1 ], - (*nnVec[ i3 ])[ iZ ]); + vol = helper.AddVolume( (*nnVec[ 0 ])[ i3 == 0 ? iZ-1 : nnVec[0]->size()-1 ], + (*nnVec[ 1 ])[ i3 == 1 ? iZ-1 : nnVec[1]->size()-1 ], + (*nnVec[ 2 ])[ i3 == 2 ? iZ-1 : nnVec[2]->size()-1 ], + (*nnVec[ i3 ])[ iZ ]); + vols.push_back( vol ); } } break; // TRIA @@ -10298,10 +10366,13 @@ bool _ViscousBuilder::refine(_SolidData& data) { // HEX for ( size_t iZ = 1; iZ < minZ; ++iZ ) - helper.AddVolume( (*nnVec[0])[iZ-1], (*nnVec[1])[iZ-1], - (*nnVec[2])[iZ-1], (*nnVec[3])[iZ-1], - (*nnVec[0])[iZ], (*nnVec[1])[iZ], - (*nnVec[2])[iZ], (*nnVec[3])[iZ]); + { + vol = helper.AddVolume( (*nnVec[0])[iZ-1], (*nnVec[1])[iZ-1], + (*nnVec[2])[iZ-1], (*nnVec[3])[iZ-1], + (*nnVec[0])[iZ], (*nnVec[1])[iZ], + (*nnVec[2])[iZ], (*nnVec[3])[iZ]); + vols.push_back( vol ); + } for ( size_t iZ = minZ; iZ < maxZ; ++iZ ) { @@ -10320,9 +10391,9 @@ bool _ViscousBuilder::refine(_SolidData& data) int i0 = helper.WrapIndex( i3 + 1, nbNodes ); int i1 = helper.WrapIndex( i0 + 1, nbNodes ); - const SMDS_MeshElement* vol = - helper.AddVolume( nnVec[i3]->back(), (*nnVec[i0])[iZ], (*nnVec[i0])[iZ-1], - nnVec[i2]->back(), (*nnVec[i1])[iZ], (*nnVec[i1])[iZ-1]); + vol = helper.AddVolume( nnVec[i3]->back(), (*nnVec[i0])[iZ], (*nnVec[i0])[iZ-1], + nnVec[i2]->back(), (*nnVec[i1])[iZ], (*nnVec[i1])[iZ-1]); + vols.push_back( vol ); if ( !ok && vol ) degenVols.push_back( vol ); } @@ -10330,15 +10401,15 @@ bool _ViscousBuilder::refine(_SolidData& data) default: // degen HEX { - const SMDS_MeshElement* vol = - helper.AddVolume( nnVec[0]->size() > iZ-1 ? (*nnVec[0])[iZ-1] : nnVec[0]->back(), - nnVec[1]->size() > iZ-1 ? (*nnVec[1])[iZ-1] : nnVec[1]->back(), - nnVec[2]->size() > iZ-1 ? (*nnVec[2])[iZ-1] : nnVec[2]->back(), - nnVec[3]->size() > iZ-1 ? (*nnVec[3])[iZ-1] : nnVec[3]->back(), - nnVec[0]->size() > iZ ? (*nnVec[0])[iZ] : nnVec[0]->back(), - nnVec[1]->size() > iZ ? (*nnVec[1])[iZ] : nnVec[1]->back(), - nnVec[2]->size() > iZ ? (*nnVec[2])[iZ] : nnVec[2]->back(), - nnVec[3]->size() > iZ ? (*nnVec[3])[iZ] : nnVec[3]->back()); + vol = helper.AddVolume( nnVec[0]->size() > iZ-1 ? (*nnVec[0])[iZ-1] : nnVec[0]->back(), + nnVec[1]->size() > iZ-1 ? (*nnVec[1])[iZ-1] : nnVec[1]->back(), + nnVec[2]->size() > iZ-1 ? (*nnVec[2])[iZ-1] : nnVec[2]->back(), + nnVec[3]->size() > iZ-1 ? (*nnVec[3])[iZ-1] : nnVec[3]->back(), + nnVec[0]->size() > iZ ? (*nnVec[0])[iZ] : nnVec[0]->back(), + nnVec[1]->size() > iZ ? (*nnVec[1])[iZ] : nnVec[1]->back(), + nnVec[2]->size() > iZ ? (*nnVec[2])[iZ] : nnVec[2]->back(), + nnVec[3]->size() > iZ ? (*nnVec[3])[iZ] : nnVec[3]->back()); + vols.push_back( vol ); degenVols.push_back( vol ); } } @@ -10349,6 +10420,11 @@ bool _ViscousBuilder::refine(_SolidData& data) return error("Not supported type of element", data._index); } // switch ( nbNodes ) + + if ( group ) + for ( size_t i = 0; i < vols.size(); ++i ) + group->Add( vols[ i ]); + } // while ( fIt->more() ) } // loop on FACEs diff --git a/src/StdMeshers/StdMeshers_ViscousLayers.hxx b/src/StdMeshers/StdMeshers_ViscousLayers.hxx index 142f35b01..7d7e362fd 100644 --- a/src/StdMeshers/StdMeshers_ViscousLayers.hxx +++ b/src/StdMeshers/StdMeshers_ViscousLayers.hxx @@ -32,6 +32,8 @@ #include +class SMDS_MeshGroup; + /*! * \brief Hypothesis defining parameters of viscous layers */ @@ -73,6 +75,13 @@ public: void SetMethod( ExtrusionMethod how ); ExtrusionMethod GetMethod() const { return _method; } + // name of a group to create + void SetGroupName(const std::string& name); + const std::string& GetGroupName() const { return _groupName; } + static SMDS_MeshGroup* CreateGroup( const std::string& theName, + SMESH_Mesh& theMesh, + SMDSAbs_ElementType theType); + // Computes temporary 2D mesh to be used by 3D algorithm. // Return SMESH_ProxyMesh for each SOLID in theShape SMESH_ProxyMesh::Ptr Compute(SMESH_Mesh& theMesh, @@ -116,6 +125,7 @@ public: double _thickness; double _stretchFactor; ExtrusionMethod _method; + std::string _groupName; }; class SMESH_subMesh; diff --git a/src/StdMeshers/StdMeshers_ViscousLayers2D.cxx b/src/StdMeshers/StdMeshers_ViscousLayers2D.cxx index 6248200a7..a0da0d527 100644 --- a/src/StdMeshers/StdMeshers_ViscousLayers2D.cxx +++ b/src/StdMeshers/StdMeshers_ViscousLayers2D.cxx @@ -2402,6 +2402,17 @@ bool _ViscousBuilder2D::refine() outerNodes.swap( innerNodes ); } + // Add faces to a group + SMDS_MeshGroup* group = StdMeshers_ViscousLayers::CreateGroup( hyp->GetGroupName(), + *_helper.GetMesh(), + SMDSAbs_Face ); + if ( group ) + { + TIDSortedElemSet::iterator fIt = L._newFaces.begin(); + for ( ; fIt != L._newFaces.end(); ++fIt ) + group->Add( *fIt ); + } + // faces between not shared _LayerEdge's (at concave VERTEX) for ( int isR = 0; isR < 2; ++isR ) { @@ -2413,15 +2424,22 @@ bool _ViscousBuilder2D::refine() if ( lNodes.empty() || rNodes.empty() || lNodes.size() != rNodes.size() ) continue; + const SMDS_MeshElement* face = 0; for ( size_t i = 1; i < lNodes.size(); ++i ) - _helper.AddFace( lNodes[ i+prev ], rNodes[ i+prev ], - rNodes[ i+cur ], lNodes[ i+cur ]); + { + face = _helper.AddFace( lNodes[ i+prev ], rNodes[ i+prev ], + rNodes[ i+cur ], lNodes[ i+cur ]); + if ( group ) + group->Add( face ); + } const UVPtStruct& ptOnVertex = points[ isR ? L._lastPntInd : L._firstPntInd ]; if ( isReverse ) - _helper.AddFace( ptOnVertex.node, lNodes[ 0 ], rNodes[ 0 ]); + face = _helper.AddFace( ptOnVertex.node, lNodes[ 0 ], rNodes[ 0 ]); else - _helper.AddFace( ptOnVertex.node, rNodes[ 0 ], lNodes[ 0 ]); + face = _helper.AddFace( ptOnVertex.node, rNodes[ 0 ], lNodes[ 0 ]); + if ( group ) + group->Add( face ); } // Fill the _ProxyMeshOfFace diff --git a/src/StdMeshersGUI/CMakeLists.txt b/src/StdMeshersGUI/CMakeLists.txt index 0b8834730..4393778db 100644 --- a/src/StdMeshersGUI/CMakeLists.txt +++ b/src/StdMeshersGUI/CMakeLists.txt @@ -82,6 +82,7 @@ SET(_moc_HEADERS StdMeshersGUI_CartesianParamCreator.h StdMeshersGUI_RadioButtonsGrpWdg.h StdMeshersGUI_PropagationHelperWdg.h + StdMeshersGUI_NameCheckableGrpWdg.h ) IF(SALOME_USE_PLOT2DVIEWER) @@ -117,6 +118,7 @@ SET(_other_SOURCES StdMeshersGUI_CartesianParamCreator.cxx StdMeshersGUI_RadioButtonsGrpWdg.cxx StdMeshersGUI_PropagationHelperWdg.cxx + StdMeshersGUI_NameCheckableGrpWdg.cxx ) IF(SALOME_USE_PLOT2DVIEWER) diff --git a/src/StdMeshersGUI/StdMeshersGUI_NameCheckableGrpWdg.cxx b/src/StdMeshersGUI/StdMeshersGUI_NameCheckableGrpWdg.cxx new file mode 100644 index 000000000..5ea084b43 --- /dev/null +++ b/src/StdMeshersGUI/StdMeshersGUI_NameCheckableGrpWdg.cxx @@ -0,0 +1,68 @@ +// Copyright (C) 2007-2019 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +#include "StdMeshersGUI_NameCheckableGrpWdg.h" + +#include +#include +#include + +#define SPACING 6 +#define MARGIN 11 + +//================================================================================ +/*! + * \brief Creates a QGroupBox with a given title + */ +//================================================================================ + +StdMeshersGUI_NameCheckableGrpWdg::StdMeshersGUI_NameCheckableGrpWdg( const QString& groupTitle, + const QString& nameLabel ) + : QGroupBox( groupTitle ), + myNameLineEdit( new QLineEdit( this )) +{ + setCheckable( true ); + + QLabel* label = new QLabel( nameLabel ); + + QGridLayout* layout = new QGridLayout( this ); + layout->setSpacing(SPACING); + layout->setMargin(MARGIN); + + layout->addWidget( label, 0, 0 ); + layout->addWidget( myNameLineEdit, 0, 1 ); + + connect( this, SIGNAL( toggled( bool )), myNameLineEdit, SLOT( setEnabled( bool ))); +} + +QString StdMeshersGUI_NameCheckableGrpWdg::getName() +{ + return isChecked() ? myNameLineEdit->text() : QString(); +} + +void StdMeshersGUI_NameCheckableGrpWdg::setName( CORBA::String_var name ) +{ + myNameLineEdit->setText( name.in() ); + setChecked( ! myNameLineEdit->text().isEmpty() ); +} + +void StdMeshersGUI_NameCheckableGrpWdg::setDefaultName( QString name ) +{ + myNameLineEdit->setText( name ); + setChecked( ! myNameLineEdit->text().isEmpty() ); +} diff --git a/src/StdMeshersGUI/StdMeshersGUI_NameCheckableGrpWdg.h b/src/StdMeshersGUI/StdMeshersGUI_NameCheckableGrpWdg.h new file mode 100644 index 000000000..334df51b8 --- /dev/null +++ b/src/StdMeshersGUI/StdMeshersGUI_NameCheckableGrpWdg.h @@ -0,0 +1,53 @@ +// Copyright (C) 2007-2019 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +#ifndef STDMESHERSGUI_NameCheckableGrpWdg_H +#define STDMESHERSGUI_NameCheckableGrpWdg_H + +// SMESH includes +#include "SMESH_StdMeshersGUI.hxx" + +// Qt includes +#include + +#include + +class QButtonGroup; +class QLineEdit; + +/*! + * \brief A QGroupBox holding several radio buttons + */ +class STDMESHERSGUI_EXPORT StdMeshersGUI_NameCheckableGrpWdg : public QGroupBox +{ + Q_OBJECT + +public: + StdMeshersGUI_NameCheckableGrpWdg(const QString& groupTitle, + const QString& nameLabel); + + QString getName(); + + void setName( CORBA::String_var name ); + void setDefaultName( QString name ); + +private: + QLineEdit* myNameLineEdit; +}; + +#endif // STDMESHERSGUI_NameCheckableGrpWdg_H diff --git a/src/StdMeshersGUI/StdMeshersGUI_StdHypothesisCreator.cxx b/src/StdMeshersGUI/StdMeshersGUI_StdHypothesisCreator.cxx index d477b2fc6..f16b06011 100644 --- a/src/StdMeshersGUI/StdMeshersGUI_StdHypothesisCreator.cxx +++ b/src/StdMeshersGUI/StdMeshersGUI_StdHypothesisCreator.cxx @@ -39,6 +39,7 @@ #include "StdMeshersGUI_PropagationHelperWdg.h" #include "StdMeshersGUI_QuadrangleParamWdg.h" #include "StdMeshersGUI_RadioButtonsGrpWdg.h" +#include "StdMeshersGUI_NameCheckableGrpWdg.h" #include "StdMeshersGUI_SubShapeSelectorWdg.h" #include @@ -728,6 +729,12 @@ QString StdMeshersGUI_StdHypothesisCreator::storeParams() const { h->SetFaces( idsWg->GetListOfIDs(), params[4].myValue.toInt() ); } + + if ( StdMeshersGUI_NameCheckableGrpWdg* nameWg = + widget< StdMeshersGUI_NameCheckableGrpWdg >( 6 )) + { + h->SetGroupName( nameWg->getName().toUtf8().data() ); + } } else if( hypType()=="ViscousLayers2D" ) { @@ -746,6 +753,12 @@ QString StdMeshersGUI_StdHypothesisCreator::storeParams() const { h->SetEdges( idsWg->GetListOfIDs(), params[3].myValue.toInt() ); } + + if ( StdMeshersGUI_NameCheckableGrpWdg* nameWg = + widget< StdMeshersGUI_NameCheckableGrpWdg >( 5 )) + { + h->SetGroupName( nameWg->getName().toUtf8().data() ); + } } // else if( hypType()=="QuadrangleParams" ) // { @@ -1250,6 +1263,19 @@ bool StdMeshersGUI_StdHypothesisCreator::stdParams( ListOfStdParams& p ) const } customWidgets()->append ( idsWg ); } + + item.setNoName(); + p.append( item ); + StdMeshersGUI_NameCheckableGrpWdg* nameWdg = + new StdMeshersGUI_NameCheckableGrpWdg( tr( "CREATE_GROUPS_FROM_LAYERS" ), + tr( "GROUP_NAME" )); + nameWdg->setName( h->GetGroupName() ); + if ( nameWdg->getName().isEmpty() ) + { + nameWdg->setDefaultName( type() ); + nameWdg->setChecked( false ); + } + customWidgets()->append ( nameWdg ); } else if( hypType()=="ViscousLayers2D" ) { @@ -1308,6 +1334,19 @@ bool StdMeshersGUI_StdHypothesisCreator::stdParams( ListOfStdParams& p ) const } customWidgets()->append ( idsWg ); } + + item.setNoName(); + p.append( item ); + StdMeshersGUI_NameCheckableGrpWdg* nameWdg = + new StdMeshersGUI_NameCheckableGrpWdg( tr( "CREATE_GROUPS_FROM_LAYERS" ), + tr( "GROUP_NAME" )); + nameWdg->setName( h->GetGroupName() ); + if ( nameWdg->getName().isEmpty() ) + { + nameWdg->setDefaultName( type() ); + nameWdg->setChecked( false ); + } + customWidgets()->append ( nameWdg ); } else res = false; @@ -1574,6 +1613,10 @@ bool StdMeshersGUI_StdHypothesisCreator::getParamFromCustomWidget( StdParam & pa param.myValue = w->checkedId(); return true; } + if ( widget->inherits( "StdMeshersGUI_NameCheckableGrpWdg" )) + { + return true; + } return false; } diff --git a/src/StdMeshersGUI/StdMeshers_msg_en.ts b/src/StdMeshersGUI/StdMeshers_msg_en.ts index 351aed8f4..036b28413 100644 --- a/src/StdMeshersGUI/StdMeshers_msg_en.ts +++ b/src/StdMeshersGUI/StdMeshers_msg_en.ts @@ -59,6 +59,14 @@ this one for this mesh/sub-mesh. EXTMETH_FACE_OFFSET Face offset + + CREATE_GROUPS_FROM_LAYERS + Create groups from layers + + + GROUP_NAME + Group name + @default diff --git a/src/StdMeshers_I/StdMeshers_ViscousLayers2D_i.cxx b/src/StdMeshers_I/StdMeshers_ViscousLayers2D_i.cxx index 376f156b0..0e03a4b1f 100644 --- a/src/StdMeshers_I/StdMeshers_ViscousLayers2D_i.cxx +++ b/src/StdMeshers_I/StdMeshers_ViscousLayers2D_i.cxx @@ -222,6 +222,33 @@ throw ( SALOME::SALOME_Exception ) return GetImpl()->GetStretchFactor(); } +//================================================================================ +/*! + * \brief Set name of a group of layers elements + */ +//================================================================================ + +void StdMeshers_ViscousLayers2D_i::SetGroupName(const char* name) +{ + if ( GetImpl()->GetGroupName() != name ) + { + GetImpl()->SetGroupName( name ); + SMESH::TPythonDump() << _this() << ".SetGroupName( '" << name << "' )"; + } +} + +//================================================================================ +/*! + * \brief Return name of a group of layers elements + */ +//================================================================================ + +char* StdMeshers_ViscousLayers2D_i::GetGroupName() +{ + return CORBA::string_dup( GetImpl()->GetGroupName().c_str() ); +} + + //============================================================================= /*! * Get implementation diff --git a/src/StdMeshers_I/StdMeshers_ViscousLayers2D_i.hxx b/src/StdMeshers_I/StdMeshers_ViscousLayers2D_i.hxx index 49dc69c8e..56f557c38 100644 --- a/src/StdMeshers_I/StdMeshers_ViscousLayers2D_i.hxx +++ b/src/StdMeshers_I/StdMeshers_ViscousLayers2D_i.hxx @@ -64,6 +64,10 @@ class STDMESHERS_I_EXPORT StdMeshers_ViscousLayers2D_i: void SetStretchFactor(::CORBA::Double factor) throw ( SALOME::SALOME_Exception ); ::CORBA::Double GetStretchFactor(); + void SetGroupName(const char* name); + char* GetGroupName(); + + // Get implementation ::StdMeshers_ViscousLayers2D* GetImpl(); diff --git a/src/StdMeshers_I/StdMeshers_ViscousLayers_i.cxx b/src/StdMeshers_I/StdMeshers_ViscousLayers_i.cxx index 603ef55c3..ab47e1725 100644 --- a/src/StdMeshers_I/StdMeshers_ViscousLayers_i.cxx +++ b/src/StdMeshers_I/StdMeshers_ViscousLayers_i.cxx @@ -253,6 +253,32 @@ void StdMeshers_ViscousLayers_i::SetMethod( ::StdMeshers::VLExtrusionMethod how return (::StdMeshers::VLExtrusionMethod) GetImpl()->GetMethod(); } +//================================================================================ +/*! + * \brief Set name of a group of layers elements + */ +//================================================================================ + +void StdMeshers_ViscousLayers_i::SetGroupName(const char* name) +{ + if ( GetImpl()->GetGroupName() != name ) + { + GetImpl()->SetGroupName( name ); + SMESH::TPythonDump() << _this() << ".SetGroupName( '" << name << "' )"; + } +} + +//================================================================================ +/*! + * \brief Return name of a group of layers elements + */ +//================================================================================ + +char* StdMeshers_ViscousLayers_i::GetGroupName() +{ + return CORBA::string_dup( GetImpl()->GetGroupName().c_str() ); +} + //============================================================================= /*! * Get implementation diff --git a/src/StdMeshers_I/StdMeshers_ViscousLayers_i.hxx b/src/StdMeshers_I/StdMeshers_ViscousLayers_i.hxx index ac5f0e1ae..47200ce72 100644 --- a/src/StdMeshers_I/StdMeshers_ViscousLayers_i.hxx +++ b/src/StdMeshers_I/StdMeshers_ViscousLayers_i.hxx @@ -67,10 +67,14 @@ class STDMESHERS_I_EXPORT StdMeshers_ViscousLayers_i: void SetMethod( ::StdMeshers::VLExtrusionMethod how ); ::StdMeshers::VLExtrusionMethod GetMethod(); + void SetGroupName(const char* name); + char* GetGroupName(); + + // Get implementation ::StdMeshers_ViscousLayers* GetImpl(); - // Verify whether hypothesis supports given entity type + // Verify whether hypothesis supports given entity type CORBA::Boolean IsDimSupported( SMESH::Dimension type ); // Methods for copying mesh definition to other geometry -- 2.30.2