| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | __title__ = "FreeCAD FEM solver Elmer equation object _Linear" |
| | __author__ = "Markus Hovorka, Uwe Stöhr" |
| | __url__ = "https://www.freecad.org" |
| |
|
| | |
| | |
| |
|
| | from . import equation |
| |
|
| |
|
| | |
| | |
| | |
| |
|
| |
|
| | LINEAR_SOLVER = ["Direct", "Iterative"] |
| | LINEAR_DIRECT = ["Banded", "MUMPS", "Umfpack"] |
| | LINEAR_ITERATIVE = ["BiCGStab", "BiCGStabl", "CG", "GCR", "CGS", "GMRES", "Idrs", "TFQMR"] |
| | LINEAR_PRECONDITIONING = ["None", "Diagonal", "ILU0", "ILU1", "ILU2", "ILU3", "ILU4", "ILUT"] |
| |
|
| |
|
| | class Proxy(equation.Proxy): |
| |
|
| | def __init__(self, obj): |
| | super().__init__(obj) |
| |
|
| | obj.addProperty( |
| | "App::PropertyIntegerConstraint", |
| | "BiCGstablDegree", |
| | "Linear System", |
| | "Polynom degree for iterative method 'BiCGstabl'", |
| | locked=True, |
| | ) |
| | obj.addProperty( |
| | "App::PropertyIntegerConstraint", |
| | "IdrsParameter", |
| | "Linear System", |
| | "Parameter for iterative method 'Idrs'", |
| | locked=True, |
| | ) |
| | obj.addProperty( |
| | "App::PropertyEnumeration", "LinearDirectMethod", "Linear System", "", locked=True |
| | ) |
| | obj.addProperty( |
| | "App::PropertyIntegerConstraint", "LinearIterations", "Linear System", "", locked=True |
| | ) |
| | obj.addProperty( |
| | "App::PropertyEnumeration", "LinearIterativeMethod", "Linear System", "", locked=True |
| | ) |
| | obj.addProperty( |
| | "App::PropertyEnumeration", "LinearPreconditioning", "Linear System", "", locked=True |
| | ) |
| | obj.addProperty( |
| | "App::PropertyEnumeration", "LinearSolverType", "Linear System", "", locked=True |
| | ) |
| | obj.addProperty( |
| | "App::PropertyBool", |
| | "LinearSystemSolverDisabled", |
| | "Linear System", |
| | ( |
| | "Disable the linear system.\n" |
| | "Only use for special cases\n" |
| | "and consult the Elmer docs." |
| | ), |
| | locked=True, |
| | ) |
| | obj.addProperty( |
| | "App::PropertyFloat", |
| | "LinearTolerance", |
| | "Linear System", |
| | "Linear preconditioning method", |
| | locked=True, |
| | ) |
| | obj.addProperty("App::PropertyBool", "Stabilize", "Base", "", locked=True) |
| | obj.addProperty( |
| | "App::PropertyFloat", "SteadyStateTolerance", "Steady State", "", locked=True |
| | ) |
| |
|
| | obj.BiCGstablDegree = (2, 2, 10, 1) |
| | obj.IdrsParameter = (2, 1, 10, 1) |
| | obj.LinearDirectMethod = LINEAR_DIRECT |
| | obj.LinearIterations = (500, 1, int(1e6), 50) |
| | obj.LinearIterativeMethod = LINEAR_ITERATIVE |
| | obj.LinearIterativeMethod = "BiCGStab" |
| | obj.LinearPreconditioning = LINEAR_PRECONDITIONING |
| | obj.LinearPreconditioning = "ILU0" |
| | |
| | |
| | |
| | |
| | obj.setExpression("LinearTolerance", "1e-10") |
| | obj.LinearSolverType = LINEAR_SOLVER |
| | obj.LinearSolverType = "Iterative" |
| | |
| | obj.setExpression("SteadyStateTolerance", "1e-5") |
| | obj.Stabilize = True |
| |
|
| |
|
| | class ViewProxy(equation.ViewProxy): |
| | pass |
| |
|
| |
|
| | |
| |
|