提取abaqus后处理结果的python脚本

本文记录后处理中,提取abaqus计算结果的python脚本

主要利用到abaqus中提供的odbAccess接口
接口示意图如下图片

图片

上述为关于odbAccess接口的一个大概的总结

代码如下,该代码实现了提取计算结果中节点的x,y坐标以及部分位移、弯矩

from odbAccess import *
from textRepr import *
import os
print("nnn")
print("************ start script ***********")
print("current workding dir is ",os.getcwd())
odb = openOdb('Job-1-sss-tri.odb',readOnly=True)
instance = odb.rootAssembly.instances
all_instance_keys = odb.rootAssembly.instances.keys()
print("all instance name is ",all_instance_keys)
print("instance key 0 is selected to used in next step  ")
nodes = odb.rootAssembly.instances[all_instance_keys[0]].nodes
elements = odb.rootAssembly.instances[all_instance_keys[0]].elements

step_keys = odb.steps.keys()
print("all step names are ",step_keys)
print("step -1 is selected in the next step")
stepi = odb.steps[step_keys[-1]]
frames = stepi.frames
print(" frame's lenght is   ",len(frames))
print("the last frame is selected!!!")
frame = frames[-1]
outputs_names = frame.fieldOutputs.keys()
print("all output names are ",outputs_names)  ## ['AC YIELD', 'CF', 'CM', 'E', 'PE', 'PEEQ', 'PEMAG', 'RF', 'RM', 'S', 'SF', 'SM', 'U', 'UR']

print("displacement of instance {} is choosen in the next step".format(all_instance_keys[0]))
displacements = frame.fieldOutputs["U"].getSubset(region = instance[all_instance_keys[0]])
SM = frame.fieldOutputs["SM"].getSubset(region = instance[all_instance_keys[0]])
print("reading displacements")
node_x = []
node_y = []
node_w = []
node_SM1 = []

for value in SM.values:
    # print(value.elementLabel,value.data)
    node_SM1.append(value.data[0])

for value in displacements.values:
    ## value.nodeLabel the label of nodei
    ## value.data the disp of nodei
    # print(value.nodeLabel,value.data)
    index = value.nodeLabel
    nd = nodes[index - 1]
    coords = nd.coordinates
    node_x.append(coords[0])
    node_y.append(coords[1])
    node_w.append(value.data[2])
import numpy as np
X = np.array(node_x)[:,None]
Y = np.array(node_y)[:,None]
W = np.array(node_w)[:,None]
SM1 = np.array(node_SM1)[:,None]

np.savetxt("G:\aba_workingdir\py_files\assess_odb_abaqus\X.txt",X)
np.savetxt("G:\aba_workingdir\py_files\assess_odb_abaqus\Y.txt",Y)
np.savetxt("G:\aba_workingdir\py_files\assess_odb_abaqus\W.txt",W)
np.savetxt("G:\aba_workingdir\py_files\assess_odb_abaqus\SM1.txt",SM1)


print("************ end script ***********")

abaqus打印信息如下

阅读原文

简介:开源CAE技术爱好者,编程爱好者,计算力学,欢迎志同道合的朋友一起交流。欢迎关注微信公众号:挨踢的土木佬
(0)
打赏 喜欢就点个赞支持下吧 喜欢就点个赞支持下吧

声明:本文来自“挨踢的土木佬”,分享链接:https://www.zyxiao.com/p/301293    侵权投诉

网站客服
网站客服
内容投稿 侵权处理
分享本页
返回顶部