From 8e11d7032c6b47564b5a8d0f88ff2e31f0195be4 Mon Sep 17 00:00:00 2001 From: Bernd Hahnebach Date: Sun, 25 Sep 2016 19:36:42 +0100 Subject: [PATCH] FEM: nonlinear materials, add some new needed attributes to ccx solver object --- src/Mod/Fem/_FemSolverCalculix.py | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/src/Mod/Fem/_FemSolverCalculix.py b/src/Mod/Fem/_FemSolverCalculix.py index 10717d91e..954cd690a 100644 --- a/src/Mod/Fem/_FemSolverCalculix.py +++ b/src/Mod/Fem/_FemSolverCalculix.py @@ -51,14 +51,19 @@ class _FemSolverCalculix(): analysis_type = ccx_prefs.GetInt("AnalysisType", 0) obj.AnalysisType = FemToolsCcx.FemToolsCcx.known_analysis_types[analysis_type] - known_geom_nonlinear_types = ["linear", "nonlinear"] - obj.addProperty("App::PropertyEnumeration", "GeometricalNonlinearity", "Fem", "Type of geometrical nonlinearity") - obj.GeometricalNonlinearity = known_geom_nonlinear_types - geom = ccx_prefs.GetBool("NonlinearGeometry", False) - if geom is True: - obj.GeometricalNonlinearity = known_geom_nonlinear_types[1] # nonlinear + choices_geom_nonlinear = ["linear", "nonlinear"] + obj.addProperty("App::PropertyEnumeration", "GeometricalNonlinearity", "Fem", "Set geometrical nonlinearity") + obj.GeometricalNonlinearity = choices_geom_nonlinear + nonlinear_geom = ccx_prefs.GetBool("NonlinearGeometry", False) + if nonlinear_geom is True: + obj.GeometricalNonlinearity = choices_geom_nonlinear[1] # nonlinear else: - obj.GeometricalNonlinearity = known_geom_nonlinear_types[0] # linear + obj.GeometricalNonlinearity = choices_geom_nonlinear[0] # linear + + choices_material_nonlinear = ["linear", "nonlinear"] + obj.addProperty("App::PropertyEnumeration", "MaterialNonlinearity", "Fem", "Set material nonlinearity (needs geometrical nonlinearity)") + obj.MaterialNonlinearity = choices_material_nonlinear + obj.MaterialNonlinearity = choices_material_nonlinear[0] obj.addProperty("App::PropertyIntegerConstraint", "EigenmodesCount", "Fem", "Number of modes for frequency calculations") noe = ccx_prefs.GetInt("EigenmodesCount", 10) @@ -121,6 +126,12 @@ class _FemSolverCalculix(): obj.addProperty("App::PropertyString", "IterationsControlParameterCutb", "Fem", "User defined time incrementation cutbacks control parameter") obj.IterationsControlParameterCutb = p_cutb + obj.addProperty("App::PropertyBool", "IterationsUserDefinedIncrementations", "Fem", "Set to True to switch of the ccx automatic incrementation (ccx parameter DIRECT)") + obj.IterationsUserDefinedIncrementations = False + + obj.addProperty("App::PropertyString", "IterationsUserDefinedTimeStepLength", "Fem", "Set the time step length for the current step, only used if IterationsUserDefinedIncrementations is set to True") + obj.IterationsUserDefinedTimeStepLength = "0.1, 1.0" + known_ccx_solver_types = ["default", "spooles", "iterativescaling", "iterativecholesky"] obj.addProperty("App::PropertyEnumeration", "MatrixSolverType", "Fem", "Type of solver to use") obj.MatrixSolverType = known_ccx_solver_types