Skip to content

Commit

Permalink
FEM: ccx writer, splitted writer, make include names class attributes
Browse files Browse the repository at this point in the history
  • Loading branch information
berndhahnebach committed Apr 22, 2020
1 parent 0362963 commit 028926e
Showing 1 changed file with 29 additions and 28 deletions.
57 changes: 29 additions & 28 deletions src/Mod/Fem/femsolver/calculix/writer.py
Expand Up @@ -60,12 +60,13 @@ def __init__(
dir_name
)
from os.path import join
self.main_file_name = self.mesh_object.Name + ".inp"
self.file_name = join(self.dir_name, self.main_file_name)
self.mesh_name = self.mesh_object.Name
self.include = join(self.dir_name, self.mesh_name)
self.file_name = self.include + ".inp"
self.FluidInletoutlet_ele = []
self.fluid_inout_nodes_file = join(
self.dir_name,
"{}_inout_nodes.txt".format(self.mesh_object.Name)
"{}_inout_nodes.txt".format(self.mesh_name)
)
from femtools import constants
from FreeCAD import Units
Expand All @@ -75,11 +76,14 @@ def write_calculix_input_file(self):
timestart = time.process_time()
FreeCAD.Console.PrintMessage("Start writing CalculiX input file\n")
FreeCAD.Console.PrintMessage("Write ccx input file to: {}\n".format(self.file_name))
FreeCAD.Console.PrintLog(
"writerbaseCcx --> self.mesh_name --> " + self.mesh_name + "\n"
)
FreeCAD.Console.PrintLog(
"writerbaseCcx --> self.dir_name --> " + self.dir_name + "\n"
)
FreeCAD.Console.PrintLog(
"writerbaseCcx --> self.main_file_name --> " + self.main_file_name + "\n"
"writerbaseCcx --> self.include --> " + self.mesh_name + "\n"
)
FreeCAD.Console.PrintLog(
"writerbaseCcx --> self.file_name --> " + self.file_name + "\n"
Expand Down Expand Up @@ -172,23 +176,20 @@ def write_calculix_one_input_file(self):

def write_calculix_splitted_input_file(self):

name = self.file_name[:-4]
include_name = self.main_file_name[:-4]

# mesh
inpfileMain = open(self.file_name, "w", encoding="utf-8")
inpfileMain.write("***********************************************************\n")
inpfileMain.write("** Nodes and Elements\n")
inpfileMain.write("** written by femmesh.writeABAQUS\n")
inpfileMain.write("*INCLUDE,INPUT=" + include_name + "_Node_Elem_sets.inp \n")
self.femmesh.writeABAQUS(name + "_Node_Elem_sets.inp", 1, False)
inpfileNodesElem = open(name + "_Node_Elem_sets.inp", "a")
inpfileMain.write("*INCLUDE,INPUT=" + self.mesh_name + "_Node_Elem_sets.inp \n")
self.femmesh.writeABAQUS(self.include + "_Node_Elem_sets.inp", 1, False)
inpfileNodesElem = open(self.include + "_Node_Elem_sets.inp", "a")
inpfileNodesElem.write("\n***********************************************************\n")
inpfileNodesElem.close()

# Check to see if fluid sections are in analysis and use D network element type
if self.fluidsection_objects:
meshtools.write_D_network_element_to_inputfile(name + "_Node_Elem_sets.inp")
meshtools.write_D_network_element_to_inputfile(self.include + "_Node_Elem_sets.inp")

# element and material sets
self.write_element_sets_material_and_femelement_type(inpfileMain)
Expand All @@ -197,7 +198,7 @@ def write_calculix_splitted_input_file(self):
if self.fixed_objects or self.displacement_objects or self.planerotation_objects:
inpfileMain.write("\n***********************************************************\n")
inpfileMain.write("** Node sets for constraints\n")
inpfileNodes = open(name + "_Node_sets.inp", "w")
inpfileNodes = open(self.include + "_Node_sets.inp", "w")
if self.fixed_objects:
inpfileMain.write("** written by write_node_sets_constraints_fixed\n")
self.write_node_sets_constraints_fixed(inpfileNodes)
Expand All @@ -207,42 +208,42 @@ def write_calculix_splitted_input_file(self):
if self.planerotation_objects:
inpfileMain.write("** written by write_node_sets_constraints_planerotation\n")
self.write_node_sets_constraints_planerotation(inpfileNodes)
inpfileMain.write("*INCLUDE,INPUT=" + include_name + "_Node_sets.inp \n")
inpfileMain.write("*INCLUDE,INPUT=" + self.mesh_name + "_Node_sets.inp \n")
inpfileNodes.close()

if self.contact_objects:
inpfileMain.write("\n***********************************************************\n")
inpfileMain.write("** Surfaces for contact constraint\n")
inpfileMain.write("** written by write_surfaces_constraints_contact\n")
inpfileMain.write("*INCLUDE,INPUT=" + include_name + "_Surface_Contact.inp \n")
inpfileContact = open(name + "_Surface_Contact.inp", "w")
inpfileMain.write("*INCLUDE,INPUT=" + self.mesh_name + "_Surface_Contact.inp \n")
inpfileContact = open(self.include + "_Surface_Contact.inp", "w")
self.write_surfaces_constraints_contact(inpfileContact)
inpfileContact.close()

if self.tie_objects:
inpfileMain.write("\n***********************************************************\n")
inpfileMain.write("** Surfaces for tie constraint\n")
inpfileMain.write("** written by write_surfaces_constraints_tie\n")
inpfileMain.write("*INCLUDE,INPUT=" + include_name + "_Surface_Tie.inp \n")
inpfileTie = open(name + "_Surface_Tie.inp", "w")
inpfileMain.write("*INCLUDE,INPUT=" + self.mesh_name + "_Surface_Tie.inp \n")
inpfileTie = open(self.include + "_Surface_Tie.inp", "w")
self.write_surfaces_constraints_tie(inpfileTie)
inpfileTie.close()

if self.transform_objects:
inpfileMain.write("\n***********************************************************\n")
inpfileMain.write("** Node sets for transform constraint\n")
inpfileMain.write("** written by write_node_sets_constraints_transform\n")
inpfileMain.write("*INCLUDE,INPUT=" + include_name + "_Node_Transform.inp \n")
inpfileTransform = open(name + "_Node_Transform.inp", "w")
inpfileMain.write("*INCLUDE,INPUT=" + self.mesh_name + "_Node_Transform.inp \n")
inpfileTransform = open(self.include + "_Node_Transform.inp", "w")
self.write_node_sets_constraints_transform(inpfileTransform)
inpfileTransform.close()

if self.analysis_type == "thermomech" and self.temperature_objects:
inpfileMain.write("\n***********************************************************\n")
inpfileMain.write("** Node sets for temperature constraint\n")
inpfileMain.write("** written by write_node_sets_constraints_temperature\n")
inpfileMain.write("*INCLUDE,INPUT=" + include_name + "_Node_Temp.inp \n")
inpfileNodeTemp = open(name + "_Node_Temp.inp", "w")
inpfileMain.write("*INCLUDE,INPUT=" + self.mesh_name + "_Node_Temp.inp \n")
inpfileNodeTemp = open(self.include + "_Node_Temp.inp", "w")
self.write_node_sets_constraints_temperature(inpfileNodeTemp)
inpfileNodeTemp.close()

Expand All @@ -254,7 +255,7 @@ def write_calculix_splitted_input_file(self):
if self.fluidsection_objects:
if is_fluid_section_inlet_outlet(self.ccx_elsets) is True:
meshtools.use_correct_fluidinout_ele_def(
self.FluidInletoutlet_ele, name + "_Node_Elem_sets.inp",
self.FluidInletoutlet_ele, self.mesh_name + "_Node_Elem_sets.inp",
self.fluid_inout_nodes_file
)

Expand All @@ -276,17 +277,17 @@ def write_calculix_splitted_input_file(self):
inpfileMain.write("\n***********************************************************\n")
inpfileMain.write("** Node loads\n")
inpfileMain.write("** written by write_constraints_force\n")
inpfileMain.write("*INCLUDE,INPUT=" + include_name + "_Node_Force.inp \n")
inpfileForce = open(name + "_Node_Force.inp", "w")
inpfileMain.write("*INCLUDE,INPUT=" + self.mesh_name + "_Node_Force.inp \n")
inpfileForce = open(self.include + "_Node_Force.inp", "w")
self.write_constraints_force(inpfileForce)
inpfileForce.close()

if self.pressure_objects:
inpfileMain.write("\n***********************************************************\n")
inpfileMain.write("** Element + CalculiX face + load in [MPa]\n")
inpfileMain.write("** written by write_constraints_pressure\n")
inpfileMain.write("*INCLUDE,INPUT=" + include_name + "_Pressure.inp \n")
inpfilePressure = open(name + "_Pressure.inp", "w")
inpfileMain.write("*INCLUDE,INPUT=" + self.mesh_name + "_Pressure.inp \n")
inpfilePressure = open(self.include + "_Pressure.inp", "w")
self.write_constraints_pressure(inpfilePressure)
inpfilePressure.close()

Expand All @@ -296,8 +297,8 @@ def write_calculix_splitted_input_file(self):
inpfileMain.write("\n***********************************************************\n")
inpfileMain.write("** Convective heat transfer (heat flux)\n")
inpfileMain.write("** written by write_constraints_heatflux\n")
inpfileMain.write("*INCLUDE,INPUT=" + include_name + "_Node_Heatlfux.inp \n")
inpfileHeatflux = open(name + "_Node_Heatlfux.inp", "w")
inpfileMain.write("*INCLUDE,INPUT=" + self.mesh_name + "_Node_Heatlfux.inp \n")
inpfileHeatflux = open(self.include + "_Node_Heatlfux.inp", "w")
self.write_constraints_heatflux(inpfileHeatflux)
inpfileHeatflux.close()

Expand Down

0 comments on commit 028926e

Please sign in to comment.