From b6768685f33ee5bf1bd61d43b614aa6341d781e0 Mon Sep 17 00:00:00 2001 From: Bernd Hahnebach Date: Wed, 16 Jun 2021 13:50:44 +0200 Subject: [PATCH] FEM: examples, move some method in separate module --- .../Fem/femexamples/boxanalysis_frequency.py | 2 - src/Mod/Fem/femexamples/boxanalysis_static.py | 11 ++--- .../buckling_lateraltorsionalbuckling.py | 13 ++--- .../Fem/femexamples/buckling_platebuckling.py | 12 ++--- .../ccx_buckling_flexuralbuckling.py | 12 ++--- .../femexamples/ccx_cantilever_faceload.py | 11 ++--- .../ccx_cantilever_hexa20faceload.py | 11 +++-- .../femexamples/ccx_cantilever_nodeload.py | 2 - .../ccx_cantilever_prescribeddisplacement.py | 2 - .../constraint_contact_shell_shell.py | 11 ++--- .../constraint_contact_solid_solid.py | 11 ++--- .../femexamples/constraint_section_print.py | 11 ++--- .../constraint_selfweight_cantilever.py | 12 ++--- src/Mod/Fem/femexamples/constraint_tie.py | 11 ++--- .../constraint_transform_beam_hinged.py | 11 ++--- ...uitutorial01_eigenvalue_of_elastic_beam.py | 11 ++--- ...on_electrostatics_capacitance_two_balls.py | 11 ++--- ...ctrostatics_electricforce_elmer_nongui6.py | 11 ++--- .../Fem/femexamples/frequency_beamsimple.py | 11 ++--- src/Mod/Fem/femexamples/manager.py | 47 +++++++++++++------ ...material_multiple_bendingbeam_fiveboxes.py | 11 ++--- ...material_multiple_bendingbeam_fivefaces.py | 11 ++--- .../material_multiple_tensionrod_twoboxes.py | 11 ++--- .../femexamples/material_nl_platewithhole.py | 11 ++--- src/Mod/Fem/femexamples/rc_wall_2d.py | 11 ++--- .../square_pipe_end_twisted_edgeforces.py | 11 ++--- .../square_pipe_end_twisted_nodeforces.py | 11 ++--- .../Fem/femexamples/thermomech_bimetall.py | 11 ++--- src/Mod/Fem/femexamples/thermomech_flow1d.py | 11 ++--- src/Mod/Fem/femexamples/thermomech_spine.py | 11 ++--- 30 files changed, 114 insertions(+), 230 deletions(-) diff --git a/src/Mod/Fem/femexamples/boxanalysis_frequency.py b/src/Mod/Fem/femexamples/boxanalysis_frequency.py index e45ea5498d..0170793fa4 100644 --- a/src/Mod/Fem/femexamples/boxanalysis_frequency.py +++ b/src/Mod/Fem/femexamples/boxanalysis_frequency.py @@ -35,8 +35,6 @@ import ObjectsFem from .boxanalysis_static import setup_base -mesh_name = "Mesh" # needs to be Mesh to work with unit tests - def get_information(): return { diff --git a/src/Mod/Fem/femexamples/boxanalysis_static.py b/src/Mod/Fem/femexamples/boxanalysis_static.py index 2c96194dad..e4c5180bdf 100644 --- a/src/Mod/Fem/femexamples/boxanalysis_static.py +++ b/src/Mod/Fem/femexamples/boxanalysis_static.py @@ -34,13 +34,8 @@ import FreeCAD import Fem import ObjectsFem -mesh_name = "Mesh" # needs to be Mesh to work with unit tests - - -def init_doc(doc=None): - if doc is None: - doc = FreeCAD.newDocument() - return doc +from .manager import get_meshname +from .manager import init_doc def get_information(): @@ -94,7 +89,7 @@ def setup_base(doc=None, solvertype="ccxtools"): control = create_elements(fem_mesh) if not control: FreeCAD.Console.PrintError("Error on creating elements.\n") - femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, mesh_name))[0] + femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, get_meshname()))[0] femmesh_obj.FemMesh = fem_mesh femmesh_obj.Part = geom_obj femmesh_obj.SecondOrderLinear = False diff --git a/src/Mod/Fem/femexamples/buckling_lateraltorsionalbuckling.py b/src/Mod/Fem/femexamples/buckling_lateraltorsionalbuckling.py index 576802495b..f89359730e 100644 --- a/src/Mod/Fem/femexamples/buckling_lateraltorsionalbuckling.py +++ b/src/Mod/Fem/femexamples/buckling_lateraltorsionalbuckling.py @@ -36,14 +36,8 @@ import FreeCAD import Fem import ObjectsFem - -mesh_name = "Mesh" # needs to be Mesh to work with unit tests - - -def init_doc(doc=None): - if doc is None: - doc = FreeCAD.newDocument() - return doc +from .manager import get_meshname +from .manager import init_doc def get_information(): @@ -84,7 +78,6 @@ def setup(doc=None, solvertype="ccxtools"): geom_obj = doc.addObject("Part::MultiFuse", "Fusion") geom_obj.Shapes = [bottom_flange, top_flange, web] - doc.recompute() if FreeCAD.GuiUp: geom_obj.ViewObject.Document.activeView().viewAxonometric() @@ -170,7 +163,7 @@ def setup(doc=None, solvertype="ccxtools"): control = create_elements(fem_mesh) if not control: FreeCAD.Console.PrintError("Error on creating elements.\n") - femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, mesh_name))[0] + femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, get_meshname()))[0] femmesh_obj.FemMesh = fem_mesh femmesh_obj.Part = geom_obj femmesh_obj.SecondOrderLinear = False diff --git a/src/Mod/Fem/femexamples/buckling_platebuckling.py b/src/Mod/Fem/femexamples/buckling_platebuckling.py index ed00c68b9d..1960bb1a9c 100644 --- a/src/Mod/Fem/femexamples/buckling_platebuckling.py +++ b/src/Mod/Fem/femexamples/buckling_platebuckling.py @@ -36,14 +36,8 @@ import FreeCAD import Fem import ObjectsFem - -mesh_name = "Mesh" # needs to be Mesh to work with unit tests - - -def init_doc(doc=None): - if doc is None: - doc = FreeCAD.newDocument() - return doc +from .manager import get_meshname +from .manager import init_doc def get_information(): @@ -152,7 +146,7 @@ def setup(doc=None, solvertype="ccxtools"): control = create_elements(fem_mesh) if not control: FreeCAD.Console.PrintError("Error on creating elements.\n") - femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, mesh_name))[0] + femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, get_meshname()))[0] femmesh_obj.FemMesh = fem_mesh femmesh_obj.Part = geom_obj femmesh_obj.SecondOrderLinear = False diff --git a/src/Mod/Fem/femexamples/ccx_buckling_flexuralbuckling.py b/src/Mod/Fem/femexamples/ccx_buckling_flexuralbuckling.py index 86513522ec..075c123302 100644 --- a/src/Mod/Fem/femexamples/ccx_buckling_flexuralbuckling.py +++ b/src/Mod/Fem/femexamples/ccx_buckling_flexuralbuckling.py @@ -39,14 +39,8 @@ import FreeCAD import Fem import ObjectsFem - -mesh_name = "Mesh" # needs to be Mesh to work with unit tests - - -def init_doc(doc=None): - if doc is None: - doc = FreeCAD.newDocument() - return doc +from .manager import get_meshname +from .manager import init_doc def get_information(): @@ -131,7 +125,7 @@ def setup(doc=None, solvertype="ccxtools"): control = create_elements(fem_mesh) if not control: FreeCAD.Console.PrintError("Error on creating elements.\n") - femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, mesh_name))[0] + femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, get_meshname()))[0] femmesh_obj.FemMesh = fem_mesh femmesh_obj.Part = geom_obj diff --git a/src/Mod/Fem/femexamples/ccx_cantilever_faceload.py b/src/Mod/Fem/femexamples/ccx_cantilever_faceload.py index 0603982f57..a916448913 100644 --- a/src/Mod/Fem/femexamples/ccx_cantilever_faceload.py +++ b/src/Mod/Fem/femexamples/ccx_cantilever_faceload.py @@ -34,13 +34,8 @@ import FreeCAD import Fem import ObjectsFem -mesh_name = "Mesh" # needs to be Mesh to work with unit tests - - -def init_doc(doc=None): - if doc is None: - doc = FreeCAD.newDocument() - return doc +from .manager import get_meshname +from .manager import init_doc def get_information(): @@ -124,7 +119,7 @@ def setup_cantileverbase(doc=None, solvertype="ccxtools"): control = create_elements(fem_mesh) if not control: FreeCAD.Console.PrintError("Error on creating elements.\n") - femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, mesh_name))[0] + femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, get_meshname()))[0] femmesh_obj.FemMesh = fem_mesh femmesh_obj.Part = geom_obj femmesh_obj.SecondOrderLinear = False diff --git a/src/Mod/Fem/femexamples/ccx_cantilever_hexa20faceload.py b/src/Mod/Fem/femexamples/ccx_cantilever_hexa20faceload.py index 926aa886b8..75bde842ee 100644 --- a/src/Mod/Fem/femexamples/ccx_cantilever_hexa20faceload.py +++ b/src/Mod/Fem/femexamples/ccx_cantilever_hexa20faceload.py @@ -35,7 +35,7 @@ import Fem from .ccx_cantilever_faceload import setup as setup_with_faceload -mesh_name = "Mesh" # needs to be Mesh to work with unit tests +from .manager import get_meshname def get_information(): @@ -53,19 +53,20 @@ def get_information(): def setup(doc=None, solvertype="ccxtools"): doc = setup_with_faceload(doc, solvertype) + femmesh_obj = doc.getObject(get_meshname()) # load the hexa20 mesh from .meshes.mesh_canticcx_hexa20 import create_nodes, create_elements - fem_mesh = Fem.FemMesh() - control = create_nodes(fem_mesh) + new_fem_mesh = Fem.FemMesh() + control = create_nodes(new_fem_mesh) if not control: FreeCAD.Console.PrintError("Error on creating nodes.\n") - control = create_elements(fem_mesh) + control = create_elements(new_fem_mesh) if not control: FreeCAD.Console.PrintError("Error on creating elements.\n") # overwrite mesh with the hexa20 mesh - doc.getObject(mesh_name).FemMesh = fem_mesh + femmesh_obj.FemMesh = new_fem_mesh doc.recompute() return doc diff --git a/src/Mod/Fem/femexamples/ccx_cantilever_nodeload.py b/src/Mod/Fem/femexamples/ccx_cantilever_nodeload.py index 7bb762d8ec..06f778db1d 100644 --- a/src/Mod/Fem/femexamples/ccx_cantilever_nodeload.py +++ b/src/Mod/Fem/femexamples/ccx_cantilever_nodeload.py @@ -35,8 +35,6 @@ import ObjectsFem from .ccx_cantilever_faceload import setup_cantileverbase -mesh_name = "Mesh" # needs to be Mesh to work with unit tests - def get_information(): return { diff --git a/src/Mod/Fem/femexamples/ccx_cantilever_prescribeddisplacement.py b/src/Mod/Fem/femexamples/ccx_cantilever_prescribeddisplacement.py index c1075a2f6e..bfdf25f2cc 100644 --- a/src/Mod/Fem/femexamples/ccx_cantilever_prescribeddisplacement.py +++ b/src/Mod/Fem/femexamples/ccx_cantilever_prescribeddisplacement.py @@ -35,8 +35,6 @@ import ObjectsFem from .ccx_cantilever_faceload import setup_cantileverbase -mesh_name = "Mesh" # needs to be Mesh to work with unit tests - def get_information(): return { diff --git a/src/Mod/Fem/femexamples/constraint_contact_shell_shell.py b/src/Mod/Fem/femexamples/constraint_contact_shell_shell.py index 00df0a5dbe..dad36eda1a 100644 --- a/src/Mod/Fem/femexamples/constraint_contact_shell_shell.py +++ b/src/Mod/Fem/femexamples/constraint_contact_shell_shell.py @@ -40,13 +40,8 @@ import ObjectsFem import Part from BOPTools import SplitFeatures -mesh_name = "Mesh" # needs to be Mesh to work with unit tests - - -def init_doc(doc=None): - if doc is None: - doc = FreeCAD.newDocument() - return doc +from .manager import get_meshname +from .manager import init_doc def get_information(): @@ -200,7 +195,7 @@ def setup(doc=None, solvertype="ccxtools"): control = create_elements(fem_mesh) if not control: FreeCAD.Console.PrintError("Error on creating elements.\n") - femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, mesh_name))[0] + femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, get_meshname()))[0] femmesh_obj.FemMesh = fem_mesh femmesh_obj.Part = geom_obj femmesh_obj.SecondOrderLinear = False diff --git a/src/Mod/Fem/femexamples/constraint_contact_solid_solid.py b/src/Mod/Fem/femexamples/constraint_contact_solid_solid.py index 85f902aa91..092cc8515d 100644 --- a/src/Mod/Fem/femexamples/constraint_contact_solid_solid.py +++ b/src/Mod/Fem/femexamples/constraint_contact_solid_solid.py @@ -40,13 +40,8 @@ import Fem import ObjectsFem import Part -mesh_name = "Mesh" # needs to be Mesh to work with unit tests - - -def init_doc(doc=None): - if doc is None: - doc = FreeCAD.newDocument() - return doc +from .manager import get_meshname +from .manager import init_doc def get_information(): @@ -184,7 +179,7 @@ def setup(doc=None, solvertype="ccxtools"): control = create_elements(fem_mesh) if not control: FreeCAD.Console.PrintError("Error on creating elements.\n") - femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, mesh_name))[0] + femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, get_meshname()))[0] femmesh_obj.FemMesh = fem_mesh femmesh_obj.Part = geom_obj femmesh_obj.SecondOrderLinear = False diff --git a/src/Mod/Fem/femexamples/constraint_section_print.py b/src/Mod/Fem/femexamples/constraint_section_print.py index 037843c1c9..f67580758d 100644 --- a/src/Mod/Fem/femexamples/constraint_section_print.py +++ b/src/Mod/Fem/femexamples/constraint_section_print.py @@ -46,13 +46,8 @@ from BOPTools.SplitFeatures import makeBooleanFragments from BOPTools.SplitFeatures import makeSlice from CompoundTools.CompoundFilter import makeCompoundFilter -mesh_name = "Mesh" # needs to be Mesh to work with unit tests - - -def init_doc(doc=None): - if doc is None: - doc = FreeCAD.newDocument() - return doc +from .manager import get_meshname +from .manager import init_doc def get_information(): @@ -268,7 +263,7 @@ def setup(doc=None, solvertype="ccxtools"): control = create_elements(fem_mesh) if not control: FreeCAD.Console.PrintError("Error on creating elements.\n") - femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, mesh_name))[0] + femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, get_meshname()))[0] femmesh_obj.FemMesh = fem_mesh femmesh_obj.Part = geom_obj femmesh_obj.SecondOrderLinear = False diff --git a/src/Mod/Fem/femexamples/constraint_selfweight_cantilever.py b/src/Mod/Fem/femexamples/constraint_selfweight_cantilever.py index c009b931ee..79e658f339 100644 --- a/src/Mod/Fem/femexamples/constraint_selfweight_cantilever.py +++ b/src/Mod/Fem/femexamples/constraint_selfweight_cantilever.py @@ -38,14 +38,8 @@ import FreeCAD import Fem import ObjectsFem - -mesh_name = "Mesh" # needs to be Mesh to work with unit tests - - -def init_doc(doc=None): - if doc is None: - doc = FreeCAD.newDocument() - return doc +from .manager import get_meshname +from .manager import init_doc def get_information(): @@ -131,7 +125,7 @@ def setup(doc=None, solvertype="ccxtools"): control = create_elements(fem_mesh) if not control: FreeCAD.Console.PrintError("Error on creating elements.\n") - femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, mesh_name))[0] + femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, get_meshname()))[0] femmesh_obj.FemMesh = fem_mesh femmesh_obj.Part = geom_obj femmesh_obj.SecondOrderLinear = False diff --git a/src/Mod/Fem/femexamples/constraint_tie.py b/src/Mod/Fem/femexamples/constraint_tie.py index a306ac16ec..ee60532d22 100644 --- a/src/Mod/Fem/femexamples/constraint_tie.py +++ b/src/Mod/Fem/femexamples/constraint_tie.py @@ -40,13 +40,8 @@ import ObjectsFem import Part from BOPTools import SplitFeatures -mesh_name = "Mesh" # needs to be Mesh to work with unit tests - - -def init_doc(doc=None): - if doc is None: - doc = FreeCAD.newDocument() - return doc +from .manager import get_meshname +from .manager import init_doc def get_information(): @@ -158,7 +153,7 @@ def setup(doc=None, solvertype="ccxtools"): control = create_elements(fem_mesh) if not control: FreeCAD.Console.PrintError("Error on creating elements.\n") - femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, mesh_name))[0] + femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, get_meshname()))[0] femmesh_obj.FemMesh = fem_mesh femmesh_obj.Part = geom_obj femmesh_obj.SecondOrderLinear = False diff --git a/src/Mod/Fem/femexamples/constraint_transform_beam_hinged.py b/src/Mod/Fem/femexamples/constraint_transform_beam_hinged.py index cc5cfd9195..16cfe5d8ba 100644 --- a/src/Mod/Fem/femexamples/constraint_transform_beam_hinged.py +++ b/src/Mod/Fem/femexamples/constraint_transform_beam_hinged.py @@ -39,13 +39,8 @@ import Fem import ObjectsFem from CompoundTools import CompoundFilter -mesh_name = "Mesh" # needs to be Mesh to work with unit tests - - -def init_doc(doc=None): - if doc is None: - doc = FreeCAD.newDocument() - return doc +from .manager import get_meshname +from .manager import init_doc def get_information(): @@ -177,7 +172,7 @@ def setup(doc=None, solvertype="ccxtools"): control = create_elements(fem_mesh) if not control: FreeCAD.Console.PrintError("Error on creating elements.\n") - femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, mesh_name))[0] + femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, get_meshname()))[0] femmesh_obj.FemMesh = fem_mesh femmesh_obj.Part = geom_obj femmesh_obj.SecondOrderLinear = False diff --git a/src/Mod/Fem/femexamples/elmer_nonguitutorial01_eigenvalue_of_elastic_beam.py b/src/Mod/Fem/femexamples/elmer_nonguitutorial01_eigenvalue_of_elastic_beam.py index 136499c62c..23a64071c5 100644 --- a/src/Mod/Fem/femexamples/elmer_nonguitutorial01_eigenvalue_of_elastic_beam.py +++ b/src/Mod/Fem/femexamples/elmer_nonguitutorial01_eigenvalue_of_elastic_beam.py @@ -35,13 +35,8 @@ import FreeCAD import Fem import ObjectsFem -mesh_name = "Mesh" # needs to be Mesh to work with unit tests - - -def init_doc(doc=None): - if doc is None: - doc = FreeCAD.newDocument() - return doc +from .manager import get_meshname +from .manager import init_doc def get_information(): @@ -133,7 +128,7 @@ def setup(doc=None, solvertype="elmer"): control = create_elements(fem_mesh) if not control: FreeCAD.Console.PrintError("Error on creating elements.\n") - femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, mesh_name))[0] + femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, get_meshname()))[0] femmesh_obj.FemMesh = fem_mesh femmesh_obj.Part = geom_obj femmesh_obj.SecondOrderLinear = False diff --git a/src/Mod/Fem/femexamples/equation_electrostatics_capacitance_two_balls.py b/src/Mod/Fem/femexamples/equation_electrostatics_capacitance_two_balls.py index d19e490800..e9684572a1 100644 --- a/src/Mod/Fem/femexamples/equation_electrostatics_capacitance_two_balls.py +++ b/src/Mod/Fem/femexamples/equation_electrostatics_capacitance_two_balls.py @@ -38,13 +38,8 @@ from FreeCAD import Vector import Fem import ObjectsFem -mesh_name = "Mesh" # needs to be Mesh to work with unit tests - - -def init_doc(doc=None): - if doc is None: - doc = FreeCAD.newDocument() - return doc +from .manager import get_meshname +from .manager import init_doc def get_information(): @@ -160,7 +155,7 @@ def setup(doc=None, solvertype="elmer"): control = create_elements(fem_mesh) if not control: FreeCAD.Console.PrintError("Error on creating elements.\n") - femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, mesh_name))[0] + femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, get_meshname()))[0] femmesh_obj.FemMesh = fem_mesh femmesh_obj.Part = geom_obj femmesh_obj.SecondOrderLinear = False diff --git a/src/Mod/Fem/femexamples/equation_electrostatics_electricforce_elmer_nongui6.py b/src/Mod/Fem/femexamples/equation_electrostatics_electricforce_elmer_nongui6.py index 358729fec9..da6a88116a 100644 --- a/src/Mod/Fem/femexamples/equation_electrostatics_electricforce_elmer_nongui6.py +++ b/src/Mod/Fem/femexamples/equation_electrostatics_electricforce_elmer_nongui6.py @@ -41,13 +41,8 @@ import Part import ObjectsFem import Sketcher -mesh_name = "Mesh" # needs to be Mesh to work with unit tests - - -def init_doc(doc=None): - if doc is None: - doc = FreeCAD.newDocument() - return doc +from .manager import get_meshname +from .manager import init_doc def get_information(): @@ -213,7 +208,7 @@ def setup(doc=None, solvertype="elmer"): control = create_elements(fem_mesh) if not control: FreeCAD.Console.PrintError("Error on creating elements.\n") - femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, mesh_name))[0] + femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, get_meshname()))[0] femmesh_obj.FemMesh = fem_mesh femmesh_obj.Part = geom_obj femmesh_obj.SecondOrderLinear = False diff --git a/src/Mod/Fem/femexamples/frequency_beamsimple.py b/src/Mod/Fem/femexamples/frequency_beamsimple.py index 3a82803e3c..ba036be620 100644 --- a/src/Mod/Fem/femexamples/frequency_beamsimple.py +++ b/src/Mod/Fem/femexamples/frequency_beamsimple.py @@ -35,13 +35,8 @@ import FreeCAD import Fem import ObjectsFem -mesh_name = "Mesh" # needs to be Mesh to work with unit tests - - -def init_doc(doc=None): - if doc is None: - doc = FreeCAD.newDocument() - return doc +from .manager import get_meshname +from .manager import init_doc def get_information(): @@ -147,7 +142,7 @@ def setup(doc=None, solvertype="ccxtools"): control = create_elements(fem_mesh) if not control: FreeCAD.Console.PrintError("Error on creating elements.\n") - femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, mesh_name))[0] + femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, get_meshname()))[0] femmesh_obj.FemMesh = fem_mesh femmesh_obj.Part = geom_obj femmesh_obj.SecondOrderLinear = False diff --git a/src/Mod/Fem/femexamples/manager.py b/src/Mod/Fem/femexamples/manager.py index b8a07605ac..e14937a48f 100644 --- a/src/Mod/Fem/femexamples/manager.py +++ b/src/Mod/Fem/femexamples/manager.py @@ -22,22 +22,13 @@ # * * # *************************************************************************** -# run examples -""" -# all examples -from femexamples.manager import * -run_all() +# this module was used before there was a examples gui +# and before there where the unit tests +# it is not really needed and maintained anymore +# general method for the examples are saved here +# see comment at run examples end to run examples -# one special example -from femexamples.manager import run_example as run - -doc = run("boxanalysis_static") -doc = run("boxanalysis_frequency") - -... -""" - import FreeCAD @@ -127,3 +118,31 @@ def run_all(): run_example("thermomech_spine") run_example("boxanalysis_frequency") run_example("boxanalysis_frequency") + + +""" +# all examples +from femexamples.manager import * +run_all() + + +# one special example +from femexamples.manager import run_example as run + +doc = run("boxanalysis_static") +doc = run("boxanalysis_frequency") + +""" + + +# ************************************************************************************************ +# helper +def init_doc(doc=None): + if doc is None: + doc = FreeCAD.newDocument() + return doc + + +def get_meshname(): + # needs to be "Mesh" to work with unit tests + return "Mesh" diff --git a/src/Mod/Fem/femexamples/material_multiple_bendingbeam_fiveboxes.py b/src/Mod/Fem/femexamples/material_multiple_bendingbeam_fiveboxes.py index c3c6f0c3ab..9db7dc0e42 100644 --- a/src/Mod/Fem/femexamples/material_multiple_bendingbeam_fiveboxes.py +++ b/src/Mod/Fem/femexamples/material_multiple_bendingbeam_fiveboxes.py @@ -35,13 +35,8 @@ import Fem import ObjectsFem import BOPTools.SplitFeatures -mesh_name = "Mesh" # needs to be Mesh to work with unit tests - - -def init_doc(doc=None): - if doc is None: - doc = FreeCAD.newDocument() - return doc +from .manager import get_meshname +from .manager import init_doc def get_information(): @@ -192,7 +187,7 @@ def setup(doc=None, solvertype="ccxtools"): control = create_elements(fem_mesh) if not control: FreeCAD.Console.PrintError("Error on creating elements.\n") - femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, mesh_name))[0] + femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, get_meshname()))[0] femmesh_obj.FemMesh = fem_mesh femmesh_obj.Part = geom_obj femmesh_obj.SecondOrderLinear = False diff --git a/src/Mod/Fem/femexamples/material_multiple_bendingbeam_fivefaces.py b/src/Mod/Fem/femexamples/material_multiple_bendingbeam_fivefaces.py index bd6e45f622..954494f489 100644 --- a/src/Mod/Fem/femexamples/material_multiple_bendingbeam_fivefaces.py +++ b/src/Mod/Fem/femexamples/material_multiple_bendingbeam_fivefaces.py @@ -34,13 +34,8 @@ import FreeCAD import Fem import ObjectsFem -mesh_name = "Mesh" # needs to be Mesh to work with unit tests - - -def init_doc(doc=None): - if doc is None: - doc = FreeCAD.newDocument() - return doc +from .manager import get_meshname +from .manager import init_doc def get_information(): @@ -192,7 +187,7 @@ def setup(doc=None, solvertype="ccxtools"): control = create_elements(fem_mesh) if not control: FreeCAD.Console.PrintError("Error on creating elements.\n") - femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, mesh_name))[0] + femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, get_meshname()))[0] femmesh_obj.FemMesh = fem_mesh femmesh_obj.Part = geom_obj femmesh_obj.SecondOrderLinear = False diff --git a/src/Mod/Fem/femexamples/material_multiple_tensionrod_twoboxes.py b/src/Mod/Fem/femexamples/material_multiple_tensionrod_twoboxes.py index 533a763fc9..c8339d5889 100644 --- a/src/Mod/Fem/femexamples/material_multiple_tensionrod_twoboxes.py +++ b/src/Mod/Fem/femexamples/material_multiple_tensionrod_twoboxes.py @@ -36,13 +36,8 @@ import ObjectsFem from BOPTools import SplitFeatures from CompoundTools import CompoundFilter -mesh_name = "Mesh" # needs to be Mesh to work with unit tests - - -def init_doc(doc=None): - if doc is None: - doc = FreeCAD.newDocument() - return doc +from .manager import get_meshname +from .manager import init_doc def get_information(): @@ -160,7 +155,7 @@ def setup(doc=None, solvertype="ccxtools"): control = create_elements(fem_mesh) if not control: FreeCAD.Console.PrintError("Error on creating elements.\n") - femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, mesh_name))[0] + femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, get_meshname()))[0] femmesh_obj.FemMesh = fem_mesh femmesh_obj.Part = geom_obj femmesh_obj.SecondOrderLinear = False diff --git a/src/Mod/Fem/femexamples/material_nl_platewithhole.py b/src/Mod/Fem/femexamples/material_nl_platewithhole.py index d33e371b06..abebc8c07e 100644 --- a/src/Mod/Fem/femexamples/material_nl_platewithhole.py +++ b/src/Mod/Fem/femexamples/material_nl_platewithhole.py @@ -52,13 +52,8 @@ import Part from Part import makeCircle as ci from Part import makeLine as ln -mesh_name = "Mesh" # needs to be Mesh to work with unit tests - - -def init_doc(doc=None): - if doc is None: - doc = FreeCAD.newDocument() - return doc +from .manager import get_meshname +from .manager import init_doc def get_information(): @@ -163,7 +158,7 @@ def setup(doc=None, solvertype="ccxtools"): control = create_elements(fem_mesh) if not control: FreeCAD.Console.PrintError("Error on creating elements.\n") - femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, mesh_name))[0] + femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, get_meshname()))[0] femmesh_obj.FemMesh = fem_mesh femmesh_obj.Part = geom_obj femmesh_obj.SecondOrderLinear = False diff --git a/src/Mod/Fem/femexamples/rc_wall_2d.py b/src/Mod/Fem/femexamples/rc_wall_2d.py index dec1071318..466ae59bda 100644 --- a/src/Mod/Fem/femexamples/rc_wall_2d.py +++ b/src/Mod/Fem/femexamples/rc_wall_2d.py @@ -40,13 +40,8 @@ import ObjectsFem import Part from Part import makeLine as ln -mesh_name = "Mesh" # needs to be Mesh to work with unit tests - - -def init_doc(doc=None): - if doc is None: - doc = FreeCAD.newDocument() - return doc +from .manager import get_meshname +from .manager import init_doc def get_information(): @@ -165,7 +160,7 @@ def setup(doc=None, solvertype="ccxtools"): control = create_elements(fem_mesh) if not control: FreeCAD.Console.PrintError("Error on creating elements.\n") - femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, mesh_name))[0] + femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, get_meshname()))[0] femmesh_obj.FemMesh = fem_mesh femmesh_obj.Part = geom_obj femmesh_obj.SecondOrderLinear = False diff --git a/src/Mod/Fem/femexamples/square_pipe_end_twisted_edgeforces.py b/src/Mod/Fem/femexamples/square_pipe_end_twisted_edgeforces.py index 6e1d6e47df..18752dd159 100644 --- a/src/Mod/Fem/femexamples/square_pipe_end_twisted_edgeforces.py +++ b/src/Mod/Fem/femexamples/square_pipe_end_twisted_edgeforces.py @@ -36,13 +36,8 @@ import Fem import ObjectsFem import Part -mesh_name = "Mesh" # needs to be Mesh to work with unit tests - - -def init_doc(doc=None): - if doc is None: - doc = FreeCAD.newDocument() - return doc +from .manager import get_meshname +from .manager import init_doc def get_information(): @@ -166,7 +161,7 @@ def setup(doc=None, solvertype="ccxtools"): control = create_elements(fem_mesh) if not control: FreeCAD.Console.PrintError("Error on creating elements.\n") - femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, mesh_name))[0] + femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, get_meshname()))[0] femmesh_obj.FemMesh = fem_mesh femmesh_obj.Part = geom_obj femmesh_obj.SecondOrderLinear = False diff --git a/src/Mod/Fem/femexamples/square_pipe_end_twisted_nodeforces.py b/src/Mod/Fem/femexamples/square_pipe_end_twisted_nodeforces.py index ab6148d8af..e6adbf2a34 100644 --- a/src/Mod/Fem/femexamples/square_pipe_end_twisted_nodeforces.py +++ b/src/Mod/Fem/femexamples/square_pipe_end_twisted_nodeforces.py @@ -36,13 +36,8 @@ import Fem import ObjectsFem import Part -mesh_name = "Mesh" # needs to be Mesh to work with unit tests - - -def init_doc(doc=None): - if doc is None: - doc = FreeCAD.newDocument() - return doc +from .manager import get_meshname +from .manager import init_doc def get_information(): @@ -428,7 +423,7 @@ def setup(doc=None, solvertype="ccxtools"): control = create_elements(fem_mesh) if not control: FreeCAD.Console.PrintError("Error on creating elements.\n") - femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, mesh_name))[0] + femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, get_meshname()))[0] femmesh_obj.FemMesh = fem_mesh femmesh_obj.Part = geom_obj femmesh_obj.SecondOrderLinear = False diff --git a/src/Mod/Fem/femexamples/thermomech_bimetall.py b/src/Mod/Fem/femexamples/thermomech_bimetall.py index 96329c9292..edd0eeba2e 100644 --- a/src/Mod/Fem/femexamples/thermomech_bimetall.py +++ b/src/Mod/Fem/femexamples/thermomech_bimetall.py @@ -42,13 +42,8 @@ import Fem import ObjectsFem from BOPTools import SplitFeatures -mesh_name = "Mesh" # needs to be Mesh to work with unit tests - - -def init_doc(doc=None): - if doc is None: - doc = FreeCAD.newDocument() - return doc +from .manager import get_meshname +from .manager import init_doc def get_information(): @@ -203,7 +198,7 @@ def setup(doc=None, solvertype="ccxtools"): control = create_elements(fem_mesh) if not control: FreeCAD.Console.PrintError("Error on creating elements.\n") - femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, mesh_name))[0] + femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, get_meshname()))[0] femmesh_obj.FemMesh = fem_mesh femmesh_obj.Part = geom_obj femmesh_obj.SecondOrderLinear = False diff --git a/src/Mod/Fem/femexamples/thermomech_flow1d.py b/src/Mod/Fem/femexamples/thermomech_flow1d.py index 9b34a34b6a..ad40ff599a 100644 --- a/src/Mod/Fem/femexamples/thermomech_flow1d.py +++ b/src/Mod/Fem/femexamples/thermomech_flow1d.py @@ -39,13 +39,8 @@ import Fem import ObjectsFem from Draft import makeWire -mesh_name = "Mesh" # needs to be Mesh to work with unit tests - - -def init_doc(doc=None): - if doc is None: - doc = FreeCAD.newDocument() - return doc +from .manager import get_meshname +from .manager import init_doc def get_information(): @@ -256,7 +251,7 @@ def setup(doc=None, solvertype="ccxtools"): control = create_elements(fem_mesh) if not control: FreeCAD.Console.PrintError("Error on creating elements.\n") - femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, mesh_name))[0] + femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, get_meshname()))[0] femmesh_obj.FemMesh = fem_mesh femmesh_obj.Part = geom_obj femmesh_obj.SecondOrderLinear = False diff --git a/src/Mod/Fem/femexamples/thermomech_spine.py b/src/Mod/Fem/femexamples/thermomech_spine.py index fffc63f130..0b57629fb3 100644 --- a/src/Mod/Fem/femexamples/thermomech_spine.py +++ b/src/Mod/Fem/femexamples/thermomech_spine.py @@ -34,13 +34,8 @@ import FreeCAD import Fem import ObjectsFem -mesh_name = "Mesh" # needs to be Mesh to work with unit tests - - -def init_doc(doc=None): - if doc is None: - doc = FreeCAD.newDocument() - return doc +from .manager import get_meshname +from .manager import init_doc def get_information(): @@ -150,7 +145,7 @@ def setup(doc=None, solvertype="ccxtools"): control = create_elements(fem_mesh) if not control: FreeCAD.Console.PrintError("Error on creating elements.\n") - femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, mesh_name))[0] + femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, get_meshname()))[0] femmesh_obj.FemMesh = fem_mesh femmesh_obj.Part = geom_obj femmesh_obj.SecondOrderLinear = False