
發布
注冊
/
登錄abaqus輸出腳本的案例
Abaqus cae noGUI 運行 python 腳本,命令行窗口輸出提示信息 ¥5
<p> 通過 <a href="https://www.yqgqt.org.cn/major/abaqus" rel="noopener noreferrer" target="_blank">Abaqus</a> Command 窗口 或者 Windows 的 CMD 窗口,以 <a href="https://www.yqgqt.org.cn/major/abaqus" rel="noopener noreferrer" target="_blank">abaqus</a> <a href="https://www.yqgqt.org.cn/major/cae" rel="noopener noreferrer" target="_blank">cae</a> noGUI=myscript.py 的方式,運行 <a href="https://www.yqgqt.org.cn/major/abaqus" rel="noopener noreferrer" target="_blank">Abaqus</a> 的 Python 腳本,是一個非常方便且高效的操作。但是,這種操作有一個明顯的缺點,那就是 Python 腳本中的 print( ) 語句無法在命令行窗口輸出提示內容,著對于 Python 腳本運行情況的監控是極其不利且不方便的。</p><p> <a href="https://www.yqgqt.org.cn/major/abaqus" rel="noopener noreferrer" target="_blank">Abaqus</a> 內置的 prettyPrintToTerm( ) 方法,雖然可以實現在命令行窗口輸出提示內容,但是樣式很丑。
展開 Abaqus二次開發之Python腳本讀取場輸出位移
本次腳本將要指定數據庫文件,并輸出指定位置(set)的位移信息。
編程思路:
寫注釋行,盡量詳細解釋腳本語句,增強可移植性;
導入相應模塊;
本次實例要輸出場輸出位移信息,必須訪問分析步、幀;
創建對象時,分步創建多個變量表示對象(推薦):
創建變量表示odb對象,打開輸出數據庫;
創建變量表示第一個分析步;
創建變量表示第一個分析步的最后一幀;
創建變量表示節點集;(本次案例節點集只有一個節點)
創建變量表示訪問第一個分析步最后一幀的位移U.
操作腳本如下:
結果如下:
Node label: 1000
Displacement in X direction: -7.891572e-34
Displacement in Y direction: -76.45553
Displacement: 76.4555282593
注:本文中涉及的模型文件和完整腳本文件可在Up的公眾號:易木木響叮當,中回復“讀取場輸出數據”自動獲取。
展開 ABAQUS腳本將計算結果輸出到文本中 ¥1.99
ABAQUS的結果大多以字典存儲,之前的帖子講了怎么將結果輸出到Excel中,此處講述如何將多個數據輸出到文本文件中,方便用于其他目的。
附件中的結果文件是一個L型梁,輸出的數據包括單元ID,應變能、mises應力和應變等,如果不做額外處理輸出的結果很不整齊,看起來繁雜。為此在使用python腳本讀取結果數據時,在腳本中專門編寫了一個文本排列函數,如下所示:
def fb(character, identifier, length):
if identifier == 'f':
sentence = character + ' '*(length - len(character))
else:
sentence = ' '*(length - len(character)) + character
return sentence
輸出結果如下:
腳本在附件中,需要的朋友可以嘗試下載。
展開 Abaqus采用Python腳本提取ODB信息,輸出為VTK的UnstructureGrid文件格式 ¥49.99
在有些場景下,需要將Abaqus計算結果提取出來保存為VTK格式,用于一些可視化和數據處理(VTK在可視化這方面還是強大)。最近寫了兩個腳本,一個是保存VTK非結構網格格式的文件,一個是提取Abaqus計算結果中的網格信息、field信息,將兩個腳本結合起來就可以實現提取ODB中的信息,并保存成為VTK非結構網格文件,當然,還是需要有Abaqus環境。
注意:提取ODB信息的那個腳本目前僅僅是針對我自己提供的那個算例,有能力的朋友完全可以修改一下用于自己的情況。寫VTK非結構網格文件的那個腳本目前應該沒有太大的bug。ODB信息的提取還是需要有Abaqus環境,并不是解析二進制文件。請看清楚再確定是否需要。
之所以做這個,還是希望慢慢完善,從而積累出一定數量的腳本,用于ODB數據的提取。
以下是abaqus中的網格和云圖,和用paraview查看的vtk文件的網格和云圖:
展開 
讀取ABAQUS結果文件中的單元應變能并輸出至excel文件的處理腳本 ¥1
腳本內容如題。
RP Fiber Power 光纖激光器及激光器設計軟件一腳本語言22結果的圖形輸出
22 結果的圖形輸出
RP Fiber Power具有大量的特性,可以產生圖形輸出。本文檔并沒有解釋所有特性,但在線幫助系統提供了更多詳細信息。在下面的例子中,我們考慮了一個顯示光功率分布和沿光纖的上態粒子數的圖,假設已經定義了摻鐿放大器的參數:
diagram 1:
"Powers along the Fiber"
x: 0, L_f
"position (m)", @x
y: 0, 2
"power (W)", @y
y2: 0, 100
frame
f: P(pump, x),
color=lightred, width = 3, "pump"
f: P(signal_fw, x),
color=lightblue, width = 3, "signal,forward"
f: P(signal_bw, x),
color=magenta, width = 3, "signal,backward"
f: 100 * n(x), yscale = 2, style = dotted,"excitation"
一些評論:
1. 腳本文件可以通過使用“diagram 1:”之類的命令對每個圖形定義集進行標題來定義多個圖表。(如果圖號被省略或替換為“?“,將選擇下一個可用的圖表編號。)
其他選項可以用逗號附加。使用position = (100, 100),可以確定屏幕上圖表窗口的水平和垂直位置(從左上角開始的距離,單位為屏幕大小的1/1000)。同樣,對于size = (500, 300),可以確定圖形區域相對于屏幕尺寸的水平和垂直大小。使用size_px = (500, 300),可以以像素為單位確定尺寸。用for j := 1 to 3(例如)可以生成圖表的多個版本。
展開 RP Fiber Power 光纖激光器及激光器設計軟件一腳本語言24 結果輸出到文件
24 結果輸出到文件
命令write允許以極大的靈活性生成數值輸出到文件。這允許將計算值導出到其他軟件。原理是指定表達式列表(括號中),該列表的計算結果為文本字符串;此文本字符串將發送到文件,并且可以使用for選項重復。例如,考慮命令
write [z:d5, ", ", P(signal,z):d5],
for z := 0 to L_f step L_f / 100,
>”P_signal.dat”
生成一個輸出,例如
0, 0.5613
0.1, 0.5782
0.2, 0.5968
...
10, 3.265
描述信號功率沿光纖的變化。
展開 通過Abaqus python腳本批量獲取節點的應力 ¥25
背景
有限單元法計算單元積分點的應力應變值,而對于節點的應力應變值是通過外插得到的,Abaqus中云圖顯示的就是經過插值和平均后的節點的值。通過工具欄的Query-Probe values可以查看單元或節點的應力應變等結果。
對于自動化的后處理場景,通常需要自動批量地獲取單元/節點的結果,通常都需要通過python腳本來實現。通過類似odb.steps['Step-1'].frames[-1].fieldOutputs['S']的場輸出可以比較方便地直接獲得單元的積分點應力,但沒有直接的API可以獲取節點的應力應變等結果。
如果需要獲取部件表面節點應力,可以通過創建路徑+XYData的方式實現,但想要獲得最大節點應力,則該方式不便實現。
2. 通過python腳本獲取節點應力結果
本文通過fieldOutput.getSub()函數獲取所有單元的節點結果,并對每一節點關聯的多個單元的節點值進行平均后得到節點的結果。以下以某個簡單的odb結果進行驗證。
(1)批量獲得節點的mises應力值
(2)批量獲得節點的X方向正應力值
(3)批量獲得節點的最大主應力值
(4)獲取節點的最大mises應力及編號
3. 獲取節點應變等結果
只需將腳本程序中的應力場改為應變成E等即可,此處不再演示。
以下為本文的python腳本代碼(代碼中作了必要的簡單注釋)。
展開 Abaqus -Python 腳本開發有多難?
通過稍微修改腳本即可輕松完成此操作。我們首先看一下之前創建的版本,在 Abaqus PDE 中打開它(文件 --> Abaqus PDE)。在 Abaqus PDE 中,選擇文件 --> 打開并打開 abaqusMacros.py。它位于主目錄或工作目錄中,具體取決于您選擇保存宏的位置。在代碼中,我們可以識別模型名稱、材料名稱和材料屬性。這些都可以被賦予名稱和值。通過為這些參數填寫不同的值,使得宏的適用性更加廣泛。保存修改后的版本并重新加載并通過宏管理器運行它以進行嘗試。
圖 4:宏的原始版本,以及最后一部分的替代版本,其中模型名稱、材料名稱、楊氏模量和泊松比可以輕松修改。
在對話框中請求輸入
為了使事情變得更加用戶友好,最好彈出一個對話框來要求這些輸入。這可以與 getInputs 函數一起使用。圖 5 給出了一個示例。
圖5:使用getInputs獲取請求輸入的對話框
生成的對話框如圖 6 所示。
圖 6:使用 getInputs 創建的對話框。
第 3 級:循環參數
如果多次運行略有不同的模型版本,通常可以獲得腳本編寫的最大好處。這意味著不像我們之前那樣修改一次參數,而是自動填充不同的值并每次重新運行模型。該參數可以與任何事物相關。它可以是材料屬性、殼體厚度、摩擦系數……:Abaqus/CAE 中用值描述的任何內容。該腳本通常只有幾行代碼。我們將展示一個重新運行模型的示例,所有剛度從 150,000 MPa 到 250,000 MPa,增量為 25,000。
創建腳本基礎的最簡單方法是將 CAE 中完成的操作記錄在宏或 .rpy 文件中。
展開 一個Abaqus建模腳本
工作需要經常在三維軟件中建立葉片模型導入abaqus計算,不勝其煩,于是嘗試用Python編寫一個腳本。
#!
找人寫個abaqus的python腳本
這個腳本需要支持以下功能: 1. 用戶自定義半對稱或1/4對稱; 2. 用戶自定義模型的大小; 3. 用戶自定義模型的網格大小; 4. 用戶自定義模型的粘彈性參數; 5. 用戶自定義內含物的位置、大小及粘彈性參數; 6. 讀取外部給定的載荷數據文件在相應的節點生成載荷; 7. 用戶自定義仿真時長; 8. 用戶自定義場輸出的區域和輸出時間頻率; 9. 自動讀取obd文件提取數據。 預算1000

