Fem: Add preference entry to set Netgen number of threads

This commit is contained in:
marioalexis
2024-12-19 14:34:59 -03:00
parent 401f01a9a3
commit d9c117a151
4 changed files with 40 additions and 14 deletions

View File

@@ -79,6 +79,32 @@
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="lbl_threads">
<property name="text">
<string>Number of threads</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="Gui::PrefSpinBox" name="sb_threads">
<property name="alignment">
<set>Qt::AlignLeft|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="toolTip">
<string>Number of threads used for meshing</string>
</property>
<property name="minimum">
<number>1</number>
</property>
<property name="prefEntry" stdset="0">
<cstring>NumOfThreads</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Fem/Netgen</cstring>
</property>
</widget>
</item>
</layout>
</item>
</layout>
@@ -99,6 +125,11 @@
<extends>QCheckBox</extends>
<header>Gui/PrefWidgets.h</header>
</customwidget>
<customwidget>
<class>Gui::PrefSpinBox</class>
<extends>QSpinBox</extends>
<header>Gui/PrefWidgets.h</header>
</customwidget>
</customwidgets>
<resources/>
<connections/>

View File

@@ -29,7 +29,7 @@ import numpy as np
import shutil
import sys
import tempfile
from PySide.QtCore import QProcess
from PySide.QtCore import QProcess, QThread
import FreeCAD
import Fem
@@ -84,6 +84,7 @@ class NetgenTools:
self.tmpdir = ""
self.process = QProcess()
self.mesh_params = {}
self.param_grp = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Fem/Netgen")
def write_geom(self):
if not self.tmpdir:
@@ -101,17 +102,16 @@ class NetgenTools:
def prepare(self):
self.write_geom()
grp = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Fem/Netgen")
self.mesh_params = {
"brep_file": self.brep_file,
"threads": self.obj.Threads,
"threads": self.param_grp.GetInt("NumOfThreads", QThread.idealThreadCount()),
"heal": self.obj.HealShape,
"params": self.get_meshing_parameters(),
"second_order": self.obj.SecondOrder,
"second_order_linear": self.obj.SecondOrderLinear,
"result_file": self.result_file,
"mesh_region": self.get_mesh_region(),
"verbosity": grp.GetInt("LogVerbosity", 2),
"verbosity": self.param_grp.GetInt("LogVerbosity", 2),
}
with open(self.script_file, "w") as file:
@@ -319,7 +319,7 @@ run_netgen(**{kwds})
"inverttrigs": self.obj.InvertTrigs,
"autozrefine": self.obj.AutoZRefine,
"parallel_meshing": self.obj.ParallelMeshing,
"nthreads": self.obj.Threads,
"nthreads": self.param_grp.GetInt("NumOfThreads", QThread.idealThreadCount()),
"closeedgefac": self.obj.CloseEdgeFactor,
}

View File

@@ -485,15 +485,6 @@ class MeshNetgen(base_fempythonobject.BaseFemPythonObject):
value=True,
)
)
prop.append(
_PropHelper(
type="App::PropertyInteger",
name="Threads",
group="Mesh Parameters",
doc="Number of threads for parallel meshing",
value=4,
)
)
prop.append(
_PropHelper(
type="App::PropertyBool",

View File

@@ -25,6 +25,8 @@ __title__ = "Netgen preference page class"
__author__ = "Mario Passaglia"
__url__ = "https://www.freecad.org"
from PySide.QtCore import QThread
import FreeCAD
import FreeCADGui
@@ -37,11 +39,13 @@ class DlgSettingsNetgen:
def loadSettings(self):
self.form.ckb_legacy.setChecked(self.grp.GetBool("UseLegacyNetgen", True))
self.form.sb_threads.setValue(self.grp.GetInt("NumOfThreads", QThread.idealThreadCount()))
self.populate_log_verbosity()
def saveSettings(self):
self.grp.SetBool("UseLegacyNetgen", self.form.ckb_legacy.isChecked())
self.grp.SetInt("LogVerbosity", self.form.cb_log_verbosity.currentData())
self.grp.SetInt("NumOfThreads", self.form.sb_threads.value())
def populate_log_verbosity(self):
values = {