Abaqus -Python 腳本開發有多難?

目錄

  • 概述:從簡單到具有挑戰性的腳本

  • 第 1 級:完全重復之前所做的事情

  • 級別 2:修改參數

  • 第 3 級:循環參數

  • 第 4 級:更改位置

  • 第 5 級:更改(導入的)幾何圖形

  • 第 6 級:使腳本普遍適用

  • 總結

           

在 Abaqus 中編寫腳本是減少工作時間并確保使用一致方法的有效方法。之前,我們已經給出了后處理的示例和入門技巧。現在我想通過使用示例來討論哪些類型的問題對于編寫腳本來說是容易的或更具挑戰性的。希望這將使您更容易找到合適的問題并開始編寫腳本。

概述:從簡單到具有挑戰性的腳本

在詳細介紹之前,讓我們先進行概述。我們將討論的問題類型(從簡單到具有挑戰性)是:

  • 完全重復之前所做的事情

  • 修改參數

  •  循環參數

  •  修改位置

  • 更改(導入的)幾何圖形

  • 使腳本普遍適用

作為一個例子,我將使用彎曲梁,因為它很簡單,而且機械工程師往往喜歡它??。該模型是在 Abaqus/CAE 中創建的。梁的一側受到限制,同時壓力施加到頂部。使用鋼材的特性。

Abaqus -Python 腳本開發有多難?的圖1

圖 1:模型設置。

第 1 級:完全重復之前所做的事情

要創建的最簡單的腳本是那些完全重復之前完成的操作的腳本。這可以創建具有特定屬性的材料(對于特定模型名稱)、創建參考模型或進行后處理(當所有名稱都相同時)。在這些情況下,我們可以簡單地錄制一個宏。這可以通過文件 --> 宏管理器來完成。

Abaqus -Python 腳本開發有多難?的圖2

圖 2:訪問宏管理器。

單擊“創建”創建一個新宏,為其命名并選擇是將其存儲在主目錄中還是當前工作目錄中。主目錄中的宏始終可供用戶訪問,因此更適合一般用途,工作目錄中的宏僅在當前工作目錄中可用,因此更適合特定應用程序。

Abaqus -Python 腳本開發有多難?的圖3

圖 3:宏管理器對話框和創建宏對話框。在這種情況下,不存在現有的宏。創建后,它們將列在宏管理器中。

單擊繼續后,對您感興趣的模型進行(修改)并停止記錄。在本例中,我們將創建一種名為鋼的材料,具有線彈性特性。createSteelMaterial 宏出現在宏管理器中。如果我們刪除當前的鋼鐵材料模型并運行宏,材料將被重新創建。同樣,如果我們打開一個新的模型數據庫并運行宏,就會創建材質。

級別 2:修改參數

準確地再現所做的事情的宏通常不是很有用,因為它們并不普遍適用。在前面的示例中,對于鋼材料模型,如果我們還可以使用不同的名稱、不同的楊氏模量和/或在不同的模型中創建材料,那就太好了。通過稍微修改腳本即可輕松完成此操作。我們首先看一下之前創建的版本,在 Abaqus PDE 中打開它(文件 --> Abaqus PDE)。在 Abaqus PDE 中,選擇文件 --> 打開并打開 abaqusMacros.py。它位于主目錄或工作目錄中,具體取決于您選擇保存宏的位置。在代碼中,我們可以識別模型名稱、材料名稱和材料屬性。這些都可以被賦予名稱和值。通過為這些參數填寫不同的值,使得宏的適用性更加廣泛。保存修改后的版本并重新加載并通過宏管理器運行它以進行嘗試。

Abaqus -Python 腳本開發有多難?的圖4

圖 4:宏的原始版本,以及最后一部分的替代版本,其中模型名稱、材料名稱、楊氏模量和泊松比可以輕松修改。

在對話框中請求輸入

為了使事情變得更加用戶友好,最好彈出一個對話框來要求這些輸入。這可以與 getInputs 函數一起使用。圖 5 給出了一個示例。

Abaqus -Python 腳本開發有多難?的圖5

圖5:使用getInputs獲取請求輸入的對話框

生成的對話框如圖 6 所示。

Abaqus -Python 腳本開發有多難?的圖6


圖 6:使用 getInputs 創建的對話框。

第 3 級:循環參數

如果多次運行略有不同的模型版本,通常可以獲得腳本編寫的最大好處。這意味著不像我們之前那樣修改一次參數,而是自動填充不同的值并每次重新運行模型。該參數可以與任何事物相關。它可以是材料屬性、殼體厚度、摩擦系數……:Abaqus/CAE 中用值描述的任何內容。該腳本通常只有幾行代碼。我們將展示一個重新運行模型的示例,所有剛度從 150,000 MPa 到 250,000 MPa,增量為 25,000。

建腳本基礎的最簡單方法是將 CAE 中完成的操作記錄在宏或 .rpy 文件中。在本例中,當剛度從 210,000 MPa 更改為 190,000 MPa、創建新作業并提交作業時,我們記錄一個宏。使用的確切值或名稱并不重要,重點是我們可以看到用于修改剛度并運行作業的命令。

創建腳本來重復此過程:

現在,abaqusMacros.py 中添加了一個新函數(圖 7)。

Abaqus -Python 腳本開發有多難?的圖7

圖 7:修改材料屬性、創建作業并運行作業時記錄的函數。


