|
楼主 |
发表于 2016-2-29 20:16:45
|
显示全部楼层
接一楼:
使用python实现批处理
Python是一种简单易学,功能强大的编程语言,它有高效率的高层数据结构,简单而有效地实现面向对象编程。Python简洁的语法和对动态输入的支持,再加上解释性语言的本质,使得它在大多数平台上的许多领域都是一个理想的脚本语言,特别适用于快速的应用程序开发。
在ABAQUS中,python不仅可以实现软件界面的开发,还能够从命令行实现ABAQUS所有功能。这里用以实现批处理的python语言也就是实现job模块的相关命令。
先看实现job批处理的python基本代码:
from abaqusConstants import *
import job
mdb.JobFromInputFile(name='job-1-1',inputFileName='springback_exp_form.inp')
mdb.jobs['job-1-1'].submit()
mdb.jobs['job-1-1'].waitForCompletion()
不明白这几行不要紧,只要知道这几行干什么就可以了,这里简单解释一下。
from abaqusConstants import *
import job
导入所需的模块和常量。
mdb.JobFromInputFile(name='job-1-1',inputFileName='springback_exp_form.inp')
该行通过input文件springback_exp_form.inp生成计算任务job-1-1。inputFileName是input文件的名称,而name是计算任务名称,也就是生成的odb等文件的名称。
mdb.jobs['job-1-1'].submit()
计算文件生成后,提交计算任务。
mdb.jobs['job-1-1'].waitForCompletion()
中断python文件的执行,等待计算任务的完成。在这里waitForCompletion相当于dos批处理下的参数interactive。
如果要在计算完成后自动关机,加入以下python代码:
import os,time,sys
o="c:\\windows\\system32\\shutdown -s -f -t 60"
os.system(o)
在python实现批处理代码中也可以加入命令行中的各个参数,如numCpus代表使用的cpu数量,explicitPrecision是设定使用explicit模块进行计算的精度等等。下面的代码表示计算任务采用2个cpu,2个domain:
mdb.JobFromInputFile(name='job-1-1',inputFileName='springback_exp_form.inp', numCpus=2, numDomains=2)
当然还有更多的其他参数,具体可以参考ABAQUS Scripting Reference Manual。
这样我们就有一个批处理python范本了:
from abaqusConstants import *
import job
mdb.JobFromInputFile(name=''jobname1',inputFileName='jobname1.inp')
mdb.jobs[' jobname1'].submit()
mdb.jobs[' jobname1'].waitForCompletion()
mdb.JobFromInputFile(name=''jobname2',inputFileName='jobname2.inp')
mdb.jobs[' jobname2'].submit()
mdb.jobs[' jobname2'].waitForCompletion()
import os,time,sys
o="c:\\windows\\system32\\shutdown -s -f -t 60"
os.system(o)
如何执行呢?比如说将上面的python文件保存为python-bat.py。打开ABAQUS Command 窗口,进入python-bat.py所在目录,输入以下命令即可运行批处理文件。
abaqus cae nogui=python-bat.py |
|