FEM: ccx input file, use even shorter elset names for the short names and raise exception if the elset name is still to long
This commit is contained in:
@@ -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):
|
||||
|
||||
@@ -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 = ''
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user