現在,我們將文件保存為一個不同的名稱,作為 python 腳本(.py 擴展名)。除了我們當前感興趣的宏之外的所有宏都可以刪除。請將導入語句保留在文件頂部。刪除包含“def”的行以及其余行的縮進,因此代碼不再位于函數內部。然后我們可以添加循環,一個 for 循環。在 python 中,語法如圖 8 所示。如您所見,沒有代碼來表示 for 循環的結束;這是很清楚的,因為壓痕停止了。因此,縮進在Python中非常重要。

Abaqus -Python 腳本開發有多難?的圖8

圖 8:運行模量從 150000 到 250000 且增量為 25000 的模型的代碼。為作業定義一個名稱會更優雅,就像上一節中為模型名稱和材料名稱所做的那樣。顯示此版本是因為它對原始代碼的修改最少。

變量 i 取 150,000 到 250,001(不包括 250,001)范圍內的所有變量,增量為 25,000。然后,該變量用于指定剛度(循環中的第一行)并定義作業名稱。使用這種方法,所有作業都具有不同且合理的名稱,并且數據不會被覆蓋。在這種情況下,您通常需要等待第一個作業完成后再開始第二個作業。函數 waitForCompletion 執行此操作。因此,只需對宏進行一些修改,我們就可以運行多個模型,而無需用戶進一步干擾。

第 4 級:更改位置

在更改參數之前的示例中,在 Abaqus 中用值表示的內容。我們可以使用相同的方法并修改載荷的位置,而不是材料的剛度。這給出了如圖 9 所示的函數。

Abaqus -Python 腳本開發有多難?的圖9

圖 9:摘錄自宏,用于更改使用默認設置施加載荷的表面。

該腳本使用 getSequenceFromMask 命令來指定施加載荷的面。這是非常有效的,但人類很難解釋。

您可以選擇 Abaqus 在重播文件中定義幾何的方式:通過 COORDINATE、INDEX 或 COMPRESSEDINDEX(默認)。您可以通過輸入以下內容將其設置為協調:

session.journalOptions.setValues(replayGeometry=COORDINATE)

在命令行界面中。[命令行界面與消息區域占用相同的空間,位于視口下方。默認情況下它是隱藏的,可以通過單擊消息區域左側的 >>> 圖標來訪問。]。

當 replayGeometry 設置為 COORDINATE 并采取與之前相同的步驟時,生成的宏如圖 10 所示。

Abaqus -Python 腳本開發有多難?的圖10

圖 10:摘自宏,使用 replayGeometry=COORDINATE 更改施加載荷的表面

現在代碼更容易理解和修改:如果要找到不同的面,我們可以填寫該面上的點的 X-Y-和 Z-坐標。此點不應與其他面孔共享。

第 5 級:更改(導入的)幾何圖形

到目前為止,我們只更改了模型的一部分,并使用相對較短的腳本來實現這一目標。希望在不同的幾何體上具有相同的模擬條件是很常見的。我們怎樣才能做到這一點?

如果我們在 Abaqus/CAE 中手動執行此操作,那么如果導入了幾何圖形(通常是這種情況),我們需要重做模型設置,例如重新分配邊界條件和載荷的截面和位置。

這意味著腳本會更長。在這個非常簡單模型的示例中,當更改幾何形狀時,我已經有 58 行代碼(不包括 import 語句),而前面的示例最多有 15 行代碼。對于具有多個零件、接觸條件等的更復雜的模型,這會更多。我們需要使用之前顯示的技術(第 4 級)來定位相關位置并使腳本也適用于新的幾何體。做到這一點有多困難或容易,取決于預期的幾何形狀的變化;稍后會詳細介紹(第 6 級)。

創建這樣的腳本可能非常耗時。在某些情況下,特別是當幾何結構很簡單時,例如在軸對稱模型中,在 Abaqus 中繪制幾何結構可能會更有效,這樣,要改變的尺寸就是幾何參數。如果修改這些,表面 ID 不會改變。應用于它們的載荷、邊界條件或相互作用會自動更新。這在初始模型的設置過程中需要更多時間,但允許您使用級別 2(而不是級別 4)中提到的技術進行幾何修改;這要容易得多。

第 6 級:使腳本普遍適用

創建腳本最具挑戰性的方面通常是使其普遍適用。我們對腳本應應用的模型了解得越多,創建腳本就越容易。如果我們知道材料的名稱和所使用的材料模型,那么更改一些參數就很簡單了。如果我們不知道材料的類型——它可能是例如超彈性橡膠或塑料金屬——那么腳本中就有更多選擇。

特別是幾何位置可能難以以普遍適用的方式指定。如果我們知道在指定位置有一張臉,就很容易編寫腳本(如第 4 級所示)。如果我們需要的表面由未知數量的面組成,并且我們不知道確切的位置,那就更具挑戰性。必須提供面的定義。這并不總是直接明顯的,并且可以是諸如與具有最大 z 坐標的 xy 平面平行的面之類的東西。一旦推導出這個定義,就必須將其轉換為代碼,這本身就是一個挑戰。

總結

開始使用 Python 腳本編寫并不一定具有挑戰性:難度取決于手頭的問題。宏通常是腳本的良好起點。預期結果越接近宏,編寫腳本就越容易。更改參數往往很簡單,更改幾何圖形往往很困難,特別是如果腳本應該普遍適用并且對預期幾何圖形的了解有限。

                     

文章來源:ABAQUS仿真世界

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

TOP

9
2
14