diff --git a/src/Mod/Fem/Gui/DlgSettingsFemCcx.ui b/src/Mod/Fem/Gui/DlgSettingsFemCcx.ui
index 66084fab86..9289ba959a 100644
--- a/src/Mod/Fem/Gui/DlgSettingsFemCcx.ui
+++ b/src/Mod/Fem/Gui/DlgSettingsFemCcx.ui
@@ -300,11 +300,11 @@
Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-
- 1
+
+ Set to zero to automatically use maximum number of available cores
-
- 40
+
+ 0
AnalysisNumCPUs
diff --git a/src/Mod/Fem/femtaskpanels/task_solver_ccxtools.py b/src/Mod/Fem/femtaskpanels/task_solver_ccxtools.py
index 114289aad1..55162bdb05 100644
--- a/src/Mod/Fem/femtaskpanels/task_solver_ccxtools.py
+++ b/src/Mod/Fem/femtaskpanels/task_solver_ccxtools.py
@@ -381,13 +381,11 @@ class _TaskPanel:
# Set up for multi-threading. Note: same functionality as ccx_tools.py/start_ccx()
ccx_prefs = FreeCAD.ParamGet(self.PREFS_PATH)
env = QtCore.QProcessEnvironment.systemEnvironment()
- num_cpu_pref = ccx_prefs.GetInt("AnalysisNumCPUs", 1)
- if num_cpu_pref > 1:
+ num_cpu_pref = ccx_prefs.GetInt("AnalysisNumCPUs", 0)
+ if num_cpu_pref >= 1:
env.insert("OMP_NUM_THREADS", str(num_cpu_pref))
else:
- cpu_count = os.cpu_count()
- if cpu_count is not None and cpu_count > 1:
- env.insert("OMP_NUM_THREADS", str(cpu_count))
+ env.insert("OMP_NUM_THREADS", str(QtCore.QThread.idealThreadCount()))
self.Calculix.setProcessEnvironment(env)
self.cwd = QtCore.QDir.currentPath()