ABAQUS批量提交任务-Python脚本

公众号:CAE分析技术分享

前一篇文章介绍了如何用bat的形式在DOS下批量提交ABAQUS作业,这一篇将介绍如何用python脚本来实现批量提交作业。

Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。

    • Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。
    • Python 是交互式语言: 这意味着,您可以在一个 Python 提示符 >>> 后直接执行代码。

    • Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。

    • Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。

使用Python脚本实现批量提交abaqus任务基本上有俩种方式:

    1. 打开ABAQUS/CAE的情况下,通过file→run script的方式

    2. 通过ABAQUS command,不打开ABAQUS/CAE的情况



01 打开ABAQUS/CAE时

Talk is easy,let's show the code first!

ABAQUS批量提交任务-Python脚本的图1

原理解读:

第一步:首先我们需要创建一个脚本头,包含读者,时间等信息,方便他人阅读。这是一种规范,没有任何理由,照着做就可以了。#encoding:utf-8中文编码。

第二步:导入abaqus相关的库,以及python自带的time库,用于后面计算每个分析使用时长。

第三步: 用print,打印俩行提示行,表示,嗯好的,我们的任务开始了和结束了。不打也可以,只不过ABAQUS界面中提示信息很多,打印了之后很容易就可以看到。

第四步:创建一个装多个jobs名的列表,并从模型的jobs仓库中使用keys()函数获取。

第五步:核心步骤,用for循环,遍历之前创建的装有jobs名的列表,一个一个提交任务。并打印当前分析所使用的时长。这个for循环中,包含了一个if的条件判断,是用来判断当前任务的状态,如果是None,那么我们就提交他。如果是complete那么就不需要提交。

【效果图展示1】 下图为使用上面脚本后 ,ABAQUS/CAE中信息栏的信息,可以看见,Job2-4的信息都打印出来,并包含分析所使用时间。Job1由于之前已经计算过了,运行脚本前其状态已经是Completed,所以Job1没有被提交,当然信息也不会被打印出来。

ABAQUS批量提交任务-Python脚本的图2


02 不打开ABAQUS/CAE时

接下来掩饰一下,不打开ABAQUS/CAE时,如何用Python脚本批量提交ABAQUS任务。这里跟之前是有点区别的,首先我们没有打开CAE界面,所以我们没有办法直接通过访问mdb.jobs获取任务名的列表。

ABAQUS批量提交任务-Python脚本的图3


原理解读: 

第一步:脚本头(省略,同上)

 
第二步:导入相关库(省略,同上),不同的是导入了os和sys库,用于所有分析结束后60秒后自动关机。

 
第三步:创建Jobs列表储存所有需要被分析的job的名称。这个就有点类似bat的方式了,我们需要首先将所有需要提交的任务的inp文件,和脚本或bat文件放在一个文件夹下。并在脚本和bat文件中,把需要分析的job名写下来。

 
第四步:同上,for循环遍历列表,并一个一个提交任务。不同的是,上一个在你创建Job的时候已经指定了计算使用的cpu数,所以python脚本中无需对这个特殊设定。然后这一个的话,仅仅使用inp文件提交作业,inp文件中是不包含cpu数这样的信息的,所以需要额外指定你所需要的cpu数。

 
第五步:当所有分析结束之后,60秒后自动关机。


 

总结:

首先第一种方法是不推荐的,仅仅说明这也是一个批量提交任务的思路。具体为什么不推荐的原因如下:

    1. 任务不在一个模型下,就比较难处理。首先我们需要把几个模型放在一个ABAQUS界面下,然后遍历各个模型,最后再各个模型中拿到所需要的Jobs再提交。

    2. 当任务提交后,ABAQUS/CAE界面无法做其他操作

第二种方式是比较不错的,可以很轻松的处理不同模型的job,因为他是使用inp直接提交的,和bat的方式类似。提交的方式也比较相似,将ABAQUS command的路径转到存放脚本和inp文件的文件夹。使用abaqus cae nogui=xxx.py提交命令。且可以实现运算结束后自动关机的功能。

【PS】喜欢本文的朋友不妨加一下本人的微信公众号,不定时会推出技术文章。^_^

ABAQUS批量提交任务-Python脚本的图4

(9条)
默认 最新
shutdown -s -t 60
评论 点赞
多此一举,一个bat就能搞掂
评论 1 点赞
回复
您好 提交作业bat的方式我会 不会用bat让作业算完后自动关机 请您指教
评论 点赞 1

查看更多评论 >

点赞 19 评论 12 收藏 7
关注