Abaqus 二次開發 基本概念

Documentation:

說明:

  • 本人對本文基本沒有原創性貢獻,所列內容僅爲備忘之用,無其他用途,如有版權問題,聯繫本人刪除;
  • 本文本應設置爲私密文章,但考慮到總能爲有需要的人提供些許幫助,特此公開;
  • 所列內容的原文出處詳見文中超鏈接或文末的參考文獻。

一、前沿

1.1. 二次開發簡介

  Abaqus軟件包包括兩大部分: 用來進行前後處理的Abaqus/CAE和用來對有限元模型進行求解計算的求解器

  Abaqus/CAE包括:Abaqus/GUIAbaqus/Kernel

  求解器包括:Abaqus/Standard, Abaqus/Explicit, Abaqus/CFD 等。

  Abaqus軟件包爲用戶提供了二次開發的接口程序,方便用戶定製適合自己的Abaqus程序。

  Abaqus允許用戶通過如下方式自定義軟件的功能:

  • User subroutines:用戶子程序允許用戶更改求解器的求解方式;
  • Environment files:允許用戶更改各種默認設置;
  • Kernel scripts:內核腳本允許用戶創建新功能以方便建模及結果處理;
  • GUI scripts:圖形界面腳本允許用戶創建新的圖形界面或更改Abaqus默認的圖形界面。

  因此,對於用戶而言,可以且有價值的Abaqus二次開發主要有兩種,求解器層次的Fortran前後處理層次的Python。前者對應用戶子程序開發,後者對應用戶圖形界面程序開發。Abaqus用戶子程序開發基於Fortran語言,用戶可以根據實際需求編寫材料本構關係(UMAT/VUMAT)、自定義單元UEL等。用戶圖形界面開發則基於Python語言,主要是根據需求對原有Abaqus/CAE功能組件進行擴展,開發專用的前後處理模塊及GUI工具等。用戶子程序的開發影響的是CAE分析過程中的求解環節,GUI開發主要是方便用戶根據自身的需求開發前後處理工具或者輔助用戶實現參數化的建模及數據處理等工作,其影響的是CAE分析過程中的前後處理環節。[1]

1.2. 有限元分析流程

有限元究竟是幹啥的?

    它就是求解數學問題的一種解題方法,常常用來求偏微分方程的近似解。

    人類目前理解的物理世界,即三維空間一維時間,通常可以用偏微分方程(PDE)來完整描述。然而,遺憾的是,數學中的解析方法往往不能解決我們現實世界中的複雜問題,這些複雜性通常源自幾何結構的複雜物理場的複雜,也就是說,難以求出實際問題的解析解。

    有限單元法的誕生,將現實世界 “ 時空離散化、數字化 ”,構造出這些偏微分方程組的近似數值方程,並用數值方法求解。從此,我們可以在數位世界模擬現實物理世界了。[3]

在這裏插入圖片描述

  Abaqus有限元分析的完整分析流程爲: 建立有限元模型 → 求解計算 → 分析結果,如下圖:

在這裏插入圖片描述

  • 前處理(Abaqus/Pre)

    建立的Abaqus模型通常包括如下信息:幾何形狀、單元局部特性、材料數據、荷載和邊界條件、分析類型、輸出要求等。

    建模的過程是把待分析問題的模型圖形化的過程,建模的最終目的是生成一個Abaqus求解器能識別的輸入文件即inp文件。

    inp文件不是編程語言,只是按照Abaqus求解器的計算要求,而形成的輸入文件。

    Abaqus輸入文件是前處理(Abaqus/Pre)和求解器(Abaqus/Standard)之間的交流工具,它包含了對分析模型的完整描述。

  • 模擬計算(Simulation)

    模擬計算即選擇適當的求解器求解inp文件所確定的數值問題,求解器的求解過程實際上就是求解大型偏微分方程組的過程。

    計算速度(解方程的速度)和計算精度是評價有限元軟件性能的兩個重要方面。

    Abaqus/Standard和Abaqus/Explicit就是用來求解大型方程組的求解器。

    - Abaqus/Standard 通用分析模塊/隱式分析求解器,能夠求解線性和非線性問題,包括靜力、動力、熱和電問題等的響應。

    - Abaqus/Explicit 特殊分析模塊/顯示分析求解器,採用顯式動力有限元列式,適用於衝擊、爆炸等短暫、瞬時的動態事件的分析。


  • 後處理(Abaqus/Post)

    後處理一般是由Abaqus/Post或其他後處理程序實現的,Abaqus/Post讀入二進制文件,可以用各種各樣方式顯示結果,如彩色等值線圖、動畫、應力雲圖、位移雲圖及x-y平面繪圖等。求解器計算求解後的分析結果主要存儲在 .odb, .dat, .res, .fil 文件中。

    前處理的最終目的是生成 .inp 文件,求解器根據inp文件的有關要求進行求解計算並輸出計算結果,後處理根據輸出的結果(.odb文件)進行數據的二次加工供工程人員參考。前處理及後處理用戶起主導作用,計算任務提交後計算機自動完成模擬計算。

