ABAQUS批量提交任务-Python脚本
公众号:CAE分析技术分享
前一篇文章介绍了如何用bat的形式在DOS下批量提交ABAQUS作业,这一篇将介绍如何用python脚本来实现批量提交作业。
Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。
-
Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。 Python 是交互式语言: 这意味着,您可以在一个 Python 提示符 >>> 后直接执行代码。
Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。
Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。
使用Python脚本实现批量提交abaqus任务基本上有俩种方式:
打开ABAQUS/CAE的情况下,通过file→run script的方式
通过ABAQUS command,不打开ABAQUS/CAE的情况
01 打开ABAQUS/CAE时
Talk is easy,let's show the code first!
原理解读:
第一步:首先我们需要创建一个脚本头,包含读者,时间等信息,方便他人阅读。这是一种规范,没有任何理由,照着做就可以了。#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没有被提交,当然信息也不会被打印出来。
02 不打开ABAQUS/CAE时
接下来掩饰一下,不打开ABAQUS/CAE时,如何用Python脚本批量提交ABAQUS任务。这里跟之前是有点区别的,首先我们没有打开CAE界面,所以我们没有办法直接通过访问mdb.jobs获取任务名的列表。
原理解读:
总结:
首先第一种方法是不推荐的,仅仅说明这也是一个批量提交任务的思路。具体为什么不推荐的原因如下:
1. 任务不在一个模型下,就比较难处理。首先我们需要把几个模型放在一个ABAQUS界面下,然后遍历各个模型,最后再各个模型中拿到所需要的Jobs再提交。
2. 当任务提交后,ABAQUS/CAE界面无法做其他操作
第二种方式是比较不错的,可以很轻松的处理不同模型的job,因为他是使用inp直接提交的,和bat的方式类似。提交的方式也比较相似,将ABAQUS command的路径转到存放脚本和inp文件的文件夹。使用abaqus cae nogui=xxx.py提交命令。且可以实现运算结束后自动关机的功能。
【PS】喜欢本文的朋友不妨加一下本人的微信公众号,不定时会推出技术文章。^_^

工程师必备
- 项目客服
- 培训客服
- 平台客服
TOP
