首页/文章/ 详情

使用python进行ABAQUS批处理-总体思路

1年前浏览2567

        平时工作中,有时会接手好多项目,或者一个项目需要使用不同的参数进行分析,并且如果涉及非线性的分析会耗时很久,为了有效的利用时间,我决定下班的时间让工作站自动计算,计算完成后工作站关机,并在此基础上,构思了使用Python自动识别工作文件夹内的待计算inp文件然后顺序提交求解。

        

        而要开发一个小插件, 我们首先需要明白我们的需求以及将要用到的知识都是什么. 一般来说, 一个ABAQUS二次开发的小插件主要有两部分构成:

  1. 核心程序(Kernel): 实现根据.inp文件建立job并提交计算, 发送提示邮件, 并拥有自动关机功能.

  2. 操作界面(GUI): GUI界面是面向使用者的, 同时也是向核心程序传输数据的关键.

        此系列文章将从这两方面详述此插件的开发方法, 思路以及过程中的技术要点.

        在本篇中, 我们主要讨论一下总体设计需求与思路.




01



核心设计需求分析



     首先我们来梳理一下对于核心程序我们有什么样的设计需求, 然后再根据这些需求来确定要使用的函数与方法, 再对不了解的函数与方法进行查询, 最终完成所有逻辑设计.

    设计需求:

  1. 因为求解过程会产生很多的临时文件或者我们不关心的文件, 所以希望在求解结束后可以自动进行删除, 这样我们就要建立一个结果文件夹, 用于存放对我们有用的结果和过程文件.

  2. 可以识别选定目录下的所有待求解文件(.inp).

  3. 可以根据.inp文件自动提交求解器求解.

  4. 在求解全部完成后, 发送提示文件至指定邮箱.

  5. 可以选择是否在计算完成后关闭计算机

    针对以上设计需求, 我们可以整理一下流程如下:

    但是以上的流程似乎有不足之处, 在于以下几个方面:

  1. 由于非线性问题的求解非常消耗内存和CPU, 如果多个inp同时求解给对计算机的性能带来极大的挑战.

  2. 全部提交求解后不等待求解完成就会执行后面的三步, 直接关闭计算机.

  3. 我希望可以得到每个inp计算情况的报告


    所以我们需要一个每次提交inp之后都等待其求解完成之后再提交下一个inp的方法, 并且在循环内进行发送邮件.所以流程更改如下:

    如此流程, 目前看来不存在逻辑问题, 其详细实现在后续文章中.

  

02


操作界面需求分析


     根据上述的核心程序需求的分析结果, 我们可以设计一下GUI的设计需求:

  1. 需要提醒一下使用者, 我们将删除选定目录下所有我们不关心的文件

  2. 要选择一个文件夹, 并将其全路径传入核心程序

  3. 可以自定义求解时所有用的处理器数目

  4. 可以输入接收邮件的邮箱地址

  5. 可以选择是否在计算全部完成后关闭计算机

    使用ABAQUS自带的RSG Gui设计工具设计操作界面, 该工具的位置为:


        打开该工具后设计开发页面如下:

    此时可以发现仅仅通过RSG生成的文件选择工具只能选择文件, 而不能选择文件夹, 不能完成我们的使用需求, 不过可以查阅该选择器的帮助文档, 通过修改器参数而变成一个选择文件夹的选择器(ABAQUS的二次开发功能强大, 不可能不提供一个文件夹选择的方法)




    在下篇文章中, 将讲述批处理核心文件的设计方法.


来源:SimCoder
非线性二次开发python
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-02-02
最近编辑:1年前
签我的导演他姓张
本科 怕什么真理无穷进一寸有一寸欣喜
获赞 51粉丝 51文章 44课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