杭州锐达数字技术有限公司
查看: 544|回复: 0

Abaqus利用脚本读取结果并创建新的输出场显示云图

[复制链接]
发表于 2016-5-16 10:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?我要加入

x

Abaqus利用脚本读取结果并创建新的输出场

Abaqus的后处理有时候采用Python脚本会比较方便,此次实例通过脚本语言读取已经存在的Odb结果文件,并且通过程序实现不同载荷步下的结果场数据运算,以得到新的场数据,并显示其云图。

该段程序主要以下功能:

1)打开结果文件;

2)创建载荷步对象

3)创建帧对象

4)读取位移和应力场

5)进行场数据运算

6)设置默认的变形

7)选择创建的应力场作为场输出

8)显示云图

代码解释如下;

from abaqus import *

from abaqusConstants import *

import visualization

#引入相关模块

myViewport = session.Viewport(name='Superposition example',

    origin=(10, 10), width=150, height=100)

#创建一个视图窗口,通过Viewport函数,名称是Superposition example,这个视图被赋值给变量myViewport

#打开已经存在的odb结果文件,通过path指定odb文件,此文件需要在工作目录下面

myOdb = visualization.openOdb(path='viewer_tutorial.odb')

#在当前视图窗口显式结果对象,设置默认的plot对象

myViewport.setValues(displayedObject=myOdb)

#创建两个载荷步对象,firstStep和secondStep

firstStep = myOdb.steps['Step-1']

secondStep = myOdb.steps['Step-2']

#创建两个帧对象,-1表示最后一帧

frame1 = firstStep.frames[-1]

frame2 = secondStep.frames[-1]

#读取两个载荷步最后一帧的位移场,赋值给displacement1和displacement2

displacement1 = frame1.fieldOutputs['U']

displacement2 = frame2.fieldOutputs['U']

#读取两个载荷步最后一帧的应力场,赋值给stress1和stress2

stress1 = frame1.fieldOutputs['S']

stress2 = frame2.fieldOutputs['S']

#创建新的输出场,两个位移场和应力场之差作为新的输出场

deltaDisplacement = displacement2 - displacement1

deltaStress = stress2 - stress1

#设置形状变形是依据新的位移场,Abaqus通过这个变量来显示变形形状

myViewport.odbDisplay.setDeformedVariable(deltaDisplacement)

#创建新的应力场云图,场数据是新的应力场,输出位置是积分点,显式其中的Mises应力

myViewport.odbDisplay.setPrimaryVariable(field=deltaStress,

    outputPosition=INTEGRATION_POINT,

    refinement=(INVARIANT, 'Mises'))

#显式新的Mises云图,并且在变形后的图形上显示,Deformation打开

myViewport.odbDisplay.display.setValues(plotState=(

                                          CONTOURS_ON_DEF,))

转自:http://blog.sina.com.cn/s/blog_6465f2ed0102x4d3.html


回复
分享到:

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

快速回复 返回顶部 返回列表