diff --git a/src/Mod/Fem/femmesh/meshtools.py b/src/Mod/Fem/femmesh/meshtools.py index a67d298379..f2d284ad07 100644 --- a/src/Mod/Fem/femmesh/meshtools.py +++ b/src/Mod/Fem/femmesh/meshtools.py @@ -401,15 +401,15 @@ def get_femelement_sets_from_group_data(femmesh, fem_objects): def get_elset_short_name(obj, i): if hasattr(obj, "Proxy") and obj.Proxy.Type == 'Fem::Material': - return 'Mat' + str(i) + return 'M' + str(i) elif hasattr(obj, "Proxy") and obj.Proxy.Type == 'Fem::FemElementGeometry1D': - return 'Beam' + str(i) + return 'B' + str(i) elif hasattr(obj, "Proxy") and obj.Proxy.Type == 'Fem::FemElementFluid1D': - return 'Fluid' + str(i) + return 'F' + str(i) elif hasattr(obj, "Proxy") and obj.Proxy.Type == 'Fem::FemElementGeometry2D': - return 'Shell' + str(i) + return 'S' + str(i) else: - print('Error: ', obj.Name, ' --> ', obj.Proxy.Type) + FreeCAD.Console.PrintError('Error in creating short elset name for obj: ' + obj.Name + ' --> Proxy.Type: ' + str(obj.Proxy.Type) + '\n') def get_force_obj_vertex_nodeload_table(femmesh, frc_obj): diff --git a/src/Mod/Fem/femsolver/calculix/writer.py b/src/Mod/Fem/femsolver/calculix/writer.py index 9af9272dbe..8e68b00e4b 100644 --- a/src/Mod/Fem/femsolver/calculix/writer.py +++ b/src/Mod/Fem/femsolver/calculix/writer.py @@ -1083,7 +1083,7 @@ class FemInputWriterCcx(FemInputWriter.FemInputWriter): def get_ccx_elsets_single_mat_single_beam(self): mat_obj = self.material_objects[0]['Object'] beamsec_obj = self.beamsection_objects[0]['Object'] - names = [{'short': 'Mat0'}, {'short': 'Beam0'}] + names = [{'short': 'M0'}, {'short': 'B0'}] ccx_elset = {} ccx_elset['beamsection_obj'] = beamsec_obj ccx_elset['ccx_elset'] = self.ccx_eedges @@ -1096,7 +1096,7 @@ class FemInputWriterCcx(FemInputWriter.FemInputWriter): mat_obj = self.material_objects[0]['Object'] for beamsec_data in self.beamsection_objects: beamsec_obj = beamsec_data['Object'] - names = [{'short': 'Mat0'}, {'short': beamsec_data['ShortName']}] + names = [{'short': 'M0'}, {'short': beamsec_data['ShortName']}] ccx_elset = {} ccx_elset['beamsection_obj'] = beamsec_obj ccx_elset['ccx_elset'] = beamsec_data['FEMElements'] @@ -1109,7 +1109,7 @@ class FemInputWriterCcx(FemInputWriter.FemInputWriter): beamsec_obj = self.beamsection_objects[0]['Object'] for mat_data in self.material_objects: mat_obj = mat_data['Object'] - names = [{'short': mat_data['ShortName']}, {'short': 'Beam0'}] + names = [{'short': mat_data['ShortName']}, {'short': 'B0'}] ccx_elset = {} ccx_elset['beamsection_obj'] = beamsec_obj ccx_elset['ccx_elset'] = mat_data['FEMElements'] @@ -1140,7 +1140,7 @@ class FemInputWriterCcx(FemInputWriter.FemInputWriter): def get_ccx_elsets_single_mat_single_fluid(self): mat_obj = self.material_objects[0]['Object'] fluidsec_obj = self.fluidsection_objects[0]['Object'] - names = [{'short': 'Mat0'}, {'short': 'Fluid0'}] + names = [{'short': 'M0'}, {'short': 'F0'}] ccx_elset = {} ccx_elset['fluidsection_obj'] = fluidsec_obj ccx_elset['ccx_elset'] = self.ccx_eedges @@ -1153,7 +1153,7 @@ class FemInputWriterCcx(FemInputWriter.FemInputWriter): mat_obj = self.material_objects[0]['Object'] for fluidsec_data in self.fluidsection_objects: fluidsec_obj = fluidsec_data['Object'] - names = [{'short': 'Mat0'}, {'short': fluidsec_data['ShortName']}] + names = [{'short': 'M0'}, {'short': fluidsec_data['ShortName']}] ccx_elset = {} ccx_elset['fluidsection_obj'] = fluidsec_obj ccx_elset['ccx_elset'] = fluidsec_data['FEMElements'] @@ -1166,7 +1166,7 @@ class FemInputWriterCcx(FemInputWriter.FemInputWriter): fluidsec_obj = self.fluidsection_objects[0]['Object'] for mat_data in self.material_objects: mat_obj = mat_data['Object'] - names = [{'short': mat_data['ShortName']}, {'short': 'Fluid0'}] + names = [{'short': mat_data['ShortName']}, {'short': 'F0'}] ccx_elset = {} ccx_elset['fluidsection_obj'] = fluidsec_obj ccx_elset['ccx_elset'] = mat_data['FEMElements'] @@ -1197,7 +1197,7 @@ class FemInputWriterCcx(FemInputWriter.FemInputWriter): def get_ccx_elsets_single_mat_single_shell(self): mat_obj = self.material_objects[0]['Object'] shellth_obj = self.shellthickness_objects[0]['Object'] - names = [{'long': mat_obj.Name, 'short': 'Mat0'}, {'long': shellth_obj.Name, 'short': 'Shell0'}] + names = [{'long': mat_obj.Name, 'short': 'M0'}, {'long': shellth_obj.Name, 'short': 'S0'}] ccx_elset = {} ccx_elset['shellthickness_obj'] = shellth_obj ccx_elset['ccx_elset'] = self.ccx_efaces @@ -1210,7 +1210,7 @@ class FemInputWriterCcx(FemInputWriter.FemInputWriter): mat_obj = self.material_objects[0]['Object'] for shellth_data in self.shellthickness_objects: shellth_obj = shellth_data['Object'] - names = [{'long': mat_obj.Name, 'short': 'Mat0'}, {'long': shellth_obj.Name, 'short': shellth_data['ShortName']}] + names = [{'long': mat_obj.Name, 'short': 'M0'}, {'long': shellth_obj.Name, 'short': shellth_data['ShortName']}] ccx_elset = {} ccx_elset['shellthickness_obj'] = shellth_obj ccx_elset['ccx_elset'] = shellth_data['FEMElements'] @@ -1223,7 +1223,7 @@ class FemInputWriterCcx(FemInputWriter.FemInputWriter): shellth_obj = self.shellthickness_objects[0]['Object'] for mat_data in self.material_objects: mat_obj = mat_data['Object'] - names = [{'long': mat_obj.Name, 'short': mat_data['ShortName']}, {'long': shellth_obj.Name, 'short': 'Shell0'}] + names = [{'long': mat_obj.Name, 'short': mat_data['ShortName']}, {'long': shellth_obj.Name, 'short': 'S0'}] ccx_elset = {} ccx_elset['shellthickness_obj'] = shellth_obj ccx_elset['ccx_elset'] = mat_data['FEMElements'] @@ -1249,10 +1249,11 @@ class FemInputWriterCcx(FemInputWriter.FemInputWriter): 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): mat_obj = self.material_objects[0]['Object'] - names = [{'long': mat_obj.Name, 'short': 'Mat0'}, {'long': 'Solid', 'short': 'Solid'}] + names = [{'long': mat_obj.Name, 'short': 'M0'}, {'long': 'Solid', 'short': 'Solid'}] ccx_elset = {} ccx_elset['ccx_elset'] = self.ccx_evolumes ccx_elset['ccx_elset_name'] = get_ccx_elset_name_standard(names) @@ -1273,6 +1274,7 @@ class FemInputWriterCcx(FemInputWriter.FemInputWriter): # Helpers +# ccx elset names: M .. Material, B .. Beam, F .. Fluid, S .. Shell, TODO write comment into input file to elset ids and elset attributes def get_ccx_elset_name_standard(names): # standard max length = 80 ccx_elset_name = '' diff --git a/src/Mod/Fem/femtest/testfiles/ccx/Flow1D_thermomech.inp b/src/Mod/Fem/femtest/testfiles/ccx/Flow1D_thermomech.inp index 4ce14a234c..3c0863c08d 100644 --- a/src/Mod/Fem/femtest/testfiles/ccx/Flow1D_thermomech.inp +++ b/src/Mod/Fem/femtest/testfiles/ccx/Flow1D_thermomech.inp @@ -58,29 +58,29 @@ Eedges *********************************************************** ** Element sets for materials and FEM element type (solid, shell, beam, fluid) ** written by write_element_sets_material_and_femelement_type function -*ELSET,ELSET=Mat0Fluid0 +*ELSET,ELSET=M0F0 1, -*ELSET,ELSET=Mat0Fluid1 +*ELSET,ELSET=M0F1 2, -*ELSET,ELSET=Mat0Fluid2 +*ELSET,ELSET=M0F2 3, 5, -*ELSET,ELSET=Mat0Fluid3 +*ELSET,ELSET=M0F3 4, -*ELSET,ELSET=Mat0Fluid4 +*ELSET,ELSET=M0F4 6, -*ELSET,ELSET=Mat0Fluid5 +*ELSET,ELSET=M0F5 7, -*ELSET,ELSET=Mat0Fluid6 +*ELSET,ELSET=M0F6 8, -*ELSET,ELSET=Mat0Fluid7 +*ELSET,ELSET=M0F7 9, 11, -*ELSET,ELSET=Mat0Fluid8 +*ELSET,ELSET=M0F8 10, -*ELSET,ELSET=Mat0Fluid9 +*ELSET,ELSET=M0F9 12, -*ELSET,ELSET=Mat0Fluid10 +*ELSET,ELSET=M0F10 13, *********************************************************** @@ -101,26 +101,26 @@ Eedges *********************************************************** ** Sections ** written by write_femelementsets function -*FLUID SECTION, ELSET=Mat0Fluid0, TYPE=PIPE INOUT, MATERIAL=FluidMaterial -*FLUID SECTION, ELSET=Mat0Fluid1, TYPE=PIPE ENTRANCE, MATERIAL=FluidMaterial +*FLUID SECTION, ELSET=M0F0, TYPE=PIPE INOUT, MATERIAL=FluidMaterial +*FLUID SECTION, ELSET=M0F1, TYPE=PIPE ENTRANCE, MATERIAL=FluidMaterial 31416.0,25133.0 -*FLUID SECTION, ELSET=Mat0Fluid2, TYPE=PIPE MANNING, MATERIAL=FluidMaterial +*FLUID SECTION, ELSET=M0F2, TYPE=PIPE MANNING, MATERIAL=FluidMaterial 31416.0,50 ,0.002 -*FLUID SECTION, ELSET=Mat0Fluid3, TYPE=PIPE BEND, MATERIAL=FluidMaterial +*FLUID SECTION, ELSET=M0F3, TYPE=PIPE BEND, MATERIAL=FluidMaterial 31416.0,1.5,45.0,0.4 -*FLUID SECTION, ELSET=Mat0Fluid4, TYPE=PIPE ENLARGEMENT, MATERIAL=FluidMaterial +*FLUID SECTION, ELSET=M0F4, TYPE=PIPE ENLARGEMENT, MATERIAL=FluidMaterial 31416.0,70686.0 -*FLUID SECTION, ELSET=Mat0Fluid5, TYPE=PIPE MANNING, MATERIAL=FluidMaterial +*FLUID SECTION, ELSET=M0F5, TYPE=PIPE MANNING, MATERIAL=FluidMaterial 70686.0,75 ,0.002 -*FLUID SECTION, ELSET=Mat0Fluid6, TYPE=PIPE CONTRACTION, MATERIAL=FluidMaterial +*FLUID SECTION, ELSET=M0F6, TYPE=PIPE CONTRACTION, MATERIAL=FluidMaterial 70686.0,17671.0 -*FLUID SECTION, ELSET=Mat0Fluid7, TYPE=PIPE MANNING, MATERIAL=FluidMaterial +*FLUID SECTION, ELSET=M0F7, TYPE=PIPE MANNING, MATERIAL=FluidMaterial 17671.0,37.5 ,0.002 -*FLUID SECTION, ELSET=Mat0Fluid8, TYPE=PIPE GATE VALVE, MATERIAL=FluidMaterial +*FLUID SECTION, ELSET=M0F8, TYPE=PIPE GATE VALVE, MATERIAL=FluidMaterial 17671.0,0.5 -*FLUID SECTION, ELSET=Mat0Fluid9, TYPE=PIPE ENLARGEMENT, MATERIAL=FluidMaterial +*FLUID SECTION, ELSET=M0F9, TYPE=PIPE ENLARGEMENT, MATERIAL=FluidMaterial 17671.0,1e+12 -*FLUID SECTION, ELSET=Mat0Fluid10, TYPE=PIPE INOUT, MATERIAL=FluidMaterial +*FLUID SECTION, ELSET=M0F10, TYPE=PIPE INOUT, MATERIAL=FluidMaterial *********************************************************** ** At least one step is needed to run an CalculiX analysis of FreeCAD