Skip to content

Commit

Permalink
FEM: solver calculix object, move make def into make objects FEM module
Browse files Browse the repository at this point in the history
  • Loading branch information
berndhahnebach authored and wwmayer committed Feb 21, 2017
1 parent 6ffbac3 commit 4f0f3aa
Show file tree
Hide file tree
Showing 7 changed files with 18 additions and 53 deletions.
1 change: 0 additions & 1 deletion src/Mod/Fem/App/CMakeLists.txt
Expand Up @@ -133,7 +133,6 @@ SET(FemScripts_SRCS
FemMeshGroup.py
FemMeshRegion.py
FemMeshTools.py
FemSolverCalculix.py
FemSolverZ88.py
FemTools.py
FemToolsCcx.py
Expand Down
1 change: 0 additions & 1 deletion src/Mod/Fem/CMakeLists.txt
Expand Up @@ -108,7 +108,6 @@ INSTALL(
importCcxFrdResults.py
FemInputWriterCcx.py
FemToolsCcx.py
FemSolverCalculix.py
_FemSolverCalculix.py
_ViewProviderFemSolverCalculix.py
_CommandSolverCalculix.py
Expand Down
43 changes: 0 additions & 43 deletions src/Mod/Fem/FemSolverCalculix.py

This file was deleted.

12 changes: 12 additions & 0 deletions src/Mod/Fem/ObjectsFem.py
Expand Up @@ -37,6 +37,18 @@ def makeAnalysis(name):
return obj


########## solvers ##########
def makeSolverCalculix(name="CalculiX"):
'''makeSolverCalculix(name): makes a Calculix solver object'''
obj = FreeCAD.ActiveDocument.addObject("Fem::FemSolverObjectPython", name)
import _FemSolverCalculix
_FemSolverCalculix._FemSolverCalculix(obj)
if FreeCAD.GuiUp:
import _ViewProviderFemSolverCalculix
_ViewProviderFemSolverCalculix._ViewProviderFemSolverCalculix(obj.ViewObject)
return obj


########## element geometry definitions ##########
def makeBeamSection(sectiontype='Rectangular', width=10.0, height=25.0, name="BeamSection"):
'''makeBeamSection([width], [height], [name]): creates an beamsection object to define a cross section'''
Expand Down
5 changes: 2 additions & 3 deletions src/Mod/Fem/TestFem.py
Expand Up @@ -28,7 +28,6 @@
import FemToolsCcx
import FreeCAD
import ObjectsFem
import FemSolverCalculix
import FemMaterial
import csv
import tempfile
Expand Down Expand Up @@ -86,7 +85,7 @@ def create_new_analysis(self):
self.active_doc.recompute()

def create_new_solver(self):
self.solver_object = FemSolverCalculix.makeFemSolverCalculix('CalculiX')
self.solver_object = ObjectsFem.makeSolverCalculix('CalculiX')
self.solver_object.GeometricalNonlinearity = 'linear'
self.solver_object.ThermoMechSteadyState = False
self.solver_object.MatrixSolverType = 'default'
Expand Down Expand Up @@ -308,7 +307,7 @@ def create_new_analysis(self):
self.active_doc.recompute()

def create_new_solver(self):
self.solver_object = FemSolverCalculix.makeFemSolverCalculix('CalculiX')
self.solver_object = ObjectsFem.makeSolverCalculix('CalculiX')
self.solver_object.AnalysisType = 'thermomech'
self.solver_object.GeometricalNonlinearity = 'linear'
self.solver_object.ThermoMechSteadyState = True
Expand Down
3 changes: 1 addition & 2 deletions src/Mod/Fem/_CommandAnalysis.py
Expand Up @@ -47,10 +47,9 @@ def Activated(self):
FreeCAD.ActiveDocument.openTransaction("Create Analysis")
FreeCADGui.addModule("FemGui")
FreeCADGui.addModule("ObjectsFem")
FreeCADGui.addModule("FemSolverCalculix")
FreeCADGui.doCommand("ObjectsFem.makeAnalysis('Analysis')")
FreeCADGui.doCommand("FemGui.setActiveAnalysis(App.activeDocument().ActiveObject)")
FreeCADGui.doCommand("FemSolverCalculix.makeFemSolverCalculix('CalculiX')")
FreeCADGui.doCommand("ObjectsFem.makeSolverCalculix('CalculiX')")
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [App.activeDocument().ActiveObject]")
sel = FreeCADGui.Selection.getSelection()
if (len(sel) == 1):
Expand Down
6 changes: 3 additions & 3 deletions src/Mod/Fem/_CommandSolverCalculix.py
Expand Up @@ -50,13 +50,13 @@ def Activated(self):
if hasattr(m, "Proxy") and m.Proxy.Type == "FemMaterialMechanicalNonlinear":
has_nonlinear_material_obj = True
FreeCAD.ActiveDocument.openTransaction("Create SolverCalculix")
FreeCADGui.addModule("FemSolverCalculix")
FreeCADGui.addModule("ObjectsFem")
if has_nonlinear_material_obj:
FreeCADGui.doCommand("solver = FemSolverCalculix.makeFemSolverCalculix()")
FreeCADGui.doCommand("solver = ObjectsFem.makeSolverCalculix()")
FreeCADGui.doCommand("solver.MaterialNonlinearity = 'nonlinear'")
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [solver]")
else:
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [FemSolverCalculix.makeFemSolverCalculix()]")
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [ObjectsFem.makeSolverCalculix()]")


FreeCADGui.addCommand('Fem_SolverCalculix', _CommandSolverCalculix())

0 comments on commit 4f0f3aa

Please sign in to comment.