FEM: mesh set getter, use ccx independent variable names

This commit is contained in:
Bernd Hahnebach
2021-07-20 09:42:17 +02:00
parent 166f5e7a4b
commit a98ebfde6e

View File

@@ -638,7 +638,7 @@ class MeshSetsGetter():
if self.member.geos_beamsection:
# we will need to split the beam even for one beamobj
# because no beam in z-direction can be used in ccx without a special adjustment
# thus they need an own ccx_elset
# thus they need an own matgeoset
self.get_element_rotation1D_elements()
# get the element ids for face and edge elements and write them into the objects
@@ -726,15 +726,15 @@ class MeshSetsGetter():
{"short": beamrot_data["ShortName"]},
{"short": "D" + str(i)}
]
ccx_elset = {}
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"]
ccx_elset["beamsection_obj"] = beamsec_obj
matgeoset = {}
matgeoset["ccx_elset"] = elset_data
matgeoset["ccx_elset_name"] = get_ccx_elset_name_short(names)
matgeoset["mat_obj_name"] = mat_obj.Name
matgeoset["ccx_mat_name"] = mat_obj.Material["Name"]
matgeoset["beamsection_obj"] = beamsec_obj
# normal for this direction
ccx_elset["beam_normal"] = beamdirection["normal"]
self.mat_geo_sets.append(ccx_elset)
matgeoset["beam_normal"] = beamdirection["normal"]
self.mat_geo_sets.append(matgeoset)
def get_mat_geo_sets_single_mat_multiple_beam(self):
mat_obj = self.member.mats_linear[0]["Object"]
@@ -753,15 +753,15 @@ class MeshSetsGetter():
{"short": beamrot_data["ShortName"]},
{"short": "D" + str(i)}
]
ccx_elset = {}
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"]
ccx_elset["beamsection_obj"] = beamsec_obj
matgeoset = {}
matgeoset["ccx_elset"] = elset_data
matgeoset["ccx_elset_name"] = get_ccx_elset_name_short(names)
matgeoset["mat_obj_name"] = mat_obj.Name
matgeoset["ccx_mat_name"] = mat_obj.Material["Name"]
matgeoset["beamsection_obj"] = beamsec_obj
# normal for this direction
ccx_elset["beam_normal"] = beamdirection["normal"]
self.mat_geo_sets.append(ccx_elset)
matgeoset["beam_normal"] = beamdirection["normal"]
self.mat_geo_sets.append(matgeoset)
def get_mat_geo_sets_multiple_mat_single_beam(self):
beamsec_obj = self.member.geos_beamsection[0]["Object"]
@@ -779,15 +779,15 @@ class MeshSetsGetter():
{"short": beamrot_data["ShortName"]},
{"short": "D" + str(i)}
]
ccx_elset = {}
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"]
ccx_elset["beamsection_obj"] = beamsec_obj
matgeoset = {}
matgeoset["ccx_elset"] = elset_data
matgeoset["ccx_elset_name"] = get_ccx_elset_name_short(names)
matgeoset["mat_obj_name"] = mat_obj.Name
matgeoset["ccx_mat_name"] = mat_obj.Material["Name"]
matgeoset["beamsection_obj"] = beamsec_obj
# normal for this direction
ccx_elset["beam_normal"] = beamdirection["normal"]
self.mat_geo_sets.append(ccx_elset)
matgeoset["beam_normal"] = beamdirection["normal"]
self.mat_geo_sets.append(matgeoset)
def get_mat_geo_sets_multiple_mat_multiple_beam(self):
beamrot_data = self.member.geos_beamrotation[0]
@@ -810,15 +810,15 @@ class MeshSetsGetter():
{"short": beamrot_data["ShortName"]},
{"short": "D" + str(i)}
]
ccx_elset = {}
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"]
ccx_elset["beamsection_obj"] = beamsec_obj
matgeoset = {}
matgeoset["ccx_elset"] = elset_data
matgeoset["ccx_elset_name"] = get_ccx_elset_name_short(names)
matgeoset["mat_obj_name"] = mat_obj.Name
matgeoset["ccx_mat_name"] = mat_obj.Material["Name"]
matgeoset["beamsection_obj"] = beamsec_obj
# normal for this direction
ccx_elset["beam_normal"] = beamdirection["normal"]
self.mat_geo_sets.append(ccx_elset)
matgeoset["beam_normal"] = beamdirection["normal"]
self.mat_geo_sets.append(matgeoset)
# fluid
def get_mat_geo_sets_single_mat_single_fluid(self):
@@ -826,13 +826,13 @@ class MeshSetsGetter():
fluidsec_obj = self.member.geos_fluidsection[0]["Object"]
elset_data = self.ccx_eedges
names = [{"short": "M0"}, {"short": "F0"}]
ccx_elset = {}
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"]
ccx_elset["fluidsection_obj"] = fluidsec_obj
self.mat_geo_sets.append(ccx_elset)
matgeoset = {}
matgeoset["ccx_elset"] = elset_data
matgeoset["ccx_elset_name"] = get_ccx_elset_name_short(names)
matgeoset["mat_obj_name"] = mat_obj.Name
matgeoset["ccx_mat_name"] = mat_obj.Material["Name"]
matgeoset["fluidsection_obj"] = fluidsec_obj
self.mat_geo_sets.append(matgeoset)
def get_mat_geo_sets_single_mat_multiple_fluid(self):
mat_obj = self.member.mats_linear[0]["Object"]
@@ -840,13 +840,13 @@ class MeshSetsGetter():
fluidsec_obj = fluidsec_data["Object"]
elset_data = fluidsec_data["FEMElements"]
names = [{"short": "M0"}, {"short": fluidsec_data["ShortName"]}]
ccx_elset = {}
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"]
ccx_elset["fluidsection_obj"] = fluidsec_obj
self.mat_geo_sets.append(ccx_elset)
matgeoset = {}
matgeoset["ccx_elset"] = elset_data
matgeoset["ccx_elset_name"] = get_ccx_elset_name_short(names)
matgeoset["mat_obj_name"] = mat_obj.Name
matgeoset["ccx_mat_name"] = mat_obj.Material["Name"]
matgeoset["fluidsection_obj"] = fluidsec_obj
self.mat_geo_sets.append(matgeoset)
def get_mat_geo_sets_multiple_mat_single_fluid(self):
fluidsec_obj = self.member.geos_fluidsection[0]["Object"]
@@ -854,13 +854,13 @@ class MeshSetsGetter():
mat_obj = mat_data["Object"]
elset_data = mat_data["FEMElements"]
names = [{"short": mat_data["ShortName"]}, {"short": "F0"}]
ccx_elset = {}
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"]
ccx_elset["fluidsection_obj"] = fluidsec_obj
self.mat_geo_sets.append(ccx_elset)
matgeoset = {}
matgeoset["ccx_elset"] = elset_data
matgeoset["ccx_elset_name"] = get_ccx_elset_name_short(names)
matgeoset["mat_obj_name"] = mat_obj.Name
matgeoset["ccx_mat_name"] = mat_obj.Material["Name"]
matgeoset["fluidsection_obj"] = fluidsec_obj
self.mat_geo_sets.append(matgeoset)
def get_mat_geo_sets_multiple_mat_multiple_fluid(self):
for fluidsec_data in self.member.geos_fluidsection:
@@ -876,13 +876,13 @@ class MeshSetsGetter():
{"short": mat_data["ShortName"]},
{"short": fluidsec_data["ShortName"]}
]
ccx_elset = {}
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"]
ccx_elset["fluidsection_obj"] = fluidsec_obj
self.mat_geo_sets.append(ccx_elset)
matgeoset = {}
matgeoset["ccx_elset"] = elset_data
matgeoset["ccx_elset_name"] = get_ccx_elset_name_short(names)
matgeoset["mat_obj_name"] = mat_obj.Name
matgeoset["ccx_mat_name"] = mat_obj.Material["Name"]
matgeoset["fluidsection_obj"] = fluidsec_obj
self.mat_geo_sets.append(matgeoset)
# shell
def get_mat_geo_sets_single_mat_single_shell(self):
@@ -893,13 +893,13 @@ class MeshSetsGetter():
{"long": mat_obj.Name, "short": "M0"},
{"long": shellth_obj.Name, "short": "S0"}
]
ccx_elset = {}
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"]
ccx_elset["shellthickness_obj"] = shellth_obj
self.mat_geo_sets.append(ccx_elset)
matgeoset = {}
matgeoset["ccx_elset"] = elset_data
matgeoset["ccx_elset_name"] = get_ccx_elset_name_standard(names)
matgeoset["mat_obj_name"] = mat_obj.Name
matgeoset["ccx_mat_name"] = mat_obj.Material["Name"]
matgeoset["shellthickness_obj"] = shellth_obj
self.mat_geo_sets.append(matgeoset)
def get_mat_geo_sets_single_mat_multiple_shell(self):
mat_obj = self.member.mats_linear[0]["Object"]
@@ -910,13 +910,13 @@ class MeshSetsGetter():
{"long": mat_obj.Name, "short": "M0"},
{"long": shellth_obj.Name, "short": shellth_data["ShortName"]}
]
ccx_elset = {}
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"]
ccx_elset["shellthickness_obj"] = shellth_obj
self.mat_geo_sets.append(ccx_elset)
matgeoset = {}
matgeoset["ccx_elset"] = elset_data
matgeoset["ccx_elset_name"] = get_ccx_elset_name_standard(names)
matgeoset["mat_obj_name"] = mat_obj.Name
matgeoset["ccx_mat_name"] = mat_obj.Material["Name"]
matgeoset["shellthickness_obj"] = shellth_obj
self.mat_geo_sets.append(matgeoset)
def get_mat_geo_sets_multiple_mat_single_shell(self):
shellth_obj = self.member.geos_shellthickness[0]["Object"]
@@ -927,13 +927,13 @@ class MeshSetsGetter():
{"long": mat_obj.Name, "short": mat_data["ShortName"]},
{"long": shellth_obj.Name, "short": "S0"}
]
ccx_elset = {}
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"]
ccx_elset["shellthickness_obj"] = shellth_obj
self.mat_geo_sets.append(ccx_elset)
matgeoset = {}
matgeoset["ccx_elset"] = elset_data
matgeoset["ccx_elset_name"] = get_ccx_elset_name_standard(names)
matgeoset["mat_obj_name"] = mat_obj.Name
matgeoset["ccx_mat_name"] = mat_obj.Material["Name"]
matgeoset["shellthickness_obj"] = shellth_obj
self.mat_geo_sets.append(matgeoset)
def get_mat_geo_sets_multiple_mat_multiple_shell(self):
for shellth_data in self.member.geos_shellthickness:
@@ -949,13 +949,13 @@ class MeshSetsGetter():
{"long": mat_obj.Name, "short": mat_data["ShortName"]},
{"long": shellth_obj.Name, "short": shellth_data["ShortName"]}
]
ccx_elset = {}
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"]
ccx_elset["shellthickness_obj"] = shellth_obj
self.mat_geo_sets.append(ccx_elset)
matgeoset = {}
matgeoset["ccx_elset"] = elset_data
matgeoset["ccx_elset_name"] = get_ccx_elset_name_standard(names)
matgeoset["mat_obj_name"] = mat_obj.Name
matgeoset["ccx_mat_name"] = mat_obj.Material["Name"]
matgeoset["shellthickness_obj"] = shellth_obj
self.mat_geo_sets.append(matgeoset)
# solid
def get_mat_geo_sets_single_mat_solid(self):
@@ -965,12 +965,12 @@ class MeshSetsGetter():
{"long": mat_obj.Name, "short": "M0"},
{"long": "Solid", "short": "Solid"}
]
ccx_elset = {}
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.mat_geo_sets.append(ccx_elset)
matgeoset = {}
matgeoset["ccx_elset"] = elset_data
matgeoset["ccx_elset_name"] = get_ccx_elset_name_standard(names)
matgeoset["mat_obj_name"] = mat_obj.Name
matgeoset["ccx_mat_name"] = mat_obj.Material["Name"]
self.mat_geo_sets.append(matgeoset)
print(self.mat_geo_sets)
def get_mat_geo_sets_multiple_mat_solid(self):
@@ -981,12 +981,12 @@ class MeshSetsGetter():
{"long": mat_obj.Name, "short": mat_data["ShortName"]},
{"long": "Solid", "short": "Solid"}
]
ccx_elset = {}
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.mat_geo_sets.append(ccx_elset)
matgeoset = {}
matgeoset["ccx_elset"] = elset_data
matgeoset["ccx_elset_name"] = get_ccx_elset_name_standard(names)
matgeoset["mat_obj_name"] = mat_obj.Name
matgeoset["ccx_mat_name"] = mat_obj.Material["Name"]
self.mat_geo_sets.append(matgeoset)
# ************************************************************************************************
@@ -1005,38 +1005,38 @@ class MeshSetsGetter():
def get_ccx_elset_name_standard(names):
# standard max length = 80
ccx_elset_name = ""
elset_name = ""
for name in names:
ccx_elset_name += name["long"]
if len(ccx_elset_name) < 81:
return ccx_elset_name
elset_name += name["long"]
if len(elset_name) < 81:
return elset_name
else:
ccx_elset_name = ""
elset_name = ""
for name in names:
ccx_elset_name += name["short"]
if len(ccx_elset_name) < 81:
return ccx_elset_name
elset_name += name["short"]
if len(elset_name) < 81:
return elset_name
else:
error = (
"FEM: Trouble in ccx input file, because an "
"elset name is longer than 80 character! {}\n"
.format(ccx_elset_name)
.format(elset_name)
)
raise Exception(error)
def get_ccx_elset_name_short(names):
# restricted max length = 20 (beam elsets)
ccx_elset_name = ""
elset_name = ""
for name in names:
ccx_elset_name += name["short"]
if len(ccx_elset_name) < 21:
return ccx_elset_name
elset_name += name["short"]
if len(elset_name) < 21:
return elset_name
else:
error = (
"FEM: Trouble in ccx input file, because an"
"beam elset name is longer than 20 characters! {}\n"
.format(ccx_elset_name)
.format(elset_name)
)
raise Exception(error)