- 积分
- 0
- 注册时间
- 2022-10-12
- 仿真币
-
- 最后登录
- 1970-1-1
|
如题
请问各位前辈、老师:
总所周知,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[steps.keys()[0]]
- 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[0]) # locations为记录数据依附点的FieldLocation对象序列,就一个值,告诉你在积分点
- print '======================第一个点的数据==========================='
- prettyPrint(fop_S.values[0])
- print len(fop_S.values) # 3300个单元
- prettyPrint(fop_S.values[0].data) # 6个应力分量 S11/S22/S33/S12/S13/S23
- prettyPrint(fop_S.values[0].maxPrincipal) # 第一主应力
- prettyPrint(fop_S.values[0].instance)
复制代码
问题:那么,单元节点可以通过类似于编程提取积分点数据的方式,一次性提取6个分量与3个主应力吗?
可以通过python程序进行提取,保存在程序内存中吗?因为我需要节点的应力数据进行后续计算,并不想产生额外的文件。
还是说节点的主应力与应力分量只能通过可视化模块->查询->导出csv文件查看?如图:
自我思考:
我知道可以通过以set建立path(路径)的方式提取,但是set的建立又有另外的问题(请见我上一个提问帖,如能解答,感激不尽)而且一次只能提取一个量(一个主应力或一个应力分量),而且程序需要多次遍历,时间成本过大;
也能通过建立场变量xy数据的方式提取,但是这样会产生大量xydata,因为abaqus会将每一个点的每一个数据都新建一个xydata,而不是形成大列表,这样真的太蠢了,而且我不需要真的创建xydata,我只是编程计算中需要数据。
如图:
求前辈、老师们给予指导与解答,不胜感激!
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
×
|