FEM: ccx tools solver, get rid of no longer needed and confusing attribute
This commit is contained in:
committed by
Yorik van Havre
parent
05fbc0f8bf
commit
7d250a5355
@@ -655,7 +655,8 @@ class _CommandFemSolverRun(CommandManager):
|
||||
print("CalculiX failed ccx finished with error {}".format(ret_code))
|
||||
|
||||
self.solver = self.selobj
|
||||
if hasattr(self.solver, "SolverType") and self.solver.SolverType == "FemSolverCalculix":
|
||||
if self.solver.Proxy.Type == 'Fem::FemSolverCalculixCcxTools':
|
||||
print('CalxuliX ccx tools solver!')
|
||||
from femtools import ccxtools
|
||||
self.fea = ccxtools.FemToolsCcx(None, self.solver)
|
||||
self.fea.reset_mesh_purge_results_checked()
|
||||
@@ -666,6 +667,7 @@ class _CommandFemSolverRun(CommandManager):
|
||||
self.fea.finished.connect(load_results)
|
||||
QtCore.QThreadPool.globalInstance().start(self.fea)
|
||||
else:
|
||||
print('Frame work solver!')
|
||||
try:
|
||||
machine = femsolver.run.getMachine(self.solver)
|
||||
except femsolver.run.MustSaveError:
|
||||
|
||||
@@ -35,13 +35,10 @@ class _FemSolverCalculix():
|
||||
"""The Fem::FemSolver's Proxy python type, add solver specific properties
|
||||
"""
|
||||
def __init__(self, obj):
|
||||
self.Type = "Fem::FemSolverCalculix"
|
||||
self.Type = "Fem::FemSolverCalculixCcxTools"
|
||||
self.Object = obj # keep a ref to the DocObj for nonGui usage
|
||||
obj.Proxy = self # link between App::DocumentObject to this object
|
||||
|
||||
obj.addProperty("App::PropertyString", "SolverType", "Base", "Type of the solver", 1) # the 1 set the property to ReadOnly
|
||||
obj.SolverType = 'FemSolverCalculix'
|
||||
|
||||
# fem_prefs = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Fem/General") # not needed ATM
|
||||
ccx_prefs = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Fem/Ccx")
|
||||
|
||||
|
||||
@@ -444,7 +444,7 @@ class FemTest(unittest.TestCase):
|
||||
self.assertEqual('Fem::FemMeshResult', typeOfObj(ObjectsFem.makeMeshResult(doc)))
|
||||
self.assertEqual('Fem::FemResultMechanical', typeOfObj(ObjectsFem.makeResultMechanical(doc)))
|
||||
solverelmer = ObjectsFem.makeSolverElmer(doc)
|
||||
self.assertEqual('Fem::FemSolverCalculix', typeOfObj(ObjectsFem.makeSolverCalculixCcxTools(doc)))
|
||||
self.assertEqual('Fem::FemSolverCalculixCcxTools', typeOfObj(ObjectsFem.makeSolverCalculixCcxTools(doc)))
|
||||
self.assertEqual('Fem::FemSolverObjectCalculix', typeOfObj(ObjectsFem.makeSolverCalculix(doc)))
|
||||
self.assertEqual('Fem::FemSolverObjectElmer', typeOfObj(solverelmer))
|
||||
self.assertEqual('Fem::FemSolverObjectZ88', typeOfObj(ObjectsFem.makeSolverZ88(doc)))
|
||||
@@ -496,7 +496,7 @@ class FemTest(unittest.TestCase):
|
||||
self.assertTrue(isOfTypeNew(ObjectsFem.makeMeshResult(doc), 'Fem::FemMeshResult'))
|
||||
self.assertTrue(isOfTypeNew(ObjectsFem.makeResultMechanical(doc), 'Fem::FemResultMechanical'))
|
||||
solverelmer = ObjectsFem.makeSolverElmer(doc)
|
||||
self.assertTrue(isOfTypeNew(ObjectsFem.makeSolverCalculixCcxTools(doc), 'Fem::FemSolverCalculix'))
|
||||
self.assertTrue(isOfTypeNew(ObjectsFem.makeSolverCalculixCcxTools(doc), 'Fem::FemSolverCalculixCcxTools'))
|
||||
self.assertTrue(isOfTypeNew(ObjectsFem.makeSolverCalculix(doc), 'Fem::FemSolverObjectCalculix'))
|
||||
self.assertTrue(isOfTypeNew(solverelmer, 'Fem::FemSolverObjectElmer'))
|
||||
self.assertTrue(isOfTypeNew(ObjectsFem.makeSolverZ88(doc), 'Fem::FemSolverObjectZ88'))
|
||||
@@ -547,7 +547,7 @@ class FemTest(unittest.TestCase):
|
||||
self.assertTrue(isDerivedFromFem(ObjectsFem.makeMeshResult(doc), 'Fem::FemMeshResult'))
|
||||
self.assertTrue(isDerivedFromFem(ObjectsFem.makeResultMechanical(doc), 'Fem::FemResultMechanical'))
|
||||
solverelmer = ObjectsFem.makeSolverElmer(doc)
|
||||
self.assertTrue(isDerivedFromFem(ObjectsFem.makeSolverCalculixCcxTools(doc), 'Fem::FemSolverCalculix'))
|
||||
self.assertTrue(isDerivedFromFem(ObjectsFem.makeSolverCalculixCcxTools(doc), 'Fem::FemSolverCalculixCcxTools'))
|
||||
self.assertTrue(isDerivedFromFem(ObjectsFem.makeSolverCalculix(doc), 'Fem::FemSolverObjectCalculix'))
|
||||
self.assertTrue(isDerivedFromFem(solverelmer, 'Fem::FemSolverObjectElmer'))
|
||||
self.assertTrue(isDerivedFromFem(ObjectsFem.makeSolverZ88(doc), 'Fem::FemSolverObjectZ88'))
|
||||
|
||||
@@ -295,7 +295,7 @@ class FemToolsCcx(QtCore.QRunnable, QtCore.QObject):
|
||||
if hasattr(self.solver, "MaterialNonlinearity") and self.solver.MaterialNonlinearity == "nonlinear":
|
||||
if not self.materials_nonlinear:
|
||||
message += "Solver is set to nonlinear materials, but there is no nonlinear material in the analysis.\n"
|
||||
if self.solver.SolverType == 'FemSolverCalculix' and self.solver.GeometricalNonlinearity != "nonlinear":
|
||||
if self.solver.Proxy.Type == 'Fem::FemSolverCalculixCcxTools' and self.solver.GeometricalNonlinearity != "nonlinear":
|
||||
# nonlinear geometry --> should be set https://forum.freecadweb.org/viewtopic.php?f=18&t=23101&p=180489#p180489
|
||||
message += "Solver CalculiX triggers nonlinear geometry for nonlinear material, thus it should to be set too.\n"
|
||||
# mesh
|
||||
|
||||
Reference in New Issue
Block a user