FEM CalculiX isotropic and kinematic hardening (#12666)

* Update material_mechanicalnonlinear.py

* Update write_femelement_material.py

* Update material_mechanicalnonlinear.py
This commit is contained in:
FEA-eng
2024-03-04 18:11:48 +01:00
committed by GitHub
parent 32d9776f59
commit 8056b2dec1
2 changed files with 11 additions and 4 deletions

View File

@@ -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",

View File

@@ -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")