FEM: Fix file paths + tidy up naming
Signed-off-by: Przemo Firszt <przemo@firszt.eu>
This commit is contained in:
parent
60062892a6
commit
ee7beea983
|
@ -164,13 +164,13 @@ class FemTools(QtCore.QRunnable, QtCore.QObject):
|
|||
def write_inp_file(self):
|
||||
import ccxInpWriter as iw
|
||||
import sys
|
||||
self.base_name = ""
|
||||
self.inp_file_name = ""
|
||||
try:
|
||||
inp_writer = iw.inp_writer(self.analysis, self.mesh, self.material,
|
||||
self.fixed_constraints, self.force_constraints,
|
||||
self.pressure_constraints, self.analysis_type,
|
||||
self.eigenmode_parameters, self.working_dir)
|
||||
self.base_name = inp_writer.write_calculix_input_file()
|
||||
self.inp_file_name = inp_writer.write_calculix_input_file()
|
||||
except:
|
||||
print "Unexpected error when writing CalculiX input file:", sys.exc_info()[0]
|
||||
raise
|
||||
|
@ -179,7 +179,7 @@ class FemTools(QtCore.QRunnable, QtCore.QObject):
|
|||
import multiprocessing
|
||||
import os
|
||||
import subprocess
|
||||
if self.base_name != "":
|
||||
if self.inp_file_name != "":
|
||||
ont_backup = os.environ.get('OMP_NUM_THREADS')
|
||||
if not ont_backup:
|
||||
ont_backup = ""
|
||||
|
@ -187,7 +187,7 @@ class FemTools(QtCore.QRunnable, QtCore.QObject):
|
|||
# change cwd because ccx may crash if directory has no write permission
|
||||
# there is also a limit of the length of file names so jump to the document directory
|
||||
cwd = QtCore.QDir.currentPath()
|
||||
f = QtCore.QFileInfo(self.base_name)
|
||||
f = QtCore.QFileInfo(self.inp_file_name)
|
||||
QtCore.QDir.setCurrent(f.path())
|
||||
p = subprocess.Popen([self.ccx_binary, "-i ", f.baseName()],
|
||||
stdout=subprocess.PIPE, stderr=subprocess.PIPE,
|
||||
|
@ -212,6 +212,15 @@ class FemTools(QtCore.QRunnable, QtCore.QObject):
|
|||
else:
|
||||
self.base_name = base_name
|
||||
|
||||
## sets inp file name that is used to determine location and name of frd result file.
|
||||
# Normally inp file name is set set by write_inp_file
|
||||
# Can be used to read mock calculations file
|
||||
def set_inp_file_name(self, inp_file_name=None):
|
||||
if inp_file_name is not None:
|
||||
self.inp_file_name = inp_file_name
|
||||
else:
|
||||
self.inp_file_name = self.working_dir + '/' + self.base_name + '.inp'
|
||||
|
||||
def set_analysis_type(self, analysis_type=None):
|
||||
if analysis_type is None:
|
||||
self.analysis_type = "static"
|
||||
|
@ -243,16 +252,16 @@ class FemTools(QtCore.QRunnable, QtCore.QObject):
|
|||
import ccxFrdReader
|
||||
import os
|
||||
self.results_present = False
|
||||
result_file = self.working_dir + '/' + self.base_name + ".frd"
|
||||
if os.path.isfile(result_file):
|
||||
ccxFrdReader.importFrd(result_file, self.analysis)
|
||||
frd_result_file = os.path.splitext(self.inp_file_name)[0] + '.frd'
|
||||
if os.path.isfile(frd_result_file):
|
||||
ccxFrdReader.importFrd(frd_result_file, self.analysis)
|
||||
for m in self.analysis.Member:
|
||||
if m.isDerivedFrom("Fem::FemResultObject"):
|
||||
self.result_object = m
|
||||
if self.result_object is not None:
|
||||
self.results_present = True
|
||||
else:
|
||||
raise Exception('FEM: No results found at {}!'.format(result_file))
|
||||
raise Exception('FEM: No results found at {}!'.format(frd_result_file))
|
||||
|
||||
def use_results(self, results_name=None):
|
||||
for m in self.analysis.Member:
|
||||
|
|
|
@ -460,17 +460,16 @@ class _JobControlTaskPanel:
|
|||
self.ext_editor_process.start(ext_editor_path, [filename])
|
||||
|
||||
def editCalculixInputFile(self):
|
||||
filename = self.base_name + '.inp'
|
||||
print 'editCalculixInputFile {}'.format(filename)
|
||||
print 'editCalculixInputFile {}'.format(self.inp_file_name)
|
||||
if self.fem_prefs.GetBool("UseInternalEditor", True):
|
||||
FemGui.open(filename)
|
||||
FemGui.open(self.inp_file_name)
|
||||
else:
|
||||
ext_editor_path = self.fem_prefs.GetString("ExternalEditorPath", "")
|
||||
if ext_editor_path:
|
||||
self.start_ext_editor(ext_editor_path, filename)
|
||||
self.start_ext_editor(ext_editor_path, self.inp_file_name)
|
||||
else:
|
||||
print "External editor is not defined in FEM preferences. Falling back to internal editor"
|
||||
FemGui.open(filename)
|
||||
FemGui.open(self.inp_file_name)
|
||||
|
||||
def runCalculix(self):
|
||||
print 'runCalculix'
|
||||
|
|
|
@ -208,6 +208,11 @@ class FemTest(unittest.TestCase):
|
|||
self.assertTrue(True if fea.base_name == static_base_name else False,
|
||||
"Setting base name to {} failed".format(static_base_name))
|
||||
|
||||
fcc_print('Setting inp file name to read test {}.frd file...'.format('cube_static'))
|
||||
fea.set_inp_file_name()
|
||||
self.assertTrue(True if fea.inp_file_name == static_analysis_inp_file else False,
|
||||
"Setting inp file name to {} failed".format(static_analysis_inp_file))
|
||||
|
||||
fcc_print('Checking FEM frd file read from static analysis...')
|
||||
fea.load_results()
|
||||
fcc_print('Result object created as \"{}\"'.format(fea.result_object.Name))
|
||||
|
@ -244,6 +249,11 @@ class FemTest(unittest.TestCase):
|
|||
self.assertTrue(True if fea.base_name == frequency_base_name else False,
|
||||
"Setting base name to {} failed".format(frequency_base_name))
|
||||
|
||||
fcc_print('Setting inp file name to read test {}.frd file...'.format('cube_frequency'))
|
||||
fea.set_inp_file_name()
|
||||
self.assertTrue(True if fea.inp_file_name == frequency_analysis_inp_file else False,
|
||||
"Setting inp file name to {} failed".format(frequency_analysis_inp_file))
|
||||
|
||||
fcc_print('Checking FEM frd file read from frequency analysis...')
|
||||
fea.load_results()
|
||||
|
||||
|
|
|
@ -23,8 +23,8 @@ class inp_writer:
|
|||
self.dir_name = FreeCAD.ActiveDocument.TransientDir.replace('\\', '/') + '/FemAnl_' + analysis_obj.Uid[-4:]
|
||||
if not os.path.isdir(self.dir_name):
|
||||
os.mkdir(self.dir_name)
|
||||
self.base_name = self.dir_name + '/' + self.mesh_object.Name
|
||||
self.file_name = self.base_name + '.inp'
|
||||
self.base_name = self.mesh_object.Name
|
||||
self.file_name = self.dir_name + '/' + self.base_name + '.inp'
|
||||
self.fc_ver = FreeCAD.Version()
|
||||
|
||||
def write_calculix_input_file(self):
|
||||
|
@ -48,7 +48,7 @@ class inp_writer:
|
|||
self.write_step_end(inpfile)
|
||||
self.write_footer(inpfile)
|
||||
inpfile.close()
|
||||
return self.base_name
|
||||
return self.file_name
|
||||
|
||||
def write_element_sets_material_and_femelement_type(self, f):
|
||||
f.write('\n***********************************************************\n')
|
||||
|
|
Loading…
Reference in New Issue
Block a user