FEM: calculix writer, move mesh data getter outside file writing

This commit is contained in:
Bernd Hahnebach
2021-07-11 10:44:03 +02:00
parent 3674be37a4
commit 54e2007e32

View File

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