1.3. Abaqus/CAE

    Abaqus/CAE (Complete Abaqus Environment) 是完整的Abaqus運行環境,它爲生成Abaqus模型、交互式提交和監控Abaqus作業及評估Abaqus模擬結果提供了一個風格簡明、一致的界面,用戶通過主窗口與Abaqus/CAE進行交互。

    Abaqus/CAE包括: Abaqus/GUIAbaqus/Kernel

  Abaqus/CAE啓動後會產生三個進程: abq2016se.exe (取決於軟件版本)、ABQcaeG.exe (Abaqus/CAE GUI) 和 ABQcaeK.exe (Abaqus/CAE Kernel)。

    主窗口內包含: 標題欄、菜單欄、工具欄、環境欄、模型樹/結果樹、工具箱區、畫布和作圖區、視口(Viewport)、提示區(Prompt area)、信息區和命令行接口。

    信息區 (Message area): Abaqus/CAE在信息區顯示狀態信息和警告。

    命令行接口 (Command line interface): 用戶可以在此處輸入Python命令(代碼)或數學表達式,

                      Abaqus/CAE內置的Python解釋器將執行用戶的上述輸入。


在這裏插入圖片描述

Abaqus主界面及命令行窗口

1.4. GUI與Kernel

  • Abaqus/GUI —— 圖形界面
  • Abaqus/Kernel —— 內核

  用戶通過主窗口與Abaqus/CAE進行交互,主窗口是Abaqus圖形界面的集中體現。

  主窗口內層層疊疊的菜單、各種按鈕等控件構成了Abaqus圖形界面的全體。

  用戶在Abaqus/CAE中進行的各種操作,都會被轉化爲Python語句,通過執行這些語句/命令,就可完成一系列繁雜的前後處理操作。Abaqus中每一個功能的實現,都離不開內核腳本的順利運行。

  Abaqus/Kernel即內核採用Python語言編寫,內核在繼承繼承Python語言自身類模型的基礎上,進行了擴展。新增了三個大類模型,分別爲Session類、Mdb類以及Odb類,對應視圖、模型數據庫和計算結果數據庫三類對象。

  GUI的作用是收集用戶輸入,以命令流的形式將其打包併發送給Kernel執行。

  Kernel的作用是根據GUI傳遞過來的參數/請求,訪問、創建或修改相應的數據庫。

  The kernel is the brains behind Abaqus/CAE. The GUI is the interface between the user and the kernel.

  GUI對於Abaqus各種功能的實現不是必不缺少的,是可有可無的。圖形界面的存在很大程度上只是降低了用戶的使用難度,用戶可通過編輯內核腳本的形式,越過Abaqus/GUI,直接完成有限元模型的前後處理和分析工作。

  儘管,理論上可直接越過GUI,完成相關分析工作,但這種做法沒有十分地必要。事實上,對於一個真正有意義的前後處理層面上的二次開發,GUI和Kernel是分不開的,通過Kernel腳本實現某些特定的功能,再通過 Abaqus GUI Toolkit 將各種功能封裝起來實現外層的GUI展現,這樣完成的二次開發才更有價值,這種定製化開發可以大大降低用戶的使用門檻。[3]

1.5. .rpy文件與.jnl文件

  爲了實現某個功能,用戶需在特定的GUI(圖形界面)中輸入相關參數,點擊 “OK” 或 “Continue” 按鈕後,程序後臺將輸入參數打包並生成與實現該功能相對應的Python語句,該語句會進一步傳遞給Kernel執行,這就是這個實現這個功能的完整流程。

  這一條條Python語句,就是要發送給內核執行的一條條命令。

  在Abaqus功能實現的過程中,後臺程序實時記錄用戶在Abaqus/CAE中各種操作所對應的Python語句,並將其記錄在當前工作目錄下的abaqus.rpy 文件中,abaqus.rpy文件是實時更新的,也就是說,在Abaqus/CAE中,每完成一步操作,它所對應的Python語句都會立即出現在abaqus.rpy文件中,用戶可以用任何一款文本編劇軟件打開abaqus.rpy文件,查看操作對應的Python語句,並根據自身需要進行修改,這就爲Abaqus的二次開發提供了很大的便利,只要用戶能夠在Abaqus/CAE中實現某一功能,那麼它所對應的Python語句可直接查看abaqus.rpy文件得到,而不需要在幫助文檔中查找,這就大大降低了二次開發的難度。

  Abaqus/CAE records its commands as a Python script in the replay (.rpy) file.

  另外,當每次對CAE模型進行保存時,文件保存目錄下都會自動保存一個與模型名稱同名的.jnl文件,.jnl文件記錄了已存儲的模型數據庫的Abaqus/CAE命令。

  .rpy中記錄着用戶在Abaqus/CAE中所有操作,對應的Pyhton語句,包括視圖的變化、模塊的切換以及誤操作等對應的Python語句,而.jnl文件僅記錄着最終有效的操作。

  當你開發一些自定義的功能時,通常開始於創建實現這些功能的內核命令(Python語句)。這些命令可以通過在Abaqus /CAE中命令行接口(CLI)中執行來進行調試。一旦從CLI中確定內核命令可以準確運行,那麼你就可以設計圖形用戶界面(GUI)來收集內核命令所需要的用戶輸入。

