仿真在线:有限元分析咨询与培训中心——Ansys|Fluent|Abaqus|HFSS|SolidWorks|课程培训

ABAQUS程序化建模教程(二)——模型的創(chuàng)建和批量修改【轉(zhuǎn)發(fā)】

2017-01-20  by:CAE仿真在線  來(lái)源:互聯(lián)網(wǎng)





太長(zhǎng)不想看

1. 如何用python創(chuàng)建模型?

2. 如何用python批量剖分模型?

3. 你們還是仔細(xì)看看吧,別偷懶了。




上回小胖給大家介紹了Python與ABAQUS的一些相關(guān)基礎(chǔ)內(nèi)容(自己挖的坑,跪著也要填完),當(dāng)然針對(duì)是菜鳥(niǎo)寶寶的。高手可以對(duì)本系列教程無(wú)視,只“贊賞”就好了


ABAQUS程序化建模教程(二)——模型的創(chuàng)建和批量修改【轉(zhuǎn)發(fā)】abaqus有限元圖片1


后面我們具體講一下如何在CAE界面內(nèi)運(yùn)行你所需要的命令。今天我們先講一下建模相關(guān)的。


ABAQUS程序化建模教程(二)——模型的創(chuàng)建和批量修改【轉(zhuǎn)發(fā)】abaqus有限元圖片2
Abaqus的Python版本

ABAQUS程序化建模教程(二)——模型的創(chuàng)建和批量修改【轉(zhuǎn)發(fā)】abaqus有限元圖片3


最近的4個(gè)Abaqus版本中,6.12和6.13采用的是Python 2.6.2, 6.14和2016(內(nèi)部版本6.16)采用的是Python 2.7.3。這可以在CAE界面中的Help-about abaqus中查詢得到。

ABAQUS程序化建模教程(二)——模型的創(chuàng)建和批量修改【轉(zhuǎn)發(fā)】abaqus有限元圖片4


Abaqus應(yīng)該是集成了Python的基本程序包,所以各位應(yīng)該不用擔(dān)心自己系統(tǒng)內(nèi)的Python會(huì)和Abaqus自帶的Python產(chǎn)生沖突。Python程序基本的功能,包括文件讀寫、函數(shù)運(yùn)算甚至系統(tǒng)命令的調(diào)用,你都可以在CAE內(nèi)通過(guò)run script完成。借用 Simwe/Abaqus 吳聊SP版主的一句話——Abaqus采用Python做前后處理,簡(jiǎn)直太英明了。


ABAQUS程序化建模教程(二)——模型的創(chuàng)建和批量修改【轉(zhuǎn)發(fā)】abaqus有限元圖片2
Part創(chuàng)建命令

ABAQUS程序化建模教程(二)——模型的創(chuàng)建和批量修改【轉(zhuǎn)發(fā)】abaqus有限元圖片3

小胖現(xiàn)在CAE里建立了這么一個(gè)三維塊體



ABAQUS程序化建模教程(二)——模型的創(chuàng)建和批量修改【轉(zhuǎn)發(fā)】abaqus有限元培訓(xùn)資料圖片7


方法嘛,當(dāng)然是part-create,然后通過(guò)sketch畫(huà)好截面圖后拉伸形成的啦。我們看看相關(guān)jnl文件中的對(duì)應(yīng)命令是什么


ABAQUS程序化建模教程(二)——模型的創(chuàng)建和批量修改【轉(zhuǎn)發(fā)】abaqus有限元培訓(xùn)資料圖片8

////////////////////////////////////////////////////////////////////////////////////////

from part import *
from material import *
from section import *
from assembly import *
from step import *
from interaction import *
from load import *
from mesh import *
from optimization import *
from job import *
from sketch import *
from visualization import *
from connectorBehavior import *

