void SetSizeFactor(in double value);
double GetSizeFactor();
+
+ void SetMeshCurvatureSize(in double value);
+ double GetMeshCurvatureSize();
void SetMaxSize(in double value);
double GetMaxSize();
_remeshPara (harmonic),
_smouthSteps (1),
_sizeFactor (1),
+#if GMSH_MAJOR_VERSION >=4 && GMSH_MINOR_VERSION >=10
+ _meshCurvatureSize(0),
+#endif
_minSize (0),
_maxSize (1e22),
_secondOrder (false),
}
}
+#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)
" " << _remeshPara <<
" " << _smouthSteps <<
" " << _sizeFactor <<
+#if GMSH_MAJOR_VERSION >=4 && GMSH_MINOR_VERSION >=10
+ " " << _meshCurvatureSize <<
+#endif
" " << _maxSize <<
" " << _minSize <<
" " << (int)_secondOrder <<
else
load.clear(ios::badbit | load.rdstate());
+#if GMSH_MAJOR_VERSION >=4 && GMSH_MINOR_VERSION >=10
+ isOK = static_cast<bool>(load >> val);
+ if (isOK)
+ _meshCurvatureSize = val;
+ else
+ load.clear(ios::badbit | load.rdstate());
+#endif
+
isOK = static_cast<bool>(load >> val);
if (isOK)
_maxSize = val;
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; }
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;
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 ))
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
}
case 2: return "SetNbSegPerEdge";
case 3: return "SetNbSegPerRadius";
case 4: return "SetMinSize";
+ case 5: return "SetMeshCurvatureSize";
}
return "";
}
virtual ~GMSHPlugin_Hypothesis_i();
// Ajout d'un truc
+ void SetMeshCurvatureSize(CORBA::Double theMeshCurvatureSize);
+ CORBA::Double GetMeshCurvatureSize();
void SetMaxSize(CORBA::Double theSize);
CORBA::Double GetMaxSize();
// to remember whether a parameter is already set (issue 0021364)
enum SettingMethod
{
+ METH_SetMeshCurvatureSize = 5,
METH_SetMaxSize = 1,
METH_SetMinSize = 2,
METH_SetSecondOrder = 4,
_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();
_remeshPara = 0;
_smouthSteps = 1;
_sizeFactor = 1;
+#if GMSH_MAJOR_VERSION >=4 && GMSH_MINOR_VERSION >=10
+ _meshCurvatureSize = 0;
+#endif
_minSize = 0;
_maxSize = 1e22;
_secondOrder = false;
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();
}
//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);
#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<std::string> _compounds;
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" );
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
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") + "; ";
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");
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 );
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();
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;
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;
<source>GMSH_3D_TITLE</source>
<translation>Hypothesis Construction</translation>
</message>
+ <message>
+ <source>GMSH_SIZE_FROM_CURVATURE</source>
+ <translation>Elements per 2Pi radians</translation>
+ </message>
<message>
<source>GMSH_MAX_SIZE</source>
<translation>Max. Size</translation>
<source>GMSH_3D_TITLE</source>
<translation>Construction d'une hypothèse</translation>
</message>
+ <message>
+ <source>GMSH_SIZE_FROM_CURVATURE</source>
+ <translation>Eléments par 2Pi radians</translation>
+ </message>
<message>
<source>GMSH_MAX_SIZE</source>
<translation>Taille maximale</translation>