
發(fā)布
注冊(cè)
/
登錄abaqus批量分割的案例
ABAQUS求助:邊界條件面被分割
主要是分割的表面太多了后面再選比較麻煩,而且試過一次報(bào)錯(cuò)非常嚴(yán)重。
Abaqus彈簧批量連接/車橋耦合扣件批量連接代碼+詳細(xì)教學(xué)視頻 ¥38.9
ABAQUS軟件批量彈簧連接代碼(可修改距離誤差)+使用視頻(10分鐘自己錄制)
贈(zèng)送:
ABAQUS鄰近點(diǎn)匹配算法批量建立連接器單元_模擬鋼筋混凝土粘結(jié)滑移,教學(xué)視頻+代碼
其他批量連接代碼
通過Abaqus python腳本批量獲取節(jié)點(diǎn)的應(yīng)力 ¥25
背景
有限單元法計(jì)算單元積分點(diǎn)的應(yīng)力應(yīng)變值,而對(duì)于節(jié)點(diǎn)的應(yīng)力應(yīng)變值是通過外插得到的,Abaqus中云圖顯示的就是經(jīng)過插值和平均后的節(jié)點(diǎn)的值。通過工具欄的Query-Probe values可以查看單元或節(jié)點(diǎn)的應(yīng)力應(yīng)變等結(jié)果。
對(duì)于自動(dòng)化的后處理場(chǎng)景,通常需要自動(dòng)批量地獲取單元/節(jié)點(diǎn)的結(jié)果,通常都需要通過python腳本來實(shí)現(xiàn)。通過類似odb.steps['Step-1'].frames[-1].fieldOutputs['S']的場(chǎng)輸出可以比較方便地直接獲得單元的積分點(diǎn)應(yīng)力,但沒有直接的API可以獲取節(jié)點(diǎn)的應(yīng)力應(yīng)變等結(jié)果。
如果需要獲取部件表面節(jié)點(diǎn)應(yīng)力,可以通過創(chuàng)建路徑+XYData的方式實(shí)現(xiàn),但想要獲得最大節(jié)點(diǎn)應(yīng)力,則該方式不便實(shí)現(xiàn)。
2. 通過python腳本獲取節(jié)點(diǎn)應(yīng)力結(jié)果
本文通過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è)簡單的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腳本代碼(代碼中作了必要的簡單注釋)。
展開 免費(fèi)領(lǐng)有限元模型+Abaqus Inp文件分割腳本
這個(gè)腳本可以自定義需要被分割的關(guān)鍵字、限制文件大小、執(zhí)行格式檢查、查看分割進(jìn)度等,功能比較全面。
運(yùn)行示例:
abaqus python fileSplitter.py -inp Sample
inp文件分割示例
近期培訓(xùn)
通知:9月直播培訓(xùn)招生即將結(jié)束,欲參加者請(qǐng)點(diǎn)擊圖片了解更多。
fileSplitter.py與Toyota Venza Base Model(Abaqus版,可直接運(yùn)行)領(lǐng)取(2021年9月7號(hào)截止)→在此公眾號(hào)后臺(tái)回復(fù):
偷油塔

