FEM: solver writer, use member class as parameter for writer class instaed of all separate fem objs

This commit is contained in:
Bernd Hahnebach
2020-02-19 07:23:56 +01:00
parent b6e1b31e7e
commit b53c55bc79
6 changed files with 29 additions and 155 deletions

View File

@@ -58,28 +58,11 @@ class Prepare(run.Prepare):
def run(self):
global _inputFileName
self.pushStatus("Preparing input files...\n")
c = membertools.AnalysisMember(self.analysis)
w = writer.FemInputWriterCcx(
self.analysis,
self.solver,
membertools.get_mesh_to_solve(self.analysis)[0], # pre check has been done already
c.mats_linear,
c.mats_nonlinear,
c.cons_fixed,
c.cons_displacement,
c.cons_contact,
c.cons_planerotation,
c.cons_transform,
c.cons_selfweight,
c.cons_force,
c.cons_pressure,
c.cons_temperature,
c.cons_heatflux,
c.cons_initialtemperature,
c.geos_beamsection,
c.geos_beamrotation,
c.geos_shellthickness,
c.geos_fluidsection,
membertools.AnalysisMember(self.analysis),
self.directory
)
path = w.write_calculix_input_file()

View File

@@ -44,23 +44,7 @@ class FemInputWriterCcx(writerbase.FemInputWriter):
analysis_obj,
solver_obj,
mesh_obj,
matlin_obj,
matnonlin_obj,
fixed_obj,
displacement_obj,
contact_obj,
planerotation_obj,
transform_obj,
selfweight_obj,
force_obj,
pressure_obj,
temperature_obj,
heatflux_obj,
initialtemperature_obj,
beamsection_obj,
beamrotation_obj,
shellthickness_obj,
fluidsection_obj,
member,
dir_name=None
):
writerbase.FemInputWriter.__init__(
@@ -68,23 +52,7 @@ class FemInputWriterCcx(writerbase.FemInputWriter):
analysis_obj,
solver_obj,
mesh_obj,
matlin_obj,
matnonlin_obj,
fixed_obj,
displacement_obj,
contact_obj,
planerotation_obj,
transform_obj,
selfweight_obj,
force_obj,
pressure_obj,
temperature_obj,
heatflux_obj,
initialtemperature_obj,
beamsection_obj,
beamrotation_obj,
shellthickness_obj,
fluidsection_obj,
member,
dir_name
)
from os.path import join

View File

@@ -39,23 +39,7 @@ class FemInputWriter():
analysis_obj,
solver_obj,
mesh_obj,
matlin_obj,
matnonlin_obj,
fixed_obj,
displacement_obj,
contact_obj,
planerotation_obj,
transform_obj,
selfweight_obj,
force_obj,
pressure_obj,
temperature_obj,
heatflux_obj,
initialtemperature_obj,
beamsection_obj,
beamrotation_obj,
shellthickness_obj,
fluidsection_obj,
member,
dir_name=None
):
# class attributes from parameter values
@@ -63,23 +47,27 @@ class FemInputWriter():
self.solver_obj = solver_obj
self.analysis_type = self.solver_obj.AnalysisType
self.mesh_object = mesh_obj
self.material_objects = matlin_obj
self.material_nonlinear_objects = matnonlin_obj
self.fixed_objects = fixed_obj
self.displacement_objects = displacement_obj
self.contact_objects = contact_obj
self.planerotation_objects = planerotation_obj
self.transform_objects = transform_obj
self.selfweight_objects = selfweight_obj
self.force_objects = force_obj
self.pressure_objects = pressure_obj
self.temperature_objects = temperature_obj
self.heatflux_objects = heatflux_obj
self.initialtemperature_objects = initialtemperature_obj
self.beamsection_objects = beamsection_obj
self.beamrotation_objects = beamrotation_obj
self.fluidsection_objects = fluidsection_obj
self.shellthickness_objects = shellthickness_obj
# materials
self.material_objects = member.mats_linear
self.material_nonlinear_objects = member.mats_nonlinear
# geometries
self.beamsection_objects = member.geos_beamsection
self.beamrotation_objects = member.geos_beamrotation
self.fluidsection_objects = member.geos_fluidsection
self.shellthickness_objects = member.geos_shellthickness
# constraints
self.contact_objects = member.cons_contact
self.displacement_objects = member.cons_displacement
self.fixed_objects = member.cons_fixed
self.force_objects = member.cons_force
self.heatflux_objects = member.cons_heatflux
self.initialtemperature_objects = member.cons_initialtemperature
self.planerotation_objects = member.cons_planerotation
self.pressure_objects = member.cons_pressure
self.selfweight_objects = member.cons_selfweight
self.temperature_objects = member.cons_temperature
self.transform_objects = member.cons_transform
# working dir
self.dir_name = dir_name
# if dir_name was not given or if it exists but isn't empty: create a temporary dir
# Purpose: makes sure the analysis can be run even on wired situation

