多种方法批量提交Abaqus计算任务

Abaqus提交计算最常用的方法就是在Abaqus软件中通过Submit提交分析(见下图)。


   Abaqus提交计算最常用方法
 

但如果你的模型文件较大,如采用上述方法,Abaqus软件界面容易卡死,还有个别问题只能通过命令行提交计算。因此可以通过以下三种方法提交计算,以下方法计算时无需打开Abaqus软件界面,占用的计算资源相对较小。

开始之前首先检查有没有将Abaqus 的Commands添加到环境变量中,过程如下。

1.右击我的电脑—属性


2.高级系统设置


3.高级—环境变量


4.系统变量—点选Path—编辑


5.看看变量里面有没有SIMULIA\Commands的路径,若果有则结束。如果没有,自己新建一个,找到Abaqus安装目录下的SIMULIA\Commands,将其地址复制粘贴到你新建的变量中。


确定好环境变量后,就可以按以下三种方法提交计算。

第一种:

1.Abaqus中在Job模块下,点击Write Input ,将在工作目录下生成inp文件(如已有inp文件的则跳过此步骤);


2.Win+R键,输入cmd,回车


3.进入到求解文件所在的盘符,如需要计算的inp文件在G盘,则输入G:,回车


4.进入需要计算的inp文件夹下,复制地址到命令窗口,输入cd+复制的地址,回车


5.输入abaqus job=文件名  cpus=6 int ask=off

回车即可提交计算

注意:

文件名无需加.inp后缀,只需文件名即可,注意大小写;

cpus=?根据自己电脑的cpu核心定,如cpu为8核,则一般输入6即可;

int 表示显示求解信息,即Abaqus在计算时会在命令行窗口打印一些信息供用户了解Abaqus现在在干嘛;

ask off 如果之前算过一次,再一次计算,若不加ask off 会让你确定是否覆盖上一次计算结果,加上ask off表示默认覆盖;(在遇到已经存在的任务时,abaqus会询问是否覆盖先前的 job,如果不想被询问直接覆盖先前的任务,可以在上述命令结尾加上ask = off)

inp文件提交过程中的关键字用法,如下图所示:


如果出现下图提示,则根据提示将上面的abaqus换成abq2020(版本不一样,此处替换也不一样)


计算完成后会有提示,计算过程中可以在inp计算文件夹下用打开.sta的文件,里面会更新计算到第几步了


   实时观察计算步骤
 

第二种:(win7系统可能不支持)

1.进入需要计算的inp文件夹下,按住Shift,点击鼠标右键,选择在此处打开Powershell窗口


2.输入第一种方法第五步的命令回车即可


第三种:

1.进入需要计算的inp文件夹下,新建一个文本文档txt,将文档以英文命名,将第一种方法里的第五步命令输入,保存关闭;


2.将扩展名.txt修改为.bat,确定;(若看不到后缀.txt,则点击查看,勾选文件扩展名)


3.双击运行这个bat文件,即可进入求解。


批量提交计算

如果有好几个inp文件需要计算,我们不可能一个提交计算在那等着结束再提交另一个,这样费时费力,通过批量提交计算,一个计算结束自动进入下一个计算,计算完成自动关机。这样就可以前一天晚上提交计算,第二天查看结果了!

第一种:不同inp文件放置在同一文件夹下

1.将需要计算的inp文件放在同一个文件夹下,新建一个文本文档txt,将文档以英文命名,参考上述第一种方法里的第五步命令输入,保存关闭;


   放在同一文件夹下
 


   输入命令
 

2.将扩展名.txt修改为.bat,确定;


   修改扩展名
 


3.双击bat文件,即可进行顺序提交计算。

如果按上述方法启动Abaqus算完第一个就出现闪退的话,可以将call换成cmd/c,重新求解。

如果同一文件夹下inp文件过多的话,按上述方法每个inp文件都要创建对应的call命令,比较繁琐。下面就介绍一种简化命令,两句命令就可以求解多个inp文件。

1.将需要计算的inp文件放在同一个文件夹下,新建一个文本文档txt,将文档以英文命名,输入下图所示命令,保存关闭;


2.将扩展名.txt修改为.bat,确定;

3.双击bat文件,即可对该文件夹下的所有inp文件提交计算。


第二种:不同inp文件位放置在不同文件夹下

如果按第一种方法将不同inp文件放在同一文件夹下提交计算,计算后的结果都会如下图一样放在同一文件夹内,不是很清爽。


于是可以将不同inp文件分别放在不同文件夹下,这样求解的结果就会放在对应的文件夹下。


   不同inp放在不同文件夹下
 

假设不同inp文件路径为:


G:\Abaqus workspace\test\1\Job-1.inp

G:\Abaqus workspace\test\2\Job-2.inp

G:\Abaqus workspace\test\3\Job-3.inp

则可以每次进入一个文件夹,再调用Abaqus进行计算,命令如下:


cd G:\Abaqus workspace\test\1

call abq2020 job=job-1.inp cpus=6 int