Abaqus批量計(jì)算工具
Abaqus批量計(jì)算.zip
Abaqus的Python批量隨機(jī)幾何建模入門
Abaqus支持使用Python語言進(jìn)行二次開發(fā)建模,用戶可以利用Python代碼達(dá)成特殊的建模要求。在批量隨機(jī)幾何建模問題中,有兩個(gè)關(guān)鍵詞:一是批量、二是隨機(jī)。
1、批量建模
批量建模主要用到的技巧是循環(huán)。在此我們介紹兩種常用的Python語言循環(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在原來基礎(chǔ)上加一,這樣就實(shí)現(xiàn)了循環(huán)打印五個(gè)數(shù)字的效果。這里的i一般用于循環(huán)計(jì)數(shù),自加的操作可以讓它記錄循環(huán)次數(shù)。
注意:while下面的執(zhí)行語句要空四個(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í)行語句也要空四個(gè)格!
2、隨機(jī)建模
隨機(jī)建模主要用到的技巧是產(chǎn)生隨機(jī)數(shù)字。這就要用到Python的隨機(jī)模塊random了。
展開 ABAQUS批量提交Job與Python讀取ODB結(jié)果應(yīng)力應(yīng)變數(shù)據(jù)
今天完成了一些節(jié)點(diǎn)性工作,下午有些時(shí)間,回答一個(gè)后臺(tái)有網(wǎng)友的提問:
這個(gè)問題具有一定的普遍性和通用性,普遍性是很多人都會(huì)遇到,通用性是指應(yīng)用場(chǎng)景很廣泛,尤其是現(xiàn)在很多人趕時(shí)髦搞深度學(xué)習(xí)和機(jī)器學(xué)習(xí)什么的,需要進(jìn)行大量計(jì)算和數(shù)據(jù)處理來構(gòu)建數(shù)據(jù)集,這就不可避免的要進(jìn)行批量化處理了,因此對(duì)這些問題進(jìn)行基本的講解也就有了意義,我原來也寫過一些相關(guān)文章,點(diǎn)擊下面圖片可以跳轉(zhuǎn)。
該網(wǎng)友的問題,實(shí)際上是兩個(gè)問題:
問題1是如何批量提交job;
問題2是如何從ODB結(jié)果文件中讀取計(jì)算結(jié)果數(shù)據(jù)。
因此本文也從兩個(gè)方面來進(jìn)行介紹。
問題1
如何批量提交job——計(jì)算任務(wù)
批量提交計(jì)算任務(wù)這個(gè)問題實(shí)際上是老生常談了,可以用兩種基本的方式實(shí)現(xiàn)。
方法1:
在cmd中使用命令行的方式,這種方式也可以保存為bat文件的方式運(yùn)行,這個(gè)方式我并不常用,可參考幫助文檔中的如下部分,很詳細(xì)。
方法2
采用python程序進(jìn)行批量提交
如果你的若干個(gè)job已經(jīng)在job界面建好了,并且打算每算完一個(gè)job自動(dòng)的進(jìn)行后處理的話,采用python腳本會(huì)很方便。
展開 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批量提交inp文件進(jìn)行計(jì)算
此時(shí)在abaqus插入腳本即可使用了
當(dāng)然還有別的方法,但這中腳本方法親測(cè)我覺得最靠譜。
ABAQUS批量提交任務(wù)的兩種方法
Python提交方法
這里主要講解ABAQUS/CAE界面下,使用Python代碼批量提交任務(wù),代碼量很少,正文內(nèi)容僅十行,可以實(shí)現(xiàn):Job模塊下任務(wù)狀態(tài)為None時(shí),順序批量的提交計(jì)算,并統(tǒng)計(jì)每個(gè)任務(wù)所耗費(fèi)的時(shí)間。
代碼運(yùn)行方式:
方式1:菜單欄File->Run Script...
方式2:在底部命令輸入窗口中粘帖上述代碼
來源:CAE愛聯(lián)盟
作者:陳佳敏cn
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ù)Excel/csv批量生成inp
進(jìn)行Job 和 Step的名稱標(biāo)準(zhǔn)化, 使用ABAQUS名稱標(biāo)準(zhǔn)化工具, 因?yàn)闊o論是.xls還是.csv, 均有可能出現(xiàn)不符合ABAQUS命名規(guī)則的字符串出現(xiàn).
03
—
補(bǔ)充說明
讀取Excel/csv進(jìn)行批量生產(chǎn)inp, 最難的部分在于力的作用邏輯, 因?yàn)樯婕傲εc扭矩的判斷, 并且有的點(diǎn)只受力的作用而不受扭矩的作用.
這需要進(jìn)行判別(目前程序無法判別只受扭矩作用的情況, 當(dāng)然這種作用方式在實(shí)際工作中也沒有遇見過), 因?yàn)橹皇芰Φ淖饔脮r(shí)該點(diǎn)有三個(gè)方向的載荷而普通的作用點(diǎn)是有六個(gè)方向的載荷的.
這部分的邏輯是我剛開始接觸python的時(shí)候設(shè)計(jì)的, 屬于陳年舊貨, 現(xiàn)在拿來使用雖然沒有邏輯問題, 但是還是有很大的優(yōu)化空間, 只不過....以后再說吧.
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中inp文件批量提交計(jì)算程序 ¥80
ABAQUS批量提交inp自動(dòng)計(jì)算bat程序