[FEM] fixes for deformation equation

- deformation is a nonlinear equation
- use the default that Elmer GUI uses for this equation
This commit is contained in:
Uwe
2023-03-22 07:00:00 +01:00
parent 2d3953f65f
commit 4b4effed15
2 changed files with 5 additions and 8 deletions

View File

@@ -29,16 +29,15 @@ __url__ = "https://www.freecadweb.org"
# @{
from femtools import femutils
from . import nonlinear
from ... import equationbase
from . import linear
def create(doc, name="Deformation"):
return femutils.createObject(
doc, name, Proxy, ViewProxy)
class Proxy(linear.Proxy, equationbase.DeformationProxy):
class Proxy(nonlinear.Proxy, equationbase.DeformationProxy):
Type = "Fem::EquationElmerDeformation"
@@ -107,14 +106,11 @@ class Proxy(linear.Proxy, equationbase.DeformationProxy):
obj.Priority = 10
obj.CalculatePrincipal = True
# according to Elmer tutorial and forum, for stresses direct solving
# is recommended -> tests showed 10 times faster and even more accurate
obj.LinearSolverType = "Direct"
obj.LinearDirectMethod = "Umfpack"
obj.CalculateStresses = True
obj.Variable = "-dofs 3 Displacement"
class ViewProxy(linear.ViewProxy, equationbase.DeformationViewProxy):
class ViewProxy(nonlinear.ViewProxy, equationbase.DeformationViewProxy):
pass
## @}

View File

@@ -44,6 +44,7 @@ class DeformationWriter:
def getDeformationSolver(self, equation):
s = self.write.createLinearSolver(equation)
# output the equation parameters
s = self.write.createNonlinearSolver(equation)
s["Equation"] = "Nonlinear elasticity solver"
s["Procedure"] = sifio.FileAttr("ElasticSolve/ElasticSolver")
if equation.CalculateStrains is True: