From 62c442d05faf338dd2a7c14a6c175a588735bbe4 Mon Sep 17 00:00:00 2001 From: eap Date: Thu, 30 May 2013 14:17:56 +0000 Subject: [PATCH] 0022104: EDF 2550 SMESH: 2D viscous layer, allow specifying edges with viscous layer --- .../gui/SMESH/images/viscous_layers_hyp.png | Bin 18704 -> 46476 bytes .../gui/SMESH/input/additional_hypo.doc | 23 +++-- src/StdMeshersGUI/Makefile.am | 9 +- .../StdMeshersGUI_RadioButtonsGrpWdg.cxx | 82 ++++++++++++++++++ .../StdMeshersGUI_RadioButtonsGrpWdg.h | 53 +++++++++++ .../StdMeshersGUI_StdHypothesisCreator.cxx | 39 +++++++-- src/StdMeshersGUI/StdMeshers_msg_en.ts | 27 +++++- .../StdMeshers_ViscousLayers2D_i.cxx | 53 +++++++++-- .../StdMeshers_ViscousLayers2D_i.hxx | 7 +- .../StdMeshers_ViscousLayers_i.cxx | 13 +-- 10 files changed, 276 insertions(+), 30 deletions(-) create mode 100644 src/StdMeshersGUI/StdMeshersGUI_RadioButtonsGrpWdg.cxx create mode 100644 src/StdMeshersGUI/StdMeshersGUI_RadioButtonsGrpWdg.h diff --git a/doc/salome/gui/SMESH/images/viscous_layers_hyp.png b/doc/salome/gui/SMESH/images/viscous_layers_hyp.png index 843ff5d09adba4c7c6ed6b4c35b0f5345bfb1e74..9c99303174b63c523c1b60e0786734da882b99af 100644 GIT binary patch literal 46476 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 Pji9BjtCmYTdF_7y-vm63 literal 18704 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%0D$m1B9pG+V{Igqwwbrl9`UsPJ&pi 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 tZNyViscous Layers and Viscous Layers 2D Viscous Layers and Viscous Layers 2D additional -hypotheses can be used together with some 3D algorithms, for example, -Hexahedron(i,j,k) or 2D algorithms, for example, Triangle +hypotheses can be used together with either some 3D algorithms, for example +Hexahedron(i,j,k), or 2D algorithms, for example Triangle (MEFISTO), correspondingly. These hypotheses allow creation of layers of highly stretched elements, prisms in 3D and quadrilaterals in 2D, near mesh boundary, which is beneficial for high quality viscous @@ -67,13 +67,20 @@ computations.
  • Total thickness - gives the total thickness of element layers.
  • Number of layers - defines the number of element layers.
  • Stretch factor - defines the growth factor of element height -from the mesh boundary inwards.
  • -
  • Faces (Edges) without layers - defines geometrical faces - (or edges in 2D) on which element layers should not be - constructed. By default the element layers are not constructed on - geometrical faces shared by solids (and edges shared by faces in 2D). + from the mesh boundary inwards.
  • +
  • Specified Edges are - defines how the shapes specified by + the next parameter are used. +
  • Faces without layers and Edges with/without layers - + in the 3D case it defines geometrical faces on which element layers + should not be constructed; in the 2D case it defines geometrical edges + on which element layers either should be or should not be + constructed, depending on the value of the previous parameter + (Specified Edges are). Whatever shapes are specified by this + parameter, the element layers are not constructed on geometrical + faces shared by several solids in 3D case and edges shared by + several faces in 2D case. \note A mesh shown in the 3D Viewer can prevent selection of faces - and edges, in this case just hide the mesh. To avoid a long wait when a + and edges, just hide the mesh to avoid this. To avoid a long wait when a geometry with many faces (or edges) is displayed, the number of faces (edges) shown at a time is limited by the value of "Sub-shapes preview chunk size" preference (in Preferences/Mesh/General tab). diff --git a/src/StdMeshersGUI/Makefile.am b/src/StdMeshersGUI/Makefile.am index 8fc16589c..da78f1cd9 100644 --- a/src/StdMeshersGUI/Makefile.am +++ b/src/StdMeshersGUI/Makefile.am @@ -35,7 +35,8 @@ salomeinclude_HEADERS = \ StdMeshersGUI_LayerDistributionParamWdg.h \ StdMeshersGUI_FixedPointsParamWdg.h \ StdMeshersGUI_SubShapeSelectorWdg.h \ - StdMeshersGUI_CartesianParamCreator.h + StdMeshersGUI_CartesianParamCreator.h \ + StdMeshersGUI_RadioButtonsGrpWdg.h # Libraries targets lib_LTLIBRARIES = libStdMeshersGUI.la @@ -51,7 +52,8 @@ dist_libStdMeshersGUI_la_SOURCES = \ StdMeshersGUI_LayerDistributionParamWdg.cxx \ StdMeshersGUI_FixedPointsParamWdg.cxx \ StdMeshersGUI_SubShapeSelectorWdg.cxx \ - StdMeshersGUI_CartesianParamCreator.cxx + StdMeshersGUI_CartesianParamCreator.cxx \ + StdMeshersGUI_RadioButtonsGrpWdg.cxx MOC_FILES = \ StdMeshersGUI_StdHypothesisCreator_moc.cxx \ @@ -63,7 +65,8 @@ MOC_FILES = \ StdMeshersGUI_LayerDistributionParamWdg_moc.cxx \ StdMeshersGUI_FixedPointsParamWdg_moc.cxx \ StdMeshersGUI_SubShapeSelectorWdg_moc.cxx \ - StdMeshersGUI_CartesianParamCreator_moc.cxx + StdMeshersGUI_CartesianParamCreator_moc.cxx \ + StdMeshersGUI_RadioButtonsGrpWdg_moc.cxx nodist_libStdMeshersGUI_la_SOURCES= \ $(MOC_FILES) diff --git a/src/StdMeshersGUI/StdMeshersGUI_RadioButtonsGrpWdg.cxx b/src/StdMeshersGUI/StdMeshersGUI_RadioButtonsGrpWdg.cxx new file mode 100644 index 000000000..cca80aa17 --- /dev/null +++ b/src/StdMeshersGUI/StdMeshersGUI_RadioButtonsGrpWdg.cxx @@ -0,0 +1,82 @@ +// Copyright (C) 2007-2013 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. +// +// 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_RadioButtonsGrpWdg.h" + +#include +#include +#include +#include + +#define SPACING 6 +#define MARGIN 11 + +//================================================================================ +/*! + * \brief Creates a QGroupBox with a given title + */ +//================================================================================ + +StdMeshersGUI_RadioButtonsGrpWdg::StdMeshersGUI_RadioButtonsGrpWdg( const QString& title ) + : QGroupBox( title ) +{ + myButtonGrp = new QButtonGroup( this ); +} + +//================================================================================ +/*! + * \brief Creates a given nubmer of button labels with given labels (QString's) + */ +//================================================================================ + +void StdMeshersGUI_RadioButtonsGrpWdg::setButtonLabels( const QStringList& buttonLabels ) +{ + QVBoxLayout* layout = new QVBoxLayout( this ); + layout->setSpacing(SPACING); + layout->setMargin(MARGIN); + + for ( int id = 0; id < buttonLabels.size(); ++id ) + { + QRadioButton* button = new QRadioButton( buttonLabels.at(id), this ); + layout->addWidget( button ); + myButtonGrp->addButton( button, id ); + } +} + +//================================================================================ +/*! + * \brief Set checked a radio button with a give id. + */ +//================================================================================ + +void StdMeshersGUI_RadioButtonsGrpWdg::setChecked(int id) +{ + if ( QAbstractButton* but = myButtonGrp->button( id )) + but->setChecked( true ); +} + +//================================================================================ +/*! + * \brief Return id (zero based) of a checked radio button + */ +//================================================================================ + +int StdMeshersGUI_RadioButtonsGrpWdg::checkedId () const +{ + return myButtonGrp->checkedId(); +} diff --git a/src/StdMeshersGUI/StdMeshersGUI_RadioButtonsGrpWdg.h b/src/StdMeshersGUI/StdMeshersGUI_RadioButtonsGrpWdg.h new file mode 100644 index 000000000..fd8be84a2 --- /dev/null +++ b/src/StdMeshersGUI/StdMeshersGUI_RadioButtonsGrpWdg.h @@ -0,0 +1,53 @@ +// Copyright (C) 2007-2013 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. +// +// 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_RadioButtonsGrpWdg_H +#define STDMESHERSGUI_RadioButtonsGrpWdg_H + +// SMESH includes +#include "SMESH_StdMeshersGUI.hxx" + +// Qt includes +#include + +class QButtonGroup; +class QStringList; + +/*! + * \brief A QGroupBox holding several radio buttons + */ +class STDMESHERSGUI_EXPORT StdMeshersGUI_RadioButtonsGrpWdg : public QGroupBox +{ + Q_OBJECT + +public: + StdMeshersGUI_RadioButtonsGrpWdg (const QString& title); + + void setButtonLabels( const QStringList& buttonLabels ); + + void setChecked(int id); + + int checkedId() const; + + QButtonGroup* getButtonGroup() { return myButtonGrp; } + +private: + QButtonGroup* myButtonGrp; +}; + +#endif // STDMESHERSGUI_RadioButtonsGrpWdg_H diff --git a/src/StdMeshersGUI/StdMeshersGUI_StdHypothesisCreator.cxx b/src/StdMeshersGUI/StdMeshersGUI_StdHypothesisCreator.cxx index 1c6007296..493235b15 100644 --- a/src/StdMeshersGUI/StdMeshersGUI_StdHypothesisCreator.cxx +++ b/src/StdMeshersGUI/StdMeshersGUI_StdHypothesisCreator.cxx @@ -39,6 +39,7 @@ #include "StdMeshersGUI_ObjectReferenceParamWdg.h" #include "StdMeshersGUI_QuadrangleParamWdg.h" #include "StdMeshersGUI_SubShapeSelectorWdg.h" +#include "StdMeshersGUI_RadioButtonsGrpWdg.h" #include @@ -58,6 +59,7 @@ #include #include #include +#include const double VALUE_MAX = 1.0e+15, // COORD_MAX VALUE_MAX_2 = VALUE_MAX * VALUE_MAX, @@ -708,10 +710,10 @@ QString StdMeshersGUI_StdHypothesisCreator::storeParams() const h->SetVarParameter( params[2].text(), "SetStretchFactor" ); h->SetStretchFactor ( params[2].myValue.toDouble() ); - if ( StdMeshersGUI_SubShapeSelectorWdg* idsWg = - widget< StdMeshersGUI_SubShapeSelectorWdg >( 3 )) + if ( StdMeshersGUI_SubShapeSelectorWdg* idsWg = + widget< StdMeshersGUI_SubShapeSelectorWdg >( 4 )) { - h->SetIgnoreEdges( idsWg->GetListOfIDs() ); + h->SetEdges( idsWg->GetListOfIDs(), params[3].myValue.toInt() ); } } else if( hypType()=="QuadrangleParams" ) @@ -1198,7 +1200,19 @@ bool StdMeshersGUI_StdHypothesisCreator::stdParams( ListOfStdParams& p ) const QString aMainEntry = SMESHGUI_GenericHypothesisCreator::getMainShapeEntry(); if ( !aMainEntry.isEmpty() ) { - item.myName = tr( "SMESH_EDGES_WO_LAYERS" ); + item.myName = tr("TO_IGNORE_EDGES_OR_NOT"); + p.append( item ); + + StdMeshersGUI_RadioButtonsGrpWdg* ignoreWdg = new StdMeshersGUI_RadioButtonsGrpWdg(""); + ignoreWdg->setButtonLabels ( QStringList() + << tr("NOT_TO_IGNORE_EDGES") + << tr("TO_IGNORE_EDGES") ); + ignoreWdg->setChecked( h->GetIsToIgnoreEdges() ); + connect(ignoreWdg->getButtonGroup(),SIGNAL(buttonClicked(int)),this,SLOT(onValueChanged())); + customWidgets()->append( ignoreWdg ); + + item.myName = + tr( h->GetIsToIgnoreEdges() ? "SMESH_EDGES_WO_LAYERS" : "SMESH_EDGES_WITH_LAYERS" ); p.append( item ); StdMeshersGUI_SubShapeSelectorWdg* idsWg = @@ -1206,7 +1220,7 @@ bool StdMeshersGUI_StdHypothesisCreator::stdParams( ListOfStdParams& p ) const idsWg->SetGeomShapeEntry( aMainEntry ); idsWg->SetMainShapeEntry( aMainEntry ); - idsWg->SetListOfIDs( h->GetIgnoreEdges() ); + idsWg->SetListOfIDs( h->GetEdges() ); idsWg->showPreview( true ); customWidgets()->append ( idsWg ); } @@ -1489,6 +1503,13 @@ bool StdMeshersGUI_StdHypothesisCreator::getParamFromCustomWidget( StdParam & pa //param.myValue = w->isChecked(); return true; } + if ( widget->inherits( "StdMeshersGUI_RadioButtonsGrpWdg" )) + { + const StdMeshersGUI_RadioButtonsGrpWdg * w = + static_cast( widget ); + param.myValue = w->checkedId(); + return true; + } return false; } @@ -1539,6 +1560,14 @@ void StdMeshersGUI_StdHypothesisCreator::valueChanged( QWidget* paramWidget) toCopyGroups->setEnabled( true ); } } + else if ( hypType() == "ViscousLayers2D" && paramWidget->inherits("QButtonGroup")) + { + if ( QLabel* label = getLabel(4) ) + { + bool toIgnore = widget< StdMeshersGUI_RadioButtonsGrpWdg >( 3 )->checkedId(); + label->setText( tr( toIgnore ? "SMESH_EDGES_WO_LAYERS" : "SMESH_EDGES_WITH_LAYERS" )); + } + } } //================================================================================ diff --git a/src/StdMeshersGUI/StdMeshers_msg_en.ts b/src/StdMeshersGUI/StdMeshers_msg_en.ts index 2b506311f..cfc5d535d 100644 --- a/src/StdMeshersGUI/StdMeshers_msg_en.ts +++ b/src/StdMeshersGUI/StdMeshers_msg_en.ts @@ -1,6 +1,21 @@ + + StdMeshersGUI_StdHypothesisCreator + + TO_IGNORE_EDGES_OR_NOT + Specified edges are + + + NOT_TO_IGNORE_EDGES + Edges with layers (walls) + + + TO_IGNORE_EDGES + Edges without layers (inlets and oulets) + + @default @@ -170,8 +185,16 @@ SMESH_EDGES_WO_LAYERS - Edges without layers -(inlets and oulets) + Edges without layers + + + SMESH_FACES_WITH_LAYERS + Faces with layers +(walls) + + + SMESH_EDGES_WITH_LAYERS + Edges with layers SMESH_MAX_LENGTH_TITLE diff --git a/src/StdMeshers_I/StdMeshers_ViscousLayers2D_i.cxx b/src/StdMeshers_I/StdMeshers_ViscousLayers2D_i.cxx index bd709e593..e26f4cae5 100644 --- a/src/StdMeshers_I/StdMeshers_ViscousLayers2D_i.cxx +++ b/src/StdMeshers_I/StdMeshers_ViscousLayers2D_i.cxx @@ -77,15 +77,18 @@ StdMeshers_ViscousLayers2D_i::~StdMeshers_ViscousLayers2D_i() */ //================================================================================ -void StdMeshers_ViscousLayers2D_i::SetIgnoreEdges(const ::SMESH::long_array& edgeIDs) -throw ( SALOME::SALOME_Exception ) +void StdMeshers_ViscousLayers2D_i::SetEdges(const ::SMESH::long_array& edgeIDs, + CORBA::Boolean toIgnore) + throw ( SALOME::SALOME_Exception ) { vector ids( edgeIDs.length() ); for ( unsigned i = 0; i < ids.size(); ++i ) if (( ids[i] = edgeIDs[i] ) < 1 ) THROW_SALOME_CORBA_EXCEPTION( "Invalid edge id", SALOME::BAD_PARAM ); - GetImpl()->SetBndShapesToIgnore( ids ); - SMESH::TPythonDump() << _this() << ".SetIgnoreEdges( " << edgeIDs << " )"; + + GetImpl()->SetBndShapes( ids, toIgnore ); + + SMESH::TPythonDump() << _this() << ".SetEdges( " << edgeIDs << ", " << toIgnore << " )"; } //================================================================================ @@ -94,9 +97,23 @@ throw ( SALOME::SALOME_Exception ) */ //================================================================================ -SMESH::long_array* StdMeshers_ViscousLayers2D_i::GetIgnoreEdges() +void StdMeshers_ViscousLayers2D_i::SetIgnoreEdges(const ::SMESH::long_array& edgeIDs) + throw ( SALOME::SALOME_Exception ) { - vector idsVec = GetImpl()->GetBndShapesToIgnore(); + SMESH::TPythonDump pyDump; + this->SetEdges( edgeIDs, true ); + pyDump<< _this() << ".SetIgnoreEdges( " << edgeIDs << " )"; +} + +//================================================================================ +/*! + * \brief + */ +//================================================================================ + +SMESH::long_array* StdMeshers_ViscousLayers2D_i::GetEdges() +{ + vector idsVec = GetImpl()->GetBndShapes(); SMESH::long_array_var ids = new SMESH::long_array; ids->length( idsVec.size() ); for ( unsigned i = 0; i < idsVec.size(); ++i ) @@ -110,6 +127,30 @@ SMESH::long_array* StdMeshers_ViscousLayers2D_i::GetIgnoreEdges() */ //================================================================================ +SMESH::long_array* StdMeshers_ViscousLayers2D_i::GetIgnoreEdges() +{ + if ( GetImpl()->IsToIgnoreShapes() ) + return this->GetEdges(); + return new SMESH::long_array; +} + +//================================================================================ +/*! + * \brief + */ +//================================================================================ + +CORBA::Boolean StdMeshers_ViscousLayers2D_i::GetIsToIgnoreEdges() +{ + return GetImpl()->IsToIgnoreShapes(); +} + +//================================================================================ +/*! + * \brief + */ +//================================================================================ + void StdMeshers_ViscousLayers2D_i::SetTotalThickness(::CORBA::Double thickness) throw ( SALOME::SALOME_Exception ) { diff --git a/src/StdMeshers_I/StdMeshers_ViscousLayers2D_i.hxx b/src/StdMeshers_I/StdMeshers_ViscousLayers2D_i.hxx index 68723365c..91b072146 100644 --- a/src/StdMeshers_I/StdMeshers_ViscousLayers2D_i.hxx +++ b/src/StdMeshers_I/StdMeshers_ViscousLayers2D_i.hxx @@ -48,9 +48,14 @@ class STDMESHERS_I_EXPORT StdMeshers_ViscousLayers2D_i: // Destructor virtual ~StdMeshers_ViscousLayers2D_i(); - void SetIgnoreEdges(const ::SMESH::long_array& edgeIDs) throw ( SALOME::SALOME_Exception ); + void SetIgnoreEdges(const SMESH::long_array& edgeIDs) throw ( SALOME::SALOME_Exception ); SMESH::long_array* GetIgnoreEdges(); + void SetEdges(const SMESH::long_array& edgeIDs, + CORBA::Boolean toIgnore) throw (SALOME::SALOME_Exception); + SMESH::long_array* GetEdges(); + CORBA::Boolean GetIsToIgnoreEdges(); + void SetTotalThickness(::CORBA::Double thickness) throw ( SALOME::SALOME_Exception ); ::CORBA::Double GetTotalThickness(); diff --git a/src/StdMeshers_I/StdMeshers_ViscousLayers_i.cxx b/src/StdMeshers_I/StdMeshers_ViscousLayers_i.cxx index 99f7f1d6b..5ad82c7ec 100644 --- a/src/StdMeshers_I/StdMeshers_ViscousLayers_i.cxx +++ b/src/StdMeshers_I/StdMeshers_ViscousLayers_i.cxx @@ -85,7 +85,7 @@ throw ( SALOME::SALOME_Exception ) for ( unsigned i = 0; i < ids.size(); ++i ) if (( ids[i] = faceIDs[i] ) < 1 ) THROW_SALOME_CORBA_EXCEPTION( "Invalid face id", SALOME::BAD_PARAM ); - GetImpl()->SetBndShapesToIgnore( ids ); + GetImpl()->SetBndShapes( ids, /*toIgnore=*/true ); SMESH::TPythonDump() << _this() << ".SetIgnoreFaces( " << faceIDs << " )"; } @@ -97,11 +97,14 @@ throw ( SALOME::SALOME_Exception ) SMESH::long_array* StdMeshers_ViscousLayers_i::GetIgnoreFaces() { - vector idsVec = GetImpl()->GetBndShapesToIgnore(); SMESH::long_array_var ids = new SMESH::long_array; - ids->length( idsVec.size() ); - for ( unsigned i = 0; i < idsVec.size(); ++i ) - ids[i] = idsVec[i]; + if ( GetImpl()->IsToIgnoreShapes() ) + { + vector idsVec = GetImpl()->GetBndShapes(); + ids->length( idsVec.size() ); + for ( unsigned i = 0; i < idsVec.size(); ++i ) + ids[i] = idsVec[i]; + } return ids._retn(); } -- 2.30.2