diff --git a/src/Mod/Fem/femsolver/elmer/equations/linear.py b/src/Mod/Fem/femsolver/elmer/equations/linear.py index 6bdefca76d55..c48395e2c410 100644 --- a/src/Mod/Fem/femsolver/elmer/equations/linear.py +++ b/src/Mod/Fem/femsolver/elmer/equations/linear.py @@ -46,15 +46,17 @@ "TFQMR", "GMRES", "GCR", + "Idrs" ] LINEAR_PRECONDITIONING = [ "None", "Diagonal", + "ILUT", "ILU0", "ILU1", "ILU2", "ILU3", - "ILU4", + "ILU4" ] @@ -118,6 +120,16 @@ def __init__(self, obj): "" ) obj.LinearIterations = 500 + obj.addProperty( + "App::PropertyBool", + "LinearSystemSolverDisabled", + "Linear System", + ( + "Disable the linear system.\n" + "Only use for special cases\n" + "and consult the Elmer docs." + ) + ) obj.addProperty( "App::PropertyFloat", "SteadyStateTolerance", diff --git a/src/Mod/Fem/femsolver/elmer/writer.py b/src/Mod/Fem/femsolver/elmer/writer.py index c8a45b9c8792..977b9f251068 100644 --- a/src/Mod/Fem/femsolver/elmer/writer.py +++ b/src/Mod/Fem/femsolver/elmer/writer.py @@ -1474,6 +1474,17 @@ def _updateLinearSolver(self, equation): equation.setExpression("SteadyStateTolerance", str(equation.SteadyStateTolerance)) if equation.BiCGstablDegree == 0: equation.BiCGstablDegree = 2 + if not hasattr(equation, "LinearSystemSolverDisabled"): + equation.addProperty( + "App::PropertyBool", + "LinearSystemSolverDisabled", + "Linear System", + ( + "Disable the linear system.\n" + "Only use for special cases\n" + "and consult the Elmer docs." + ) + ) def _createLinearSolver(self, equation): # first check if we have to update @@ -1482,6 +1493,7 @@ def _createLinearSolver(self, equation): s = sifio.createSection(sifio.SOLVER) s.priority = equation.Priority s["Linear System Solver"] = equation.LinearSolverType + s["Linear System Solver Disabled"] = equation.LinearSystemSolverDisabled if equation.LinearSolverType == "Direct": s["Linear System Direct Method"] = \ equation.LinearDirectMethod