1、在abaqus中使用python实现的功能 (2010-02-06 15:04:10) 转载▼ 标签: 杂谈 功能一:实行提交多个job的功能。 对象:Job object 使用:在源文件开始写上import job,源程序用mdb.jobs[name] 使用名字为name的job对象。 建立一个job对象的方法: l 利用已有的inp文件中建立job:mdb.JobFromInputFile() l 利用已有的cae中建立job: Job(...) 建议用第
2、一种方法。 设定参数的方法: ü 利用第一种方法建立job的时候,可以设定很多的参数,比如type,queue,userSubroutine等。格式:mdb.JobFromInputFile(name=,inputFile=,type=,queue=,userSubroutine=,…….)。 ü 也可以先建立一个job,然后利用job对象的setValues来设定参数,格式:job.setValues(type=,queue=,userSubroutine=,…….)。 一个简单的例子: 文件:job.py from abaqusConst
3、ants 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=jo
4、b.py 如果是多个job,同样道理了,不多说了。 功能二: 后处理,提取需要的数据,形成可以用其他软件处理的文件 功能:提取odb文件中某个set中的数据(可以是应力、应变和位移、坐标等),建立一个外部文件,把提取的结果写到这个文件中,利用tecplot处理。 1)在Odb对象中提取场变量: odb-》steps-》frams-》fieldoutputs【变量名称】 具体odb对象中的各个成员如下图 2)在场变量中选取所需要set的变量: Odb-》rootAssembly-》Sets 或者odb-》rootAssembly-》instances-》S
5、ets 上面两种方法取决了你在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 = o
6、db.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 coo
7、rdinate=Frame.fieldOutputs['COORD'] #提取节点坐标数据 center = odb.rootAssembly.nodeSets['Set-1'] centerCoordinate = coordinate.getSubset(region=center) centerValues = centerCoordinate.values #提取Set-1集合中的节点坐标 count=len(centerValues)
8、 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')
9、 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的更多功能。






