FEM: fix, use uniqe names for materials in CalculiX input file
This commit is contained in:
parent
37b1bdbe27
commit
60cdca01a8
|
@ -198,8 +198,10 @@ class inp_writer:
|
|||
YM = FreeCAD.Units.Quantity(mat_obj.Material['YoungsModulus'])
|
||||
YM_in_MPa = YM.getValueAs('MPa')
|
||||
PR = float(mat_obj.Material['PoissonRatio'])
|
||||
mat_name = mat_obj.Material['Name'][:80]
|
||||
mat_info_name = mat_obj.Material['Name']
|
||||
mat_name = mat_obj.Name
|
||||
# write material properties
|
||||
f.write('**FreeCAD material name: ' + mat_info_name + '\n')
|
||||
f.write('*MATERIAL, NAME=' + mat_name + '\n')
|
||||
f.write('*ELASTIC \n')
|
||||
f.write('{}, \n'.format(YM_in_MPa))
|
||||
|
@ -218,7 +220,7 @@ class inp_writer:
|
|||
if 'beamsection_obj'in ccx_elset: # beam mesh
|
||||
beamsec_obj = ccx_elset['beamsection_obj']
|
||||
elsetdef = 'ELSET=' + ccx_elset['ccx_elset_name'] + ', '
|
||||
material = 'MATERIAL=' + ccx_elset['ccx_mat_name']
|
||||
material = 'MATERIAL=' + ccx_elset['mat_obj_name']
|
||||
setion_def = '*BEAM SECTION, ' + elsetdef + material + ', SECTION=RECT\n'
|
||||
setion_geo = str(beamsec_obj.Height.getValueAs('mm')) + ', ' + str(beamsec_obj.Width.getValueAs('mm')) + '\n'
|
||||
f.write(setion_def)
|
||||
|
@ -226,14 +228,14 @@ class inp_writer:
|
|||
elif 'shellthickness_obj'in ccx_elset: # shell mesh
|
||||
shellth_obj = ccx_elset['shellthickness_obj']
|
||||
elsetdef = 'ELSET=' + ccx_elset['ccx_elset_name'] + ', '
|
||||
material = 'MATERIAL=' + ccx_elset['ccx_mat_name']
|
||||
material = 'MATERIAL=' + ccx_elset['mat_obj_name']
|
||||
setion_def = '*SHELL SECTION, ' + elsetdef + material + '\n'
|
||||
setion_geo = str(shellth_obj.Thickness.getValueAs('mm')) + '\n'
|
||||
f.write(setion_def)
|
||||
f.write(setion_geo)
|
||||
else: # solid mesh
|
||||
elsetdef = 'ELSET=' + ccx_elset['ccx_elset_name'] + ', '
|
||||
material = 'MATERIAL=' + ccx_elset['ccx_mat_name']
|
||||
material = 'MATERIAL=' + ccx_elset['mat_obj_name']
|
||||
setion_def = '*SOLID SECTION, ' + elsetdef + material + '\n'
|
||||
f.write(setion_def)
|
||||
|
||||
|
@ -511,7 +513,7 @@ class inp_writer:
|
|||
# 'ccx_elset' : [e1, e2, e3, ... , en] or string self.ccx_eall
|
||||
# 'ccx_elset_name' : 'ccx_identifier_elset'
|
||||
# 'mat_obj_name' : 'mat_obj.Name'
|
||||
# 'ccx_mat_name' : 'mat_obj.Material['Name'][:80]' !!! not unique !!!
|
||||
# 'ccx_mat_name' : 'mat_obj.Material['Name']' !!! not unique !!!
|
||||
# },
|
||||
# {}, ... , {} ]
|
||||
def get_ccx_elsets_single_mat_single_beam(self):
|
||||
|
@ -522,7 +524,7 @@ class inp_writer:
|
|||
ccx_elset['ccx_elset'] = self.ccx_eall
|
||||
ccx_elset['ccx_elset_name'] = get_ccx_elset_beam_name(mat_obj.Name, beamsec_obj.Name)
|
||||
ccx_elset['mat_obj_name'] = mat_obj.Name
|
||||
ccx_elset['ccx_mat_name'] = mat_obj.Material['Name'][:80]
|
||||
ccx_elset['ccx_mat_name'] = mat_obj.Material['Name']
|
||||
self.ccx_elsets.append(ccx_elset)
|
||||
|
||||
def get_ccx_elsets_single_mat_single_shell(self):
|
||||
|
@ -533,7 +535,7 @@ class inp_writer:
|
|||
ccx_elset['ccx_elset'] = self.ccx_eall
|
||||
ccx_elset['ccx_elset_name'] = get_ccx_elset_shell_name(mat_obj.Name, shellth_obj.Name)
|
||||
ccx_elset['mat_obj_name'] = mat_obj.Name
|
||||
ccx_elset['ccx_mat_name'] = mat_obj.Material['Name'][:80]
|
||||
ccx_elset['ccx_mat_name'] = mat_obj.Material['Name']
|
||||
self.ccx_elsets.append(ccx_elset)
|
||||
|
||||
def get_ccx_elsets_single_mat_solid(self):
|
||||
|
@ -542,7 +544,7 @@ class inp_writer:
|
|||
ccx_elset['ccx_elset'] = self.ccx_eall
|
||||
ccx_elset['ccx_elset_name'] = get_ccx_elset_solid_name(mat_obj.Name)
|
||||
ccx_elset['mat_obj_name'] = mat_obj.Name
|
||||
ccx_elset['ccx_mat_name'] = mat_obj.Material['Name'][:80]
|
||||
ccx_elset['ccx_mat_name'] = mat_obj.Material['Name']
|
||||
self.ccx_elsets.append(ccx_elset)
|
||||
|
||||
def get_ccx_elsets_single_mat_multiple_beam(self):
|
||||
|
@ -555,7 +557,7 @@ class inp_writer:
|
|||
ccx_elset['ccx_elset'] = beamsec_data['FEMElements']
|
||||
ccx_elset['ccx_elset_name'] = get_ccx_elset_beam_name(mat_obj.Name, beamsec_obj.Name, None, beamsec_data['ShortName'])
|
||||
ccx_elset['mat_obj_name'] = mat_obj.Name
|
||||
ccx_elset['ccx_mat_name'] = mat_obj.Material['Name'][:80]
|
||||
ccx_elset['ccx_mat_name'] = mat_obj.Material['Name']
|
||||
self.ccx_elsets.append(ccx_elset)
|
||||
|
||||
def get_ccx_elsets_single_mat_multiple_shell(self):
|
||||
|
@ -568,7 +570,7 @@ class inp_writer:
|
|||
ccx_elset['ccx_elset'] = shellth_data['FEMElements']
|
||||
ccx_elset['ccx_elset_name'] = get_ccx_elset_shell_name(mat_obj.Name, shellth_obj.Name, None, shellth_data['ShortName'])
|
||||
ccx_elset['mat_obj_name'] = mat_obj.Name
|
||||
ccx_elset['ccx_mat_name'] = mat_obj.Material['Name'][:80]
|
||||
ccx_elset['ccx_mat_name'] = mat_obj.Material['Name']
|
||||
self.ccx_elsets.append(ccx_elset)
|
||||
|
||||
def get_ccx_elsets_multiple_mat_single_beam(self):
|
||||
|
@ -581,7 +583,7 @@ class inp_writer:
|
|||
ccx_elset['ccx_elset'] = mat_data['FEMElements']
|
||||
ccx_elset['ccx_elset_name'] = get_ccx_elset_beam_name(mat_obj.Name, beamsec_obj.Name, mat_data['ShortName'])
|
||||
ccx_elset['mat_obj_name'] = mat_obj.Name
|
||||
ccx_elset['ccx_mat_name'] = mat_obj.Material['Name'][:80]
|
||||
ccx_elset['ccx_mat_name'] = mat_obj.Material['Name']
|
||||
self.ccx_elsets.append(ccx_elset)
|
||||
|
||||
def get_ccx_elsets_multiple_mat_single_shell(self):
|
||||
|
@ -594,7 +596,7 @@ class inp_writer:
|
|||
ccx_elset['ccx_elset'] = mat_data['FEMElements']
|
||||
ccx_elset['ccx_elset_name'] = get_ccx_elset_shell_name(mat_obj.Name, shellth_obj.Name, mat_data['ShortName'])
|
||||
ccx_elset['mat_obj_name'] = mat_obj.Name
|
||||
ccx_elset['ccx_mat_name'] = mat_obj.Material['Name'][:80]
|
||||
ccx_elset['ccx_mat_name'] = mat_obj.Material['Name']
|
||||
self.ccx_elsets.append(ccx_elset)
|
||||
|
||||
def get_ccx_elsets_multiple_mat_solid(self):
|
||||
|
@ -605,7 +607,7 @@ class inp_writer:
|
|||
ccx_elset['ccx_elset'] = mat_data['FEMElements']
|
||||
ccx_elset['ccx_elset_name'] = get_ccx_elset_solid_name(mat_obj.Name, None, mat_data['ShortName'])
|
||||
ccx_elset['mat_obj_name'] = mat_obj.Name
|
||||
ccx_elset['ccx_mat_name'] = mat_obj.Material['Name'][:80]
|
||||
ccx_elset['ccx_mat_name'] = mat_obj.Material['Name']
|
||||
self.ccx_elsets.append(ccx_elset)
|
||||
|
||||
def get_ccx_elsets_multiple_mat_multiple_beam(self):
|
||||
|
@ -624,7 +626,7 @@ class inp_writer:
|
|||
ccx_elset['ccx_elset'] = elemids
|
||||
ccx_elset['ccx_elset_name'] = get_ccx_elset_beam_name(mat_obj.Name, beamsec_obj.Name, mat_data['ShortName'], beamsec_data['ShortName'])
|
||||
ccx_elset['mat_obj_name'] = mat_obj.Name
|
||||
ccx_elset['ccx_mat_name'] = mat_obj.Material['Name'][:80]
|
||||
ccx_elset['ccx_mat_name'] = mat_obj.Material['Name']
|
||||
self.ccx_elsets.append(ccx_elset)
|
||||
|
||||
def get_ccx_elsets_multiple_mat_multiple_shell(self):
|
||||
|
@ -643,7 +645,7 @@ class inp_writer:
|
|||
ccx_elset['ccx_elset'] = elemids
|
||||
ccx_elset['ccx_elset_name'] = get_ccx_elset_shell_name(mat_obj.Name, shellth_obj.Name, mat_data['ShortName'], shellth_data['ShortName'])
|
||||
ccx_elset['mat_obj_name'] = mat_obj.Name
|
||||
ccx_elset['ccx_mat_name'] = mat_obj.Material['Name'][:80]
|
||||
ccx_elset['ccx_mat_name'] = mat_obj.Material['Name']
|
||||
self.ccx_elsets.append(ccx_elset)
|
||||
|
||||
def get_femelement_sets(self, fem_objects):
|
||||
|
|
|
@ -468,7 +468,8 @@ Eall
|
|||
** Materials
|
||||
** written by write_materials function
|
||||
** Young's modulus unit is MPa = N/mm2
|
||||
*MATERIAL, NAME=Steel
|
||||
**FreeCAD material name: Steel
|
||||
*MATERIAL, NAME=MechanicalMaterial
|
||||
*ELASTIC
|
||||
200000 ,
|
||||
0.300
|
||||
|
@ -478,7 +479,7 @@ Eall
|
|||
***********************************************************
|
||||
** Sections
|
||||
** written by write_femelementsets function
|
||||
*SOLID SECTION, ELSET=MechanicalMaterialSolid, MATERIAL=Steel
|
||||
*SOLID SECTION, ELSET=MechanicalMaterialSolid, MATERIAL=MechanicalMaterial
|
||||
|
||||
***********************************************************
|
||||
** One step is needed to calculate the mechanical analysis of FreeCAD
|
||||
|
|
|
@ -473,7 +473,8 @@ Eall
|
|||
** Materials
|
||||
** written by write_materials function
|
||||
** Young's modulus unit is MPa = N/mm2
|
||||
*MATERIAL, NAME=Steel
|
||||
**FreeCAD material name: Steel
|
||||
*MATERIAL, NAME=MechanicalMaterial
|
||||
*ELASTIC
|
||||
200000 ,
|
||||
0.300
|
||||
|
@ -483,7 +484,7 @@ Eall
|
|||
***********************************************************
|
||||
** Sections
|
||||
** written by write_femelementsets function
|
||||
*SOLID SECTION, ELSET=MechanicalMaterialSolid, MATERIAL=Steel
|
||||
*SOLID SECTION, ELSET=MechanicalMaterialSolid, MATERIAL=MechanicalMaterial
|
||||
|
||||
***********************************************************
|
||||
** One step is needed to calculate the mechanical analysis of FreeCAD
|
||||
|
|
Loading…
Reference in New Issue
Block a user