二、Python簡介

  Abaqus/Kernel採用Python語言編寫,Abaqus/Kernel是Abaqus/CAE的重要組成部分,它是保證前後處理順利實現的核心模塊。因此,用戶要想實現前後處理層面的二次開發,就必須掌握基本的Python編程規則。對於小白,可從如下幾個網站開始Python語言的學習:

Hello, World!


2.1. Python解釋器

  Python代碼的執行最終是由計算機的CPU(中央處理器)來完成的。但CPU能且只能直接識別並執行機器指令,它的表現形式是二進制編碼,形如:

在這裏插入圖片描述

二進制代碼

  採用二進制代碼直接編寫程序,不但易讀性差、出錯率高、維護困難,而且也不能直觀地反映用計算機解決問題的基本思路。爲了克服這些缺點,程序猿們開發了各種各樣程序,能自動將Python代碼轉換成CPU能識別的二進制代碼,這些轉換程序就叫Python解釋器。Python解釋器不止一種,官方的Python解釋器是用C語言實現的,也是使用最爲廣泛的Python解釋器,通常稱之爲CPython。除此之外,Python解釋器還有Java語言實現的Jython、C#語言實現的IronPython以及PyPy、Brython、Pyston等版本。

  這裏沒有嚴格區分編譯器和解釋器,詳見:python第一篇------編譯型語言和解釋型語言

  Python解釋器本質上就是個翻譯,它將Python語句翻譯成CPU能其唯一能識別的二進制代碼,從而實現Python語句的順利執行。Python解釋器本身也是個程序, 可以由C語言、Java語言、C#語言等編寫,它用來向CPU解釋Python代碼,我們運行Python程序時,首先啓動Python解釋器,解釋器逐行讀取要執行的Python程序文件,然後翻譯成機器指令併發送給CPU,CPU按指令進行執行,並以二進制代碼的形式反饋執行結果給解釋器,經解釋器的翻譯後,呈現出程序猿能看懂的運行結果。其原理如下圖所示:

在這裏插入圖片描述
  因此,Python程序能順利運行的必要前提是你的電腦上存在至少一款Python解釋器,安裝教程,詳見:Python解釋器的安裝

2.2. Python交互式命令行

  Python解釋器安裝完成後,可按如下步驟, 進入解釋器的交互式命令行:

  Step 1. windows 開始 >> 運行 >> 打開(O): 中輸入 cmd >> 確定,啓動windows命令提示符窗口(命令行窗口);

  Step 2. 在Windows命令行中輸入 Python 後回車,即進入了Python的交互式環境,所謂交互是指用戶與Python解釋器間的交互。

在這裏插入圖片描述
  成功進入到Python交互模式環境的標誌是命令行中出現提示符 >>>,它是Python的主提示符,用戶可在其後輸入Python語句,按回車,語句將被執行。當定義函數時,命令行將出現次提示符 ,它主要提示用戶隨後輸入的Python代碼要按照Python的語法進行縮進,連續按兩次回車後,將重新回到 >>> 提示符下。

2.3. Python的編程模式

  Python的編程模式分爲兩種: 交互式編程模式腳本式編程模式

  • 交互式編程模式

  在Windows命令行中輸入 Python,按回車後, 便進入到Python交互模式。在提示符 >>> 後,直接輸入Python語句,按回車,語句被執行,執行結果立刻被呈現出來,然後在提示符 >>> 後繼續輸入Python語句,按回車執行,依次進行,直到所有Python語句被執行完畢,這一過程用戶與Python解釋器實時交互,輸入一條Python語句,按回車,語句被執行,執行結果在交互式命令行中被呈現,這一編程模式就是交互式編程。

  • 腳本式編程模式

  Python腳本: 使用python語言編寫的一整段python程序,保存在以.py結尾的文件中, 這個以.py結尾的文件就是python腳本。

  通過腳本參數調用解釋器開始執行腳本,直到腳本執行完畢。當腳本執行完成後,解釋器不再有效,這就是腳本式編程。具體操作如下:

  Step 1. 將要執行的Python語句,全部放直到一個以.py結尾的文本文件中,不是一般性,該文件暫且命名爲test.py;

  Step 2. 啓動Windows命令行窗口;

  Step 3. 在Windows命令行中輸入 Python test.py (注意空格)。

  在Windows命令行中輸入 Python test.py,其含義是,告訴Windows操作系統,python腳本 test.py 採用 Python 解釋器解釋,解釋器逐行將文件 test.py 中的Python語句翻譯成二進制代碼,發送給CPU執行,代碼全部執行完後,Python 解釋器就被關閉。


