
發(fā)布
注冊(cè)
/
登錄abaqus批量建模的案例
Abaqus的Python批量隨機(jī)幾何建模入門
這些材料中包含大量隨機(jī)尺寸、隨機(jī)位置分布的幾何特征,在有限元建模中可以使用自編二次開發(fā)程序的方法來(lái)實(shí)現(xiàn)復(fù)雜的幾何模型構(gòu)造。
Abaqus支持使用Python語(yǔ)言進(jìn)行二次開發(fā)建模,用戶可以利用Python代碼達(dá)成特殊的建模要求。在批量隨機(jī)幾何建模問(wèn)題中,有兩個(gè)關(guān)鍵詞:一是批量、二是隨機(jī)。
1、批量建模
批量建模主要用到的技巧是循環(huán)。在此我們介紹兩種常用的Python語(yǔ)言循環(huán)控制代碼格式。
首先是while循環(huán),也就是“當(dāng)循環(huán)”。我們直接看一個(gè)例子:
i=1
while i < 6:
print i
i=i+1
我們觀察以上代碼,它的意思是:當(dāng)i小于6的時(shí)候,執(zhí)行print i的命令,直到while后面的條件不成立(即i大于等于6)為止。在循環(huán)前,我們給i幅值為1,每一次循環(huán)又讓i在原來(lái)基礎(chǔ)上加一,這樣就實(shí)現(xiàn)了循環(huán)打印五個(gè)數(shù)字的效果。這里的i一般用于循環(huán)計(jì)數(shù),自加的操作可以讓它記錄循環(huán)次數(shù)。
注意:while下面的執(zhí)行語(yǔ)句要空四個(gè)格!
第二種方式是for循環(huán),也就是“歷遍循環(huán)”。還是直接看例子:
a=[1,2,3,4,5]
for i in a:
print i
這段代碼首先定義了一個(gè)列表a,它包含五個(gè)元素,分別是1、2、3、4、5這五個(gè)整型變量。for i in a:的意思是讓虛擬元素i在a中逐個(gè)變化,也就是第一次循環(huán)時(shí),i=1,第二次循環(huán)時(shí),i=2,依次把五個(gè)元素歷遍后循環(huán)終止。這段代碼的實(shí)現(xiàn)效果與第一段代碼相同。
同樣需要注意,for下面的執(zhí)行語(yǔ)句也要空四個(gè)格!
2、隨機(jī)建模
隨機(jī)建模主要用到的技巧是產(chǎn)生隨機(jī)數(shù)字。
展開 基于ABAQUS與Python腳本參數(shù)化的批量建模分析
1原由
我們知道,不管是利用ABAQUS或是ANSYS軟件進(jìn)行建模分析來(lái)說(shuō),在仿真分析過(guò)程中,我們經(jīng)常會(huì)遇到需要多次對(duì)模型進(jìn)行修改的過(guò)程,筆者在一個(gè)做金剛石磨粒切削硬脆材料的案例中發(fā)現(xiàn),為了研究在不同磨粒切深下的工件損傷情況,需要大量重復(fù)設(shè)置磨粒的切深,這樣的重復(fù)操作大約需要30多組。不僅耗費(fèi)操作時(shí)間,同時(shí)耗費(fèi)大量的計(jì)算機(jī)運(yùn)行時(shí)間,為此,通過(guò)直接寫入?yún)?shù)化的命令語(yǔ)言,集中批量的操作是最有效的計(jì)算途徑。總的來(lái)說(shuō),就是定義不同變量的參數(shù)化輸入的模板和一個(gè)能夠自動(dòng)完成建模、執(zhí)行和結(jié)果收集的腳本文件來(lái)完成參數(shù)化仿真計(jì)算。
2研究目的
本案例旨在通過(guò)基于ABAQUS平臺(tái),通過(guò)Python腳本參數(shù)化語(yǔ)言來(lái)研究不同材料及厚度的結(jié)構(gòu)剛度和塑性應(yīng)變情況。
2腳本化建模分析
2.1問(wèn)題介紹
本文主要講述這種腳本語(yǔ)言的編寫過(guò)程,并不在乎模型建立的復(fù)雜程度,因此本文以一個(gè)簡(jiǎn)單懸臂端模型為操作對(duì)象進(jìn)行參數(shù)化建模的集中闡述。模型草圖并不復(fù)雜,因此選擇在abaqus草圖建模環(huán)境中直接繪制,得出的模型如下圖1所示,其中基本尺寸已經(jīng)標(biāo)注如草圖之上。模型的相關(guān)材料參數(shù)及其他幾何參數(shù)如表1所示。
展開 隔震支座在ANSYS中的批量建模方法 ¥100
<p>在如何在ANSYS中模擬非線性三維隔震支座一文中,作者介紹了三維隔震支座的建模方法。然而,在實(shí)際工程中,為了達(dá)到隔震目標(biāo),隔震支座的數(shù)量會(huì)達(dá)到幾十個(gè)甚至上百個(gè)。因此,如何在ANSYS中對(duì)隔震支座進(jìn)行批量建模是至關(guān)重要的。</p><p><br></p><p>1. 包含的內(nèi)容</p><p>(1)說(shuō)明文本</p><p>(2)三維隔震結(jié)構(gòu)命令流文件(隔震支座批量建模)</p><p>(3)驗(yàn)證過(guò)程excel文件</p><p><br></p><p><br></p><p>2. 解決的問(wèn)題</p><p>(1)如何在ANSYS中對(duì)隔震支座進(jìn)行批量建模?</p><p><br></p><p>3. 研究的依據(jù)</p><p>[1] 龔曙光, 謝桂蘭, 黃云清. ANSYS 參數(shù)化編程與命令手冊(cè)[M]. 機(jī)械工業(yè)出版社, 2009.</p><p><br></p><p>4. 隔震模型的力學(xué)參數(shù)與隔震支座設(shè)計(jì)參數(shù)的定量對(duì)應(yīng)關(guān)系</p><p>我們知道,實(shí)際應(yīng)用中,我們可以采用廠家提供的標(biāo)準(zhǔn)型號(hào)的隔震支座,也可以訂制特殊類型的隔震支座,不管采用那種形式,在仿真模擬時(shí),我們都要將設(shè)計(jì)參數(shù)與隔震模型的力學(xué)參數(shù)對(duì)應(yīng)起來(lái),從而進(jìn)行力學(xué)分析。</p><p>ANSYS中并沒(méi)有特定的隔震單元,但提供了一系列的彈簧-阻尼器單元,可以通過(guò)組合單元模擬隔震支座的力學(xué)特性。采用COMBIN14單元模擬隔震支座的豎向剛度,COMBIN14又稱彈簧-阻尼器單元,具有1D、2D和3D的軸向或扭轉(zhuǎn)能力。軸向彈簧-阻尼器為單軸拉壓行為,每個(gè)單元有2個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)有3個(gè)自由度,即沿著X、Y和Z方向的三個(gè)平動(dòng)或轉(zhuǎn)動(dòng)位移。水平方向上,采用COMBIN40單元模擬隔震支座的水平剛度和阻尼,COMBIN40單元將彈簧、滑塊和阻尼器并聯(lián),再用串聯(lián)的方式與間隙耦合形成組合體,適用于多種情況的分析。
展開 Abaqus彈簧批量連接/車橋耦合扣件批量連接代碼+詳細(xì)教學(xué)視頻 ¥38.9
ABAQUS軟件批量彈簧連接代碼(可修改距離誤差)+使用視頻(10分鐘自己錄制)
贈(zèng)送:
ABAQUS鄰近點(diǎn)匹配算法批量建立連接器單元_模擬鋼筋混凝土粘結(jié)滑移,教學(xué)視頻+代碼
其他批量連接代碼

