From: eap Date: Fri, 6 Dec 2013 10:45:56 +0000 (+0000) Subject: 22357: EDF NETGENPLUGIN: NETGEN options X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=7e2367deb5d2cc64f3d2b5eac4e2aeb80558620b;p=plugins%2Fnetgenplugin.git 22357: EDF NETGENPLUGIN: NETGEN options --- diff --git a/doc/salome/gui/NETGENPLUGIN/images/netgen2d3d.png b/doc/salome/gui/NETGENPLUGIN/images/netgen2d3d.png index 97b9548..dbf9795 100644 Binary files a/doc/salome/gui/NETGENPLUGIN/images/netgen2d3d.png and b/doc/salome/gui/NETGENPLUGIN/images/netgen2d3d.png differ diff --git a/doc/salome/gui/NETGENPLUGIN/images/netgen2d3d_only.png b/doc/salome/gui/NETGENPLUGIN/images/netgen2d3d_only.png index ece6fd1..4b57432 100644 Binary files a/doc/salome/gui/NETGENPLUGIN/images/netgen2d3d_only.png and b/doc/salome/gui/NETGENPLUGIN/images/netgen2d3d_only.png differ diff --git a/doc/salome/gui/NETGENPLUGIN/input/netgen_2d_3d_hypo.doc b/doc/salome/gui/NETGENPLUGIN/input/netgen_2d_3d_hypo.doc index c983ce8..d80dff0 100644 --- a/doc/salome/gui/NETGENPLUGIN/input/netgen_2d_3d_hypo.doc +++ b/doc/salome/gui/NETGENPLUGIN/input/netgen_2d_3d_hypo.doc @@ -10,8 +10,8 @@ hypotheses and algorithms (2D and 1D for meshing 3D objects and 1D for meshing 2D objects). \image html netgen2d3d.png -
Dialog boxes of Netgen 1D-2D and Netgen -1D-2D-3D algorithms
+
Hypothesis dialog boxes of Netgen 1D-2D and Netgen +1D-2D-3D algorithms are same

