FEM: calculix writer, move constraint writing methodes

This commit is contained in:
Bernd Hahnebach
2021-07-11 23:14:49 +02:00
parent 3e7899b7f8
commit a154d3b93f

View File

@@ -182,63 +182,65 @@ class FemInputWriterCcx(writerbase.FemInputWriter):
self.split_inpfile = False
# mesh
inpfile_main = self.write_mesh()
inpfile = self.write_mesh()
# element sets for materials and element geometry
# self.write_element_sets_material_and_femelement_geometry(inpfile_main)
self.write_element_sets_material_and_femelement_type(inpfile_main)
# self.write_element_sets_material_and_femelement_geometry(inpfile)
self.write_element_sets_material_and_femelement_type(inpfile)
if self.fluidsection_objects:
# some fluidsection objs need special treatment, ccx_elsets are needed for this
inpfile_main = self.handle_fluidsection_liquid_inlet_outlet(inpfile_main)
inpfile = self.handle_fluidsection_liquid_inlet_outlet(inpfile)
# element sets constraints
self.write_element_sets_constraints_centrif(inpfile_main)
self.write_constraints_sets(inpfile, self.centrif_objects, con_centrif)
# node sets and surface sets
self.write_node_sets_constraints_fixed(inpfile_main)
self.write_node_sets_constraints_displacement(inpfile_main)
self.write_node_sets_constraints_planerotation(inpfile_main)
self.write_surfaces_constraints_contact(inpfile_main)
self.write_surfaces_constraints_tie(inpfile_main)
self.write_surfaces_constraints_sectionprint(inpfile_main)
self.write_node_sets_constraints_transform(inpfile_main)
self.write_node_sets_constraints_temperature(inpfile_main)
# node sets
self.write_constraints_sets(inpfile, self.fixed_objects, con_fixed)
self.write_constraints_sets(inpfile, self.displacement_objects, con_displacement)
self.write_constraints_sets(inpfile, self.planerotation_objects, con_planerotation)
self.write_constraints_sets(inpfile, self.transform_objects, con_transform)
self.write_constraints_sets(inpfile, self.temperature_objects, con_temperature)
# surface sets
self.write_constraints_sets(inpfile, self.contact_objects, con_contact)
self.write_constraints_sets(inpfile, self.tie_objects, con_tie)
self.write_constraints_sets(inpfile, self.sectionprint_objects, con_sectionprint)
# materials and fem element types
self.write_materials(inpfile_main)
self.write_constraints_initialtemperature(inpfile_main)
# self.write_femelement_geometry(inpfile_main)
self.write_femelementsets(inpfile_main)
self.write_materials(inpfile)
self.write_constraints_initialtemperature(inpfile)
# self.write_femelement_geometry(inpfile)
self.write_femelementsets(inpfile)
# constraints independent from steps
self.write_constraints_planerotation(inpfile_main)
self.write_constraints_contact(inpfile_main)
self.write_constraints_tie(inpfile_main)
self.write_constraints_transform(inpfile_main)
self.write_constraints_data(inpfile, self.planerotation_objects, con_planerotation)
self.write_constraints_data(inpfile, self.contact_objects, con_contact)
self.write_constraints_data(inpfile, self.tie_objects, con_tie)
self.write_constraints_data(inpfile, self.transform_objects, con_transform)
# step begin
self.write_step_begin(inpfile_main)
self.write_step_begin(inpfile)
# constraints dependent from steps
self.write_constraints_fixed(inpfile_main)
self.write_constraints_displacement(inpfile_main)
self.write_constraints_sectionprint(inpfile_main)
self.write_constraints_selfweight(inpfile_main)
self.write_constraints_centrif(inpfile_main)
self.write_constraints_force(inpfile_main)
self.write_constraints_pressure(inpfile_main)
self.write_constraints_temperature(inpfile_main)
self.write_constraints_heatflux(inpfile_main)
self.write_constraints_fluidsection(inpfile_main)
self.write_constraints_data(inpfile, self.fixed_objects, con_fixed)
self.write_constraints_data(inpfile, self.displacement_objects, con_displacement)
self.write_constraints_data(inpfile, self.sectionprint_objects, con_sectionprint)
self.write_constraints_selfweight(inpfile)
self.write_constraints_data(inpfile, self.centrif_objects, con_centrif)
self.write_constraints_sets(inpfile, self.force_objects, con_force)
self.write_constraints_sets(inpfile, self.pressure_objects, con_pressure)
self.write_constraints_data(inpfile, self.temperature_objects, con_temperature)
self.write_constraints_sets(inpfile, self.heatflux_objects, con_heatflux)
self.write_constraints_fluidsection(inpfile)
# output and step end
self.write_outputs_types(inpfile_main)
self.write_step_end(inpfile_main)
self.write_outputs_types(inpfile)
self.write_step_end(inpfile)
# footer
self.write_footer(inpfile_main)
inpfile_main.close()
self.write_footer(inpfile)
inpfile.close()
# ********************************************************************************************
# mesh
@@ -361,70 +363,6 @@ class FemInputWriterCcx(writerbase.FemInputWriter):
if write_after != "":
f.write(write_after)
# ********************************************************************************************
# constraints fixed
def write_node_sets_constraints_fixed(self, f):
self.write_constraints_sets(f, self.fixed_objects, con_fixed)
def write_constraints_fixed(self, f):
self.write_constraints_data(f, self.fixed_objects, con_fixed)
# ********************************************************************************************
# constraints displacement
def write_node_sets_constraints_displacement(self, f):
self.write_constraints_sets(f, self.displacement_objects, con_displacement)
def write_constraints_displacement(self, f):
self.write_constraints_data(f, self.displacement_objects, con_displacement)
# ********************************************************************************************
# constraints planerotation
def write_node_sets_constraints_planerotation(self, f):
self.write_constraints_sets(f, self.planerotation_objects, con_planerotation)
def write_constraints_planerotation(self, f):
self.write_constraints_data(f, self.planerotation_objects, con_planerotation)
# ********************************************************************************************
# constraints contact
def write_surfaces_constraints_contact(self, f):
self.write_constraints_sets(f, self.contact_objects, con_contact)
def write_constraints_contact(self, f):
self.write_constraints_data(f, self.contact_objects, con_contact)
# ********************************************************************************************
# constraints tie
def write_surfaces_constraints_tie(self, f):
self.write_constraints_sets(f, self.tie_objects, con_tie)
def write_constraints_tie(self, f):
self.write_constraints_data(f, self.tie_objects, con_tie)
# ********************************************************************************************
# constraints sectionprint
def write_surfaces_constraints_sectionprint(self, f):
self.write_constraints_sets(f, self.sectionprint_objects, con_sectionprint)
def write_constraints_sectionprint(self, f):
self.write_constraints_data(f, self.sectionprint_objects, con_sectionprint)
# ********************************************************************************************
# constraints transform
def write_node_sets_constraints_transform(self, f):
self.write_constraints_sets(f, self.transform_objects, con_transform)
def write_constraints_transform(self, f):
self.write_constraints_data(f, self.transform_objects, con_transform)
# ********************************************************************************************
# constraints temperature
def write_node_sets_constraints_temperature(self, f):
self.write_constraints_sets(f, self.temperature_objects, con_temperature)
def write_constraints_temperature(self, f):
self.write_constraints_data(f, self.temperature_objects, con_temperature)
# ********************************************************************************************
# constraints initialtemperature
def write_constraints_initialtemperature(self, f):
@@ -475,35 +413,12 @@ class FemInputWriterCcx(writerbase.FemInputWriter):
# different element sets for different density
# are written in the material element sets already
# ********************************************************************************************
# constraints centrif
def write_element_sets_constraints_centrif(self, f):
self.write_constraints_sets(f, self.centrif_objects, con_centrif)
def write_constraints_centrif(self, f):
self.write_constraints_data(f, self.centrif_objects, con_centrif)
# ********************************************************************************************
# constraints force
def write_constraints_force(self, f):
self.write_constraints_sets(f, self.force_objects, con_force)
# ********************************************************************************************
# constraints pressure
def write_constraints_pressure(self, f):
self.write_constraints_sets(f, self.pressure_objects, con_pressure)
# ********************************************************************************************
# constraints heatflux
def write_constraints_heatflux(self, f):
self.write_constraints_sets(f, self.heatflux_objects, con_heatflux)
# ********************************************************************************************
# handle elements for constraints fluidsection with Liquid Inlet or Outlet
# belongs to write_constraints_fluidsection, should be next method
# leave the constraints fluidsection code as the last constraint method in this module
# as it is none standard constraint method compared to all other constraints
def handle_fluidsection_liquid_inlet_outlet(self, inpfile_main):
def handle_fluidsection_liquid_inlet_outlet(self, inpfile):
# Fluid sections:
# fluidsection Liquid inlet outlet objs requires special element definition
@@ -582,15 +497,15 @@ class FemInputWriterCcx(writerbase.FemInputWriter):
if is_fluidsection_inoutlet_setnames_possible(self.ccx_elsets) is not None:
# it is not distinguished if split input file
# for split input file the main file is just closed and reopend even if not needed
inpfile_main.close()
inpfile.close()
meshtools.use_correct_fluidinout_ele_def(
self.FluidInletoutlet_ele,
self.femmesh_file,
self.fluid_inout_nodes_file
)
inpfile_main = codecs.open(self.file_name, "a", encoding="utf-8")
inpfile = codecs.open(self.file_name, "a", encoding="utf-8")
return inpfile_main
return inpfile
# ********************************************************************************************
# constraints fluidsection