通過(guò)Abaqus python腳本批量獲取節(jié)點(diǎn)的應(yīng)力 ¥25
背景
有限單元法計(jì)算單元積分點(diǎn)的應(yīng)力應(yīng)變值,而對(duì)于節(jié)點(diǎn)的應(yīng)力應(yīng)變值是通過(guò)外插得到的,Abaqus中云圖顯示的就是經(jīng)過(guò)插值和平均后的節(jié)點(diǎn)的值。通過(guò)工具欄的Query-Probe values可以查看單元或節(jié)點(diǎn)的應(yīng)力應(yīng)變等結(jié)果。
對(duì)于自動(dòng)化的后處理場(chǎng)景,通常需要自動(dòng)批量地獲取單元/節(jié)點(diǎn)的結(jié)果,通常都需要通過(guò)python腳本來(lái)實(shí)現(xiàn)。通過(guò)類似odb.steps['Step-1'].frames[-1].fieldOutputs['S']的場(chǎng)輸出可以比較方便地直接獲得單元的積分點(diǎn)應(yīng)力,但沒(méi)有直接的API可以獲取節(jié)點(diǎn)的應(yīng)力應(yīng)變等結(jié)果。
如果需要獲取部件表面節(jié)點(diǎn)應(yīng)力,可以通過(guò)創(chuàng)建路徑+XYData的方式實(shí)現(xiàn),但想要獲得最大節(jié)點(diǎn)應(yīng)力,則該方式不便實(shí)現(xiàn)。
2. 通過(guò)python腳本獲取節(jié)點(diǎn)應(yīng)力結(jié)果
本文通過(guò)fieldOutput.getSub()函數(shù)獲取所有單元的節(jié)點(diǎn)結(jié)果,并對(duì)每一節(jié)點(diǎn)關(guān)聯(lián)的多個(gè)單元的節(jié)點(diǎn)值進(jìn)行平均后得到節(jié)點(diǎn)的結(jié)果。以下以某個(gè)簡(jiǎn)單的odb結(jié)果進(jìn)行驗(yàn)證。
(1)批量獲得節(jié)點(diǎn)的mises應(yīng)力值
(2)批量獲得節(jié)點(diǎn)的X方向正應(yīng)力值
(3)批量獲得節(jié)點(diǎn)的最大主應(yīng)力值
(4)獲取節(jié)點(diǎn)的最大mises應(yīng)力及編號(hào)
3. 獲取節(jié)點(diǎn)應(yīng)變等結(jié)果
只需將腳本程序中的應(yīng)力場(chǎng)改為應(yīng)變成E等即可,此處不再演示。
以下為本文的python腳本代碼(代碼中作了必要的簡(jiǎn)單注釋)。
展開 Abaqus批量提交作業(yè) ¥6
<pre class="ql-syntax" spellcheck="false"># -*- coding: utf-8 -*-
from abaqus import *
from abaqusConstants import *
import os
import time
def clean_residual_files(job_name):
"""清理殘留文件函數(shù)"""
residual_ext = ['.lck', '.prt', '.sim', '.sta',
'.abq', '.com', '.dat', '.msg','.odb',
'.log', '.odb', '.inp']
for ext in residual_ext:
file_path = job_name + ext
if os.path.exists(file_path):
try:
os.remove(file_path)
 
