注册 登录
Simwe仿真论坛(forum.simwe.com),CAE/CAD/CAM/,FEA/FEM/有限元分析论坛---(手机验证注册) 返回首页

garethz的个人空间 http://home.simwe.com/?113826 [收藏] [复制] [分享] [RSS]

日志

Windows系统中ABAQUS计算文件批处理

已有 3712 次阅读2009-7-17 20:40 |个人分类:Abaqus|

如何实现input文件批处理,一直是广大ABAQUS初学者关心的问题。在ABAQUS软件中好像并没有提供一个界面来实现这个功能,因而不得不自己想办法来实现。但在其他的一些有限元商业软件中,有的软件有这样的模块。据笔者所知Dynaform就单独有一个程序来实现多个job的计算,非常方便用户计算多个文件。自力更生,丰衣足食!现在我们来看看自己如何实现ABAQUS计算文件批处理吧。

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 oldjob=jobname1 int

call abaqus job=jobname3 oldjob=jobname2 int

call abaqus job=jobname4 oldjob=jobname3 int

    
   使用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-1inputFileNameinput文件的名称,而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模块进行计算的精度等等。下面的代码表示计算任务采用2cpu2domain

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

批处理文件执行中ABAQUS版本的差别

经常看到有人会问在执行批处理文件中,加入interactive参数后(或在python中使用waitForCompletion),生成的结果文件中就没有sta文件了。经本人测试,在ABAQUS 6.5中,确实存在这个问题。但在6.6版本中,可能有的用户向ABAQUS公司反映了这个问题,在新版本中该问题已经解决。在使用interactive参数时,ABAQUS同时生成sta文件,这样可以方便用户在计算完成后检查整个计算过程。

一个input文件批处理小软件

笔者根据以上介绍的dos批处理方法为大家做了一个ABAQUS批处理的小软件,在input文件特别多的情况下非常有用,可以提高工作效率。只要将要进行批处理的input文件放到一个目录当中,在软件中选定这个目录,生成并执行批处理文件即可。计算结果都放在该目录当中。由于在VC2005环境下编程,如果直接执行不能运行,请在运行软件之前,安装一下附带的VC2005配置文件。该软件在Window xp sp2ABAQUS6.6环境测试通过。对于配置文件,如果安装了VS2005,可以在安装目录下的"\SDK\v2.0\BootStrapper\Packages\vcredist_x86"找到vcredist_x86.exe 这个文件,在目标机器上安装后即可运行该程序。

程序的最新版本与详细说明见:

http://www.simwe.com/forum/viewthread.php?tid=775346&highlight=%2Bzengguo823


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

小黑屋|手机版|Archiver|联系我们|中国仿真互动网 ( 沪ICP备07510919号 ) 云安全

GMT+8, 2020-1-18 09:46 , Processed in 0.074392 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

返回顶部