diff --git a/src/Mod/Fem/FemInputWriter.py b/src/Mod/Fem/FemInputWriter.py index 55879d9631..831ea0ead9 100644 --- a/src/Mod/Fem/FemInputWriter.py +++ b/src/Mod/Fem/FemInputWriter.py @@ -67,6 +67,7 @@ class FemInputWriter(): if not dir_name: print('Error: FemInputWriter has no working_dir --> we gone make a temporary one!') self.dir_name = FreeCAD.ActiveDocument.TransientDir.replace('\\', '/') + '/FemAnl_' + analysis_obj.Uid[-4:] + self.dir_name = os.path.join(self.dir_name, '') # check dir_name has a slash at the end, if not add one if not os.path.isdir(self.dir_name): os.mkdir(self.dir_name) self.fc_ver = FreeCAD.Version() diff --git a/src/Mod/Fem/FemInputWriterCcx.py b/src/Mod/Fem/FemInputWriterCcx.py index aa365f357c..9dc1bdcff4 100644 --- a/src/Mod/Fem/FemInputWriterCcx.py +++ b/src/Mod/Fem/FemInputWriterCcx.py @@ -59,8 +59,9 @@ class FemInputWriterCcx(FemInputWriter.FemInputWriter): temperature_obj, heatflux_obj, initialtemperature_obj, beamsection_obj, shellthickness_obj, fluidsection_obj, analysis_type, dir_name) + # self.dir_name does have a slash at the end self.main_file_name = self.mesh_object.Name + '.inp' - self.file_name = self.dir_name + '/' + self.main_file_name + self.file_name = self.dir_name + self.main_file_name self.FluidInletoutlet_ele = [] print('FemInputWriterCcx --> self.dir_name --> ' + self.dir_name) print('FemInputWriterCcx --> self.main_file_name --> ' + self.main_file_name) diff --git a/src/Mod/Fem/FemInputWriterZ88.py b/src/Mod/Fem/FemInputWriterZ88.py index 26b1ab4435..317e1cf361 100644 --- a/src/Mod/Fem/FemInputWriterZ88.py +++ b/src/Mod/Fem/FemInputWriterZ88.py @@ -55,7 +55,8 @@ class FemInputWriterZ88(FemInputWriter.FemInputWriter): temperature_obj, heatflux_obj, initialtemperature_obj, beamsection_obj, shellthickness_obj, fluidsection_obj, analysis_type, dir_name) - self.file_name = self.dir_name + '/z88' + # self.dir_name does have a slash at the end + self.file_name = self.dir_name + 'z88' print('FemInputWriterZ88 --> self.dir_name --> ' + self.dir_name) print('FemInputWriterZ88 --> self.file_name --> ' + self.file_name) diff --git a/src/Mod/Fem/FemTools.py b/src/Mod/Fem/FemTools.py index 9d305edd7b..9b3cbb9bb0 100644 --- a/src/Mod/Fem/FemTools.py +++ b/src/Mod/Fem/FemTools.py @@ -538,7 +538,8 @@ class FemTools(QtCore.QRunnable, QtCore.QObject): 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' + # self.working_dir does have a slash at the end + self.inp_file_name = self.working_dir + self.base_name + '.inp' ## Sets analysis type. # @param self The python object self @@ -576,6 +577,9 @@ class FemTools(QtCore.QRunnable, QtCore.QObject): except: print('Could not set working directory to solver working directory.') + # check working_dir has a slash at the end, if not add one + self.working_dir = os.path.join(self.working_dir, '') + if not (os.path.isdir(self.working_dir)): try: os.makedirs(self.working_dir) diff --git a/src/Mod/Fem/TestFem.py b/src/Mod/Fem/TestFem.py index eb4ec785d4..11ab3acd95 100644 --- a/src/Mod/Fem/TestFem.py +++ b/src/Mod/Fem/TestFem.py @@ -36,36 +36,36 @@ mesh_name = 'Mesh' stat_types = ["U1", "U2", "U3", "Uabs", "Sabs", "MaxPrin", "MidPrin", "MinPrin", "MaxShear", "Peeq", "Temp", "MFlow", "NPress"] home_path = FreeCAD.getHomePath() -temp_dir = tempfile.gettempdir() + '/FEM_unittests' -test_file_dir = home_path + 'Mod/Fem/test_files/ccx' +temp_dir = tempfile.gettempdir() + '/FEM_unittests/' if not os.path.exists(temp_dir): os.makedirs(temp_dir) +test_file_dir = home_path + 'Mod/Fem/test_files/ccx/' # define some locations fot the analysis tests # since they are also used in the helper def which create results they should stay global for the module static_base_name = 'cube_static' -static_analysis_dir = temp_dir + '/FEM_static' -static_save_fc_file = static_analysis_dir + '/' + static_base_name + '.fcstd' -static_analysis_inp_file = test_file_dir + '/' + static_base_name + '.inp' -static_expected_values = test_file_dir + "/cube_static_expected_values" +static_analysis_dir = temp_dir + 'FEM_static/' +static_save_fc_file = static_analysis_dir + static_base_name + '.fcstd' +static_analysis_inp_file = test_file_dir + static_base_name + '.inp' +static_expected_values = test_file_dir + "cube_static_expected_values" frequency_base_name = 'cube_frequency' -frequency_analysis_dir = temp_dir + '/FEM_frequency' -frequency_save_fc_file = frequency_analysis_dir + '/' + frequency_base_name + '.fcstd' -frequency_analysis_inp_file = test_file_dir + '/' + frequency_base_name + '.inp' -frequency_expected_values = test_file_dir + "/cube_frequency_expected_values" +frequency_analysis_dir = temp_dir + 'FEM_frequency/' +frequency_save_fc_file = frequency_analysis_dir + frequency_base_name + '.fcstd' +frequency_analysis_inp_file = test_file_dir + frequency_base_name + '.inp' +frequency_expected_values = test_file_dir + "cube_frequency_expected_values" thermomech_base_name = 'spine_thermomech' -thermomech_analysis_dir = temp_dir + '/FEM_thermomech' -thermomech_save_fc_file = thermomech_analysis_dir + '/' + thermomech_base_name + '.fcstd' -thermomech_analysis_inp_file = test_file_dir + '/' + thermomech_base_name + '.inp' -thermomech_expected_values = test_file_dir + "/spine_thermomech_expected_values" +thermomech_analysis_dir = temp_dir + 'FEM_thermomech/' +thermomech_save_fc_file = thermomech_analysis_dir + thermomech_base_name + '.fcstd' +thermomech_analysis_inp_file = test_file_dir + thermomech_base_name + '.inp' +thermomech_expected_values = test_file_dir + "spine_thermomech_expected_values" Flow1D_thermomech_base_name = 'Flow1D_thermomech' -Flow1D_thermomech_analysis_dir = temp_dir + '/FEM_Flow1D_thermomech' -Flow1D_thermomech_save_fc_file = Flow1D_thermomech_analysis_dir + '/' + Flow1D_thermomech_base_name + '.fcstd' -Flow1D_thermomech_analysis_inp_file = test_file_dir + '/' + Flow1D_thermomech_base_name + '.inp' -Flow1D_thermomech_expected_values = test_file_dir + "/Flow1D_thermomech_expected_values" +Flow1D_thermomech_analysis_dir = temp_dir + 'FEM_Flow1D_thermomech/' +Flow1D_thermomech_save_fc_file = Flow1D_thermomech_analysis_dir + Flow1D_thermomech_base_name + '.fcstd' +Flow1D_thermomech_analysis_inp_file = test_file_dir + Flow1D_thermomech_base_name + '.inp' +Flow1D_thermomech_expected_values = test_file_dir + "Flow1D_thermomech_expected_values" class FemTest(unittest.TestCase): @@ -846,7 +846,7 @@ def create_test_results(): for s in stat_types: statval = fea.get_stats(s) stats_static.append("{0}: ({1:.14g}, {2:.14g}, {3:.14g})\n".format(s, statval[0], statval[1], statval[2])) - static_expected_values_file = static_analysis_dir + '/cube_static_expected_values' + static_expected_values_file = static_analysis_dir + 'cube_static_expected_values' f = open(static_expected_values_file, 'w') for s in stats_static: f.write(s) @@ -856,8 +856,8 @@ def create_test_results(): frd_result_file = os.path.splitext(fea.inp_file_name)[0] + '.frd' dat_result_file = os.path.splitext(fea.inp_file_name)[0] + '.dat' - frd_static_test_result_file = static_analysis_dir + '/cube_static.frd' - dat_static_test_result_file = static_analysis_dir + '/cube_static.dat' + frd_static_test_result_file = static_analysis_dir + 'cube_static.frd' + dat_static_test_result_file = static_analysis_dir + 'cube_static.dat' shutil.copyfile(frd_result_file, frd_static_test_result_file) shutil.copyfile(dat_result_file, dat_static_test_result_file) @@ -872,14 +872,14 @@ def create_test_results(): for s in stat_types: statval = fea.get_stats(s) stats_frequency.append("{0}: ({1:.14g}, {2:.14g}, {3:.14g})\n".format(s, statval[0], statval[1], statval[2])) - frequency_expected_values_file = frequency_analysis_dir + '/cube_frequency_expected_values' + frequency_expected_values_file = frequency_analysis_dir + 'cube_frequency_expected_values' f = open(frequency_expected_values_file, 'w') for s in stats_frequency: f.write(s) f.close() - frd_frequency_test_result_file = frequency_analysis_dir + '/cube_frequency.frd' - dat_frequency_test_result_file = frequency_analysis_dir + '/cube_frequency.dat' + frd_frequency_test_result_file = frequency_analysis_dir + 'cube_frequency.frd' + dat_frequency_test_result_file = frequency_analysis_dir + 'cube_frequency.dat' shutil.copyfile(frd_result_file, frd_frequency_test_result_file) shutil.copyfile(dat_result_file, dat_frequency_test_result_file) @@ -895,7 +895,7 @@ def create_test_results(): for s in stat_types: statval = fea.get_stats(s) stats_thermomech.append("{0}: ({1:.14g}, {2:.14g}, {3:.14g})\n".format(s, statval[0], statval[1], statval[2])) - thermomech_expected_values_file = thermomech_analysis_dir + '/spine_thermomech_expected_values' + thermomech_expected_values_file = thermomech_analysis_dir + 'spine_thermomech_expected_values' f = open(thermomech_expected_values_file, 'w') for s in stats_thermomech: f.write(s) @@ -905,8 +905,8 @@ def create_test_results(): frd_result_file = os.path.splitext(fea.inp_file_name)[0] + '.frd' dat_result_file = os.path.splitext(fea.inp_file_name)[0] + '.dat' - frd_thermomech_test_result_file = thermomech_analysis_dir + '/spine_thermomech.frd' - dat_thermomech_test_result_file = thermomech_analysis_dir + '/spine_thermomech.dat' + frd_thermomech_test_result_file = thermomech_analysis_dir + 'spine_thermomech.frd' + dat_thermomech_test_result_file = thermomech_analysis_dir + 'spine_thermomech.dat' shutil.copyfile(frd_result_file, frd_thermomech_test_result_file) shutil.copyfile(dat_result_file, dat_thermomech_test_result_file)