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都计算完毕。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删