View File

@@ -52,28 +52,11 @@ class Prepare(run.Prepare):
def run(self):
self.pushStatus("Preparing input files...\n")
c = membertools.AnalysisMember(self.analysis)
w = writer.FemInputWriterZ88(
self.analysis,
self.solver,
membertools.get_mesh_to_solve(self.analysis)[0], # pre check has been done already
c.mats_linear,
c.mats_nonlinear,
c.cons_fixed,
c.cons_displacement,
c.cons_contact,
c.cons_planerotation,
c.cons_transform,
c.cons_selfweight,
c.cons_force,
c.cons_pressure,
c.cons_temperature,
c.cons_heatflux,
c.cons_initialtemperature,
c.geos_beamsection,
c.geos_beamrotation,
c.geos_shellthickness,
c.geos_fluidsection,
membertools.AnalysisMember(self.analysis),
self.directory
)
path = w.write_z88_input()

View File

@@ -39,23 +39,7 @@ class FemInputWriterZ88(FemInputWriter.FemInputWriter):
analysis_obj,
solver_obj,
mesh_obj,
matlin_obj,
matnonlin_obj,
fixed_obj,
displacement_obj,
contact_obj,
planerotation_obj,
transform_obj,
selfweight_obj,
force_obj,
pressure_obj,
temperature_obj,
heatflux_obj,
initialtemperature_obj,
beamsection_obj,
beamrotation_obj,
shellthickness_obj,
fluidsection_obj,
member,
dir_name=None
):
FemInputWriter.FemInputWriter.__init__(
@@ -63,23 +47,7 @@ class FemInputWriterZ88(FemInputWriter.FemInputWriter):
analysis_obj,
solver_obj,
mesh_obj,
matlin_obj,
matnonlin_obj,
fixed_obj,
displacement_obj,
contact_obj,
planerotation_obj,
transform_obj,
selfweight_obj,
force_obj,
pressure_obj,
temperature_obj,
heatflux_obj,
initialtemperature_obj,
beamsection_obj,
beamrotation_obj,
shellthickness_obj,
fluidsection_obj,
member,
dir_name
)
from os.path import join

View File

@@ -670,23 +670,7 @@ class FemToolsCcx(QtCore.QRunnable, QtCore.QObject):
self.analysis,
self.solver,
self.mesh,
self.member.mats_linear,
self.member.mats_nonlinear,
self.member.cons_fixed,
self.member.cons_displacement,
self.member.cons_contact,
self.member.cons_planerotation,
self.member.cons_transform,
self.member.cons_selfweight,
self.member.cons_force,
self.member.cons_pressure,
self.member.cons_temperature,
self.member.cons_heatflux,
self.member.cons_initialtemperature,
self.member.geos_beamsection,
self.member.geos_beamrotation,
self.member.geos_shellthickness,
self.member.geos_fluidsection,
self.member,
self.working_dir
)
self.inp_file_name = inp_writer.write_calculix_input_file()