连载(38):大量INP文件的自动提交

文摘   教育   2024-10-17 16:58   山东  
分析需要对大量 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.inpinp_1.inpinp_2.inpinp_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.inpinp_1.inpinp_2.inpinp_3.inp4 INP 文件。在 Abaqus / CAE File 菜单下,单击 Run Script,运行 INP_Autosubmit.py文件,则依次自动提交4INP 文件,执行完毕如图2所示,在 Abaqus 的工作路径下,同时生成了inp_0.odbinp_1.odbinp_2.odbinp_3.odb文件。

图1 执行 INP_Autosubmit.py 后效果

力学与Abaqus仿真
(1)Abaqus学习技巧分享(2)仿真分析技术服务(3)Abaqus软件技术培训(基础培训、非线性高级培训、基于Python语言对Abaqus进行二次开发培训、含橡胶材料有限元分析高级培训等)
 最新文章