ABAQUS 批处理 Inp 文件
DOS 批处理文件实现方法
由于可以在命令行窗口启动计算,采用 dos 批处理文件实现是网上盛传的一
种方法,这里主要有两个版本。
版本 1:
call abaqus job=jobname1
call abaqus job=jobname2
call abaqus job=jobname3
call abaqus job=jobname4
这些 job 是同时进行计算的,并不是一个接一个进行计算。问题就在于 abaqus
job=jobname1 完成后,计算工作也许并没有完成,但这条命令已经完成,批处理
文件直接转到下一个 job 的运行。这样运行的结果可能是(大部分情况都是如此),
你要运行的 job 在同时计算。
版本 2:
call abaqus job=jobname1 int
call abaqus job=jobname2 int
call abaqus job=jobname3 int
call abaqus job=jobname4 int
这里的 int 其实就是计算执行中的命令参数 interactive。在加上 int 后,只有
在当前计算完成后,才会转入下一个模型的计算。
计算机自动关闭
在学习使用 python 实现批处理之前,我们先简要介绍一下,dos 中如何实现
计算机的自动关闭。在 dos 命令行关闭计算机的命令是:
shutdown –s –f –t 60
-s 关闭本地计算机。
-f 强制关闭计算机。
-t xx 将用于系统关闭的定时器设置为 xx 秒。上面的设置是 60 秒。
需要说明的两点是,-f 参数是用在计算机锁定的时候关闭计算机,如果只使
用-s 在锁定的时候就不能自动关闭计算机了。另外一点是,如果你看到关机的提
示,但又不想马上关闭计算机的话,那只有进入命令行窗口,输入 shutdown –a
解除关闭命令。
几个常用 dos 下批处理版本
好,那现在 dos 下批处理加关机的程序应该是:
call abaqus job=jobname1 int
call abaqus job=jobname2 int
call abaqus job=jobname3 int
call abaqus job=jobname4 int
shutdown –s –f –t 60
如果要加运行参数,和平常一样在第一行加上即可,如下面使用多 cpu:
call abaqus job=jobname1 cpus=2 int
call abaqus job=jobname2 cpus=2 int
call abaqus job=jobname3 cpus=2 int
call abaqus job=jobname4 cpus=2 int
如果要删除计算中生成的文件:
call abaqus j=nonJt23-2-a int
call del nonJt23-2-a.com
call del nonJt23-2-a.dat
call del nonJt23-2-a.fil
call del nonJt23-2-a.mdl
call del nonJt23-2-a.msg
call del nonJt23-2-a.prt
call del nonJt23-2-a.res
call del nonJt23-2-a.stt
如果下一个文件需要 restart 上一个文件:
call abaqus job=jobname1 int
call abaqus job=jobname2 ldjob=jobname1 int
call abaqus job=jobname3 ldjob=jobname2 int
call abaqus job=jobname4 ldjob=jobname3 int
使用 python 实现批处理
Python 是一种简单易学,功能强大的编程语言,它有高效率的高层数据结构,
简单而有效地实现面向对象编程。Python 简洁的语法和对动态输入的支持,再加
上解释性语言的本质,使得它在大多数平台上的许多领域都是一个理想的脚本语
言,特别适用于快速的应用程序开发。
在 ABAQUS 中,python 不仅可以实现软件界面的开发,还能够从命令行实
现 ABAQUS 所有功能。这里用以实现批处理的 python 语言也就是实现 job 模块
的相关命令。
先看实现 job 批处理的 python 基本代码:
from abaqusConstants import *
import job
p')
mdb.JobFromInputFile(name='job-1-1',inputFileName='springback_exp_form.in
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.in
p')
该行通过 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.in
p', 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