- 积分
- 0
- 注册时间
- 2009-1-13
- 仿真币
-
- 最后登录
- 1970-1-1
|
悬赏5仿真币已解决
请大侠帮忙看看,为何已经写入了场变量,但是后处理里面却看不到创建的Step和云图?
为了完成课题,我做了一个小程序,建了一个场变量对象,然后将计算的结果写入这个新的场变量当中。
但是但是后处理里面却看不到创建的Step和云图,不知是哪一步出错了,请高手们帮忙看看,不胜感激!程序如下:
# -*- coding: cp936 -*-
from abaqus import *
from abaqusConstants import *
import visualization
import math
myViewport = session.Viewport(name='X-percent',
origin=(10, 10), width=150, height=100)
# Open the tutorial output database.
myOdb = visualization.openOdb(path='06_700.odb',readOnly=False)
# Associate the output database with the viewport.
myViewport.setValues(displayedObject=myOdb)
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#创建新的场变量输出
newStep=myOdb.Step(name='New_Step',description='haha',domain=TIME,timePeriod=1.0)
newFrame=newStep.Frame(frameId=1,frameValue=1.0,description='haha')
newField=newFrame.FieldOutput(name='DELT',description='',type=SCALAR)
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#访问原有的等效塑性应变变量
instance1 = myOdb.rootAssembly.instances['PART-1-1']
myStep = myOdb.steps['Step-2']
myFrame = myStep.frames[-1]
myPEEQ = myFrame.fieldOutputs['PEEQ']
myPEEQV = myPEEQ.values
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#重新将等效塑性应变写入新建的场变量中
elements=instance1.elements
elementLabels=[0]*len(elements)
for i in range(len(elements)):
elementLabels[i]=elements[i].label
elementLabels.sort()#给单元号排序
elementValues=[0]*len(elements)
for v in myPEEQV:#用数组储存积分点处应变数值
find = elementLabels.index(v.elementLabel)
elementValues[find]=v.data#与单元号相对应
elementValuesN=a=[[0 for x in range(1)] for y in range(len(elements))]#创建二维序列储存积分点处应变数值
for u in range(len(elements)):
elementValuesN[u][0]=elementValues[u]
newField.addData(position=INTEGRATION_POINT, instance=instance1, labels=elementLabels, data=elementValuesN)#将结果写入新建场变量
myOdb.save()
print newField.values[9].data#为了检查是不是将数据真的写入了新建变量中,用这一行程序读取任意一个变量值 |
最佳答案
查看完整内容
我帮你回答了,用newField.addData(field)。把我选为最佳答案吧。
|