mysql索引抽密度_使用python脚本从abaqus输出数据库获取元素密度
屬性關(guān)聯(lián)如下:sectionAssignment將section連接到set
set是{}的容器
section將sectionAssignment連接到material
instance連接到{}(可以來(lái)自另一個(gè)模型的部件)
part連接到model
model連接到section
如果可以,請(qǐng)使用.inp或.cae文件。下面的代碼從一個(gè)打開(kāi)的cae文件中獲取它。為了從materials中徹底獲取elements,假設(shè)您在rootAssembly.instances開(kāi)始搜索,您可以執(zhí)行如下操作:找到創(chuàng)建instances的parts。在
找到包含這些parts的models。在
在這些parts中查找所有帶有material_name的{},并存儲(chǔ)與此部分相關(guān)聯(lián)的所有{}
查找引用這些sectionAssignments的所有sectionNames
在每個(gè)sectionAssignments下,都有一個(gè)關(guān)聯(lián)的region對(duì)象,它的名稱是elementSet,名稱是part。從這個(gè)part中的elements獲取所有elements。在
清理:使用Pythonset對(duì)象刪除對(duì)同一元素的任何多個(gè)引用。在
將此集合中的元素?cái)?shù)乘以rootAssembly中引用此材料的相同零件實(shí)例的數(shù)量。在
例如,對(duì)于一些名為cae的模型變量model:model_part_repeats = {}
model_part_elemLabels = {}
for instance in model.rootAssembly.instances.values():
p = instance.part.name
m = instance.part.modelName
try:
model_part_repeats[(m, p)] += 1
continue
except KeyError:
model_part_repeats[(m, p)] = 1
# Get all sections in model
sectionNames = []
for s in mdb.models[m].sections.values():
if s.material == material_name: # material_name is already known
# This is a valid section - search for section assignments
# in part for this section, and then the associated set
sectionNames.append(s.name)
if sectionNames:
labels = []
for sa in mdb.models[m].parts[p].sectionAssignments:
if sa.sectionName in sectionNames:
eset = sa.region[0]
labels = labels + [e.label for e in mdb.models[m].parts[p].sets[eset].elements]
labels = list(set(labels))
model_part_elemLabels[(m,p)] = labels
else:
model_part_elemLabels[(m,p)] = []
num_elements_with_material = sum([model_part_repeats[k]*len(model_part_elemLabels[k]) for k in model_part_repeats])
最后,獲取與material_name相關(guān)的材料密度,然后乘以num_elements_with_material。在
當(dāng)然,對(duì)于更大的模型,這種方法會(huì)非常慢,為了獲得更快的性能,在.inp文件上使用字符串技術(shù)更為可取。在
總結(jié)
以上是生活随笔為你收集整理的mysql索引抽密度_使用python脚本从abaqus输出数据库获取元素密度的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: pb9 调用系统语音_成都电销系统一个月
- 下一篇: python中plot和bar要求的格式