mdb.models['Model-1'].ConstrainedSketch(name='__profile__', sheetSize=200.0)
mdb.models['Model-1'].sketches['__profile__'].Line(point1=(0.0, 0.0), point2=(
15.0, 0.0))
mdb.models['Model-1'].sketches['__profile__'].HorizontalConstraint(
addUndoState=False, entity=
mdb.models['Model-1'].sketches['__profile__'].geometry[2])
mdb.models['Model-1'].sketches['__profile__'].Line(point1=(15.0, 0.0), point2=(
15.0, 15.0))
mdb.models['Model-1'].sketches['__profile__'].VerticalConstraint(addUndoState=
False, entity=mdb.models['Model-1'].sketches['__profile__'].geometry[3])
mdb.models['Model-1'].sketches['__profile__'].PerpendicularConstraint(
addUndoState=False, entity1=
mdb.models['Model-1'].sketches['__profile__'].geometry[2], entity2=
mdb.models['Model-1'].sketches['__profile__'].geometry[3])
mdb.models['Model-1'].sketches['__profile__'].Line(point1=(15.0, 15.0), point2=
(0.0, 15.0))
mdb.models['Model-1'].sketches['__profile__'].HorizontalConstraint(
addUndoState=False, entity=
mdb.models['Model-1'].sketches['__profile__'].geometry[4])
mdb.models['Model-1'].sketches['__profile__'].PerpendicularConstraint(
addUndoState=False, entity1=
mdb.models['Model-1'].sketches['__profile__'].geometry[3], entity2=
mdb.models['Model-1'].sketches['__profile__'].geometry[4])
mdb.models['Model-1'].sketches['__profile__'].Line(point1=(0.0, 15.0), point2=(
0.0, 0.0))
mdb.models['Model-1'].sketches['__profile__'].VerticalConstraint(addUndoState=
False, entity=mdb.models['Model-1'].sketches['__profile__'].geometry[5])
mdb.models['Model-1'].sketches['__profile__'].PerpendicularConstraint(
addUndoState=False, entity1=
mdb.models['Model-1'].sketches['__profile__'].geometry[4], entity2=
mdb.models['Model-1'].sketches['__profile__'].geometry[5])
mdb.models['Model-1'].Part(dimensionality=THREE_D, name='soil', type=
DEFORMABLE_BODY)
mdb.models['Model-1'].parts['soil'].BaseSolidExtrude(depth=20.0, sketch=
mdb.models['Model-1'].sketches['__profile__'])

/////////////////////////////////////////////////////////////////////////////

其實(shí)前面紅字部分的眾多import,只有part和sketch是對(duì)這一步創(chuàng)建part有用的。寶寶們可以通過(guò)命令mdb.models['Model-1'].sketches系列命令看出如何在命令窗口用Python操作sketch。


各個(gè)命令基本都有相應(yīng)的CAE操作對(duì)應(yīng),舉個(gè)栗子:

mdb.models['Model-1'].Part(dimensionality=THREE_D, name='soil', type=
DEFORMABLE_BODY)

mdb.models['Model-1'].parts['soil'].BaseSolidExtrude(depth=20.0, sketch=
mdb.models['Model-1'].sketches['__profile__'])

就對(duì)應(yīng)以下操作:


ABAQUS程序化建模教程(二)——模型的創(chuàng)建和批量修改【轉(zhuǎn)發(fā)】abaqus有限元資料圖片9


各位寶寶其實(shí)可以保存jnl文件,如果沒(méi)有CAE文件或相關(guān)文件丟失時(shí),可以直接運(yùn)行jnl中相關(guān)命令,很快可以恢復(fù)模型。事實(shí)上,Abaqus自己recovery的時(shí)候應(yīng)該也是以jnl文件為依據(jù)的。


ABAQUS程序化建模教程(二)——模型的創(chuàng)建和批量修改【轉(zhuǎn)發(fā)】abaqus有限元圖片2
Part剖分命令

ABAQUS程序化建模教程(二)——模型的創(chuàng)建和批量修改【轉(zhuǎn)發(fā)】abaqus有限元圖片3


剖分的CAE操作,寶寶們想必已然很熟悉了。但在實(shí)際工程的模擬中,往往需要剖幾十次甚至上百次,這就不好玩了。比如一個(gè)隧道,需要模擬100步的開(kāi)挖,那么就需要沿著軸線方向至少剖分100次。這種情況看起來(lái)比較復(fù)雜,其實(shí)還是有規(guī)律可循的——因?yàn)檠刂S線方向每隔比如2米就剖分一次,寶寶們很容易想到用循環(huán)命令。現(xiàn)在小胖提供一個(gè)速成的方法。


我們還是以上邊那個(gè)三維實(shí)體為例,假如需要沿Z軸方向剖分100次,那么每次剖分間距即為20/100=0.2 m。在CAE中,我們通常直接選用cell的剖分模式。


ABAQUS程序化建模教程(二)——模型的創(chuàng)建和批量修改【轉(zhuǎn)發(fā)】abaqus有限元圖片12