小結:

  在命令行(指Windows命令行)中,可以執行 Python 進入Python交互式環境,也可以執行 Python test.py 運行一個.py文件。前者對應交互式編程模式,後者對應腳本式編程模式。

  此外,在命令行模式運行.py文件和在Python交互式環境下直接運行Python代碼有所不同。Python交互式環境會把每一行Python代碼的結果自動打印出來,但是,直接運行Python代碼卻不會。

  最後,Python交互模式的代碼是輸入一行,執行一行,而命令行模式下直接運行.py文件是一次性執行該文件內的所有代碼。可見,Python交互模式主要是爲了調試Python代碼用的,也便於初學者學習,它不是正式運行Python代碼的環境!


2.4. Python代碼的運行

Python代碼有如下三種運行方式:

  • 交互式解釋器 —— 交互式編程模式代碼的執行方式,逐行輸入代碼,輸一行,執行一行;

  • 命令行腳本 —— 腳本式編程模式代碼的執行方式,直接執行.py文件,文件內的全部代碼一起執行;

  • 集成開發環境 —— PyCharm等,就是一款降低Python編程難度的軟件。

  集成開發環境 (IDE: Integrated Development Environment): 是用於提供程序開發環境的應用程序,一般包括代碼編輯器、編譯器、調試器和圖形用戶界面等工具。集成了代碼編寫功能、分析功能、編譯功能、調試功能等一體化的開發軟件服務套。

  PyCharm 具備一般 Python IDE 的功能,比如:調試、語法高亮、項目管理、代碼跳轉、智能提示、自動完成、單元測試、版本控制等。

三、Abaqus腳本

  Abaqus/kernel 是Abaqus/CAE的大腦,Abaqus/GUI 是用戶和Abaqus/kernel間的接口。Abaqus Scripting Interface 允許用戶越過Abaqus/CAE GUI,直接和Abaqus/CAE kernel交流。包含 Abaqus Scripting Interface 命令的文件被稱爲腳本,使用腳本可以完成如下功能:

  • 重複任務自動化
  • 開展參數化研究
  • 創建和修改模型數據庫
  • 訪問結果數據庫中的數據

  Abaqus Scripting Interface 是Python的延伸,通常,任何關於Abaqus Scripting Interface的討論都同樣適用於Python,Python語言是Abaqus的官方接口語言。


3.1. Abaqus中的Python

  Abaqus中的Python並不是標準版本的Python,它是經過達索公司再開發的版本。達索公司在原生Python的基礎上增加了增了三大類約500個新的類模型。因此,在標準版本的Python中可以順利運行的代碼,在Abaqus中一定可以運行,反之,不一定。

  在Abaqus/CAE主界面的菜單欄中,依次點擊 Help >> About Abaqus 可查看當前Python的版本。

  • Abaqus/CAE 6.14-1: Python Version 2.7.3
  • Abaqus/CAE 2019: Python Version 2.7.3

3.2. 腳本的執行方式

  在Abaqus中,腳本(.py文件)有如下幾種執行方式:


  在Abaqus/CAE未啓動的前提下:

  • 方式一:啓動 Abaqus Command,在命令行中輸入 abaqus cae script=test.py,則Abaqus/CAE被啓動且顯示GUI,腳本test.py被執行;
  • 方式二:啓動 Abaqus Command,在命令行中輸入 abaqus cae noGUI=test.py,則Abaqus/CAE被啓動且不顯示GUI,腳本test.py被執行;

  在Abaqus/CAE啓動的前提下:

  • 方式三:在CAE主界面菜單欄中單擊 File >> Run Script >> test.py

  • 方式四:在命令行接口 (CLI)中,python提示符 >>> 後,輸入 execfile(‘test.py’) ,按回車後執行腳本。

  • 方式五:運行宏文件,在CAE主界面菜單欄中單擊 File >> Macro Manager ;

  • 方式六:在Abaqus/PDE中運行腳本。


3.3. 命令行接口

  命令行接口 (Command Line Interface) 位於主界面底部,與信息區共用一個窗格,窗格左側的兩個按鈕用於這兩個功能間的快捷切換。

  Abaqus/CAE 在命令行接口顯示Python提示符 >>>

  利用Abaqus/CAE內置的Python解釋器,可以使用命令行接口輸入Python命令和數學計算表達式。主提示符 >>> 爲Python語言的提示符,次提示符 用於提示用戶,隨之輸入的代碼需要進行縮進。函數定義結束後需要按兩次回車重新回到 >>> 提示符下。

eg:
在這裏插入圖片描述

命令區KCLI中定義函數
KCLI - Kernel Command Line Interface

  所謂的命令行接口接的是Abaqus中內置的Python解釋器,它就是Abaqus/CAE中實時運行的Python的交互式命令行,在此處可進行Python交互式編程。

3.4. Abaqus腳本接口命令與Abaqus/Kernel的交互

  Figure illustrates how Abaqus Scripting Interface commands interact with the Abaqus/CAE kernel.
在這裏插入圖片描述