展開 ABAQUS批量提交任務(wù)
ABAQUS可以使用Python代碼進(jìn)行批量提交任務(wù)
第一步:
新建文本.txt,復(fù)制Python代碼到文本,代碼如下
# -*-coding:UTF-8-*-
from abaqus import *
from abaqusConstants import *
import time
print "==================== 【開 始】 ====================="
jobs = mdb.jobs.keys() #獲得所有任務(wù)名稱
for i in jobs: #遍歷所有任務(wù)
myJob = mdb.jobs[i] #獲得任務(wù)對(duì)象
#判斷任務(wù)的狀態(tài)是否為None,避免重復(fù)提交
if myJob.status == None:
t0=time.time() #記錄提交前的時(shí)間
myJob.submit() #提交計(jì)算
myJob.waitForCompletion() #等待計(jì)算完成
print '【%s】計(jì)算完成,耗時(shí) %f 秒'%(i,time.time()-t0)
print "==================== 【結(jié) 束】 ====================="
第二步:文本格式.txt 修改為 .py
第三步:創(chuàng)建好任務(wù),且任務(wù)顯示狀態(tài)為 None,不允許有其他狀態(tài),否則提交不成功(可修改代碼值靈活變化)
批量提交有兩種方式:
1、file>Run Script,打開前面保存的.py文件,任務(wù)會(huì)自動(dòng)進(jìn)行
2、直接復(fù)制代碼到Abaqus
展開 Abaqus批量計(jì)算工具
Abaqus批量計(jì)算.zip
ABAQUS根據(jù)Excel/csv批量生成inp
進(jìn)行Job 和 Step的名稱標(biāo)準(zhǔn)化, 使用ABAQUS名稱標(biāo)準(zhǔn)化工具, 因?yàn)闊o(wú)論是.xls還是.csv, 均有可能出現(xiàn)不符合ABAQUS命名規(guī)則的字符串出現(xiàn).
03
—
補(bǔ)充說(shuō)明
讀取Excel/csv進(jìn)行批量生產(chǎn)inp, 最難的部分在于力的作用邏輯, 因?yàn)樯婕傲εc扭矩的判斷, 并且有的點(diǎn)只受力的作用而不受扭矩的作用.
這需要進(jìn)行判別(目前程序無(wú)法判別只受扭矩作用的情況, 當(dāng)然這種作用方式在實(shí)際工作中也沒(méi)有遇見過(guò)), 因?yàn)橹皇芰Φ淖饔脮r(shí)該點(diǎn)有三個(gè)方向的載荷而普通的作用點(diǎn)是有六個(gè)方向的載荷的.
這部分的邏輯是我剛開始接觸python的時(shí)候設(shè)計(jì)的, 屬于陳年舊貨, 現(xiàn)在拿來(lái)使用雖然沒(méi)有邏輯問(wèn)題, 但是還是有很大的優(yōu)化空間, 只不過(guò)....以后再說(shuō)吧.
04
—
源代碼
關(guān)注AbaqusCoder并回復(fù)createJobFromExcel獲得源代碼.
期待更多技術(shù)干貨, 請(qǐng)關(guān)注AbaqusCoder!
如果本文對(duì)您有幫助, 期待您的轉(zhuǎn)發(fā)與點(diǎn)亮再看!
展開 ABAQUS批量inp順序作業(yè)
work-more.txt
ABAQUS批量inp順序作業(yè).docx
Abaqus批量生成連接器
Abaqus批量生成連接器

