相信大家在研究过程中都会有这个需求,进行大量工况的批量运算时,怎么让其自动的一个一个进行提交,而无需手动提交?
这里介绍两种方法,两种方法各有优劣,可以根据自己实际情况进行选择:
Bat文件提交方法;
Python提交方法。
Bat文件
Abaqus command中有一些基本的程序调取命令,经常使用服务器的小伙伴估计都不陌生。在帮助文档《Abaqus Analysis User's Guide》的3.2.2节中详细介绍了inp文件提交过程中的关键字用法,如下图所示:
这里给出一个最简单的inp文件提交格式如下:
abaqus job=job-name int
其中int 为 interactive的缩写,帮助文档解释:在运行过程中反馈进程,隐式求解输出log文件;显式求解则输出status和log文件。Interactive还有一个重要功能是:让任务一个一个提交,而不是一次性提交运算。
为了批量提交计算,我们可以将任务提交语句写入bat文本文件,双击bat文件即可提交运算;但经常会由于输入格式错误而无法实现预期效果。
错误示例:
这也是网上经常遇到的错误答案:使用call作为开始关键字,或没有采用int关键字。运行后会发现多个任务同时提交,且仅前几个任务被提交;
正确示例:
以cmd/c为开始,并包含int或interactive关键字,此时任务可以顺序提交。
【注意1】如果需要多cpu提交,将每行内容增加cpus=4,如下:
【注意2】bat文件和inp文件放置到相同目录下,则可以采用相对路径引用,如果非相同目录,job文件则需要采用绝对路径;
【注意3】提前将原有计算结果删除,否则将提示“old job files exsit. overwrite?<y/n>”,为了避免此类手动操作,请先将原有计算结果文件删除。
Python提交方法
这里主要讲解ABAQUS/CAE界面下,使用Python代码批量提交任务,代码量很少,正文内容仅十行,可以实现:Job模块下任务状态为None时,顺序批量的提交计算,并统计每个任务所耗费的时间。
代码运行方式:
方式1:菜单栏File->Run Script...
方式2:在底部命令输入窗口中粘帖上述代码