Abaqus Scripting Interface commands and Abaqus/CAE
命令流與Abaqus/CAE內核的關係

  Abaqus腳本接口可以通過以下多種方式與 Abaqus/CAE 內核程序進行交互:

  • 圖形用戶界面 (GUI):在自定義對話框中設置或選擇參數,適用於複雜、系統、完整功能的實現;
  • 命名行接口:適用於單句或多句簡單指令的執行;
  • 執行腳本文件 (script):適用於相同指令重複執行或複雜指令執行的情況。

  The graphical user interface (GUI). For example, when you click OK or Apply in a dialog box, the GUI generates a command based on your options and settings in the dialog box. You can use the Macro Manager to record a sequence of the generated Abaqus Scripting Interface commands in a macro file. (宏文件記錄GUI產生的命令)

3.5. Abaqus Python 集成開發環境

  Abaqus PDE —— Abaqus Python development environment

  The Abaqus PDE provides a simple interface that you can use to develop—create, edit, test, and debug—Python scripts. The Abaqus PDE is primarily intended for use with Abaqus/CAE user interface (GUI) and kernel scripts, including plug-ins, but you can also use it to work on scripts that function independently from Abaqus/CAE.

  Abaqus PDE不需要額外安裝,已經包含於Abaqus的安裝程序中。Abaqus PDE具有語法高亮和縮進,不具備自動補全功能。

3.5.1. PDE的啓動

Abaqus PDE有三種啓動方式:

  • 在當前運行的Abaqus/CAE主窗口的菜單欄中,依次點擊 File >> Abaqus PDE;
  • 在Abaqus Command中輸入 abaqus cae -pde
  • 在Abaqus Command中輸入 abaqus pde

  前兩種方法打開的Abaqus/PDE和對應的Abaqus/CAE位於相同的session,可以方便的將Abaqus/CAE的各步驟操作命令錄製到guiLog文件中,加快開發的速度;最後一種方法單獨打開Abaqus/PDE,並不與Abaqus/CAE工作區相關聯,但是由於不打開Abaqus/CAE,因而不佔用許可證,具有較快的啓動速度。

在這裏插入圖片描述

Abaqus/Python 集成開發環境的啓動

3.5.2. PDE的使用

  1. 生成 .guiLog 文件

To record a .guiLog from Abaqus/CAE:

  Step 1. 在Abaqus PDE主菜單欄中,依次點擊 File >> New,即在主窗口中完成空白文件的新建;
  Step 2. 單擊 Start Recording 圖標,開始記錄來自Abaqus/CAE的各步操作;
  Step 3. 在Abaqus/CAE中完成全部操作;
  Step 4. 單擊 Stop Recording 圖標,停止記錄;
  Step 5. 使用標準文本編輯技術可編輯在主窗口中自動生成的各行代碼;
  Step 6. 若要繼續記錄Abaqus/CAE的操作,單擊 End of Main File 按鈕,以將光標置於文末,重複步驟2~4;
  Step 7. 保存文件,文件默認名稱爲" _abaqus1_.guiLog ",默認路徑爲工作路徑。

在這裏插入圖片描述

.guiLog文件的生成

  1. Abaqus/PDE中腳本的運行

  The Abaqus PDE runs scripts using one of three processes—GUI, kernel, or local. By default, .guiLog files are run in the Abaqus/CAE GUI process. If the Abaqus PDE was opened from within Abaqus/CAE, .py files and all other file types are run in the Abaqus/CAE kernel process by default. If the Abaqus PDE was opened without Abaqus/CAE, .py files are run in the local process by default.

  The local process runs the script without Abaqus/CAE, using Python in the local (PDE) process. You can change the process by selecting Settings → Run Script In and choosing the desired process, or by clicking the GUI, Kernel, or Local radio buttons located above the main window. If the Abaqus PDE was opened without Abaqus/CAE and you run a script with the GUI or Kernel process, Abaqus PDE will start Abaqus/CAE to run the script.

  -  Play: 代碼一次性全部執行完;

  -  Next Line: 代碼一隻執行一行。


  • 調試器與斷點

  設置/清除斷點 —— 快捷鍵:F9


四、宏文件

  To manage macros containing a set of Abaqus Scripting Interface commands, select File → Macro Manager from the main menu bar. When you create a macro, Abaqus/CAE records a sequence of Abaqus Scripting Interface commands in a macro file while you interact with Abaqus/CAE. Each command corresponds to an interaction with Abaqus/CAE, and replaying the macro reproduces the sequence of interactions.

4.1. 宏的錄製

  爲了方便查找,所創建宏的存放路徑均設置爲工作路徑,即Directory項選擇Work。第一個宏創建完成後在工作路徑中會自動生成一個名爲"abaqusMacros.py "的python文件,宏錄製完成後以定義函數的形式存儲在abaqusMacros.py文件中,所有創建的宏按生成的先後順序存儲在abaqusMacros.py這一文件中。

  例如:依次在Abaqus/CAE中錄製3個宏,採用默認名稱,分別爲:Macro1、Macro2和Macro3,在工作目錄中找到abaqusMacros.py文件,並將其打開,可以看到創建的3個宏是以函數的形式存在的,如下圖。
在這裏插入圖片描述

宏的錄製及其在abaqusMacros.py文件中的表達方式

