From: Afeef Date: Fri, 24 Jun 2022 11:27:07 +0000 (+0200) Subject: Gmsh upgrade 4.8 -> 4.10 X-Git-Tag: V9_10_0a1~1^2 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=143317068adf45f37d9b29d7c2573589fcaecdc4;p=plugins%2Fgmshplugin.git Gmsh upgrade 4.8 -> 4.10 - This commit adds interfaces MeshSizeFromCurvature which is used to control mesh size on curved edges (input [int] # of elements per 2Pi). - Adds new algorithm for quad meshing from Gmsh based on frame-fields. - Corrects gmsh options for meshsizes. - Updates documentation. --- diff --git a/doc/salome/gui/GMSHPLUGIN/images/Arguments.png b/doc/salome/gui/GMSHPLUGIN/images/Arguments.png index c5a836e..9818e84 100644 Binary files a/doc/salome/gui/GMSHPLUGIN/images/Arguments.png and b/doc/salome/gui/GMSHPLUGIN/images/Arguments.png differ diff --git a/doc/salome/gui/GMSHPLUGIN/images/Compounds.png b/doc/salome/gui/GMSHPLUGIN/images/Compounds.png index 6a28d13..499f550 100644 Binary files a/doc/salome/gui/GMSHPLUGIN/images/Compounds.png and b/doc/salome/gui/GMSHPLUGIN/images/Compounds.png differ diff --git a/doc/salome/gui/GMSHPLUGIN/input/gmsh_2d_3d_hypo.doc b/doc/salome/gui/GMSHPLUGIN/input/gmsh_2d_3d_hypo.doc index 233983f..ec9de91 100644 --- a/doc/salome/gui/GMSHPLUGIN/input/gmsh_2d_3d_hypo.doc +++ b/doc/salome/gui/GMSHPLUGIN/input/gmsh_2d_3d_hypo.doc @@ -10,12 +10,13 @@ hypotheses and algorithms (2D and 1D for meshing 3D objects and 1D for meshing 2
\image html Arguments.png Dialog boxes of Gmsh 2D and Gmsh 3D algorithms. -The Arguments tab of the dialog boxes is very similar to the original Gmsh +The Arguments tab of the dialog boxes is very similar to the original Gmsh GUI general mesh option tab. One familiar with the original interface can refer to the Gmsh documentation for more information. We briefly describe each argument of the Arguments tab and give the original corresponding Gmsh keyword (referring to Gmsh Mesh options list): + - Name - allows to define the name for the algorithm ("Gmsh Parameters" by default). - 2D algorithm - allows to choose the Gmsh 2D algorithm for both 2D and 3D meshes. Original corresponding Gmsh keyword is "Mesh.Algorithm". @@ -29,14 +30,16 @@ Original corresponding Gmsh keyword is "Mesh.SubdivisionAlgorithm". Original corresponding Gmsh keyword is "Mesh.RemeshAlgorithm". - Remeshing parametrization - allows to choose the remeshing parametrization. Original corresponding Gmsh keyword is "Mesh.RemeshParametrization". -- Smoothing steps - Number of steps to smooth the final mesh. +- Smoothing steps - number of steps to smooth the final mesh. Original corresponding Gmsh keyword is "Mesh.Smoothing". - Element size factor - factor used to linearly increase or decrease the default mesh size. -Original corresponding Gmsh keyword is "Mesh.CharacteristicLengthFactor". -- Max Size - maximum linear dimensions for mesh cells. -Original corresponding Gmsh keyword is "Mesh.CharacteristicLengthMax". -- Min Size - minimum linear dimensions for mesh cells. -Original corresponding Gmsh keyword is "Mesh.CharacteristicLengthMin". +Original corresponding Gmsh keyword is "Mesh.MeshSizeFactor". +- Elements per 2Pi radians - number of mesh elements per 2 Pi radians. This helps defining a mesh size with respect to the curvature of the underlying geometry. +Original corresponding Gmsh keyword is "Mesh.MeshSizeFromCurvature". +- Max. Size - maximum linear dimensions for mesh cells. +Original corresponding Gmsh keyword is "Mesh.MeshSizeMax". +- Min. Size - minimum linear dimensions for mesh cells. +Original corresponding Gmsh keyword is "Mesh.MeshSizeMin". - Second Order - if this box is checked in, the algorithm will create second order nodes on the mesh, which actually will become quadratic. Original corresponding Gmsh keyword is "Mesh.ElementOrder" (set to 2 if the box is checked in, else 1). @@ -56,4 +59,4 @@ Each group will be treated as a single entity during meshing. When meshed, the single entity will be reparametrized as a single surface, whose mesh can thus cross internal boundaries. - Remove - deletes selected rows from the table. -*/ +*/ \ No newline at end of file diff --git a/doc/salome/gui/GMSHPLUGIN/input/index.doc b/doc/salome/gui/GMSHPLUGIN/input/index.doc index 1356d22..7095583 100644 --- a/doc/salome/gui/GMSHPLUGIN/input/index.doc +++ b/doc/salome/gui/GMSHPLUGIN/input/index.doc @@ -3,7 +3,7 @@ \mainpage Introduction to GMSHPLUGIN \b GMSHPLUGIN plugin provides an integration of certain functionalities of the well known - Gmsh three-dimensional finite element mesh generator. + Gmsh three-dimensional finite element mesh generator. It is possible to mesh 2D and 3D geometric entities. The plugin was especially developed to integrate the Gmsh compound functionality. The plugin provides support of sub-meshes. diff --git a/idl/GMSHPlugin_Algorithm.idl b/idl/GMSHPlugin_Algorithm.idl index 93eaaea..cd210c5 100644 --- a/idl/GMSHPlugin_Algorithm.idl +++ b/idl/GMSHPlugin_Algorithm.idl @@ -77,6 +77,9 @@ module GMSHPlugin void SetSizeFactor(in double value); double GetSizeFactor(); + + void SetMeshCurvatureSize(in double value); + double GetMeshCurvatureSize(); void SetMaxSize(in double value); double GetMaxSize(); diff --git a/src/GMSHPlugin/GMSHPlugin_Hypothesis.cxx b/src/GMSHPlugin/GMSHPlugin_Hypothesis.cxx index 5519748..75996a6 100644 --- a/src/GMSHPlugin/GMSHPlugin_Hypothesis.cxx +++ b/src/GMSHPlugin/GMSHPlugin_Hypothesis.cxx @@ -44,6 +44,9 @@ GMSHPlugin_Hypothesis::GMSHPlugin_Hypothesis (int hypId, _remeshPara (harmonic), _smouthSteps (1), _sizeFactor (1), +#if GMSH_MAJOR_VERSION >=4 && GMSH_MINOR_VERSION >=10 + _meshCurvatureSize(0), +#endif _minSize (0), _maxSize (1e22), _secondOrder (false), @@ -143,6 +146,17 @@ void GMSHPlugin_Hypothesis::SetUseIncomplElem(bool theUseIncomplElem) } } +#if GMSH_MAJOR_VERSION >=4 && GMSH_MINOR_VERSION >=10 +void GMSHPlugin_Hypothesis::SetMeshCurvatureSize(double theMeshCurvatureSize) +{ + if (theMeshCurvatureSize != _meshCurvatureSize) + { + _meshCurvatureSize = theMeshCurvatureSize; + NotifySubMeshesHypothesisModification(); + } +} +#endif + void GMSHPlugin_Hypothesis::SetMaxSize(double theSize) { if (theSize != _maxSize) @@ -206,6 +220,9 @@ std::ostream & GMSHPlugin_Hypothesis::SaveTo(std::ostream & save) " " << _remeshPara << " " << _smouthSteps << " " << _sizeFactor << +#if GMSH_MAJOR_VERSION >=4 && GMSH_MINOR_VERSION >=10 + " " << _meshCurvatureSize << +#endif " " << _maxSize << " " << _minSize << " " << (int)_secondOrder << @@ -288,6 +305,14 @@ std::istream & GMSHPlugin_Hypothesis::LoadFrom(std::istream & load) else load.clear(ios::badbit | load.rdstate()); +#if GMSH_MAJOR_VERSION >=4 && GMSH_MINOR_VERSION >=10 + isOK = static_cast(load >> val); + if (isOK) + _meshCurvatureSize = val; + else + load.clear(ios::badbit | load.rdstate()); +#endif + isOK = static_cast(load >> val); if (isOK) _maxSize = val; diff --git a/src/GMSHPlugin/GMSHPlugin_Hypothesis.hxx b/src/GMSHPlugin/GMSHPlugin_Hypothesis.hxx index 7a0a3dc..d5c38fb 100644 --- a/src/GMSHPlugin/GMSHPlugin_Hypothesis.hxx +++ b/src/GMSHPlugin/GMSHPlugin_Hypothesis.hxx @@ -45,7 +45,12 @@ public: delaunay, frontal, delaunayforquad, +#if GMSH_MAJOR_VERSION >=4 && GMSH_MINOR_VERSION >=10 + packingparallelograms, + quadqs +#else packingparallelograms +#endif }; void Set2DAlgo(Algo2D the2DAlgo); @@ -124,6 +129,11 @@ public: void SetUseIncomplElem(bool theUseIncomplElem); bool GetUseIncomplElem() const { return _useIncomplElem; } + +#if GMSH_MAJOR_VERSION >=4 && GMSH_MINOR_VERSION >=10 + void SetMeshCurvatureSize(double theMeshCurvatureSize); + double GetMeshCurvatureSize() const { return _meshCurvatureSize; } +#endif void SetMaxSize(double theSize); double GetMaxSize() const { return _maxSize; } @@ -170,6 +180,9 @@ private: RemeshPara _remeshPara; double _smouthSteps; double _sizeFactor; +#if GMSH_MAJOR_VERSION >=4 && GMSH_MINOR_VERSION >=10 + double _meshCurvatureSize; +#endif double _minSize, _maxSize; bool _secondOrder, _useIncomplElem; bool _is2d; diff --git a/src/GMSHPlugin/GMSHPlugin_Hypothesis_i.cxx b/src/GMSHPlugin/GMSHPlugin_Hypothesis_i.cxx index b8ebfab..1d2e131 100644 --- a/src/GMSHPlugin/GMSHPlugin_Hypothesis_i.cxx +++ b/src/GMSHPlugin/GMSHPlugin_Hypothesis_i.cxx @@ -67,6 +67,22 @@ CORBA::Double GMSHPlugin_Hypothesis_i::GetMaxSize() return this->GetImpl()->GetMaxSize(); } + +void GMSHPlugin_Hypothesis_i::SetMeshCurvatureSize (CORBA::Double theMeshCurvatureSize) +{ + if ( isToSetParameter( GetMeshCurvatureSize(), theMeshCurvatureSize, METH_SetMeshCurvatureSize )) + { + this->GetImpl()->SetMeshCurvatureSize(theMeshCurvatureSize); + SMESH::TPythonDump() << _this() << ".SetMeshCurvatureSize( " << SMESH::TVar(theMeshCurvatureSize) << " )"; + } +} + +CORBA::Double GMSHPlugin_Hypothesis_i::GetMeshCurvatureSize() +{ + return this->GetImpl()->GetMeshCurvatureSize(); +} + + void GMSHPlugin_Hypothesis_i::SetMinSize (CORBA::Double theValue) { if ( isToSetParameter( GetMinSize(), theValue, METH_SetMinSize )) @@ -319,6 +335,7 @@ int GMSHPlugin_Hypothesis_i::getParamIndex(const TCollection_AsciiString& method if ( method == "SetNbSegPerEdge" ) return 2; if ( method == "SetNbSegPerRadius" ) return 3; if ( method == "SetMinSize" ) return nbVars-1; + if ( method == "SetMeshCurvatureSize" ) return 5; return SMESH_Hypothesis_i::getParamIndex( method, nbVars ); // return default value } @@ -340,6 +357,7 @@ std::string GMSHPlugin_Hypothesis_i::getMethodOfParameter(const int paramIndex, case 2: return "SetNbSegPerEdge"; case 3: return "SetNbSegPerRadius"; case 4: return "SetMinSize"; + case 5: return "SetMeshCurvatureSize"; } return ""; } diff --git a/src/GMSHPlugin/GMSHPlugin_Hypothesis_i.hxx b/src/GMSHPlugin/GMSHPlugin_Hypothesis_i.hxx index 53b4935..c7823fc 100644 --- a/src/GMSHPlugin/GMSHPlugin_Hypothesis_i.hxx +++ b/src/GMSHPlugin/GMSHPlugin_Hypothesis_i.hxx @@ -46,6 +46,8 @@ class GMSHPLUGIN_EXPORT GMSHPlugin_Hypothesis_i: virtual ~GMSHPlugin_Hypothesis_i(); // Ajout d'un truc + void SetMeshCurvatureSize(CORBA::Double theMeshCurvatureSize); + CORBA::Double GetMeshCurvatureSize(); void SetMaxSize(CORBA::Double theSize); CORBA::Double GetMaxSize(); @@ -113,6 +115,7 @@ class GMSHPLUGIN_EXPORT GMSHPlugin_Hypothesis_i: // to remember whether a parameter is already set (issue 0021364) enum SettingMethod { + METH_SetMeshCurvatureSize = 5, METH_SetMaxSize = 1, METH_SetMinSize = 2, METH_SetSecondOrder = 4, diff --git a/src/GMSHPlugin/GMSHPlugin_Mesher.cxx b/src/GMSHPlugin/GMSHPlugin_Mesher.cxx index 0222b03..23aa4d9 100644 --- a/src/GMSHPlugin/GMSHPlugin_Mesher.cxx +++ b/src/GMSHPlugin/GMSHPlugin_Mesher.cxx @@ -176,6 +176,9 @@ void GMSHPlugin_Mesher::SetParameters(const GMSHPlugin_Hypothesis* hyp) _remeshPara = hyp->GetRemeshPara(); _smouthSteps = hyp->GetSmouthSteps(); _sizeFactor = hyp->GetSizeFactor(); +#if GMSH_MAJOR_VERSION >=4 && GMSH_MINOR_VERSION >=10 + _meshCurvatureSize = hyp->GetMeshCurvatureSize(); +#endif _minSize = hyp->GetMinSize(); _maxSize = hyp->GetMaxSize(); _secondOrder = hyp->GetSecondOrder(); @@ -193,6 +196,9 @@ void GMSHPlugin_Mesher::SetParameters(const GMSHPlugin_Hypothesis* hyp) _remeshPara = 0; _smouthSteps = 1; _sizeFactor = 1; +#if GMSH_MAJOR_VERSION >=4 && GMSH_MINOR_VERSION >=10 + _meshCurvatureSize = 0; +#endif _minSize = 0; _maxSize = 1e22; _secondOrder = false; @@ -212,8 +218,11 @@ void GMSHPlugin_Mesher::SetParameters(const GMSHPlugin_Hypothesis* hyp) void GMSHPlugin_Mesher::SetMaxThreadsGmsh() { MESSAGE("GMSHPlugin_Mesher::SetMaxThreadsGmsh"); - if (_compounds.size() > 0) + // compound meshing (_compounds.size() > 0) and quad meshing (_algo2d >= 5) will + // not be multi-threaded + if (_compounds.size() > 0 || _algo2d >= 5){ _maxThreads = 1; + } else _maxThreads = omp_get_max_threads(); } @@ -252,6 +261,9 @@ void GMSHPlugin_Mesher::SetGmshOptions() mapAlgo2d[3]=6; // Frontal-Delaunay mapAlgo2d[4]=8; // DelQuad (Frontal-Delaunay for Quads) mapAlgo2d[5]=9; // Packing of parallelograms +#if GMSH_MAJOR_VERSION >=4 && GMSH_MINOR_VERSION >=10 + mapAlgo2d[6]=11;// Quasistructured quads with cross-fields +#endif std::map mapAlgo3d; mapAlgo3d[0]=1; // Delaunay @@ -280,6 +292,10 @@ void GMSHPlugin_Mesher::SetGmshOptions() //ASSERT(ok); ok = GmshSetOption("Mesh", "Smoothing" , (double)_smouthSteps) ; //ASSERT(ok); +#if GMSH_MAJOR_VERSION >=4 && GMSH_MINOR_VERSION >=10 + ok = GmshSetOption("Mesh", "MeshSizeFromCurvature" , _meshCurvatureSize) ; + ASSERT(ok); +#endif #if GMSH_MAJOR_VERSION >=4 && GMSH_MINOR_VERSION >=8 ok = GmshSetOption("Mesh", "MeshSizeFactor" , _sizeFactor) ; ASSERT(ok); diff --git a/src/GMSHPlugin/GMSHPlugin_Mesher.hxx b/src/GMSHPlugin/GMSHPlugin_Mesher.hxx index a291d62..b20520a 100644 --- a/src/GMSHPlugin/GMSHPlugin_Mesher.hxx +++ b/src/GMSHPlugin/GMSHPlugin_Mesher.hxx @@ -97,6 +97,9 @@ class GMSHPLUGIN_EXPORT GMSHPlugin_Mesher #if GMSH_MAJOR_VERSION >=4 && GMSH_MINOR_VERSION >=3 double _maxThreads; #endif +#if GMSH_MAJOR_VERSION >=4 && GMSH_MINOR_VERSION >=10 + double _meshCurvatureSize; +#endif std::set _compounds; diff --git a/src/GUI/GMSHPluginGUI_HypothesisCreator.cxx b/src/GUI/GMSHPluginGUI_HypothesisCreator.cxx index caa321e..a048c16 100644 --- a/src/GUI/GMSHPluginGUI_HypothesisCreator.cxx +++ b/src/GUI/GMSHPluginGUI_HypothesisCreator.cxx @@ -53,7 +53,12 @@ enum Algo2D delaunay, frontal, delaunayforquad, +#if GMSH_MAJOR_VERSION >=4 && GMSH_MINOR_VERSION >=10 + packingparallelograms, + quadqs +#else packingparallelograms +#endif }; enum Algo3D @@ -61,7 +66,8 @@ enum Algo2D delaunay3, frontal3, mmg3d, - rtree + rtree, + hxt }; #if GMSH_MAJOR_VERSION >=4 && GMSH_MINOR_VERSION >=8 @@ -158,8 +164,17 @@ QFrame* GMSHPluginGUI_HypothesisCreator::buildFrame() aGroupLayout->addWidget( new QLabel( tr( "GMSH_2D_ALGO" ), GroupC1 ), row, 0 ); my2DAlgo = new QComboBox( GroupC1 ); QStringList types2DAlgo; - types2DAlgo << tr( "GMSH_AUTOMATIC" ) << tr( "GMSH_MESH_ADAPT" ) << tr( "GMSH_DELAUNAY" ) << - tr( "GMSH_FRONTAL" ) << tr( "GMSH_DELAUNAY_FOR_QUAD" ) << tr( "GMSH_PACKING_OF_PARALLELOGRAMS" ); + types2DAlgo << tr( "GMSH_AUTOMATIC" ) + << tr( "GMSH_MESH_ADAPT" ) + << tr( "GMSH_DELAUNAY" ) + << tr( "GMSH_FRONTAL" ) + << tr( "GMSH_DELAUNAY_FOR_QUAD" ) +#if GMSH_MAJOR_VERSION >=4 && GMSH_MINOR_VERSION >=10 + << tr( "GMSH_PACKING_OF_PARALLELOGRAMS" ) + << tr( "GMSH_QUASI_STRUCTURED_QUAD" ); +#else + << tr( "GMSH_PACKING_OF_PARALLELOGRAMS" ); +#endif my2DAlgo->addItems( types2DAlgo ); aGroupLayout->addWidget( my2DAlgo, row, 1 ); row++; @@ -229,6 +244,14 @@ QFrame* GMSHPluginGUI_HypothesisCreator::buildFrame() aGroupLayout->addWidget( mySizeFactor, row, 1 ); row++; +#if GMSH_MAJOR_VERSION >=4 && GMSH_MINOR_VERSION >=10 + aGroupLayout->addWidget( new QLabel( tr( "GMSH_SIZE_FROM_CURVATURE" ), GroupC1 ), row, 0 ); + myMeshCurvatureSize = new SMESHGUI_SpinBox( GroupC1 ); + myMeshCurvatureSize->RangeStepAndValidator( 0.0, 1e+22, 1.0, "length_precision" ); + aGroupLayout->addWidget( myMeshCurvatureSize, row, 1 ); + row++; +#endif + aGroupLayout->addWidget( new QLabel( tr( "GMSH_MIN_SIZE" ), GroupC1 ), row, 0 ); myMinSize = new SMESHGUI_SpinBox( GroupC1 ); myMinSize->RangeStepAndValidator( 0.0, 1e+22, 1., "length_precision" ); @@ -380,6 +403,12 @@ void GMSHPluginGUI_HypothesisCreator::retrieveParams() const mySizeFactor->setValue( data.mySizeFactor ); else mySizeFactor->setText( data.mySizeFactorVar ); +#if GMSH_MAJOR_VERSION >=4 && GMSH_MINOR_VERSION >=10 + if(data.myMeshCurvatureSizeVar.isEmpty()) + myMeshCurvatureSize->setValue( data.myMeshCurvatureSize ); + else + myMeshCurvatureSize->setText( data.myMeshCurvatureSizeVar ); +#endif if(data.myMaxSizeVar.isEmpty()) myMaxSize->setValue( data.myMaxSize ); else @@ -419,6 +448,9 @@ QString GMSHPluginGUI_HypothesisCreator::storeParams() const QString valStr = tr("GMSH_MAX_SIZE") + " = " + QString::number( data.myMaxSize ) + "; "; valStr += tr("GMSH_MIN_SIZE") + " = " + QString::number( data.myMinSize ) + "; "; +#if GMSH_MAJOR_VERSION >=4 && GMSH_MINOR_VERSION >=10 + valStr += tr("GMSH_SIZE_FROM_CURVATURE") + " = " + QString::number( data.myMeshCurvatureSize ) + "; "; +#endif if ( data.mySecondOrder ) valStr += tr("GMSH_SECOND_ORDER") + "; "; @@ -443,6 +475,10 @@ bool GMSHPluginGUI_HypothesisCreator::readParamsFromHypo( GmshHypothesisData& h_ h_data.myRemeshPara = (int) h->GetRemeshPara(); h_data.mySmouthSteps = h->GetSmouthSteps(); h_data.mySizeFactor = h->GetSizeFactor(); +#if GMSH_MAJOR_VERSION >=4 && GMSH_MINOR_VERSION >=10 + h_data.myMeshCurvatureSize = h->GetMeshCurvatureSize(); + h_data.myMeshCurvatureSizeVar = getVariableName("SetMeshCurvatureSize"); +#endif h_data.myMinSize = h->GetMinSize(); h_data.myMaxSize = h->GetMaxSize(); h_data.mySmouthStepsVar = getVariableName("SmouthSteps"); @@ -484,10 +520,16 @@ bool GMSHPluginGUI_HypothesisCreator::storeParamsToHypo( const GmshHypothesisDat h->SetRemeshPara( h_data.myRemeshPara ); h->SetSmouthSteps( h_data.mySmouthSteps ); h->SetSizeFactor( h_data.mySizeFactor ); +#if GMSH_MAJOR_VERSION >=4 && GMSH_MINOR_VERSION >=10 + h->SetMeshCurvatureSize( h_data.myMeshCurvatureSize ); +#endif h->SetMinSize( h_data.myMinSize ); h->SetMaxSize( h_data.myMaxSize ); h->SetVarParameter( h_data.mySmouthStepsVar.toLatin1().constData(), "SmouthSteps"); h->SetVarParameter( h_data.mySizeFactorVar.toLatin1().constData(), "SizeFactor"); +#if GMSH_MAJOR_VERSION >=4 && GMSH_MINOR_VERSION >=10 + h->SetVarParameter( h_data.myMeshCurvatureSizeVar.toLatin1().constData(), "SetMeshCurvatureSize"); +#endif h->SetVarParameter( h_data.myMinSizeVar.toLatin1().constData(), "SetMinSize"); h->SetVarParameter( h_data.myMaxSizeVar.toLatin1().constData(), "SetMaxSize"); h->SetSecondOrder( h_data.mySecondOrder ); @@ -535,6 +577,10 @@ bool GMSHPluginGUI_HypothesisCreator::readParamsFromWidgets( GmshHypothesisData& h_data.myRemeshPara = myRemeshPara->currentIndex(); h_data.mySmouthSteps = mySmouthSteps->value(); h_data.mySizeFactor = mySizeFactor->value(); +#if GMSH_MAJOR_VERSION >=4 && GMSH_MINOR_VERSION >=10 + h_data.myMeshCurvatureSize = myMeshCurvatureSize->value(); + h_data.myMeshCurvatureSizeVar = myMeshCurvatureSize->text(); +#endif h_data.myMinSize = myMinSize->value(); h_data.myMaxSize = myMaxSize->value(); h_data.mySmouthStepsVar = mySmouthSteps->text(); diff --git a/src/GUI/GMSHPluginGUI_HypothesisCreator.h b/src/GUI/GMSHPluginGUI_HypothesisCreator.h index 6d8d7cb..2b022c9 100644 --- a/src/GUI/GMSHPluginGUI_HypothesisCreator.h +++ b/src/GUI/GMSHPluginGUI_HypothesisCreator.h @@ -45,8 +45,13 @@ typedef struct int mySubdivAlgo,myRemeshAlgo,myRemeshPara,mySmouthSteps; bool myUseIncomplElem; bool mySecondOrder; +#if GMSH_MAJOR_VERSION >=4 && GMSH_MINOR_VERSION >=10 + double mySizeFactor,myMaxSize, myMinSize, myMeshCurvatureSize; + QString myMaxSizeVar, myMinSizeVar, mySmouthStepsVar, mySizeFactorVar, myMeshCurvatureSizeVar; +#else double mySizeFactor,myMaxSize, myMinSize; QString myMaxSizeVar, myMinSizeVar, mySmouthStepsVar, mySizeFactorVar; +#endif mutable QString myErrorMsg; } GmshHypothesisData; @@ -95,6 +100,9 @@ private: QComboBox* myRemeshPara; SMESHGUI_SpinBox* mySmouthSteps; SMESHGUI_SpinBox* mySizeFactor; +#if GMSH_MAJOR_VERSION >=4 && GMSH_MINOR_VERSION >=10 + SMESHGUI_SpinBox* myMeshCurvatureSize; +#endif SMESHGUI_SpinBox* myMaxSize; SMESHGUI_SpinBox* myMinSize; QCheckBox* myUseIncomplElem; diff --git a/src/GUI/GMSHPlugin_msg_en.ts b/src/GUI/GMSHPlugin_msg_en.ts index d649a34..167f7ec 100644 --- a/src/GUI/GMSHPlugin_msg_en.ts +++ b/src/GUI/GMSHPlugin_msg_en.ts @@ -19,6 +19,10 @@ GMSH_3D_TITLE Hypothesis Construction + + GMSH_SIZE_FROM_CURVATURE + Elements per 2Pi radians + GMSH_MAX_SIZE Max. Size @@ -61,7 +65,7 @@ GMSH_MESH_ADAPT - Mesh adapt + MeshAdapt GMSH_DELAUNAY @@ -69,11 +73,15 @@ GMSH_FRONTAL - Frontal + Frontal-Delaunay GMSH_DELAUNAY_FOR_QUAD - Delaunay for quads + Frontal-Delaunay for Quads + + + GMSH_QUASI_STRUCTURED_QUAD + Quasi-Structured Quad GMSH_PACKING_OF_PARALLELOGRAMS diff --git a/src/GUI/GMSHPlugin_msg_fr.ts b/src/GUI/GMSHPlugin_msg_fr.ts index fc1376c..aba7088 100644 --- a/src/GUI/GMSHPlugin_msg_fr.ts +++ b/src/GUI/GMSHPlugin_msg_fr.ts @@ -19,6 +19,10 @@ GMSH_3D_TITLE Construction d'une hypothèse + + GMSH_SIZE_FROM_CURVATURE + Eléments par 2Pi radians + GMSH_MAX_SIZE Taille maximale @@ -79,6 +83,10 @@ GMSH_DELAUNAY_FOR_QUAD Delaunay pour quads + + GMSH_QUASI_STRUCTURED_QUAD + Quadrangles quasi-structuré + GMSH_PACKING_OF_PARALLELOGRAMS Remplissage de parallélogrammes