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




