4.2. 宏的運行

  • 方式一:File >> Macro Manager >> Run
  • 方式二:Run Script >> abaqusMacros.py >> 在命令區KCLI調用
            若宏的名稱爲Macro1,則在命令區KCLI輸入Macro1(),即實現宏Macro1的運行。

五、inp文件

5.1. inp文件的構成

  inp文件是前處理(Abaqus/Pre)和求解器(Abaqus/Standard)之間的交流工具,它包含了對分析模型的完整描述。inp文件是一個直觀的、基於由關鍵字格式組成的字符文件。

  • 註釋行:兩個星號 ( ** ) 開始的行爲註釋行;
  • 關鍵字行:一個星號 ( * ) 開始的行爲關鍵字行;
  • 數據行:關鍵字行下面緊接着的通常爲數據行。

  inp文件中的每一行不能超過80個字符

在這裏插入圖片描述

inp文件的構成

5.2. 定義分析標題

  inp文件的開始必須冠以 *HEADING, 在 *HEADING 下面的數據是用字符來說明所模擬的問題,它將提供對inp文件的準確描述,以便以後對該文件進行識別。此外,最好明確地說明量綱系統和總體座標系的方向等。

  *HEADING 下面的字符塊僅第一行出現在odb文件顯示界面的 title block 中,其餘均不顯示,如下圖。

在這裏插入圖片描述

字符塊的顯示

  由上可知,創建作業時Description裏輸入的內容、inp文件中 *HEADING 下的第一行字符和ODB文件顯示界面中 title block 的第一行爲同一內容。

六、GUI 二次開發

  GUI —— Graphical User Interface 圖形用戶界面

  · C語言中文網 - Python Tkinter教程

6.1. Abaqus GUI 工具包

  Abaqus GUI Toolkit —— Abaqus GUI 工具包/箱

  圖形用戶界面的二次開發主要是依靠Abaqus GUI Toolkit來實現的,Abaqus GUI Toolkit 是Abaqus自動處理工具之一,它能修改和拓展 Abaqus/CAE GUI 的功能,提供更高效的問題解決方法。Abaqus GUI Toolkit 不能脫離Abaqus/CAE獨立運行,須與Abaqus/CAE協同運行。

  通過 Abaqus GUI Toolkit,用戶可以創建或修改 Abaqus/CAE GUI 的組件 (控件),該工具包允許用戶進行如下操作:

  • 創建新的GUI模塊,諸如創建像Abaqus/CAE中 Part 這樣的模塊;
  • 創建新的GUI工具箱,
  • 移除Abaqus/CAE GUI中的模塊或工具箱
  • 移除某個頂級菜單或其中的某個下拉項
  • 部分更改Abaqus/CAE GUI 的模塊或工具箱

  GUI的終極目標是發送命令給Kernel執行。

  Abaqus GUI Toolkit 是 FOX GUI Toolkit 的延伸。以 FX 開頭的類來自於標準FOX庫,例如:FXButton;以 AFX 開頭的類來自於Abaqus對FOX庫的拓展,例如:AFXDialog;當具有相同功能的類具有兩個前綴時,例如:FXTable 和 AFXTable,推薦使用前綴是AFX的類。

6.2. Abaqus/GUI應用程序中的控件

  Abaqus圖形界面程序(GUI)開發過程中會用到各種各樣的控件(widget),例如對話框、文本框、按鈕、單選框、複選框、下拉框、表格等等。控件是GUI應用程序的最基本組成元素,用戶可以使用各類控件從圖形界面程序中收集參數、顯示結果以及發送指令等。

   詳見: 圖書 —— Abaqus GUI 程序開發指南 Python語言. 第四章 常用控件使用方法。

在這裏插入圖片描述

An overview of an Abaqus GUI application

6.3. 插件程序與自定義應用程序

  用戶可以通過以下兩種方式使用 Abaqus GUI Toolkit :

  • 插件架構的使用 —— the use of the plug-in architecture.
  • 創建自定義應用程序 —— create a custom application.

  當Abaqus/CAE啓動時,插件工具包 (Plug-in toolset)依次搜索特定的文件路徑,將用戶創建的插件加載到頂層菜單 Plug-ins 內。因此,用戶創建的插件必須放置於特定的文件路徑下。如果僅僅是爲標準的Abaqus/CAE程序增加某些功能,那麼通過創建插件的方式,便可基本滿足用戶的需求。

在這裏插入圖片描述

新建插件程序的位置

  相比之下,通過創建自定義應用程序,用戶除了可以爲爲 Abaqus/CAE增加新的功能,還可以修改Abaqus/CAE的某些標準特徵。雖然,創建自定義程序提供了最大的靈活性,但是,這就意味着它將比創建插件消耗更多的工作量。然而,自定義程序可以實現許多插件程序實現不了的功能,例如:

  • Remove Abaqus/CAE modules or toolsets.
  • Modify Abaqus/CAE modules or toolsets.
  • Change the application name and version numbers.
  • Control the startup command and license token used.

   SIMULIA Learning Community