Abaqus復合材料建模腳本
復合材料自動建模腳本,直接上圖,需要的站內聯系
Abaqus|基于Python腳本的參數優化 ¥50
文章來源:微信公眾號:仿真社
本文你將獲得如下干貨:
1.獲得基于Python腳本的有限元模型修正法(FEMU)進行參數優化的完整源代碼(通用代碼,可直接反演各種材料參數,尺寸參數,相應的數據接口預留好了);
2.使用Python腳本反演了懸臂梁模型的載荷位置和集中力大小;
3.快速掌握材料參數反演流程;
4.獲得社長對該反演代碼的親自答疑。
1.導讀
工程上要確定材料的參數通常是通過力學實驗獲得。然而當實驗成本較高,實驗數據稀少的時候,反演方法來確定材料參數就是一個非常不錯的選擇。有限元模型修正法是最常用的反演方法,主要包含兩部分有限元計算和優化確定參數。有限元計算一般通過有限元軟件來完成,而優化確定材料常用MATLAB或者Python程序。因此不同軟件的協同工作是必須的一個過程。本文以懸臂梁的集中力和集中力位置作為優化變量編寫了Python腳本的代碼,然后通過最小二乘法獲得了反演參數,這是一個通用程序,可直接嫁接到其他模型上。
2.研究內容
通過A點的位移數據,反演確定集中力F以及集中力的位置L。
圖1 反演模型
3.代碼詳解
反演代碼主要包含四個部分computModel、extractDisplacement、removeFile和Objective。
展開 詳解Abaqus插件腳本中的關鍵字(AFXKeyword)(下)
Abaqus GUI二次開發三部曲:
Abaqus 主窗口GUI的二次開發
Abaqus插件程序GUI的二次開發 初、中級篇
Abaqus插件程序GUI的二次開發 高級篇
ABAQUS批量提交任務-Python腳本
不打也可以,只不過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獲取任務名的列表。
原理解讀:
第一步:腳本頭(省略,同上)
第二步:導入相關庫(省略,同上),不同的是導入了os和sys庫,用于所有分析結束后60秒后自動關機。
第三步:創建Jobs列表儲存所有需要被分析的job的名稱。這個就有點類似bat的方式了,我們需要首先將所有需要提交的任務的inp文件,和腳本或bat文件放在一個文件夾下。并在腳本和bat文件中,把需要分析的job名寫下來。
第四步:同上,for循環遍歷列表,并一個一個提交任務。不同的是,上一個在你創建Job的時候已經指定了計算使用的cpu數,所以python腳本中無需對這個特殊設定。
展開