From 18acfabea60811dacbc527708432fcabd0c7f1c4 Mon Sep 17 00:00:00 2001 From: FEA-eng <59876896+FEA-eng@users.noreply.github.com> Date: Mon, 14 Jul 2025 18:03:43 +0200 Subject: [PATCH] FEM: Add thermal contact with CalculiX (#22121) --- src/Mod/Fem/App/FemConstraintContact.cpp | 10 ++++++++++ src/Mod/Fem/App/FemConstraintContact.h | 2 ++ .../Fem/femsolver/calculix/write_constraint_contact.py | 5 +++++ 3 files changed, 17 insertions(+) diff --git a/src/Mod/Fem/App/FemConstraintContact.cpp b/src/Mod/Fem/App/FemConstraintContact.cpp index 51c74389b6..126365f744 100644 --- a/src/Mod/Fem/App/FemConstraintContact.cpp +++ b/src/Mod/Fem/App/FemConstraintContact.cpp @@ -58,6 +58,16 @@ ConstraintContact::ConstraintContact() "ConstraintContact", App::PropertyType(App::Prop_None), "Stick slope"); + ADD_PROPERTY_TYPE(EnableThermalContact, + (false), + "ConstraintContact", + App::PropertyType(App::Prop_None), + "Enable thermal contact"); + ADD_PROPERTY_TYPE(ThermalContactConductance, + (std::vector {}), + "ConstraintContact", + App::PropertyType(App::Prop_None), + "Thermal contact conductance"); } App::DocumentObjectExecReturn* ConstraintContact::execute() diff --git a/src/Mod/Fem/App/FemConstraintContact.h b/src/Mod/Fem/App/FemConstraintContact.h index c2cc575b30..4e7c26cab5 100644 --- a/src/Mod/Fem/App/FemConstraintContact.h +++ b/src/Mod/Fem/App/FemConstraintContact.h @@ -51,6 +51,8 @@ public: App::PropertyBool Friction; App::PropertyFloat FrictionCoefficient; App::PropertyStiffnessDensity StickSlope; + App::PropertyBool EnableThermalContact; + App::PropertyStringList ThermalContactConductance; // etc /* */ diff --git a/src/Mod/Fem/femsolver/calculix/write_constraint_contact.py b/src/Mod/Fem/femsolver/calculix/write_constraint_contact.py index fca26b40a1..99135ada6e 100644 --- a/src/Mod/Fem/femsolver/calculix/write_constraint_contact.py +++ b/src/Mod/Fem/femsolver/calculix/write_constraint_contact.py @@ -89,3 +89,8 @@ def write_constraint(f, femobj, contact_obj, ccxwriter): friction = contact_obj.FrictionCoefficient stick = contact_obj.StickSlope.getValueAs("MPa/mm").Value f.write(f"{friction:.13G}, {stick:.13G}\n") + if contact_obj.EnableThermalContact: + f.write("*GAP CONDUCTANCE\n") + for value in contact_obj.ThermalContactConductance: + f.write(f"{value}\n") + f.write("\n")