半夜吃茶几 发表于 2022-10-12 16:07:55

单元积分点的主应力、应力分量可以提取;节点的可以吗?

如题

请问各位前辈、老师:

总所周知,abaqus可以用python提取单元积分点的三个主应力以及6个应力分量。程序如下:
# -*- coding: mbcs -*-
from odbAccess import *
from abaqusConstants import *
from textRepr import *# 为了使用prettyPrint()函数,这是abaqus内置的函数

o = session.openOdb(name='myJob.odb', readOnly=False)
session.viewports['Viewport: 1'].setValues(displayedObject=o)
steps = o.steps
print steps# 除了初始分析步,只有一个分析步,是字典形式
step1 = steps]
frame = step1.frames# 该分析步的所有帧,是个list
print frame, '\n', len(frame)

f_last_step1 = frame[-1]# 最后一帧
prettyPrint(f_last_step1)# 漂亮的打印
f_last_outputs = f_last_step1.fieldOutputs# 获取最后一帧的结果
prettyPrint(f_last_outputs)# {'S': 'FieldOutput object', 'U': 'FieldOutput object'}
# 最后一帧应力
fop_S = f_last_outputs['S']
print '======================================================='
# 最后一帧位移
fop_U = f_last_outputs['U']
prettyPrint(fop_S.locations)# locations为记录数据依附点的FieldLocation对象序列,就一个值,告诉你在积分点
print '======================第一个点的数据==========================='
prettyPrint(fop_S.values)

print len(fop_S.values)# 3300个单元
prettyPrint(fop_S.values.data)# 6个应力分量 S11/S22/S33/S12/S13/S23
prettyPrint(fop_S.values.maxPrincipal)# 第一主应力
prettyPrint(fop_S.values.instance)


问题:那么,单元节点可以通过类似于编程提取积分点数据的方式,一次性提取6个分量与3个主应力吗?
         可以通过python程序进行提取,保存在程序内存中吗?因为我需要节点的应力数据进行后续计算,并不想产生额外的文件。

还是说节点的主应力与应力分量只能通过可视化模块->查询->导出csv文件查看?如图:


自我思考:

我知道可以通过以set建立path(路径)的方式提取,但是set的建立又有另外的问题(请见我上一个提问帖,如能解答,感激不尽)而且一次只能提取一个量(一个主应力或一个应力分量),而且程序需要多次遍历,时间成本过大;
也能通过建立场变量xy数据的方式提取,但是这样会产生大量xydata,因为abaqus会将每一个点的每一个数据都新建一个xydata,而不是形成大列表,这样真的太蠢了,而且我不需要真的创建xydata,我只是编程计算中需要数据。
如图:



求前辈、老师们给予指导与解答,不胜感激!




页: [1]
查看完整版本: 单元积分点的主应力、应力分量可以提取;节点的可以吗?