批量提取Abaqus的節(jié)點(diǎn)坐標(biāo)(初始坐標(biāo)、指定Step下的變形量、變形后節(jié)點(diǎn)坐標(biāo)) ¥40
<h2>摘要</h2><p>本文介紹如何使用Python腳本二次開發(fā)來(lái)批量提取ABAQUS輸出數(shù)據(jù)庫(kù)(ODB)文件中指定Step下的Set節(jié)點(diǎn)集變形量。通過(guò)詳細(xì)的步驟說(shuō)明、代碼示例和圖片展示,您將學(xué)會(huì)如何使用該腳本,自動(dòng)化輸出CSV文件包含(Node Label;Step Name、Increment、Step Time,U1,U2)。</p><p>如果還需要按Increment提取每個(gè)增量下的變形后的節(jié)點(diǎn)坐標(biāo)的話,在提取變形量的基礎(chǔ)上,與初始坐標(biāo)進(jìn)行簡(jiǎn)單的計(jì)算就可以求得坐標(biāo)。 (備注:該代碼只提取了x,y方向的變形量)</p><h2>1. 問(wèn)題描述</h2><p>在工程仿真和分析領(lǐng)域,提取ABAQUS輸出數(shù)據(jù)庫(kù)(ODB)文件中的節(jié)點(diǎn)集變形量是一項(xiàng)常見任務(wù)。然而,手動(dòng)提取這些數(shù)據(jù)是一項(xiàng)繁瑣且容易出錯(cuò)的工作。因此,需要一種自動(dòng)化的方法來(lái)批量提取指定步驟下按節(jié)點(diǎn)集組織的變形量數(shù)據(jù)。</p><h2>2. 實(shí)例展示</h2><p>假設(shè)我們有一個(gè)名為`example.odb`的ODB文件,其中包含名為`Step-x`的步驟和名為`Set-x`的節(jié)點(diǎn)集。運(yùn)行以上代碼后,腳本會(huì)自動(dòng)將該步驟下節(jié)點(diǎn)集的變形量提取出來(lái),并保存為`NodalDisplacement.csv`文件。
展開 預(yù)應(yīng)力錨栓式陸上風(fēng)機(jī)基礎(chǔ)ABAQUS彈塑性模型建模(包含主要鋼筋建模) ¥179
其中,陸上風(fēng)機(jī)一般采用鋼筋混凝土基礎(chǔ)結(jié)合預(yù)應(yīng)力錨栓作為塔筒-基礎(chǔ)間連接件的方式以滿足整體結(jié)構(gòu)承載安全要求,本內(nèi)容包含該風(fēng)機(jī)基礎(chǔ)在ABAQUS中的建模方法、主要鋼筋的建模方法及混凝土CDP本構(gòu)等的內(nèi)容。
批量提取Abaqus指定Step-x下 Set節(jié)點(diǎn)集的反力RF(Reaction force) ¥40
<h2>摘要</h2><p>本文介紹如何使用Python腳本二次開發(fā)來(lái)批量提取ABAQUS輸出數(shù)據(jù)庫(kù)(ODB)文件中指定Step-x下的Set節(jié)點(diǎn)集的反力RF(Reaction force)。通過(guò)詳細(xì)的步驟說(shuō)明、代碼示例和圖片展示,您將學(xué)會(huì)如何使用該腳本,自動(dòng)化輸出CSV文件包含(Node Label;Step Name、Increment、Step Time,RF1(X),<span style="color: rgb(25, 27, 31);">RF2(Y),RF3(Z)</span>)。</p><p><br></p><p>如果還需要提取<strong><em><u>節(jié)點(diǎn)變形量 </u></em></strong>或者<strong><em><u>節(jié)點(diǎn)坐標(biāo) </u></em></strong>可以關(guān)注:<a href="https://www.yqgqt.org.cn/post/1939915" rel="noopener noreferrer" target="_blank">利用Python腳本 批量提取Abaqus的odb文件中Set節(jié)點(diǎn)集 初始節(jié)點(diǎn)坐標(biāo)、指定Step下的變形量、變形后節(jié)點(diǎn)坐標(biāo)_CAE Abaqus提取odb-技術(shù)鄰 (jishulink.com)</a></p><h2>1. 問(wèn)題描述</h2><p>在工程仿真和分析領(lǐng)域,提取ABAQUS輸出數(shù)據(jù)庫(kù)(ODB)文件中的節(jié)點(diǎn)集的<span style="color: rgb(25, 27, 31);">反力RF(Reaction force)</span>是一項(xiàng)常見任務(wù)。然而,手動(dòng)提取這些數(shù)據(jù)是一項(xiàng)繁瑣且容易出錯(cuò)的工作。
展開 ABAQUS批量提交任務(wù)-Python腳本
公眾號(hào):CAE分析技術(shù)分享
前一篇文章介紹了如何用bat的形式在DOS下批量提交ABAQUS作業(yè),這一篇將介紹如何用python腳本來(lái)實(shí)現(xiàn)批量提交作業(yè)。
Python 是一個(gè)高層次的結(jié)合了解釋性、編譯性、互動(dòng)性和面向?qū)ο蟮哪_本語(yǔ)言。Python 的設(shè)計(jì)具有很強(qiáng)的可讀性,相比其他語(yǔ)言經(jīng)常使用英文關(guān)鍵字,其他語(yǔ)言的一些標(biāo)點(diǎn)符號(hào),它具有比其他語(yǔ)言更有特色語(yǔ)法結(jié)構(gòu)。
Python 是一種解釋型語(yǔ)言: 這意味著開發(fā)過(guò)程中沒(méi)有了編譯這個(gè)環(huán)節(jié)。類似于PHP和Perl語(yǔ)言。
Python 是交互式語(yǔ)言: 這意味著,您可以在一個(gè) Python 提示符 >>> 后直接執(zhí)行代碼。
Python 是面向?qū)ο笳Z(yǔ)言: 這意味著Python支持面向?qū)ο蟮娘L(fēng)格或代碼封裝在對(duì)象的編程技術(shù)。
Python 是初學(xué)者的語(yǔ)言:Python 對(duì)初級(jí)程序員而言,是一種偉大的語(yǔ)言,它支持廣泛的應(yīng)用程序開發(fā),從簡(jiǎn)單的文字處理到 WWW 瀏覽器再到游戲。
使用Python腳本實(shí)現(xiàn)批量提交abaqus任務(wù)基本上有倆種方式:
打開ABAQUS/CAE的情況下,通過(guò)file→run script的方式
通過(guò)ABAQUS command,不打開ABAQUS/CAE的情況
01 打開ABAQUS/CAE時(shí)
Talk is easy,let's show the code first!
原理解讀:
第一步:首先我們需要?jiǎng)?chuàng)建一個(gè)腳本頭,包含讀者,時(shí)間等信息,方便他人閱讀。這是一種規(guī)范,沒(méi)有任何理由,照著做就可以了。#encoding:utf-8中文編碼。
第二步:導(dǎo)入abaqus相關(guān)的庫(kù),以及python自帶的time庫(kù),用于后面計(jì)算每個(gè)分析使用時(shí)長(zhǎng)。
展開