From 7d40503bc92ec718a7a40c843a13962e766b57f2 Mon Sep 17 00:00:00 2001
From: FEA-eng <59876896+FEA-eng@users.noreply.github.com>
Date: Sun, 18 Feb 2024 03:14:32 +0100
Subject: [PATCH] FEM new matrix solver types (PaStiX and Pardiso) (#12478)
* Update solver.py
* Update write_step_equation.py
* Update DlgSettingsFemCcx.ui
---
src/Mod/Fem/Gui/DlgSettingsFemCcx.ui | 10 ++++++++++
src/Mod/Fem/femsolver/calculix/solver.py | 2 ++
src/Mod/Fem/femsolver/calculix/write_step_equation.py | 4 ++++
3 files changed, 16 insertions(+)
diff --git a/src/Mod/Fem/Gui/DlgSettingsFemCcx.ui b/src/Mod/Fem/Gui/DlgSettingsFemCcx.ui
index 0fd80c6553..1a057bb4cc 100644
--- a/src/Mod/Fem/Gui/DlgSettingsFemCcx.ui
+++ b/src/Mod/Fem/Gui/DlgSettingsFemCcx.ui
@@ -343,6 +343,16 @@
Default
+ -
+
+ PaStiX
+
+
+ -
+
+ Pardiso
+
+
-
Spooles
diff --git a/src/Mod/Fem/femsolver/calculix/solver.py b/src/Mod/Fem/femsolver/calculix/solver.py
index 6958e5dca3..ca6707a893 100644
--- a/src/Mod/Fem/femsolver/calculix/solver.py
+++ b/src/Mod/Fem/femsolver/calculix/solver.py
@@ -345,6 +345,8 @@ def add_attributes(obj, ccx_prefs):
if not hasattr(obj, "MatrixSolverType"):
known_ccx_solver_types = [
"default",
+ "pastix",
+ "pardiso",
"spooles",
"iterativescaling",
"iterativecholesky"
diff --git a/src/Mod/Fem/femsolver/calculix/write_step_equation.py b/src/Mod/Fem/femsolver/calculix/write_step_equation.py
index 50e5b59829..e4beef37c2 100644
--- a/src/Mod/Fem/femsolver/calculix/write_step_equation.py
+++ b/src/Mod/Fem/femsolver/calculix/write_step_equation.py
@@ -81,6 +81,10 @@ def write_step_equation(f, ccxwriter):
# https://forum.freecad.org/viewtopic.php?f=18&t=43178
if ccxwriter.solver_obj.MatrixSolverType == "default":
pass
+ elif ccxwriter.solver_obj.MatrixSolverType == "pastix":
+ analysis_type += ", SOLVER=PASTIX"
+ elif ccxwriter.solver_obj.MatrixSolverType == "pardiso":
+ analysis_type += ", SOLVER=PARDISO"
elif ccxwriter.solver_obj.MatrixSolverType == "spooles":
analysis_type += ", SOLVER=SPOOLES"
elif ccxwriter.solver_obj.MatrixSolverType == "iterativescaling":