注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

神瑛侍者的博客

 
 
 

日志

 
 

在abaqus中使用python实现的功能  

2010-02-06 15:04:00|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
在abaqus中使用python实现的功能 - 神瑛侍者 - 神瑛侍者的博客

在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对象中的各个成员如下图
在abaqus中使用python实现的功能 - 神瑛侍者 - 神瑛侍者的博客

2)在场变量中选取所需要set的变量:
Odb-》rootAssembly-》Sets
或者odb-》rootAssembly-》instances-》Sets
上面两种方法取决了你在inp文件种是在assembly定义了Set还是在Instance中定义了Set。具体的如下图
在abaqus中使用python实现的功能 - 神瑛侍者 - 神瑛侍者的博客

文件: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的更多功能。
  评论这张
 
阅读(78)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017