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

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

TOP

20
12
8