mysql索引抽密度_使用python脚本从abaqus输出数据库获取元素密度
屬性關聯如下:sectionAssignment將section連接到set
set是{}的容器
section將sectionAssignment連接到material
instance連接到{}(可以來自另一個模型的部件)
part連接到model
model連接到section
如果可以,請使用.inp或.cae文件。下面的代碼從一個打開的cae文件中獲取它。為了從materials中徹底獲取elements,假設您在rootAssembly.instances開始搜索,您可以執行如下操作:找到創建instances的parts。在
找到包含這些parts的models。在
在這些parts中查找所有帶有material_name的{},并存儲與此部分相關聯的所有{}
查找引用這些sectionAssignments的所有sectionNames
在每個sectionAssignments下,都有一個關聯的region對象,它的名稱是elementSet,名稱是part。從這個part中的elements獲取所有elements。在
清理:使用Pythonset對象刪除對同一元素的任何多個引用。在
將此集合中的元素數乘以rootAssembly中引用此材料的相同零件實例的數量。在
例如,對于一些名為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相關的材料密度,然后乘以num_elements_with_material。在
當然,對于更大的模型,這種方法會非常慢,為了獲得更快的性能,在.inp文件上使用字符串技術更為可取。在
總結
以上是生活随笔為你收集整理的mysql索引抽密度_使用python脚本从abaqus输出数据库获取元素密度的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pb9 调用系统语音_成都电销系统一个月
- 下一篇: linux cmake编译源码,linu