如果需要用define cutting plane模式,那么需要沿Z軸先布置好對(duì)應(yīng)的參考點(diǎn)(datum-point)。


ABAQUS程序化建模教程(二)——模型的創(chuàng)建和批量修改【轉(zhuǎn)發(fā)】abaqus有限元圖片13


ABAQUS程序化建模教程(二)——模型的創(chuàng)建和批量修改【轉(zhuǎn)發(fā)】abaqus有限元圖片14


我們以上圖箭頭所指向的點(diǎn)為參考點(diǎn),沿Z軸正向偏移0.2,創(chuàng)建第一個(gè)datum point。然后保存,去jnl文件中查看相關(guān)命令:


mdb.models['Model-1'].parts['soil'].DatumPointByOffset(point=
mdb.models['Model-1'].parts['soil'].vertices[10], vector=(0.0, 0.0, 0.2))


我們看到最后一個(gè)vector=(0.0, 0.0, 0.2)那個(gè)命令中有0.2,就知道循環(huán)有望啊。按照以下命令:

from part import *
for i in range(1, 101):
mdb.models['Model-1'].parts['soil'].DatumPointByOffset(point=mdb.models['Model-1'].parts['soil'].vertices[10], vector=(0.0, 0.0, 0.2*i))


注意兩點(diǎn):1. 不要忘了import;2.python循環(huán)計(jì)數(shù)是從0開(kāi)始,循環(huán)至給定結(jié)尾的上一個(gè)整數(shù),對(duì)于我們上邊的例子也就是100。


先來(lái)看下效果:


ABAQUS程序化建模教程(二)——模型的創(chuàng)建和批量修改【轉(zhuǎn)發(fā)】abaqus有限元仿真圖片15


是不是很痛快?是不是覺(jué)得如果早知道,手就不用抽筋了?反正當(dāng)時(shí)小胖是這么想的。我們?cè)賮?lái)看看剖分的命令能不能循環(huán)。先在CAE里剖分一下試試,看看jnl命令:


mdb.models['Model-1'].parts['soil'].PartitionCellByPlanePointNormal(cells=mdb.models['Model-1'].parts['soil'].cells.getSequenceFromMask(('[#1 ]', ), ), normal=mdb.models['Model-1'].parts['soil'].edges[1], point= mdb.models['Model-1'].parts['soil'].datums[105])


一臉懵逼啊,什么鬼啊?怎么還有亂碼亂入??getSequenceFromMask是哪國(guó)人?

ABAQUS程序化建模教程(二)——模型的創(chuàng)建和批量修改【轉(zhuǎn)發(fā)】abaqus有限元仿真圖片16

別著急。“在做abaqus二次開(kāi)發(fā)時(shí),經(jīng)常會(huì)遇到getSequenceFromMask,里面給出的是一個(gè)掩碼編碼,一般不具備通用性,在參數(shù)化建模或者優(yōu)化分析里面應(yīng)避免使用它。”大家可以參考這個(gè)帖子

http://forum.simwe.com/forum.php?mod=viewthread&tid=1111700&highlight=abaqus%2Brpy%2Bmask


反正輸入命令

session.journalOptions.setValues(replayGeometry=INDEX,recoverGeometry=INDEX)

就對(duì)了。


然后我們看下命令形式是啥


mdb.models['Model-1'].parts['soil'].PartitionCellByPlanePointNormal(cells=mdb.models['Model-1'].parts['soil'].cells[0:1], normal=mdb.models['Model-1'].parts['soil'].edges[1], point=mdb.models['Model-1'].parts['soil'].datums[105])


是不是友好多啦?但datums后面中括號(hào)里的序號(hào)咋獲得?這個(gè)實(shí)際上可以通過(guò)建立datum point的時(shí)候采用命令


d=mdb.models['Model-1'].parts['soil'].DatumPointByOffset(point=mdb.models['Model-1'].parts['soil'].vertices[10], vector=(0.0, 0.0, 0.2))


獲得。如果需要獲取id,那么直接“d.id”即可。這樣,我們就可以重新來(lái)一遍,思路是先創(chuàng)建一個(gè)datum point,然后獲取datum的id,再接著創(chuàng)建partition。因?yàn)槿绻€采用define cutting plane的方法創(chuàng)建partition的話,中間需要edges等幾何信息都會(huì)隨著剖分的進(jìn)行而改變,因此,我們需要一個(gè)全局不變的參考方式。我們這里選擇先定義切割平面。有了datum point,自然很容易創(chuàng)建切割平面。但需要一個(gè)參考軸。我們可以先定義一個(gè),即Z軸


