使用python進行ABAQUS批處理-總體思路

        平時工作中,有時會接手好多項目,或者一個項目需要使用不同的參數進行分析,并且如果涉及非線性的分析會耗時很久,為了有效的利用時間,我決定下班的時間讓工作站自動計算,計算完成后工作站關機,并在此基礎上,構思了使用Python自動識別工作文件夾內的待計算inp文件然后順序提交求解。

        

        而要開發一個小插件, 我們首先需要明白我們的需求以及將要用到的知識都是什么. 一般來說, 一個ABAQUS二次開發的小插件主要有兩部分構成:

  1. 核心程序(Kernel): 實現根據.inp文件建立job并提交計算, 發送提示郵件, 并擁有自動關機功能.

  2. 操作界面(GUI): GUI界面是面向使用者的, 同時也是向核心程序傳輸數據的關鍵.

        此系列文章將從這兩方面詳述此插件的開發方法, 思路以及過程中的技術要點.

        在本篇中, 我們主要討論一下總體設計需求與思路.



01


核心設計需求分析



     首先我們來梳理一下對于核心程序我們有什么樣的設計需求, 然后再根據這些需求來確定要使用的函數與方法, 再對不了解的函數與方法進行查詢, 最終完成所有邏輯設計.

    設計需求:

  1. 因為求解過程會產生很多的臨時文件或者我們不關心的文件, 所以希望在求解結束后可以自動進行刪除, 這樣我們就要建立一個結果文件夾, 用于存放對我們有用的結果和過程文件.

  2. 可以識別選定目錄下的所有待求解文件(.inp).

  3. 可以根據.inp文件自動提交求解器求解.

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

  5. 可以選擇是否在計算完成后關閉計算機

    針對以上設計需求, 我們可以整理一下流程如下:

使用python進行ABAQUS批處理-總體思路的圖1

    但是以上的流程似乎有不足之處, 在于以下幾個方面:

  1. 由于非線性問題的求解非常消耗內存和CPU, 如果多個inp同時求解給對計算機的性能帶來極大的挑戰.

  2. 全部提交求解后不等待求解完成就會執行后面的三步, 直接關閉計算機.

  3. 我希望可以得到每個inp計算情況的報告


    所以我們需要一個每次提交inp之后都等待其求解完成之后再提交下一個inp的方法, 并且在循環內進行發送郵件.所以流程更改如下:

使用python進行ABAQUS批處理-總體思路的圖2

    如此流程, 目前看來不存在邏輯問題, 其詳細實現在后續文章中.

  

02


操作界面需求分析


     根據上述的核心程序需求的分析結果, 我們可以設計一下GUI的設計需求:

  1. 需要提醒一下使用者, 我們將刪除選定目錄下所有我們不關心的文件

  2. 要選擇一個文件夾, 并將其全路徑傳入核心程序

  3. 可以自定義求解時所有用的處理器數目

  4. 可以輸入接收郵件的郵箱地址

  5. 可以選擇是否在計算全部完成后關閉計算機

    使用ABAQUS自帶的RSG Gui設計工具設計操作界面, 該工具的位置為:


使用python進行ABAQUS批處理-總體思路的圖3

        打開該工具后設計開發頁面如下:

使用python進行ABAQUS批處理-總體思路的圖4

    此時可以發現僅僅通過RSG生成的文件選擇工具只能選擇文件, 而不能選擇文件夾, 不能完成我們的使用需求, 不過可以查閱該選擇器的幫助文檔, 通過修改器參數而變成一個選擇文件夾的選擇器(ABAQUS的二次開發功能強大, 不可能不提供一個文件夾選擇的方法)




    在下篇文章中, 將講述批處理核心文件的設計方法.






登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

7
5
9