diff --git a/src/Mod/Fem/femobjects/material_mechanicalnonlinear.py b/src/Mod/Fem/femobjects/material_mechanicalnonlinear.py index e0339aa881..a616b3410d 100644 --- a/src/Mod/Fem/femobjects/material_mechanicalnonlinear.py +++ b/src/Mod/Fem/femobjects/material_mechanicalnonlinear.py @@ -81,7 +81,7 @@ class MaterialMechanicalNonlinear(base_fempythonobject.BaseFemPythonObject): ) if not hasattr(obj, "MaterialModelNonlinearity"): - choices_nonlinear_material_models = ["simple hardening"] + choices_nonlinear_material_models = ["isotropic hardening","kinematic hardening"] obj.addProperty( "App::PropertyEnumeration", "MaterialModelNonlinearity", @@ -91,6 +91,11 @@ class MaterialMechanicalNonlinear(base_fempythonobject.BaseFemPythonObject): obj.MaterialModelNonlinearity = choices_nonlinear_material_models obj.MaterialModelNonlinearity = choices_nonlinear_material_models[0] + if hasattr(obj, "MaterialModelNonlinearity") and obj.MaterialModelNonlinearity == "simple hardening": + updated_choices_nonlinear_material_models = ["isotropic hardening", "kinematic hardening"] + obj.MaterialModelNonlinearity = updated_choices_nonlinear_material_models + obj.MaterialModelNonlinearity = updated_choices_nonlinear_material_models[0] + if not hasattr(obj, "YieldPoints"): obj.addProperty( "App::PropertyStringList", diff --git a/src/Mod/Fem/femsolver/calculix/write_femelement_material.py b/src/Mod/Fem/femsolver/calculix/write_femelement_material.py index 6c538e15be..7f35954fd1 100644 --- a/src/Mod/Fem/femsolver/calculix/write_femelement_material.py +++ b/src/Mod/Fem/femsolver/calculix/write_femelement_material.py @@ -111,8 +111,10 @@ def write_femelement_material(f, ccxwriter): # femobj --> dict, FreeCAD document object is nlfemobj["Object"] nl_mat_obj = nlfemobj["Object"] if nl_mat_obj.LinearBaseMaterial == mat_obj: - if nl_mat_obj.MaterialModelNonlinearity == "simple hardening": + if nl_mat_obj.MaterialModelNonlinearity == "isotropic hardening": f.write("*PLASTIC\n") - for yield_point in nl_mat_obj.YieldPoints: - f.write("{}\n".format(yield_point)) + else: + f.write("*PLASTIC, HARDENING=KINEMATIC\n") + for yield_point in nl_mat_obj.YieldPoints: + f.write("{}\n".format(yield_point)) f.write("\n")