mdb.models['Model-1'].parts['soil'].DatumAxisByPrincipalAxis(principalAxis=ZAXIS)


然后此時(shí),我們的datum point也不宜在用偏移的方式,寶寶們可以直接采用coordinate的方式來(lái)獲取命令,也就是下圖所示


ABAQUS程序化建模教程(二)——模型的創(chuàng)建和批量修改【轉(zhuǎn)發(fā)】abaqus有限元仿真圖片17


然后我們就可以進(jìn)行剖分程序了。總的程序如下:


from part import *
a=mdb.models['Model-1'].parts['soil'].DatumAxisByPrincipalAxis(principalAxis=ZAXIS)
aid=a.id # 創(chuàng)建參考軸線
for i in range(1, 101):
d=mdb.models['Model-1'].parts['soil'].DatumPointByCoordinate(coords=(0.0, 0.0, 0.2*i)) #以坐標(biāo)的方式創(chuàng)建參考點(diǎn)們
did=d.id #當(dāng)前創(chuàng)建的參考點(diǎn)的id號(hào)
p=mdb.models['Model-1'].parts['soil'].DatumPlaneByPointNormal(normal=mdb.models['Model-1'].parts['soil'].datums[aid], point=mdb.models['Model-1'].parts['soil'].datums[did]) #創(chuàng)建參考平面,將用來(lái)切割模型
pid=p.id #參考平面的id號(hào)
mdb.models['Model-1'].parts['soil'].PartitionCellByDatumPlane(cells=mdb.models['Model-1'].parts['soil'].cells[:], datumPlane=mdb.models['Model-1'].parts['soil'].datums[pid])
#批量切割


我們來(lái)看看效果


ABAQUS程序化建模教程(二)——模型的創(chuàng)建和批量修改【轉(zhuǎn)發(fā)】abaqus有限元仿真圖片18



ABAQUS程序化建模教程(二)——模型的創(chuàng)建和批量修改【轉(zhuǎn)發(fā)】abaqus有限元圖片2
小結(jié)


ABAQUS程序化建模教程(二)——模型的創(chuàng)建和批量修改【轉(zhuǎn)發(fā)】abaqus有限元圖片3


所謂授人以魚(yú)不如授人以漁。寶寶們可以按照小胖今天所講的方法自己探索Python的程序化建模方法。


轉(zhuǎn)自微信號(hào):算盤坊

開(kāi)放分享:優(yōu)質(zhì)有限元技術(shù)文章,助你自學(xué)成才

相關(guān)標(biāo)簽搜索:ABAQUS程序化建模教程(二)——模型的創(chuàng)建和批量修改【轉(zhuǎn)發(fā)】 abaqus分析培訓(xùn) abaqus技術(shù)教程 abaqus巖土分析 鋼筋混凝土仿真 abaqus分析理論 abaqus軟件下載 abaqus umat用戶子程序編程 Abaqus代做 Abaqus基礎(chǔ)知識(shí) Fluent、CFX流體分析 HFSS電磁分析 Ansys培訓(xùn) 

編輯
在線報(bào)名:
  • 客服在線請(qǐng)直接聯(lián)系我們的客服,您也可以通過(guò)下面的方式進(jìn)行在線報(bào)名,我們會(huì)及時(shí)給您回復(fù)電話,謝謝!
驗(yàn)證碼

全國(guó)服務(wù)熱線

1358-032-9919

廣州公司:
廣州市環(huán)市中路306號(hào)金鷹大廈3800
電話:13580329919
          135-8032-9919
培訓(xùn)QQ咨詢:點(diǎn)擊咨詢 點(diǎn)擊咨詢
項(xiàng)目QQ咨詢:點(diǎn)擊咨詢
email:kf@1cae.com




