From 63eb8f75761ed20114204b56af948b28bca3c5b3 Mon Sep 17 00:00:00 2001 From: Bernd Hahnebach Date: Tue, 23 Jan 2018 06:39:12 +0100 Subject: [PATCH] FEM: ccx writer, check for empty ccx elset on creation --- src/Mod/Fem/femsolver/calculix/writer.py | 62 ++++++++++++------------ 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/src/Mod/Fem/femsolver/calculix/writer.py b/src/Mod/Fem/femsolver/calculix/writer.py index 29c514b130..c7a80c1fc4 100644 --- a/src/Mod/Fem/femsolver/calculix/writer.py +++ b/src/Mod/Fem/femsolver/calculix/writer.py @@ -412,14 +412,11 @@ class FemInputWriterCcx(FemInputWriter.FemInputWriter): # write ccx_elsets to file for ccx_elset in self.ccx_elsets: f.write('*ELSET,ELSET=' + ccx_elset['ccx_elset_name'] + '\n') - if ccx_elset['ccx_elset']: - if isinstance(ccx_elset['ccx_elset'], six.string_types): # use six to be sure to be Python 2.7 and 3.x compatible - f.write(ccx_elset['ccx_elset'] + '\n') - else: - for elid in ccx_elset['ccx_elset']: - f.write(str(elid) + ',\n') + if isinstance(ccx_elset['ccx_elset'], six.string_types): # use six to be sure to be Python 2.7 and 3.x compatible + f.write(ccx_elset['ccx_elset'] + '\n') else: - f.write('**No elements found for these objects\n') + for elid in ccx_elset['ccx_elset']: + f.write(str(elid) + ',\n') def write_node_sets_constraints_fixed(self, f): # get nodes @@ -1129,14 +1126,15 @@ class FemInputWriterCcx(FemInputWriter.FemInputWriter): beamsec_ids = set(beamsec_data['FEMElements']) mat_ids = set(mat_data['FEMElements']) elset_data = list(sorted(beamsec_ids.intersection(mat_ids))) # empty intersection sets possible - names = [{'short': mat_data['ShortName']}, {'short': beamsec_data['ShortName']}] - ccx_elset = {} - ccx_elset['beamsection_obj'] = beamsec_obj - ccx_elset['ccx_elset'] = elset_data - ccx_elset['ccx_elset_name'] = get_ccx_elset_name_short(names) - ccx_elset['mat_obj_name'] = mat_obj.Name - ccx_elset['ccx_mat_name'] = mat_obj.Material['Name'] - self.ccx_elsets.append(ccx_elset) + if elset_data: + names = [{'short': mat_data['ShortName']}, {'short': beamsec_data['ShortName']}] + ccx_elset = {} + ccx_elset['beamsection_obj'] = beamsec_obj + ccx_elset['ccx_elset'] = elset_data + ccx_elset['ccx_elset_name'] = get_ccx_elset_name_short(names) + ccx_elset['mat_obj_name'] = mat_obj.Name + ccx_elset['ccx_mat_name'] = mat_obj.Material['Name'] + self.ccx_elsets.append(ccx_elset) # fluid def get_ccx_elsets_single_mat_single_fluid(self): @@ -1188,14 +1186,15 @@ class FemInputWriterCcx(FemInputWriter.FemInputWriter): fluidsec_ids = set(fluidsec_data['FEMElements']) mat_ids = set(mat_data['FEMElements']) elset_data = list(sorted(fluidsec_ids.intersection(mat_ids))) # empty intersection sets possible - names = [{'short': mat_data['ShortName']}, {'short': fluidsec_data['ShortName']}] - ccx_elset = {} - ccx_elset['fluidsection_obj'] = fluidsec_obj - ccx_elset['ccx_elset'] = elset_data - ccx_elset['ccx_elset_name'] = get_ccx_elset_name_short(names) - ccx_elset['mat_obj_name'] = mat_obj.Name - ccx_elset['ccx_mat_name'] = mat_obj.Material['Name'] - self.ccx_elsets.append(ccx_elset) + if elset_data: + names = [{'short': mat_data['ShortName']}, {'short': fluidsec_data['ShortName']}] + ccx_elset = {} + ccx_elset['fluidsection_obj'] = fluidsec_obj + ccx_elset['ccx_elset'] = elset_data + ccx_elset['ccx_elset_name'] = get_ccx_elset_name_short(names) + ccx_elset['mat_obj_name'] = mat_obj.Name + ccx_elset['ccx_mat_name'] = mat_obj.Material['Name'] + self.ccx_elsets.append(ccx_elset) # shell def get_ccx_elsets_single_mat_single_shell(self): @@ -1247,14 +1246,15 @@ class FemInputWriterCcx(FemInputWriter.FemInputWriter): shellth_ids = set(shellth_data['FEMElements']) mat_ids = set(mat_data['FEMElements']) elset_data = list(sorted(shellth_ids.intersection(mat_ids))) # empty intersection sets possible - names = [{'long': mat_obj.Name, 'short': mat_data['ShortName']}, {'long': shellth_obj.Name, 'short': shellth_data['ShortName']}] - ccx_elset = {} - ccx_elset['shellthickness_obj'] = shellth_obj - ccx_elset['ccx_elset'] = elset_data - ccx_elset['ccx_elset_name'] = get_ccx_elset_name_standard(names) - ccx_elset['mat_obj_name'] = mat_obj.Name - ccx_elset['ccx_mat_name'] = mat_obj.Material['Name'] - self.ccx_elsets.append(ccx_elset) + if elset_data: + names = [{'long': mat_obj.Name, 'short': mat_data['ShortName']}, {'long': shellth_obj.Name, 'short': shellth_data['ShortName']}] + ccx_elset = {} + ccx_elset['shellthickness_obj'] = shellth_obj + ccx_elset['ccx_elset'] = ccx_elset + ccx_elset['ccx_elset_name'] = get_ccx_elset_name_standard(names) + ccx_elset['mat_obj_name'] = mat_obj.Name + ccx_elset['ccx_mat_name'] = mat_obj.Material['Name'] + self.ccx_elsets.append(ccx_elset) # solid def get_ccx_elsets_single_mat_solid(self):