FEM: examples, move base setups in separate modules
This commit is contained in:
@@ -31,11 +31,9 @@ setup()
|
||||
|
||||
import FreeCAD
|
||||
|
||||
import Fem
|
||||
import ObjectsFem
|
||||
|
||||
from .manager import get_meshname
|
||||
from .manager import init_doc
|
||||
from .boxanalysis_base import setup_boxanalysisbase
|
||||
|
||||
|
||||
def get_information():
|
||||
@@ -50,59 +48,10 @@ def get_information():
|
||||
}
|
||||
|
||||
|
||||
def setup_base(doc=None, solvertype="ccxtools"):
|
||||
|
||||
# init FreeCAD document
|
||||
if doc is None:
|
||||
doc = init_doc()
|
||||
|
||||
# geometric objects
|
||||
# object name is important in this base setup method
|
||||
# all module which use this base setup, use the object name to find the object
|
||||
geom_obj = doc.addObject("Part::Box", "Box")
|
||||
geom_obj.Height = geom_obj.Width = geom_obj.Length = 10
|
||||
doc.recompute()
|
||||
|
||||
if FreeCAD.GuiUp:
|
||||
geom_obj.ViewObject.Document.activeView().viewAxonometric()
|
||||
geom_obj.ViewObject.Document.activeView().fitAll()
|
||||
|
||||
# analysis
|
||||
analysis = ObjectsFem.makeAnalysis(doc, "Analysis")
|
||||
|
||||
# material
|
||||
material_obj = ObjectsFem.makeMaterialSolid(doc, "MechanicalMaterial")
|
||||
mat = material_obj.Material
|
||||
mat["Name"] = "Steel-Generic"
|
||||
mat["YoungsModulus"] = "200000 MPa"
|
||||
mat["PoissonRatio"] = "0.30"
|
||||
mat["Density"] = "7900 kg/m^3"
|
||||
material_obj.Material = mat
|
||||
analysis.addObject(material_obj)
|
||||
|
||||
# mesh
|
||||
from .meshes.mesh_boxanalysis_tetra10 import create_nodes, create_elements
|
||||
fem_mesh = Fem.FemMesh()
|
||||
control = create_nodes(fem_mesh)
|
||||
if not control:
|
||||
FreeCAD.Console.PrintError("Error on creating nodes.\n")
|
||||
control = create_elements(fem_mesh)
|
||||
if not control:
|
||||
FreeCAD.Console.PrintError("Error on creating elements.\n")
|
||||
femmesh_obj = analysis.addObject(ObjectsFem.makeMeshGmsh(doc, get_meshname()))[0]
|
||||
femmesh_obj.FemMesh = fem_mesh
|
||||
femmesh_obj.Part = geom_obj
|
||||
femmesh_obj.SecondOrderLinear = False
|
||||
femmesh_obj.CharacteristicLengthMin = "8.0 mm"
|
||||
|
||||
doc.recompute()
|
||||
return doc
|
||||
|
||||
|
||||
def setup(doc=None, solvertype="ccxtools"):
|
||||
|
||||
# setup box static, add a fixed, force and a pressure constraint
|
||||
doc = setup_base(doc, solvertype)
|
||||
doc = setup_boxanalysisbase(doc, solvertype)
|
||||
geom_obj = doc.Box
|
||||
analysis = doc.Analysis
|
||||
|
||||
|
||||
Reference in New Issue
Block a user