6.4. 插件程序開發

  插件程序是Abaqus GUI 開發中較爲簡單的一類,一般適用於功能簡單、界面單一的程序開發。

  插件程序分爲 內核插件程序 GUI插件程序

  內核插件程序通過編寫腳本實現,內核插件沒有圖形界面,即通過直接運行腳本的形式爲Abaqus/CAE增加新的功能。

  GUI插件程序通過Abaqus GUI 工具包創建圖形界面,並將命令傳遞給內核程序執行。

編寫腳本實現,內核插件沒有圖形界面,即通過直接運行腳本的形式爲Abaqus/CAE增加新的功能。

  1. 插件程序的創建方法

   Abaqus中的插件可以直接通過編寫腳本得到,也可以通過Really Simple GUI (RSG) Dialog Builder 可視化設計得到。直接使用腳本編程需要比較全面瞭解 Abaqus GUI Toolkit 中的對象和函數,而使用RSG比較直觀簡單,不需要了解 Abaqus GUI Toolkit 中的對象。使用RSG編寫插件的缺點在於 RSG 僅能部分替代 GUI Toolkit 對象的創建任務,使用它只能建立比較簡單的插件,利用 RSG 編寫的插件都是一次性提供所有輸入,單擊“ OK ”按鈕運行即得結果。當需要插件和用戶能相互多次交互時,就必須藉助 Abaqus GUI Toolkit 中的一些對象來實現。

  • RSG Dialog Builder 編寫單步執行插件

     示例: 標準化鋼箱梁abaqus模型建立,使用RSG的插件二次開發

  • Abaqus GUI Toolkit 編寫多步執行插件

  1. 插件程序的保存方式

   使用RSG對話框構造器創建的插件程序,有兩種保存方式: RSG plug-in Standard plug-in.

   RSG plug-in 可以在重新啓動RSG對話框構造器時再次加載並編輯圖形界面,Standard plug-in 無法進行重新加載,無法快速預覽插件的圖形界面,控件的增加修改及排列布置都需要手動輸入代碼來完成。

   但是 RSG plug-in 所包含的控件種類有很大的侷限性,而 Standard plug-in 控件類別以及庫函數豐富,可以實現較大規模複雜程序的開發,Abaqus幫助文檔中的資料基本是按照 Standard plug-in 方式提供的。

   推薦將插件程序保存爲 Standard plug-in .

   另外,插件的保存目錄又分爲 Home directory Current directory. 兩者分別代表用戶主目錄和 Abaqus 當前的工作目錄。


  1. 插件程序的使用方法

   插件程序的使用方法簡單,無須安裝。將編寫好的插件程序直接拷貝到 Abaqus安裝目錄或者當前工作目錄下的abaqus_plugins文件夾內,便可實現對插件程序的自動加載。再次啓動Abaqus/CAE時,在CAE主窗口界面下的 Plug - ins 菜單內會自動出現相應的插件工具菜單。

   插件程序可以放置在如下目錄中:

  • abaqus_dir\abaqus_plugins,該插件可被所有用戶使用;
  • home_dir\abaqus_plugins,該插件僅被特定用戶使用;
  • current_dir\abaqus_plugins,該插件可以被有當前目錄權限的用戶使用;
  • abaqus_v6.env 文件中定義的plugin_dir,該插件可以被有該目錄訪問權限的用戶調用;

  1. 插件程序的組成

   一般插件由 註冊文件 圖形界面文件 內核執行文件 組成 。

  • 註冊文件

   一般以 ×××_plugin.py 命名,其主要作用是註冊各類控件關鍵字,檢查數據合法性,並將插件工具註冊到Plug-ins菜單或者自定義工具條中。決定所創建的插件程序出現在Abaqus/CAE中的哪個位置處,是Plug-in菜單下,還是主菜單欄上,還是其他。

  • 圖形界面文件

   一般以 ×××_DB.py 命名,其主要作用是定義圖形界面框架、各類控件,並關聯各控件的執行目標、執行動作。決定圖形界面長什麼樣,要收集什麼樣的參數,參數蒐集完成後發送給哪個內核函數等。

  • 內核執行文件

   一般 用戶自定義 文件名稱,內核執行文件是插件程序的核心,包含了一些列驅動 Abaqus/CAE 內核的指令,通過執行這些指令完成 CAE 建模以及數據處理等功能。決定該插件程序能實現什麼功能。

   上述程序爲插件程序的主要組成文件,除了上述文件外,用戶還可以指定多種格式的圖片文件作爲工具圖標或者截面插圖。


  1. 插件程序的管理

   當插件程序較多時,可以將插件進行分類管理,將具有類似功能的插件放在統一的菜單或者工具條中,方便用戶調用。

  • 通過菜單進行管理,即將插件工具註冊到主菜單下;
  • 通過工具條進行管理,即將插件工具註冊到工具條中。

6.5. 自定義程序開發


· · · 待續 · · ·


七、用戶子程序二次開發


詳見: abaqus二次開發概述


八、Abaqus的文件系統


