From 54e2007e32dfc7592b4603d7ee6566e741d80fc7 Mon Sep 17 00:00:00 2001 From: Bernd Hahnebach Date: Sun, 11 Jul 2021 10:44:03 +0200 Subject: [PATCH] FEM: calculix writer, move mesh data getter outside file writing --- src/Mod/Fem/femsolver/calculix/writer.py | 62 ++++++++++++++++++------ 1 file changed, 47 insertions(+), 15 deletions(-) diff --git a/src/Mod/Fem/femsolver/calculix/writer.py b/src/Mod/Fem/femsolver/calculix/writer.py index ae9958f454..427ac1c4c5 100644 --- a/src/Mod/Fem/femsolver/calculix/writer.py +++ b/src/Mod/Fem/femsolver/calculix/writer.py @@ -130,6 +130,7 @@ class FemInputWriterCcx(writerbase.FemInputWriter): "writerbaseCcx --> self.file_name --> {}\n".format(self.file_name) ) + self.get_mesh_data() self.write_file() FreeCAD.Console.PrintMessage( @@ -144,10 +145,42 @@ class FemInputWriterCcx(writerbase.FemInputWriter): ) return "" + def get_mesh_data(self): + FreeCAD.Console.PrintMessage( + "Get mesh data for " + "node sets (groups), surface sets (groups) and element sets (groups)\n" + ) + + # materials and element geometry element sets getter + self.get_element_sets_material_and_femelement_geometry() + + # constraints element sets getter + self.get_constraints_centrif_elements() + + # constraints node sets getter + self.get_constraints_fixed_nodes() + self.get_constraints_displacement_nodes() + self.get_constraints_planerotation_nodes() + + # constraints suface sets getter + self.get_constraints_contact_faces() + self.get_constraints_tie_faces() + self.get_constraints_sectionprint_faces() + self.get_constraints_transform_nodes() + self.get_constraints_temperature_nodes() + + # constraints sets with constraint data + self.get_constraints_force_nodeloads() + self.get_constraints_pressure_faces() + self.get_constraints_heatflux_faces() + def write_file(self): + FreeCAD.Console.PrintMessage("Start writing input file\n") if self.solver_obj.SplitInputWriter is True: + FreeCAD.Console.PrintMessage("Splitted input file.\n") self.split_inpfile = True else: + FreeCAD.Console.PrintMessage("One monster input file.\n") self.split_inpfile = False # mesh @@ -286,7 +319,8 @@ class FemInputWriterCcx(writerbase.FemInputWriter): return # get the sets - sets_getter_method() + if sets_getter_method is not None: + sets_getter_method() # write sets to file f.write("\n{}\n".format(59 * "*")) @@ -343,7 +377,7 @@ class FemInputWriterCcx(writerbase.FemInputWriter): f, femobjs=self.fixed_objects, analysis_types=con_fixed.get_analysis_types(), - sets_getter_method=self.get_constraints_fixed_nodes, + sets_getter_method=None, write_name=con_fixed.get_sets_name(), sets_writer_method=con_fixed.write_nodes, caller_method_name=sys._getframe().f_code.co_name, @@ -366,7 +400,7 @@ class FemInputWriterCcx(writerbase.FemInputWriter): f, femobjs=self.displacement_objects, analysis_types=con_displacement.get_analysis_types(), - sets_getter_method=self.get_constraints_displacement_nodes, + sets_getter_method=None, write_name=con_displacement.get_sets_name(), sets_writer_method=con_displacement.write_nodes, caller_method_name=sys._getframe().f_code.co_name, @@ -390,7 +424,7 @@ class FemInputWriterCcx(writerbase.FemInputWriter): f, femobjs=self.planerotation_objects, analysis_types=con_planerotation.get_analysis_types(), - sets_getter_method=self.get_constraints_planerotation_nodes, + sets_getter_method=None, write_name=con_planerotation.get_sets_name(), sets_writer_method=con_planerotation.write_nodes, caller_method_name=sys._getframe().f_code.co_name, @@ -413,7 +447,7 @@ class FemInputWriterCcx(writerbase.FemInputWriter): f, femobjs=self.contact_objects, analysis_types=con_contact.get_analysis_types(), - sets_getter_method=self.get_constraints_contact_faces, + sets_getter_method=None, write_name=con_contact.get_sets_name(), sets_writer_method=con_contact.write_surfacefaces, caller_method_name=sys._getframe().f_code.co_name, @@ -436,7 +470,7 @@ class FemInputWriterCcx(writerbase.FemInputWriter): f, femobjs=self.tie_objects, analysis_types=con_tie.get_analysis_types(), - sets_getter_method=self.get_constraints_tie_faces, + sets_getter_method=None, write_name=con_tie.get_sets_name(), sets_writer_method=con_tie.write_surfacefaces, caller_method_name=sys._getframe().f_code.co_name, @@ -459,7 +493,7 @@ class FemInputWriterCcx(writerbase.FemInputWriter): f, femobjs=self.sectionprint_objects, analysis_types=con_sectionprint.get_analysis_types(), - sets_getter_method=self.get_constraints_sectionprint_faces, + sets_getter_method=None, write_name=con_sectionprint.get_sets_name(), sets_writer_method=con_sectionprint.write_surfacefaces, caller_method_name=sys._getframe().f_code.co_name, @@ -482,7 +516,7 @@ class FemInputWriterCcx(writerbase.FemInputWriter): f, femobjs=self.transform_objects, analysis_types=con_transform.get_analysis_types(), - sets_getter_method=self.get_constraints_transform_nodes, + sets_getter_method=None, write_name=con_transform.get_sets_name(), sets_writer_method=con_transform.write_nodes, caller_method_name=sys._getframe().f_code.co_name, @@ -505,7 +539,7 @@ class FemInputWriterCcx(writerbase.FemInputWriter): f, femobjs=self.temperature_objects, analysis_types=con_temperature.get_analysis_types(), - sets_getter_method=self.get_constraints_temperature_nodes, + sets_getter_method=None, write_name=con_temperature.get_sets_name(), sets_writer_method=con_temperature.write_nodes, caller_method_name=sys._getframe().f_code.co_name, @@ -580,7 +614,7 @@ class FemInputWriterCcx(writerbase.FemInputWriter): f, femobjs=self.centrif_objects, analysis_types=con_centrif.get_analysis_types(), - sets_getter_method=self.get_constraints_centrif_elements, + sets_getter_method=None, write_name=con_centrif.get_sets_name(), sets_writer_method=con_centrif.write_elements, caller_method_name=sys._getframe().f_code.co_name, @@ -603,7 +637,7 @@ class FemInputWriterCcx(writerbase.FemInputWriter): f, femobjs=self.force_objects, analysis_types=con_force.get_analysis_types(), - sets_getter_method=self.get_constraints_force_nodeloads, + sets_getter_method=None, write_name=con_force.get_sets_name(), sets_writer_method=con_force.write_nodeloads, caller_method_name=sys._getframe().f_code.co_name, @@ -617,7 +651,7 @@ class FemInputWriterCcx(writerbase.FemInputWriter): f, femobjs=self.pressure_objects, analysis_types=con_pressure.get_analysis_types(), - sets_getter_method=self.get_constraints_pressure_faces, + sets_getter_method=None, write_name=con_pressure.get_sets_name(), sets_writer_method=con_pressure.write_pressure, caller_method_name=sys._getframe().f_code.co_name, @@ -630,7 +664,7 @@ class FemInputWriterCcx(writerbase.FemInputWriter): f, femobjs=self.heatflux_objects, analysis_types=con_heatflux.get_analysis_types(), - sets_getter_method=self.get_constraints_heatflux_faces, + sets_getter_method=None, write_name=con_heatflux.get_sets_name(), sets_writer_method=con_heatflux.write_heatflux, caller_method_name=sys._getframe().f_code.co_name, @@ -1023,8 +1057,6 @@ class FemInputWriterCcx(writerbase.FemInputWriter): # def write_element_sets_material_and_femelement_geometry(self, f): def write_element_sets_material_and_femelement_type(self, f): - self.get_element_sets_material_and_femelement_geometry() - # write ccx_elsets to file f.write("\n***********************************************************\n") f.write("** Element sets for materials and FEM element type (solid, shell, beam, fluid)\n")