cd G:\Abaqus workspace\test\2

call abq2020 job=job-2.inp cpus=6 int

cd G:\Abaqus workspace\test\3

call abq2020 job=job-3.inp cpus=6 int

将上述命令保存为.bat文件,双击运行即可。

有时候我们会希望计算机在计算完成后自动关机,可以通过在上述命令的最后面添加关机命令:

shutdown -s -f -t 30

-s 关闭本地计算机

-f 强制关闭计算机

-t xx 将用于系统关闭的定时器设置为 xx 秒,例如上面的设置是 30秒。

取消关机命令可以采用:


shutdown -a

用python实现

Python语言可以实现ABAQUS前后处理模块的二次开发,同时也可以采用Python实现ABAQUS所用功能,这里采用Python实现不同job的连续计算。

实现job批处理的Python基本代码如下:


# 导入所需的模块和常量
from abaqusConstants import*
import job

# 使用job-1.inp文件提交job-1的计算任务,numCpus=2设置cpus数,numDomains=2设置线程数
mdb.JobFromInputFile(name='job-1',inputFileName='job-1.inp',numCpus=2,numDomains=2)

# 提交计算任务
mdb.jobs['job-1'].submit()

# 中断python文件的执行,等待计算任务的完成。
# 在这里waitForCompletion相当于dos批处理下的参数interactive
mdb.jobs['job-1'].waitForCompletion()

mdb.JobFromInputFile(name='job-2',inputFileName='job-2.inp',numCpus=2,numDomains=2)

mdb.jobs['job-2'].submit()

mdb.jobs['job-2'].waitForCompletion()

# 导入其他模块
import os,time,sys

# 实现自动关机
o="c:\windows\system32\shutdown -s -f -t 60"

os.system(o)

将上面的python文件保存为 run.py ,进入 run.py 所在目录,打开cmd窗口输入以下命令即可运行批处理文件:


abaqus cae noGUI=run.py

之前在网上查到的ABAQUS inp文件任务批量提交方法,如用批处理命令或利用ABAQUS内置Python环境提交,有一定局限性,比如如果批量提交的任务中,某个任务由于计算不收敛而终止,会造成整个提交队列终止,而不能继续进行。本程序利用Python subprocess模块并行提交任务,任务间不会互相干扰,即使某个任务报错或不收敛,不会影响整个队列。在inp文件所在目录下,运行下面Python程序,即可批量提交任务。


import subprocess
import time
import os
task_list=[]
for volfrac in [0.1,0.2,0.3,0.4,0.5,0.6]: #循环生成包含不同参数的文件名列表
    for R in [4,5,6]:
        for num in range(1,11):
            #["Tension_x","Tension_y","Shear"]
            for bc in ["Tension_x","Tension_y","Shear"]:
                task_list.append([volfrac,R,num,bc])
i=0
for volfrac,R,num,bc in task_list:
    file_name="{}_{}_{}_{}.inp".format(volfrac,R,num,bc)#inp文件名
    job_name="Job-{}_{}_{}_{}".format(int(volfrac*100),R,num,bc)#任务名
    #通过命令行提交任务
    subprocess.Popen('abaqus job={} input={} cpus=2 int ask_delete=OFF'.format(job_name,file_name),shell=True)
    print("{} submitted.".format(job_name))
    i=i+1
    if i==10:
        i=0
        print("Waiting...")
        time.sleep(180)#防止一次提交过多电脑崩溃或license用尽,所以通过sleep等待任务结束
print("Finished")


最后,如何通过命令提交带有子程序的inp文件进行计算呢?

首先将inp与子程序文件放在同一文件夹内,命令如下:


   放入同一文件夹内
 


call abq2020 job=Job-1 user=shuangtuoqiuhanjie cpus=6 int ask=off

user = 子程序文件名

如果我们直接用bat文件的方法提交,会有下方提示,直接出错无法运行。


正确操作方法如下:

1.在安装程序中找到【Intel Parallel Studio XE 2020】,点击【Compiler 19.1 Update 3 for Intel 64 Visual Studio 2019 environment】(不同 Fortran 版本名字不一样),打开Fortran的DOS窗口;


   Fortran的DOS窗口
 

2.将目录切换到需要计算的inp文件夹内


   切换目录
 

3.输入上方的命令,回车,开始求解


   输入命令
 


   开始求解
 

4.打开sta文件查看求解进度


5.求解完成会有提示!

至于包含子程序的批量计算(把上面的看一遍再看这个)

1.将不同的inp文件和子程序文件放在不同的文件夹下


   放在不同的文件夹下
 

2.同样安装上述方法打开Fortran的DOS窗口,将下方命令复制进去,回车


cd G:\Abaqus workspace\test\sub1

call abq2020 job=job-1 user=shuangtuoqiuhanjie cpus=6 int

cd G:\Abaqus workspace\test\sub2

call abq2020 job=job-2 user=shuangtuoqiuhanjie cpus=6 int

3.软件会自动从上往下执行计算,直到所有inp都计算完毕。

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空