Merge branch 'FreeCAD:master' into no-filename-encode
This commit is contained in:
@@ -246,7 +246,7 @@
|
||||
<double>2.000000000000000</double>
|
||||
</property>
|
||||
<property name="maximum" stdset="0">
|
||||
<double>2000000000.000000000000000</double>
|
||||
<double>90000000000.000000000000000</double>
|
||||
</property>
|
||||
<property name="unit" stdset="0">
|
||||
<string notr="true">Pa</string>
|
||||
|
||||
@@ -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_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_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_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_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_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_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_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_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_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_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_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_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_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_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)
|
||||
|
||||
|
||||
# ************************************************************************************************
|
||||
@@ -1003,40 +1003,41 @@ class MeshSetsGetter():
|
||||
# TODO write comment into input file to elset ids and elset attributes
|
||||
|
||||
|
||||
def get_ccx_elset_name_standard(names):
|
||||
def get_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 "
|
||||
"FEM: Trouble in elset name, 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 = ""
|
||||
def get_elset_name_short(names):
|
||||
# restricted max length = 20 (elsets)
|
||||
# in CalculiX solver input this is needed for beam elsets
|
||||
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)
|
||||
"FEM: Trouble in elset name, because an"
|
||||
"short elset name is longer than 20 characters! {}\n"
|
||||
.format(elset_name)
|
||||
)
|
||||
raise Exception(error)
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ def handle_fluidsection_liquid_inlet_outlet(inpfile, ccxwriter):
|
||||
|
||||
# Fluid sections:
|
||||
# fluidsection Liquid inlet outlet objs requires special element definition
|
||||
# to fill ccxwriter.FluidInletoutlet_ele list the ccx_elset are needed
|
||||
# to fill ccxwriter.FluidInletoutlet_ele list the mat_geo_sets are needed
|
||||
# thus this has to be after the creation of mat_geo_sets
|
||||
# different pipe cross sections will generate mat_geo_sets
|
||||
|
||||
@@ -58,14 +58,14 @@ def handle_fluidsection_liquid_inlet_outlet(inpfile, ccxwriter):
|
||||
"{}_inout_nodes.txt".format(ccxwriter.mesh_name)
|
||||
)
|
||||
|
||||
def get_fluidsection_inoutlet_obj_if_setdata(ccx_elset):
|
||||
def get_fluidsection_inoutlet_obj_if_setdata(matgeoset):
|
||||
if (
|
||||
ccx_elset["ccx_elset"]
|
||||
matgeoset["ccx_elset"]
|
||||
# use six to be sure to be Python 2.7 and 3.x compatible
|
||||
and not isinstance(ccx_elset["ccx_elset"], six.string_types)
|
||||
and "fluidsection_obj" in ccx_elset # fluid mesh
|
||||
and not isinstance(matgeoset["ccx_elset"], six.string_types)
|
||||
and "fluidsection_obj" in matgeoset # fluid mesh
|
||||
):
|
||||
fluidsec_obj = ccx_elset["fluidsection_obj"]
|
||||
fluidsec_obj = matgeoset["fluidsection_obj"]
|
||||
if (
|
||||
fluidsec_obj.SectionType == "Liquid"
|
||||
and (
|
||||
@@ -77,12 +77,12 @@ def handle_fluidsection_liquid_inlet_outlet(inpfile, ccxwriter):
|
||||
return None
|
||||
|
||||
def is_fluidsection_inoutlet_setnames_possible(mat_geo_sets):
|
||||
for ccx_elset in mat_geo_sets:
|
||||
for matgeoset in mat_geo_sets:
|
||||
if (
|
||||
ccx_elset["ccx_elset"]
|
||||
and "fluidsection_obj" in ccx_elset # fluid mesh
|
||||
matgeoset["ccx_elset"]
|
||||
and "fluidsection_obj" in matgeoset # fluid mesh
|
||||
):
|
||||
fluidsec_obj = ccx_elset["fluidsection_obj"]
|
||||
fluidsec_obj = matgeoset["fluidsection_obj"]
|
||||
if (
|
||||
fluidsec_obj.SectionType == "Liquid"
|
||||
and (
|
||||
@@ -95,13 +95,13 @@ def handle_fluidsection_liquid_inlet_outlet(inpfile, ccxwriter):
|
||||
|
||||
# collect elementIDs for fluidsection Liquid inlet outlet objs
|
||||
# if they have element data (happens if not "eall")
|
||||
for ccx_elset in ccxwriter.mat_geo_sets:
|
||||
fluidsec_obj = get_fluidsection_inoutlet_obj_if_setdata(ccx_elset)
|
||||
for matgeoset in ccxwriter.mat_geo_sets:
|
||||
fluidsec_obj = get_fluidsection_inoutlet_obj_if_setdata(matgeoset)
|
||||
if fluidsec_obj is None:
|
||||
continue
|
||||
elsetchanged = False
|
||||
counter = 0
|
||||
for elid in ccx_elset["ccx_elset"]:
|
||||
for elid in matgeoset["ccx_elset"]:
|
||||
counter = counter + 1
|
||||
if (elsetchanged is False) \
|
||||
and (fluidsec_obj.LiquidSectionType == "PIPE INLET"):
|
||||
@@ -111,7 +111,7 @@ def handle_fluidsection_liquid_inlet_outlet(inpfile, ccxwriter):
|
||||
)
|
||||
elsetchanged = True
|
||||
elif (fluidsec_obj.LiquidSectionType == "PIPE OUTLET") \
|
||||
and (counter == len(ccx_elset["ccx_elset"])):
|
||||
and (counter == len(matgeoset["ccx_elset"])):
|
||||
# 3rd index is to track which line nr the element is defined
|
||||
ccxwriter.FluidInletoutlet_ele.append(
|
||||
[str(elid), fluidsec_obj.LiquidSectionType, 0]
|
||||
|
||||
@@ -32,14 +32,14 @@ def write_femelement_geometry(f, ccxwriter):
|
||||
|
||||
f.write("\n{}\n".format(59 * "*"))
|
||||
f.write("** Sections\n")
|
||||
for ccx_elset in ccxwriter.mat_geo_sets:
|
||||
if ccx_elset["ccx_elset"]:
|
||||
elsetdef = "ELSET={}, ".format(ccx_elset["ccx_elset_name"])
|
||||
material = "MATERIAL={}".format(ccx_elset["mat_obj_name"])
|
||||
for matgeoset in ccxwriter.mat_geo_sets:
|
||||
if matgeoset["ccx_elset"]:
|
||||
elsetdef = "ELSET={}, ".format(matgeoset["ccx_elset_name"])
|
||||
material = "MATERIAL={}".format(matgeoset["mat_obj_name"])
|
||||
|
||||
if "beamsection_obj"in ccx_elset: # beam mesh
|
||||
beamsec_obj = ccx_elset["beamsection_obj"]
|
||||
normal = ccx_elset["beam_normal"]
|
||||
if "beamsection_obj"in matgeoset: # beam mesh
|
||||
beamsec_obj = matgeoset["beamsection_obj"]
|
||||
normal = matgeoset["beam_normal"]
|
||||
if beamsec_obj.SectionType == "Rectangular":
|
||||
height = beamsec_obj.RectHeight.getValueAs("mm").Value
|
||||
width = beamsec_obj.RectWidth.getValueAs("mm").Value
|
||||
@@ -79,8 +79,8 @@ def write_femelement_geometry(f, ccxwriter):
|
||||
f.write(section_def)
|
||||
f.write(section_geo)
|
||||
f.write(section_nor)
|
||||
elif "fluidsection_obj"in ccx_elset: # fluid mesh
|
||||
fluidsec_obj = ccx_elset["fluidsection_obj"]
|
||||
elif "fluidsection_obj"in matgeoset: # fluid mesh
|
||||
fluidsec_obj = matgeoset["fluidsection_obj"]
|
||||
if fluidsec_obj.SectionType == "Liquid":
|
||||
section_type = fluidsec_obj.LiquidSectionType
|
||||
if (section_type == "PIPE INLET") or (section_type == "PIPE OUTLET"):
|
||||
@@ -101,8 +101,8 @@ def write_femelement_geometry(f, ccxwriter):
|
||||
"""
|
||||
f.write(section_def)
|
||||
f.write(section_geo)
|
||||
elif "shellthickness_obj"in ccx_elset: # shell mesh
|
||||
shellth_obj = ccx_elset["shellthickness_obj"]
|
||||
elif "shellthickness_obj"in matgeoset: # shell mesh
|
||||
shellth_obj = matgeoset["shellthickness_obj"]
|
||||
section_def = "*SHELL SECTION, {}{}\n".format(elsetdef, material)
|
||||
thickness = shellth_obj.Thickness.getValueAs("mm").Value
|
||||
section_geo = "{:.13G}\n".format(thickness)
|
||||
|
||||
@@ -35,13 +35,13 @@ def write_femelement_matgeosets(f, ccxwriter):
|
||||
f.write("\n{}\n".format(59 * "*"))
|
||||
f.write("** Element sets for materials and FEM element type (solid, shell, beam, fluid)\n")
|
||||
|
||||
for ccx_elset in ccxwriter.mat_geo_sets:
|
||||
for matgeoset in ccxwriter.mat_geo_sets:
|
||||
|
||||
f.write("*ELSET,ELSET={}\n".format(ccx_elset["ccx_elset_name"]))
|
||||
f.write("*ELSET,ELSET={}\n".format(matgeoset["ccx_elset_name"]))
|
||||
|
||||
# use six to be sure to be Python 2.7 and 3.x compatible
|
||||
if isinstance(ccx_elset["ccx_elset"], six.string_types):
|
||||
f.write("{}\n".format(ccx_elset["ccx_elset"]))
|
||||
if isinstance(matgeoset["ccx_elset"], six.string_types):
|
||||
f.write("{}\n".format(matgeoset["ccx_elset"]))
|
||||
else:
|
||||
for elid in ccx_elset["ccx_elset"]:
|
||||
for elid in matgeoset["ccx_elset"]:
|
||||
f.write(str(elid) + ",\n")
|
||||
|
||||
Reference in New Issue
Block a user