\image html netgen2d3d_only.png @@ -24,26 +24,35 @@ algorithms - Min Size - minimum linear dimensions for mesh cells. It is ignored if it is more than Max Size. - Second Order - if this box is checked in, the algorithm will -create second order nodes on the mesh, which will then become quadratic. -- Fineness - ranging from Very Coarse to Very Fine allows to set the -level of meshing detalization using the three parameters below. You -can select Custom to define them manually. +create second order mesh. +- Fineness - ranging from Very Coarse to Very Fine +allows to set the level of meshing detalization using the three +parameters below. You can select \a Custom to define them manually. - Growth rate - allows to define how much the linear dimensions of two adjacent cells can differ (i.e. 0.3 means 30%). -- Nb. Segs per Edge and Nb Segs per Radius - allows to define the -minimum number of mesh segments in which edges and radiuses will be -split. -- Allow Quadrangles - allows to use quadrangle elements in a -triangle 2D mesh. This checkbox is not present in Netgen 3D parameters -because currently building a tetrahedral mesh with quadrangle faces is -not possible. -- Set size by Surface Curvature - if this box is checked in, then -prevents creation of meshes of desired coarseness else mesher defines -density of 1D and 2D mesh depending on curvature of faces and edges. -- Fuse consignment Edges and Vertices - prevents to merging of -nodes of edges which are coincident geometrically but are different topologically. -- Optimize - if this box is checked in, the algorithm will try to -create regular (possessing even sides) elements. +- Nb. Segs per Edge - allows to define the minimum number of +mesh segments in which edges will be split. This parameter is used +only if Limit Size by Surface Curvature is checked. +- Nb Segs per Radius - allows to define the size of +mesh segments and mesh faces in which curved edges and surfaces will +be split. This parameter is used only if Limit Size by Surface +Curvature is checked. +- Limit Size by Surface Curvature - if this box is checked in, +then size of mesh segments and mesh faces on curved edges and surfaces +is defined using value of Nb Segs per Radius parameter, and +number of segments on straight edges is defined by values of +Nb. Segs per Edge parameter. If this box is not checked in, +then size of elements is defined by three parameters only: +Max Size, Min Size and Growth rate. +- Allow Quadrangles - if this box is checked in, the mesher +tries to generate quadrangle 2D mesh. Triangle elements are created +where quadrangles are not possible. +- Optimize - if this box is checked in, the algorithm will modify +initially created mesh in order to improve quality of elements. Optimization +process is rather time consuming comparing to creation of initial mesh. +- Fuse Coincident Nodes on Edges and Vertices - allows merging +mesh nodes on vertices and edges which are geometrically coincident +but are topologically different. \image html netgen3d_local_size.png @@ -71,14 +80,12 @@ consists of setting required \b length of segments. \b 2D group allows defining the size of 2D elements - Length from edges if checked in, hypothesis forces building of -2D mesh segments having a length calculated as an average edge length +2D mesh elements having a length calculated as an average edge length for a given wire, else - Max. Element Area specifies expected maximum element area for each 2d element. -- Allow Quadrangles - allows to use quadrangle elements in a -triangle 2D mesh. This checkbox is not present in Netgen 3D simple parameters -because currently building a tetrahedral mesh with quadrangle faces is -not possible. +- Allow Quadrangles - allows to generate quadrangle elements +wherever possible. \b 3D groups allows defining the size of 3D elements. - Length from faces if checked in, the area of sides of @@ -94,13 +101,9 @@ edge. This parameter is used only to define the local element size (size at the given point), so local sizes of adjacent edges influence each other. - NETGEN additionally restricts the element size according to edge curvature. -- The local size of edges influences the size of close triangles. +- The local size of segments influences the size of close triangles. - The order of elements and their size in the 1D mesh generated by NETGEN differ from those in the 1D mesh generated by Regular_1D algorithm, resulting in different 2D and 3D meshes. -\note In the case where two points are geometrically confounded, a single node is generated. - */ - - diff --git a/idl/NETGENPlugin_Algorithm.idl b/idl/NETGENPlugin_Algorithm.idl index 0885885..19ca826 100644 --- a/idl/NETGENPlugin_Algorithm.idl +++ b/idl/NETGENPlugin_Algorithm.idl @@ -98,8 +98,8 @@ module NETGENPlugin void SetQuadAllowed(in boolean value); boolean GetQuadAllowed(); - void SetSurfaceCurvature(in boolean value); - boolean GetSurfaceCurvature(); + void SetUseSurfaceCurvature(in boolean value); + boolean GetUseSurfaceCurvature(); void SetFuseEdges(in boolean value); boolean GetFuseEdges(); diff --git a/src/GUI/NETGENPluginGUI_HypothesisCreator.cxx b/src/GUI/NETGENPluginGUI_HypothesisCreator.cxx index e8de863..c8415e2 100644 --- a/src/GUI/NETGENPluginGUI_HypothesisCreator.cxx +++ b/src/GUI/NETGENPluginGUI_HypothesisCreator.cxx @@ -89,7 +89,7 @@ NETGENPluginGUI_HypothesisCreator::NETGENPluginGUI_HypothesisCreator( const QStr { myGeomSelectionTools = NULL; myLocalSizeMap.clear(); - myIs2D = ( theHypType.startsWith("NETGEN_Parameters_2D")); + myIs2D = ( theHypType.startsWith("NETGEN_Parameters_2D")); myIsONLY = ( theHypType == "NETGEN_Parameters_2D_ONLY" || theHypType == "NETGEN_Parameters_3D"); } @@ -166,7 +166,7 @@ QFrame* NETGENPluginGUI_HypothesisCreator::buildFrame() if ( !myIsONLY ) { mySecondOrder = new QCheckBox( tr( "NETGEN_SECOND_ORDER" ), GroupC1 ); - aGroupLayout->addWidget( mySecondOrder, row, 0 ); + aGroupLayout->addWidget( mySecondOrder, row, 0, 1, 2 ); row++; } @@ -177,6 +177,7 @@ QFrame* NETGENPluginGUI_HypothesisCreator::buildFrame() tr( "NETGEN_FINE" ) << tr( "NETGEN_VERYFINE" ) << tr( "NETGEN_CUSTOM" ); myFineness->addItems( types ); aGroupLayout->addWidget( myFineness, row, 1 ); + connect( myFineness, SIGNAL( activated( int ) ), this, SLOT( onFinenessChanged() ) ); row++; aGroupLayout->addWidget( new QLabel( tr( "NETGEN_GROWTH_RATE" ), GroupC1 ), row, 0 ); @@ -204,33 +205,34 @@ QFrame* NETGENPluginGUI_HypothesisCreator::buildFrame() row++; } - myAllowQuadrangles = 0; mySurfaceCurvature = 0; - myFuseEdges = 0; - if ( myIs2D || !myIsONLY ) // issue 0021676 + if ( myIs2D || !myIsONLY ) { - myAllowQuadrangles = new QCheckBox( tr( "NETGEN_ALLOW_QUADRANGLES" ), GroupC1 ); - aGroupLayout->addWidget( myAllowQuadrangles, row, 0 ); - row++; - mySurfaceCurvature = new QCheckBox( tr( "NETGEN_SURFACE_CURVATURE" ), GroupC1 ); - aGroupLayout->addWidget( mySurfaceCurvature, row, 0 ); + aGroupLayout->addWidget( mySurfaceCurvature, row, 0, 1, 2 ); + connect( mySurfaceCurvature, SIGNAL( stateChanged( int ) ), this, SLOT( onSurfaceCurvatureChanged() ) ); row++; } - if (!myIsONLY) + + myAllowQuadrangles = 0; + if ( myIs2D || !myIsONLY ) // disable only for NETGEN 3D { - myFuseEdges = new QCheckBox( tr( "NETGEN_FUSE_EDGES" ), GroupC1 ); - aGroupLayout->addWidget( myFuseEdges, row, 0 ); + myAllowQuadrangles = new QCheckBox( tr( "NETGEN_ALLOW_QUADRANGLES" ), GroupC1 ); + aGroupLayout->addWidget( myAllowQuadrangles, row, 0, 1, 2 ); row++; } - connect( mySurfaceCurvature, SIGNAL( stateChanged( int ) ), this, SLOT( onSurfaceCurvatureChanged() ) ); - myOptimize = new QCheckBox( tr( "NETGEN_OPTIMIZE" ), GroupC1 ); - aGroupLayout->addWidget( myOptimize, row, 0 ); + aGroupLayout->addWidget( myOptimize, row, 0, 1, 2 ); row++; - connect( myFineness, SIGNAL( activated( int ) ), this, SLOT( onFinenessChanged() ) ); + myFuseEdges = 0; + if (!myIsONLY) + { + myFuseEdges = new QCheckBox( tr( "NETGEN_FUSE_EDGES" ), GroupC1 ); + aGroupLayout->addWidget( myFuseEdges, row, 0, 1, 2 ); + row++; + } myLocalSizeTable = 0; if ( !myIsONLY ) @@ -411,7 +413,7 @@ bool NETGENPluginGUI_HypothesisCreator::readParamsFromHypo( NetgenHypothesisData h_data.myNbSegPerRadiusVar = getVariableName("SetNbSegPerRadius"); h_data.myMinSize = h->GetMinSize(); h_data.myMinSizeVar = getVariableName("SetMinSize"); - h_data.mySurfaceCurvature = h->GetSurfaceCurvature(); + h_data.mySurfaceCurvature = h->GetUseSurfaceCurvature(); h_data.myFuseEdges = h->GetFuseEdges(); //if ( myIs2D ) @@ -456,33 +458,34 @@ bool NETGENPluginGUI_HypothesisCreator::storeParamsToHypo( const NetgenHypothesi if( isCreation() ) SMESH::SetName( SMESH::FindSObject( h ), h_data.myName.toLatin1().data() ); h->SetVarParameter( h_data.myMaxSizeVar.toLatin1().constData(), "SetMaxSize"); - h->SetMaxSize( h_data.myMaxSize ); - h->SetSecondOrder( h_data.mySecondOrder ); - h->SetOptimize( h_data.myOptimize ); + h->SetMaxSize ( h_data.myMaxSize ); + h->SetSecondOrder ( h_data.mySecondOrder ); + h->SetOptimize ( h_data.myOptimize ); int fineness = h_data.myFineness; - h->SetFineness( fineness ); + h->SetFineness ( fineness ); if( fineness==UserDefined ) { - h->SetVarParameter( h_data.myGrowthRateVar.toLatin1().constData(), "SetGrowthRate"); - h->SetGrowthRate( h_data.myGrowthRate ); - h->SetVarParameter( h_data.myNbSegPerEdgeVar.toLatin1().constData(), "SetNbSegPerEdge"); - h->SetNbSegPerEdge( h_data.myNbSegPerEdge ); - h->SetVarParameter( h_data.myNbSegPerRadiusVar.toLatin1().constData(), "SetNbSegPerRadius"); + h->SetVarParameter ( h_data.myGrowthRateVar.toLatin1().constData(), "SetGrowthRate"); + h->SetGrowthRate ( h_data.myGrowthRate ); + h->SetVarParameter ( h_data.myNbSegPerEdgeVar.toLatin1().constData(), "SetNbSegPerEdge"); + h->SetNbSegPerEdge ( h_data.myNbSegPerEdge ); + h->SetVarParameter ( h_data.myNbSegPerRadiusVar.toLatin1().constData(), "SetNbSegPerRadius"); h->SetNbSegPerRadius( h_data.myNbSegPerRadius ); } - h->SetVarParameter( h_data.myMinSizeVar.toLatin1().constData(), "SetMinSize"); - h->SetMinSize( h_data.myMinSize ); - h->SetSurfaceCurvature( h_data.mySurfaceCurvature ); - h->SetFuseEdges( h_data.myFuseEdges ); + h->SetVarParameter ( h_data.myMinSizeVar.toLatin1().constData(), "SetMinSize"); + h->SetMinSize ( h_data.myMinSize ); + h->SetUseSurfaceCurvature( h_data.mySurfaceCurvature ); + h->SetFuseEdges ( h_data.myFuseEdges ); - if ( myIs2D ) + //if ( myIs2D ) { - NETGENPlugin::NETGENPlugin_Hypothesis_2D_var h_2d = - NETGENPlugin::NETGENPlugin_Hypothesis_2D::_narrow( h ); + // NETGENPlugin::NETGENPlugin_Hypothesis_2D_var h_2d = + // NETGENPlugin::NETGENPlugin_Hypothesis_2D::_narrow( h ); - if ( !h_2d->_is_nil() ) - h_2d->SetQuadAllowed( h_data.myAllowQuadrangles ); + // if ( !h_2d->_is_nil() ) + // h_2d->SetQuadAllowed( h_data.myAllowQuadrangles ); + h->SetQuadAllowed( h_data.myAllowQuadrangles ); } QMapIterator i(myLocalSizeMap); @@ -561,10 +564,9 @@ bool NETGENPluginGUI_HypothesisCreator::readParamsFromWidgets( NetgenHypothesisD void NETGENPluginGUI_HypothesisCreator::onSurfaceCurvatureChanged() { - bool isSurfaceCurvature = (mySurfaceCurvature ? mySurfaceCurvature->checkState() == Qt::Checked : true); - bool isCustom = (myFineness->currentIndex() == UserDefined); - myFineness->setEnabled(isSurfaceCurvature); - myGrowthRate->setEnabled(isCustom && isSurfaceCurvature); + bool isSurfaceCurvature = (mySurfaceCurvature ? mySurfaceCurvature->isChecked() : true); + bool isCustom = (myFineness->currentIndex() == UserDefined); + myGrowthRate->setEnabled(isCustom); if ( myNbSegPerEdge ) myNbSegPerEdge->setEnabled(isCustom && isSurfaceCurvature); if ( myNbSegPerRadius ) diff --git a/src/GUI/NETGENPlugin_msg_en.ts b/src/GUI/NETGENPlugin_msg_en.ts index 32e72db..0f0d221 100644 --- a/src/GUI/NETGENPlugin_msg_en.ts +++ b/src/GUI/NETGENPlugin_msg_en.ts @@ -57,7 +57,7 @@ NETGEN_FUSE_EDGES - Fuse consignment Edges and Vertices + Fuse Coincident Nodes on Edges and Vertices NETGEN_GROWTH_RATE @@ -93,7 +93,7 @@ NETGEN_SURFACE_CURVATURE - Set size by Surface Curvature + Limit Size by Surface Curvature NETGEN_VERYCOARSE diff --git a/src/GUI/NETGENPlugin_msg_fr.ts b/src/GUI/NETGENPlugin_msg_fr.ts index 3beb2a9..e9043f8 100755 --- a/src/GUI/NETGENPlugin_msg_fr.ts +++ b/src/GUI/NETGENPlugin_msg_fr.ts @@ -57,7 +57,7 @@ NETGEN_FUSE_EDGES - Fuse consignment Edges and Vertices + Fuse Coincident Nodes on Edges and Vertices NETGEN_GROWTH_RATE @@ -93,7 +93,7 @@ NETGEN_SURFACE_CURVATURE - Set size by Surface Curvature + Limit Size by Surface Curvature NETGEN_VERYCOARSE diff --git a/src/GUI/NETGENPlugin_msg_ja.ts b/src/GUI/NETGENPlugin_msg_ja.ts index 8f5276d..ed5083e 100644 --- a/src/GUI/NETGENPlugin_msg_ja.ts +++ b/src/GUI/NETGENPlugin_msg_ja.ts @@ -55,6 +55,10 @@ NETGEN_FINENESS 細かさ + + NETGEN_FUSE_EDGES + Fuse Coincident Nodes on Edges and Vertices + NETGEN_GROWTH_RATE 増加率 @@ -87,6 +91,10 @@ NETGEN_SEG_PER_RADIUS 半径毎の分割数 + + NETGEN_SURFACE_CURVATURE + Limit Size by Surface Curvature + NETGEN_VERYCOARSE 非常に粗く diff --git a/src/NETGENPlugin/NETGENPluginBuilder.py b/src/NETGENPlugin/NETGENPluginBuilder.py index f6a6f23..87c4fd4 100644 --- a/src/NETGENPlugin/NETGENPluginBuilder.py +++ b/src/NETGENPlugin/NETGENPluginBuilder.py @@ -218,15 +218,15 @@ class NETGEN_1D2D3D_Algorithm(NETGEN_Algorithm): def SetQuadAllowed(self, toAllow=True): if self.Parameters(): self.params.SetQuadAllowed(toAllow) pass - ## Sets @c SurfaceCurvature flag - # @param toAllow new value of the @c SurfaceCurvature parameter (@c True by default) - def SetSurfaceCurvature(self, toAllow=True): - if self.Parameters(): self.params.SetSurfaceCurvature(toAllow) + ## Sets @c UseSurfaceCurvature flag + # @param toUse new value of the @c UseSurfaceCurvature parameter (@c True by default) + def SetUseSurfaceCurvature(self, toUse=True): + if self.Parameters(): self.params.SetUseSurfaceCurvature(toUse) pass ## Sets @c FuseEdges flag - # @param toAllow new value of the @c FuseEdges parameter (@c False by default) - def SetFuseEdges(self, toAllow=False): - if self.Parameters(): self.params.SetFuseEdges(toAllow) + # @param toFuse new value of the @c FuseEdges parameter (@c False by default) + def SetFuseEdges(self, toFuse=False): + if self.Parameters(): self.params.SetFuseEdges(toFuse) pass ## Sets number of segments overriding the value set by SetLocalLength() diff --git a/src/NETGENPlugin/NETGENPlugin_Hypothesis_i.cxx b/src/NETGENPlugin/NETGENPlugin_Hypothesis_i.cxx index 60edf28..dce341f 100644 --- a/src/NETGENPlugin/NETGENPlugin_Hypothesis_i.cxx +++ b/src/NETGENPlugin/NETGENPlugin_Hypothesis_i.cxx @@ -384,9 +384,9 @@ CORBA::Boolean NETGENPlugin_Hypothesis_i::GetQuadAllowed() //============================================================================= -void NETGENPlugin_Hypothesis_i::SetSurfaceCurvature (CORBA::Boolean theValue) +void NETGENPlugin_Hypothesis_i::SetUseSurfaceCurvature (CORBA::Boolean theValue) { - if ( NETGENPlugin_Hypothesis_i::isToSetParameter( GetSurfaceCurvature(), + if ( NETGENPlugin_Hypothesis_i::isToSetParameter( GetUseSurfaceCurvature(), theValue, METH_SetSurfaceCurvature )) { @@ -397,7 +397,7 @@ void NETGENPlugin_Hypothesis_i::SetSurfaceCurvature (CORBA::Boolean theValue) //============================================================================= -CORBA::Boolean NETGENPlugin_Hypothesis_i::GetSurfaceCurvature() +CORBA::Boolean NETGENPlugin_Hypothesis_i::GetUseSurfaceCurvature() { return this->GetImpl()->GetSurfaceCurvature(); } diff --git a/src/NETGENPlugin/NETGENPlugin_Hypothesis_i.hxx b/src/NETGENPlugin/NETGENPlugin_Hypothesis_i.hxx index 5ac1068..2a3c8f3 100644 --- a/src/NETGENPlugin/NETGENPlugin_Hypothesis_i.hxx +++ b/src/NETGENPlugin/NETGENPlugin_Hypothesis_i.hxx @@ -88,8 +88,8 @@ class NETGENPLUGIN_EXPORT NETGENPlugin_Hypothesis_i: void SetQuadAllowed(CORBA::Boolean theVal); CORBA::Boolean GetQuadAllowed(); - void SetSurfaceCurvature(CORBA::Boolean theVal); - CORBA::Boolean GetSurfaceCurvature(); + void SetUseSurfaceCurvature(CORBA::Boolean theVal); + CORBA::Boolean GetUseSurfaceCurvature(); void SetFuseEdges(CORBA::Boolean theVal); CORBA::Boolean GetFuseEdges(); diff --git a/src/NETGENPlugin/NETGENPlugin_Mesher.cxx b/src/NETGENPlugin/NETGENPlugin_Mesher.cxx index 9b51fe4..36f1324 100644 --- a/src/NETGENPlugin/NETGENPlugin_Mesher.cxx +++ b/src/NETGENPlugin/NETGENPlugin_Mesher.cxx @@ -185,24 +185,24 @@ void NETGENPlugin_Mesher::SetDefaultParameters() { netgen::MeshingParameters& mparams = netgen::mparam; // maximal mesh edge size - mparams.maxh = 0;//NETGENPlugin_Hypothesis::GetDefaultMaxSize(); - mparams.minh = 0; + mparams.maxh = 0;//NETGENPlugin_Hypothesis::GetDefaultMaxSize(); + mparams.minh = 0; // minimal number of segments per edge mparams.segmentsperedge = NETGENPlugin_Hypothesis::GetDefaultNbSegPerEdge(); // rate of growth of size between elements - mparams.grading = NETGENPlugin_Hypothesis::GetDefaultGrowthRate(); + mparams.grading = NETGENPlugin_Hypothesis::GetDefaultGrowthRate(); // safety factor for curvatures (elements per radius) mparams.curvaturesafety = NETGENPlugin_Hypothesis::GetDefaultNbSegPerRadius(); // create elements of second order - mparams.secondorder = NETGENPlugin_Hypothesis::GetDefaultSecondOrder() ? 1 : 0; + mparams.secondorder = NETGENPlugin_Hypothesis::GetDefaultSecondOrder(); // quad-dominated surface meshing if (_isVolume) - mparams.quad = 0; + mparams.quad = 0; else - mparams.quad = NETGENPlugin_Hypothesis_2D::GetDefaultQuadAllowed() ? 1 : 0; - _fineness = NETGENPlugin_Hypothesis::GetDefaultFineness(); - mparams.uselocalh = NETGENPlugin_Hypothesis::GetDefaultSurfaceCurvature(); - netgen::merge_solids = NETGENPlugin_Hypothesis::GetDefaultFuseEdges(); + mparams.quad = NETGENPlugin_Hypothesis_2D::GetDefaultQuadAllowed(); + _fineness = NETGENPlugin_Hypothesis::GetDefaultFineness(); + mparams.uselocalh = NETGENPlugin_Hypothesis::GetDefaultSurfaceCurvature(); + netgen::merge_solids = NETGENPlugin_Hypothesis::GetDefaultFuseEdges(); } //============================================================================= @@ -245,25 +245,25 @@ void NETGENPlugin_Mesher::SetParameters(const NETGENPlugin_Hypothesis* hyp) netgen::MeshingParameters& mparams = netgen::mparam; // Initialize global NETGEN parameters: // maximal mesh segment size - mparams.maxh = hyp->GetMaxSize(); + mparams.maxh = hyp->GetMaxSize(); // maximal mesh element linear size - mparams.minh = hyp->GetMinSize(); + mparams.minh = hyp->GetMinSize(); // minimal number of segments per edge mparams.segmentsperedge = hyp->GetNbSegPerEdge(); // rate of growth of size between elements - mparams.grading = hyp->GetGrowthRate(); + mparams.grading = hyp->GetGrowthRate(); // safety factor for curvatures (elements per radius) mparams.curvaturesafety = hyp->GetNbSegPerRadius(); // create elements of second order - mparams.secondorder = hyp->GetSecondOrder() ? 1 : 0; + mparams.secondorder = hyp->GetSecondOrder() ? 1 : 0; // quad-dominated surface meshing // only triangles are allowed for volumic mesh (before realizing IMP 0021676) //if (!_isVolume) - mparams.quad = hyp->GetQuadAllowed() ? 1 : 0; - _optimize = hyp->GetOptimize(); - _fineness = hyp->GetFineness(); - mparams.uselocalh = hyp->GetSurfaceCurvature(); - netgen::merge_solids = hyp->GetFuseEdges(); + mparams.quad = hyp->GetQuadAllowed() ? 1 : 0; + _optimize = hyp->GetOptimize(); + _fineness = hyp->GetFineness(); + mparams.uselocalh = hyp->GetSurfaceCurvature(); + netgen::merge_solids = hyp->GetFuseEdges(); _simpleHyp = NULL; SMESH_Gen_i* smeshGen_i = SMESH_Gen_i::GetSMESHGen(); diff --git a/src/NETGENPlugin/NETGENPlugin_NETGEN_2D_ONLY.cxx b/src/NETGENPlugin/NETGENPlugin_NETGEN_2D_ONLY.cxx index 81a2280..3899ef9 100644 --- a/src/NETGENPlugin/NETGENPlugin_NETGEN_2D_ONLY.cxx +++ b/src/NETGENPlugin/NETGENPlugin_NETGEN_2D_ONLY.cxx @@ -266,7 +266,8 @@ bool NETGENPlugin_NETGEN_2D_ONLY::Compute(SMESH_Mesh& aMesh, // MESHCONST_ANALYSE step may lead to a failure, so we make an attempt // w/o MESHCONST_ANALYSE at the second loop int err = 1; - for ( int iLoop = 0; iLoop < 2; iLoop++ ) + int iLoop = netgen::mparam.uselocalh ? 0 : 1; // uselocalh depends on + for ( ; iLoop < 2; iLoop++ ) { bool isMESHCONST_ANALYSE = false; InitComputeError();