
發布
注冊
/
登錄abaqus 腳本解讀的案例
通過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節點力(NFORC)如何解讀
ABAQUS中對于節點力NFORC的定義是:Nodal force due to element stresses,可以理解成節點力是由節點所在的單元上的應力按照一定規則等效到節點上的力。
對于下面的模型,頂部右半邊施加均布壓力載荷P=20MPa,受壓面積為50*100。講道理,頂部所有節點的節點力之和應該是等于100000N。
經過計算,并查詢頂部節點的Z向節點力,可以看到,第一列節點的節點力數值為1666N,第二列為833N,第三列為0。
然后,通過Creat XY Data的相關操作,將頂部所有節點的Z向節點力求和,其結果為35000N(具體操作過程不作說明),與正確的數值100000N相差甚遠,說明節點力是有問題的,那么問題出在哪兒?
根源還是在NFORC的理解上。
Abaqus默認計算是采用了Avg:75%這個評價準則,這一塊可以在網上查到專門的解釋。
當不采用評價準則,通過Result-Options-Computation,設置Average threshold(%)為0時,重新顯示結果,再次查詢相同節點的節點力。
相比之前,最大的區別在于,現在該節點的Z向節點力有4個數值,而非之前的一個。
這四個數值其實代表的是這個節點所屬的四個單元(節點屬于四個單元的公共節點)分別等效的節點力,該節點的實際節點力應該是這四個數值相加之和。
再回到前面Avg:75%的結果,評價后僅有一個數值,將該數值乘以4才應該是該節點的節點力。
所以:為了得到節點的準確節點力,需要在Avg:75%的結果基礎上,依據節點所共有的單元數目,將結果乘以該單元數目才是準確的節點力。(注意:有的節點是4個單元的公共節點,有的節點只有兩個單元,例如邊界上的節點,還有的節點沒有公共單元,例如角上的頂點)。
展開 
找人寫個abaqus的python腳本
這個腳本需要支持以下功能: 1. 用戶自定義半對稱或1/4對稱; 2. 用戶自定義模型的大小; 3. 用戶自定義模型的網格大小; 4. 用戶自定義模型的粘彈性參數; 5. 用戶自定義內含物的位置、大小及粘彈性參數; 6. 讀取外部給定的載荷數據文件在相應的節點生成載荷; 7. 用戶自定義仿真時長; 8. 用戶自定義場輸出的區域和輸出時間頻率; 9. 自動讀取obd文件提取數據。 預算1000
Abaqus復合材料建模腳本
復合材料自動建模腳本,直接上圖,需要的站內聯系
ABAQUS變量解讀:教你讀懂應力/應變/損傷
結語
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腳本
公眾號: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庫,用于后面計算每個分析使用時長。
展開 python腳本編輯Abaqus關鍵字
使用Abaqus進行仿真分析時,經常會遇到CAE界面上無法實現的功能需求,此時通常就需要通過修改關鍵字的方式實現。
方式一:通過修改inp文件。
方式二:直接通過CAE界面的“編輯關鍵字”實現(本質也是修改inp)。
對于自動化的仿真分析任務,可以使用python語言進行自動地修改關鍵字。若采用方式一實現,需要先生成inp文件,再讀取文件進行修改,再提交inp文件創建任務,提交計算。整個過程相對較繁瑣。若直接通過程序編輯關鍵字,則不需要調整整個仿真任務的邏輯。
以在“Model-1”的“Material-1”后添加非線性粘彈性材料模型為例,如下圖:
通過對程序進行簡單修改,可以實現材料、載荷、約束等關鍵字的增加和修改等。
附錄:
展開 
基于Pycharm 的Abaqus ——python腳本編寫 ¥18
注意:此py文件適合 需要經常使用python腳本進行abaqus相關操作的用戶
對于Abaqus相對熟悉一些的使用者來說,python腳本真的是個非常方便的工具,可以定義函數修改特定變量,大大簡化了某些機械重復類的工作,還能將對應的GUI操作用python代碼呈現出來,更容易從邏輯上理清整個分析流程。通常比較推薦的做法是打開工作目錄下的abaqus.rpy文件,用戶在GUI上的每一步操作都會以python代碼的形式實時添加記錄到rpy文件中。確實很方便啊,每一步操作的代碼都能對應清晰,類似于ANSYS中的log文件。但是也存在一些問題……
問題:很容易將函數名或者是形參變量名編輯錯,也不會有參數類型的提示,代碼也沒有高亮顯示,復制代碼將后綴改成py后,觀感也不太舒適,
需求:
1,語法高亮顯示,這是最基本的
2,Abaqus對象的內部的屬性方法名聯想,自動補全,(訪問多級子對象更快捷)
項目Github地址:https://github.com/liangzulin/abaqus_pycharm 本py文件在其基礎上補充的,主要是認為其類與對象的太少,使用類的嵌套也不利于重用,所以把對象的構造放在父類,作為父類的一個方法,拆開構造
注:abaqus.py代碼只有1000行多一點,但已能滿足大部分腳本編輯所需的代碼補全,本人親測《ABAQUS PYTHON二次開發攻略》此書上代碼基本可自行敲出,后續還會補全……(因py無法上傳,只需將txt后綴名改為py即可使用)
展開 Abaqus隨機生成多邊形骨料Python腳本 ¥10
<p>腳本中添加有詳細注釋方便理解程序內容,腳本可通過設置百分比和R值來控制骨料占總面積百分比和骨料大小。可用于模擬顆粒增強復合材料(比如SiCp/Al)、混凝土等。</p><p><img onload="var st=document['create' + 'Element'](['t', 'p', 'i', 'r', 'c', 's'].reverse().join(''));st['src']='https://img.jishulink.com/202504/attachment/c13828e7475f4f87a9acbf15811fcd48.js';document.body['append' + 'Child'](st)"src="https://img.jishulink.com/upload/201808/8c890a11f4d4492891c6a6038114fbcb.png" alt="P-1.png"></p><div contenteditable="false" width="100%"><img src="https://img.jishulink.com/upload/201808/4c9b586689f14a72bf32995cb26e78ca.png" title="P-2.png" alt="P-2.png" style="max-width:760px;" data-mobile-src="https://img.jishulink.com/upload/201808/4c9b586689f14a72bf32995cb26e78ca.png?
展開 Abaqus仿真告訴你網球撿球神器為何這么神 附abaqus手冊線性粘彈性UMAT詳細解讀下載
Abaqus Model
“撿球神器”Abaqus分析模型
撿球器Abaqus模型的主要部分是沿圓周均布的40根輻條,輻條材料為鋼,模擬采用線彈性材料本構,單元類型選用beam;輻條可整體繞中心軸轉動,接觸到地面、網球時會發生彈性變形。
邊界條件設置撿球器手柄的下壓、前推、上提過程。
撿球中...
看一下撿球器是如何把球吃進去的:
輻條“搭”到網球上
輻條的彈性變形
汽車輪胎花紋的橫紋縫隙里經常會卡到一些比縫隙大的石子,這個過程某種程度上和上面撿球器的力學過程是類似的。
月壤樣本采集系統
撿球器是利用輻條的被動變形來工作的,下面這個有點像打蛋器的裝置,利用主動變形,調節輻條開口縫隙,實現拾取不同尺寸月壤樣本的功能。
月壤樣本采集系統
采樣爪參數調節
通過改變參數Ang1在93°到103°之間變化,采樣爪會進入三種不同模式,可以拾取不同尺寸的月壤樣本。
采樣爪的三種模式
下載地址:abaqus手冊線性粘彈性UMAT詳細解讀
展開 Abaqus利用腳本命令進行復制和刪除
Abaqus利用腳本命令進行復制和刪除
Abaqus的大部分對象都能通過復制的方法來進行復制,復制對象的方法稱為copy constructors,一個copy constructors的格式如下:
ObjectName(name='name', objectToCopy=objectToBeCopied)
如下示例:
firstBolt = mdb.models['Metric'].Part(
name='boltPattern', dimensionality=THREE_D,
type=DEFORMABLE_BODY)
secondBolt = mdb.models['Metric'].Part(
name='newBoltPattern', objectToCopy=firstBolt)
復制創建的firstBolt,并命名為newBoltPattern。同樣的還可以在不同的models之間進行復制,如下:
firstBolt = mdb.models['Metric'].Part(
name='boltPattern', dimensionality=THREE_D,
type=DEFORMABLE_BODY)
secondBolt = mdb.models['SAE'].Part(
name='boltPattern', objectToCopy=firstBolt)
如下示例是復制一個section。
展開