From cac66de2a77e4122260737061eb7b2c6c68c783e Mon Sep 17 00:00:00 2001 From: UR-0 Date: Mon, 13 Jan 2020 18:05:32 +0100 Subject: [PATCH] FEM: extend contact constraint to support shell elements --- src/Mod/Fem/femsolver/calculix/writer.py | 26 ++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/src/Mod/Fem/femsolver/calculix/writer.py b/src/Mod/Fem/femsolver/calculix/writer.py index def8e31734..240ee35191 100644 --- a/src/Mod/Fem/femsolver/calculix/writer.py +++ b/src/Mod/Fem/femsolver/calculix/writer.py @@ -608,9 +608,31 @@ class FemInputWriterCcx(writerbase.FemInputWriter): else: name = "IND" + str(obj) f.write("*SURFACE, NAME =" + name + "\n") + v = self.mesh_object.FemMesh.getccxVolumesByFace(ref_shape) - for i in v: - f.write("{},S{}\n".format(i[0], i[1])) + if len(v) > 0: + # volume elements found + FreeCAD.Console.PrintLog( + "{}, surface {}, {} touching volume elements found\n" + .format(contact_obj.Label, name, len(v)) + ) + for i in v: + f.write("{},S{}\n".format(i[0], i[1])) + else: + # try shell elements + v = self.mesh_object.FemMesh.getFacesByFace(ref_shape) + if len(v) > 0: + FreeCAD.Console.PrintLog( + "{}, surface {}, {} touching shell elements found\n" + .format(contact_obj.Label, name, len(v)) + ) + for i in v: + f.write("{},S2\n".format(i)) + else: + FreeCAD.Console.PrintError( + "{}, surface {}, Error: Neither volume nor shell elements found!\n" + .format(contact_obj.Label, name) + ) def write_node_sets_constraints_transform(self, f): # get nodes