FEM: Add frequency analysis to FEM wb

Signed-off-by: Przemo Firszt <przemo@firszt.eu>
This commit is contained in:
Przemo Firszt
2015-09-05 13:51:30 +01:00
committed by wmayer
parent 7bf1bcdec3
commit b516e35b19
7 changed files with 710 additions and 81 deletions

View File

@@ -5,7 +5,8 @@ import time
class inp_writer:
def __init__(self, analysis_obj, mesh_obj, mat_obj, fixed_obj, force_obj, pressure_obj, dir_name=None):
def __init__(self, analysis_obj, mesh_obj, mat_obj, fixed_obj, force_obj,
pressure_obj, analysis_type=None, eigenmode_parameters=None, dir_name=None):
self.dir_name = dir_name
self.analysis = analysis_obj
self.mesh_object = mesh_obj
@@ -13,6 +14,11 @@ class inp_writer:
self.fixed_objects = fixed_obj
self.force_objects = force_obj
self.pressure_objects = pressure_obj
if eigenmode_parameters:
self.no_of_eigenfrequencies = eigenmode_parameters[0]
self.eigenfrequeny_range_low = eigenmode_parameters[1]
self.eigenfrequeny_range_high = eigenmode_parameters[2]
self.analysis_type = analysis_type
if not dir_name:
self.dir_name = FreeCAD.ActiveDocument.TransientDir.replace('\\', '/') + '/FemAnl_' + analysis_obj.Uid[-4:]
if not os.path.isdir(self.dir_name):
@@ -33,8 +39,11 @@ class inp_writer:
self.write_materials(inpfile)
self.write_step_begin(inpfile)
self.write_constraints_fixed(inpfile)
self.write_constraints_force(inpfile)
self.write_face_load(inpfile)
if self.analysis_type is None or self.analysis_type == "static":
self.write_constraints_force(inpfile)
self.write_face_load(inpfile)
elif self.analysis_type == "frequency":
self.write_frequency(inpfile)
self.write_outputs_types(inpfile)
self.write_step_end(inpfile)
self.write_footer(inpfile)
@@ -326,6 +335,13 @@ class inp_writer:
for i in v:
f.write("{},P{},{}\n".format(i[0], i[1], rev * prs_obj.Pressure))
def write_frequency(self, f):
f.write('\n***********************************************************\n')
f.write('** Frequency analysis\n')
f.write('** written by {} function\n'.format(sys._getframe().f_code.co_name))
f.write('*FREQUENCY\n')
f.write('{},{},{}\n'.format(self.no_of_eigenfrequencies, self.eigenfrequeny_range_low, self.eigenfrequeny_range_high))
def write_outputs_types(self, f):
f.write('\n***********************************************************\n')
f.write('** Outputs --> frd file\n')