FEM: Add NetGen Min Size (#12794)

This commit is contained in:
FEA-eng
2024-04-19 06:05:57 +02:00
committed by GitHub
parent f9c423e979
commit 1d1547e849
5 changed files with 33 additions and 0 deletions

View File

@@ -53,6 +53,7 @@ const char* FinenessEnums[] =
FemMeshShapeNetgenObject::FemMeshShapeNetgenObject()
{
ADD_PROPERTY_TYPE(MaxSize, (1000), "MeshParams", Prop_None, "Maximum element size");
ADD_PROPERTY_TYPE(MinSize, (0), "MeshParams", Prop_None, "Minimum element size");
ADD_PROPERTY_TYPE(SecondOrder, (true), "MeshParams", Prop_None, "Create quadric elements");
ADD_PROPERTY_TYPE(Fineness, (2), "MeshParams", Prop_None, "Fineness level of the mesh");
Fineness.setEnums(FinenessEnums);
@@ -95,6 +96,7 @@ App::DocumentObjectExecReturn* FemMeshShapeNetgenObject::execute()
NETGENPlugin_Hypothesis* tet = new NETGENPlugin_Hypothesis(0, 1, newMesh.getGenerator());
#endif
tet->SetMaxSize(MaxSize.getValue());
tet->SetMinSize(MinSize.getValue());
tet->SetSecondOrder(SecondOrder.getValue());
tet->SetOptimize(Optimize.getValue());
int iFineness = Fineness.getValue();

View File

@@ -39,6 +39,7 @@ public:
~FemMeshShapeNetgenObject() override;
App::PropertyFloat MaxSize;
App::PropertyFloat MinSize;
App::PropertyBool SecondOrder;
App::PropertyEnumeration Fineness;
App::PropertyFloat GrowthRate;

View File

@@ -49,6 +49,7 @@ TaskTetParameter::TaskTetParameter(Fem::FemMeshShapeNetgenObject* pcObject, QWid
this->groupLayout()->addWidget(proxy);
ui->doubleSpinBox_MaxSize->setValue(pcObject->MaxSize.getValue());
ui->doubleSpinBox_MinSize->setValue(pcObject->MinSize.getValue());
ui->comboBox_Fineness->setCurrentIndex(pcObject->Fineness.getValue());
ui->checkBox_SecondOrder->setChecked(pcObject->SecondOrder.getValue());
ui->doubleSpinBox_GrowthRate->setValue(pcObject->GrowthRate.getValue());
@@ -60,6 +61,10 @@ TaskTetParameter::TaskTetParameter(Fem::FemMeshShapeNetgenObject* pcObject, QWid
qOverload<double>(&QDoubleSpinBox::valueChanged),
this,
&TaskTetParameter::maxSizeValueChanged);
QObject::connect(ui->doubleSpinBox_MinSize,
qOverload<double>(&QDoubleSpinBox::valueChanged),
this,
&TaskTetParameter::minSizeValueChanged);
QObject::connect(ui->comboBox_Fineness,
qOverload<int>(&QComboBox::activated),
this,
@@ -120,6 +125,12 @@ void TaskTetParameter::maxSizeValueChanged(double Value)
touched = true;
}
void TaskTetParameter::minSizeValueChanged(double Value)
{
pcObject->MinSize.setValue(Value);
touched = true;
}
void TaskTetParameter::setQuadric(int s)
{
pcObject->SecondOrder.setValue(s != 0);

View File

@@ -69,6 +69,7 @@ public:
private Q_SLOTS:
void SwitchMethod(int Value);
void maxSizeValueChanged(double Value);
void minSizeValueChanged(double Value);
void setQuadric(int s);
void setGrowthRate(double v);
void setSegsPerEdge(int v);

View File

@@ -38,6 +38,24 @@
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Min. Size:</string>
</property>
</widget>
</item>
<item>
<widget class="QDoubleSpinBox" name="doubleSpinBox_MinSize">
<property name="maximum">
<double>9999999.990000000223517</double>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QCheckBox" name="checkBox_SecondOrder">
<property name="text">