文章目录
- 0、背景
- 1、正文
0、背景
ABAQUS自动批量提交INP文件。原文来自曹老师公众号,感兴趣的可以点击这里。
为了防止遗失,我还是先保存比较好。
1、正文
分析需要对大量 INP 文件进行提交分析,在 Abaqus / CAE 中手动操作无法完成,如何开发脚本实现该功能?
『解 答』
有读者给笔者发邮件咨询如何编写脚本以实现大量 INP 文件的自动提交。也有读者经常咨询诸如“Abaqus / CAE 中没有提供某项功能,我应该如何编写脚本来实现”等问题,笔者希望通过这个自动批量提交INP 文件的实例,教给读者遇到新功能新问题,自己如何想办法来解决。
笔者在看到读者问的这个大量INP文件的自动提交问题时,首先想到下列几点:
(1)它的主要功能是创建有限元分析作业时,直接提交 INP 文件,所以需要用到自动提交分析作业的命令,笔者任意选择了一个 INP 文件,并录制 Abaqus / CAE 中提交 INP 分析作业的的对应操作,得到代码如下:
mdb.JobFromInputFile(name=‘Job-beam121’,
inputFileName=‘C:\temp\Job-beam121.inp’, type=ANALYSIS, atTime=None,
waitMinutes=0, waitHours=0, queue=None, memory=90, memoryUnits=PERCENTAGE,
getMemoryFromAnalysis=True, explicitPrecision=SINGLE,
nodalOutputPrecision=SINGLE, userSubroutine=‘’, scratch=‘’,
resultsFormat=ODB, multiprocessingMode=DEFAULT, numCpus=1, numGPUs=0)
(2)仔细观察上述代码,发现只有 name 参数和 inputFileName两个参数是用户必须输入参数,其他参数都是 Abaqus 软件默认设置,可以将代码简化为:
mdb.JobFromInputFile(name=‘Job-beam121’, inputFileName=‘C:\temp\Job-beam121.inp’, )
☞提示:读者一定要注意,因为inputFileName 后的参数都选择默认值,最后面的英文逗号“,”一定不能删掉;如果提交 INP 文件的过程中,还涉及调用用户子程序,则在后面添加 userSubroutine 参数
(3)因为涉及大量 INP 文件的自动提交,则一定用到循环功能,最经常用到的循环为for… in range()循环;
(4)如果通过调用程序实现自动提交 INP 文件,则 INP 文件的名字一定要有规律,否则无法找到对应的 INP 文件。本实例中,INP 文件的名字分别为inp_0.inp,inp_1.inp,inp_2.inp,inp_3.inp(本实例的目的是说明编写脚本的方法,仅取4个 INP 文件作为演示)
(5)为了让分析结果 ODB 文件能够直观反映 INP 文件的名字,构造了与 INP 文件同名的 ODB 文件。
综合考虑上述5个方面,编写完成的源代码如下(\INP_Autosubmit.py):
from abaqus import *
from abaqusConstants import *
for i in range(0,4):jobName='inp_'+str(i)myJob=mdb.JobFromInputFile(name=jobName, inputFileName='C:\\temp\\'+jobName+'.inp', )myJob.submit()myJob.waitForCompletion()
为了测试代码的正确性,特地构造了 inp_0.inp,inp_1.inp,inp_2.inp,inp_3.inp共4个 INP 文件。在 Abaqus / CAE 的 File 菜单下,单击 Run Script,运行 INP_Autosubmit.py文件,则依次自动提交4个INP 文件,执行完毕如图2所示,在 Abaqus 的工作路径下,同时生成了inp_0.odb、inp_1.odb、inp_2.odb、inp_3.odb文件。