文件類型 文件名稱及拓展名 說明 默認名稱
數據庫文件 模型數據庫文件 .cae - 用戶自定義名稱
數據庫文件 輸出數據庫文件 .odb - job_name.odb
保存命令的文件 .rpy
(python腳本)
記錄幾乎每一步GUI操作所對應的內核函數命令 abaqus.rpy
保存命令的文件 .jnl
(python腳本)
包含用於複製已存儲的模型數據庫的Abaqus/CAE命令 與.cae文件的名稱保持一致


文件類型 文件名稱及拓展名 說明 默認名稱
- .guiLog 記錄使用者在CAE軟件中的每一步GUI操作 _abaqus1_.guiLog
宏文件 .py
(python腳本)
- abaqusMacros.py


九、尾聲

  以上,便是關於Abaqus二次開發中一些基本概念的簡單介紹,清晰而深刻的理解這些概念,有助於理清二次開發的思路,提升開發的效率。

  本文無任何商業用途,僅用於個人備忘。


  爲了更深刻的理解Abaqus的二次開發,現作如下概括:

  物理世界通常可以用偏微分方程來完整描述,對於複雜問題,偏微分方程很難且往往不能求得解析解。採用有限單元法便可以離散求解,求解的精度取決於離散的程度,求解域被離散的越細小,求解精度越高,得到的離散方程組中方程的個數就越多。爲了滿足必要的解答精度,方程組的規模往往是相當巨大的,這就爲手動求解帶來挑戰。隨着計算機技術的迅速發展,使大型方程組的求解變得更加高效、快捷,許多有限元軟件由此應運而生,Abaqus就是其中較爲成功的一款。

  作爲一款商業通用的有限元分析軟件,Abaqus不可能很細緻地囊括所有物理問題的分析。因此,Abaqus允許用戶自定義一些功能,以爲模型的建立、計算結果的分析及特殊問題的求解提供最大方便。用戶添加原生Abaqus版本所不具備的功能的這個過程,就是Abaqus的二次開發。

  在Abaqus中,一個物理問題的最終解答,主要包括前處理、求解計算和後處理三個過程。前、後處理主要依靠Abaqus/CAE實現,求解計算主要依靠Abaqus的求解器完成。Abaqus/CAE是由Python語言編寫的,Abaqus求解器是由Fortran語言編寫的。因此,Abaqus的二次開發有兩種,前後處理層次的Python和求解器層次的Fortran。

  前處理的終極目標是生成 .inp 文件,.inp文件是求解器的輸入文件,其中包含了對分析模型的完整描述,.inp文件有其自身的特定格式。所有關於前處理方面的二次開發,最終目的都是爲了方便、快速地生成 .inp 文件。.inp文件確定了方程組的規模,規定了求解方式,定義了輸出的物理量等,求解器根據 .inp 的請求,採用各種數學方法,在不顯著降低求解精度的前提下,儘可能快速的求解方程,並將計算結果存儲在 .odb 文件中。後處理主要是從 .odb 中讀取數據,以待後續的數據二次加工,諸如繪製各種雲圖等。所有關於後處理方面的二次開發,最終目的也都是快速高效地處理計算結果。由上我們可知,.inp 文件確定了方程組具體形式,求解器完成了方程組的求解,.odb 文件存儲計算結果。

  在前後處理層次的二次開發中,GUI二次開發是我們經常遇到且有意義的,GUI二次開發主要是爲Abaqus/CAE修改或添加圖形界面以實現各種功能,它能顯著降低用戶使用Abaqus的難度。開發的圖像界面位於何處,菜單欄還是工具條中,這是註冊文件要完成的工作;圖形界面長什麼樣,有幾個按鈕,蒐集什麼樣的數據,這是圖形界面文件要完成的工作;具體功能的實現,則是內核執行文件要完成的工作。


  以上,便是關於Abaqus二次開發的一些基本概念的介紹,因篇幅有限,某些非關鍵操作未做詳細說明,如有疑問,歡迎郵件來詢。

  僅以此文爲我斷斷續續近1個月的Abaqus二次開發做一個總結,同時也爲有需要的人提供多一點參考。

  胸藏文墨懷若谷,腹有詩書氣自華,希望各位都能在知識的pāo子裏快樂徜徉。

  因個人水平有限,文中難免有所疏漏,還請各位大神不吝批評指正。

  最後,祝各位攻城獅們,珍愛生命,保護髮際線!

  本文部分內容,源於網絡!

  歡迎大家點贊、評論及轉載,轉載請註明出處!

  爲我打call,不如爲我打款!

在這裏插入圖片描述

十、參考文獻

[1]. Abaqus GUI 程序開發指南 Python語言. 賈利勇 富琛陽子 賀高 周正光 編著.
[2]. ABAQUS Python 二次開發 攻略. 蘇景鶴 江丙雲 編著.
[3]. 理解多物理場有限元底層機理:偏微分方程——物理世界模擬器. 科技千里眼.
[4]. ABAQUS/Standard 有限元軟件入門指南. 莊茁 等 譯.
[5]. 使用python進行ABAQUS的二次開發的簡要說明. young2203.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章