pythonabaqusodb文件数据读取_python进行abaqus后处理的二次开发,我想提取odb文件中的nodeSet,结果总提示Keyerror,请各位大神指教。-...

abaqus里调用python模块的问题

可能abaqus自带有sqlite3,与python2.6所带sqlite3有冲

在import时,优先搜索了abaqus自带的sqlite3了。

可以在import sqlite3,先指定正确的sqlite3所在位置:比如是c:\\python26\\lib\\sqlite3import sys

sys.path.insert(0,"c:\\python26\\lib\\sqlite3")

sys.path.insert(0,"c:\\python26\\dlls")

import sqlite3

或者是你把python2.6所带的sqlite3复制覆盖abaqus下的sqlite3

sqlite3包括两部分,不要漏掉sqlite3.dll这个动态链接库

python进行abaqus后处理的二次开发,我想提取odb文件中的nodeSet,结果总提示Keyerror,请各位大神指教。

你可以尝试dir

print dir(odb.rootAssembly.instances)

print odb.rootAssembly.instances.keys()

print dir(odb.rootAssembly.instances['SHELL-1'])

print odb.rootAssembly.instances['SHELL-1'].nodeSets.keys()

这样就知道缺少什么了

很可能是shell-1不存者是hole不存在啊。书上的例子一个例子对应的计算数据。你没有这个数据文件。

abaqus通过python来输出部件体积,不是直接操作,要通过python得到。

你看按如下方式足你的要求否:

1.在abaqus后处理点击create

xy

data

在弹出来的框内选择

odb

field

output

点击继续现xy

data

from

odb

field

output

对话框。

2.在xy

data

from

odb

field

output

对话框的variables里对position下拉菜单中选择unique

nodal,然后继续点击下方中的s应力一览选择mises。

3.在xy

data

from

odb

field

output

对话框的elements/nodes选项内选择pick

from

viewport

单击edit

selection后,在窗口内选择需要输出的点,点击鼠标中键确定。单击对话框中的plot输出应力随时间变化的曲线。

4.生成曲线后,在xy

data

manager

编辑曲线,将里面的数据直接拷贝到表格内即可。

abaqus中python文件怎么用

功能一:实行提交多job的功能

对象:Job object

使用:在源文始写上import job,源程序用mdb.jobs[name]

使用名字为name的job对象。

建立一个job对象的方法:

利用已有的inp文件中建立job:mdb.JobFromInputFile()

利用已有的cae中建立job:

Job(...)

建议用第一种方法。

设定参数的方法:

利用第一种方法建立job的时候,可以设定很多的参数,比如type,queue,userSubroutine等。格

式:mdb.JobFromInputFile(name=,inputFile=,type=,queue=,userSubroutine=,…….)。

也可以先建立一个job,然后利用job对象的setValues来设定参数,格式:job.setValues(type=,queue=,userSubroutine=,…….)。

一个简单的例子:

文件:job.py

from abaqusConstants import *

import job

mdb.JobFromInputFile(name='job-1-1',inputFileName='Job-1.inp')

#基于inp文件Job-1.inp建立名称为job-1-1的job

mdb.jobs['job-1-1'].setValues(waitMinutes=1)

#设定参数

mdb.jobs['job-1-1'].submit()

#提交任务

mdb.jobs['job-1-1'].waitForCompletion()

运行:

在cmd下面运行:Abaqus cae nogui=job.py

如果是多个job,同样道理了,不多说了。

功能二:

后处理,提取需要的数据,形成可以用其他软件处理的文件

功能:提取odb文件中某个set中的数据(可以是应力、应变和位移、坐标等),建立一个外部文件,把提取的结果写到这个文件中,利用tecplot处理。

1)在Odb对象中提取场变量:

odb-》steps-》frams-》fieldoutputs【变量名称】

具体odb对象中的各个成员如下图

2)在场变量中选取所需要set的变量:

Odb-》rootAssembly-》Sets

或者odb-》rootAssembly-》instances-》Sets

上面两种方法取决了你在inp文件种是在assembly定义了Set还是在Instance中定义了Set。具体的如下图

文件:plot.py

from odbAccess import *

from abaqusConstants import *

import string

print 'begin abaqus python'

print 'today is 10-29'

print 'this code is for 3node_sin.odb'

odb = openOdb(path='3node_sin.odb')

myAssembly = odb.rootAssembly

f=open('plot/3node_sin1.dat','w')

f.write('TITLE = Example: Simple XY Plot\n')

f.write('VARIABLES = "X-Coordinate", "Y-Coordinate"\n')

#建立一个tecplot的dat文件

i=1

while i<100:

Frame = odb.steps['Step-1'].frames

print odb.steps['Step-1'].frames

coordinate=Frame.fieldOutputs['COORD']

#提取节点坐标数据

center =

odb.rootAssembly.nodeSets['Set-1']

centerCoordinate = coordinate.getSubset(region=center)

centerValues = centerCoordinate.values

#提取Set-1集合中的节点坐标

count=len(centerValues)

s='ZONE T=" ' str(i) ' Zone", I=' str(count) ', F=POINT\n'

f.write(s)

for v in centerValues:

s2=str(v.data[0])

s3=str(v.data[1])

f.write(s2)

f.write('\t')

f.write('\t')

f.write(s3)

f.write('\t')

f.write('\n')

print i;i=i 50

#写入tecplot的dat文件中

运行:

Cmd中运行:abaqus scrip=plot.py

之所以用python因为abaqus的界面是基于python的,用它来进行批处理或者后处理是比较不错的,希望能和大家分享abaqus的更多功能。

版权声明:本站所有文章皆为原创,欢迎转载或转发,请保留网站地址和作者信息。