mechbbs论坛

 找回密码
 立即注册
查看: 3806|回复: 5

[其它] Windows系统中ABAQUS计算文件批处理

[复制链接]

31

主题

39

帖子

555

积分

高级会员

Rank: 4

积分
555
 楼主| 发表于 2016-2-29 20:16:22 | 显示全部楼层 |阅读模式
如何实现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
见二楼:

回复

使用道具 举报

31

主题

39

帖子

555

积分

高级会员

Rank: 4

积分
555
 楼主| 发表于 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  

0

主题

23

帖子

35

积分

新手上路

Rank: 1

积分
35
发表于 2017-5-3 01:16:34 | 显示全部楼层
多谢分享
回复

使用道具 举报

1

主题

32

帖子

52

积分

注册会员

Rank: 2

积分
52
发表于 2017-6-14 12:26:03 | 显示全部楼层
批处理的话,用python来完成
回复 支持 反对

使用道具 举报

0

主题

69

帖子

202

积分

中级会员

Rank: 3Rank: 3

积分
202
发表于 2017-6-14 17:32:22 | 显示全部楼层
TUM工业大学 发表于 2016-2-29 20:16
接一楼:
使用python实现批处理

多谢分享
回复 支持 反对

使用道具 举报

0

主题

24

帖子

37

积分

新手上路

Rank: 1

积分
37
发表于 2017-11-7 08:56:46 | 显示全部楼层
谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

    免责声明:
    本站仅提供网上自由讨论使用,请勿在本站发布非法、色情等不良信息,所有个人言论并不代表本站立场,本站不负任何责任。如发现有侵权行为,请与我们联系,我们将立刻从网站上删除,并向所有持版权者致最深歉意。

联系站长|Archiver|手机版|小黑屋|mechbbs论坛(mechbbs.com)

扫描关注德国留学DIY公众号:mechbbs

GMT+8, 2024-12-28 14:11 , Processed in 1.339451 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表