主站蜘蛛池模板: 铸铁型材_灰铁棒_球铁棒_圆铁棒生产厂家★河北起昌精密装备制造有限公司 | 太阳能路灯-高杆灯-景观灯-玉兰灯-中华灯-LED市电-庭院灯厂家-扬州汉威光电科技有限公司 | 无锡新源润不锈钢官网|304不锈钢平板|316L冷轧宽幅|2米卷分条开平 | 上海机械加工-机械加工-精密机械加工-上海欧野精工机械有限公司 上海慧泰仪器制造有限公司_一体型马弗炉-可控真空干燥箱-强光稳定性试验箱 | 环链电动葫芦-群吊电动葫芦-链条电动葫芦-环链葫芦-河北大力起重官方网站 | 太原门禁系统_太原车牌识别_山西人脸识别系统-山西元一智能科技有限公司 | 上海专升本-上海统招专升本网| 磨粉机_上海磨粉机_雷蒙磨粉机_超细磨粉机_磨粉机价格-上海山卓重工机械有限公司 | 暖气片_铜铝复合暖气片_钢制散热器厂家-德克菲勒暖气片 | 托盘缠绕机|全自动缠绕机|悬臂缠绕机-上海晏陵智能设备有限公司 托辊|滚筒|聚氨酯托辊|缓冲托辊|尼龙托琨|衡水良龙输送机械有限公司 | 上海国际餐饮博览会|餐饮供应|餐饮服务|餐饮加盟 | 深圳市新纶超净科技有限公司,防静电/洁净室行业系统解决方案提供商 | 中深世纪广告公司 深圳标志设计,深圳logo设计公司,包装设计公司,深圳商标设计,深圳画册设计公司 中商信息网-商务数据网-中文商务数据网 | 郑州环球重工机械有限公司建筑垃圾处理专题网站 | 江阴市海顺机械设备制造有限公司 | 讨债公司_要债公司_要账公司[18年讨债要债经验]讨账公司 | 硬度计,里氏硬度计,布氏硬度计,高强螺栓检测仪,平板导热仪,专业无损检测仪器商-北京时代新天测控技术有限公司-北京时代新天测控技术有限公司 | 上海联锐精密机械有限公司-【官网】 | 江苏苏仪集团有限公司 江苏红光仪表厂有限公司 | 江阴市卡泰机械设备有限公司| 济南货架|济南仓储货架|济南仓库货架|山东蕴达金属制品有限公司 济南海纳特科技有限公司 | 小耳朵电源_安防监控电源|小耳朵官网|电源适配器|摄像机电源|开关电源|小耳朵监控电源 | 江苏科星新材料有限公司 - 南通科星化工股份有限公司 - 南通星奇新材料有限公司 | 汽车漆|汽车油漆|工业油漆涂料|汽车漆加盟-佛山市科涂涂料有限公司 | 潍坊特钢集团有限公司| 西安外墙防水补漏-堵漏-防腐-保温工程公司-陕西宏图祥瑞实业有限公司 | 套丝机_钢管套丝机_螺栓套丝机S8139_螺纹钢套丝机_智能套丝机价格-瑞捷机械设备有限公司 | 化工网-化工新闻资讯平台-中华化工行业门户网站 | 四合扣-工字扣-帽钉(831,200,警用,大拉力四合扣)-永嘉县鑫达钮扣有限公司 | 江苏吉宏特专用汽车制造有限公司_联合吸污车-下水道管道清洗疏通车-综合养护吸排车 | 蒸汽发生器-电加热蒸汽发生器、燃油蒸汽发生器、燃气蒸汽发生器设备厂家-诺贝思蒸汽发生器 | 山西华盛筑景装饰,山西专业公装公司,太原公装装修公司,包括:办公室,酒店宾馆,商铺店铺,学校幼儿园,会所会馆饭店餐馆等装修设计 | 深圳市翔洲宏科技有限公司| 停车场收费管理系统,通道闸系统,门禁系统,东莞停车场收费管理系统,东莞通道闸系统,-东莞市骄阳交通设备有限公司 | 自动烘干线,工业烘箱生产厂家-湖南耐美特智能装备有限公司官方网站 | 提供专业.全面.优质的壁炉服务-莫洛尼官方网站moloney | 围墙护栏,护栏网,围栏,锌钢栅栏,护栏网厂家--安平县沃达金属丝网制造有限公司 | 酒店宾馆一次性用品厂家-酒店洗漱用品,洗浴用品品牌方案-江苏欧佩 | 景德镇芳然装饰有限公司 | 液压万能试验机价格_电子万能试验机|摩擦磨损试验机厂家-济南辰达试验机制造有限公司 | 苏州注塑|无锡注塑|上海注塑|苏州汉科精密注塑有限公司 |