ABAQUS程序化建模教程(一)——Python基礎(chǔ)
2016-12-10 by:CAE仿真在線 來源:互聯(lián)網(wǎng)
1.Python是提高你Abaqus建模和后處理的利器。學好Python會嚴重提升逼格;
2.CAE中三種數(shù)據(jù)結(jié)構(gòu),需要了解;
3.建模的三種方式:點鼠標到手抽筋式;命令行強擼python裝逼式;腳本文件沒朋友式;
4.懶漢可以通過jnl文件學習每一步操作所對應(yīng)的Python命令。
程序化建模這個系列,小胖很猶豫要不要開。因為小胖自己也是半瓶醋,基本都是碰到問題上網(wǎng)搜,python學習得也并不系統(tǒng)。記得做第二個模擬項目的時候,整個模型有186個施工步,每一步都需要對荷載、單元生死、瞬態(tài)分析步等進行調(diào)整,光是set就大幾百個。開始的時候小胖很誠心的一個個操作,玩了一天,右手中指抽筋(是真的抽筋,劇痛)。第二天不敢繼續(xù)了,迫不得已拾起腦子,開始尋找能讓我飛的方法。從那時開始接觸python,到現(xiàn)在也有六七年了,總體感覺就是這是一個很人性化的語言和工具,前途不可限量(雖然現(xiàn)在已然是主流)。
Abaqus采用Python作為接口語言進行計算的前、后處理。采用Fortran進行設(shè)計計算過程的二次開發(fā)。所以,一般我們說Abaqus的二次開發(fā),是指通過Fortran編制子程序?qū)崿F(xiàn)對Abaqus自身計算功能的拓展。而采用Python進行的程序化建模,小胖認為并不能算是二次開發(fā),只是一種比較高效的用戶自定義建模方法。
廢話少說了。今天先簡單介紹一下Python吧,算是這個系列的一個開頭。
Python在英文里是巨蟒的意思(插一句,算盤坊英文名小胖定為Abacus Workshop,abacus就是算盤的意思,所以寶寶們不要再留言提醒我應(yīng)該用abaqus了)。它是一種面向?qū)ο?、直譯式的計算機語言。相比于老古董fortran,它甚至有些人類語言的風格(當然是英文,想什么呢)。
Python由河南(Netherlands)人Guido van Rossum創(chuàng)始。因為1989年時的他癡迷BBC一款電視劇Monty Python's Flying Circus(蒙提·派森的飛行馬戲團),并且當時想用業(yè)余時間開發(fā)一套新的腳本語言和相應(yīng)的解釋器,于是便“很隨意”地將這款新的腳本語言命名為Python。二十多年過去了,Python的確發(fā)展成一個龐然大物,并風靡地球上的智人社會。到現(xiàn)在Guido(60歲了)仍然活躍在Python社區(qū),被稱為“仁慈的獨裁者”(Benevolent Dictator For Life)。各位有興趣可以訪問鏈接
https://gvanrossum.github.io//
1. 我們先來看看使用python編寫的應(yīng)用(from wiki),寶寶們看看有沒有你們熟悉的:
2. Python中和我們數(shù)值計算相關(guān)的一些庫(初學寶寶可以把庫理解為一個裝滿特定功能的python函數(shù)的容器,需要的時候直接調(diào)用即可)。
其中小胖最喜歡第一個Matplotlib庫??上膭?chuàng)始人在2012年英年早逝。大家可以欣賞一下Matplotlib的作圖效果(from official site: http://matplotlib.org/)。這些圖都有相關(guān)代碼可以復(fù)制粘貼哦。
寶寶們看到Abaqus的CAE及ODB,可能感覺像個黑匣子,不知道也沒興趣知道里面到底是啥。但了解一下Abaqus模型的數(shù)據(jù)存儲結(jié)構(gòu),對你更高效地利用Abaqus會大有裨益。還是那句話,有事問幫助文件,學會自學。
我們先看下Abaqus Scripting User's Manual怎么說的:
從這張圖可以很清楚地看到Abaqus/CAE和Python的關(guān)系。有三種方式可以溝通你和CAE的關(guān)系:
(1)GUI;也就是你鼠標在CAE界面的操作,也就是那個把小胖累得中指抽筋的方法;
(2)命令行接口(CLI);見下圖,箭頭所指示的地方就是;
(3)script;即編寫的獨立的python腳本文件。事實上,第2條所輸入的命令完全可以放到一個python腳本文件中(.py文件)單獨運行,所以這兩者沒有本質(zhì)的區(qū)別。腳本文件的運行方法如下,選擇Run script,然后選擇你要運行的腳本(.py文件)即可。
數(shù)據(jù)需要有一定的結(jié)構(gòu)才能進行高效的存儲、傳輸和調(diào)用。Abaqus/CAE中有三種不同的存儲數(shù)據(jù)的對象,分別為:session、mdb和odb。其中,session可以理解為定義一些界面內(nèi)即時顯示的命令、函數(shù)的集合,比如定義視角等命令;mdb就包含一些實質(zhì)的內(nèi)容了,比如模型本身的數(shù)據(jù)如part、section、material等相關(guān)命令,以及job相關(guān)的命令和函數(shù);odb顧名思義就是結(jié)果文件的數(shù)據(jù)存儲結(jié)構(gòu)。我們可以參考下圖:
其中,container(容器)指的是包含多個同類對象的對象,有點拗口。比如,step這個container就包含了你模型中所有的step信息,你可以通過step進行調(diào)用。singular object就是一個單一類型的對象,如session、mdb等。
各個對象具體的結(jié)構(gòu),寶寶們可以參考Abaqus Scripting User's Manual 6.1,一目了然。
大概了解CAE的數(shù)據(jù)結(jié)構(gòu)之后,各位就可以在文件ABAQUS SCRIPTING REFERENCE GUIDE中按圖索驥,找到自己所需要的命令了。
其實也沒有特別好的辦法。你在CAE中的每個操作,Abaqus都會做記錄,并生成相應(yīng)的jnl文件。見下圖:
推薦各位寶寶用ultraedit、editplus之類的專業(yè)編輯器打開,結(jié)構(gòu)形式很明顯,非常有美感。我們打開一個來瞅瞅。
熟悉Python的寶寶都知道“from xxx import *”的含義。類似于c/cpp里面的include(暫時可以這么理解吧)。如果寶寶們在輸入命令過程中出現(xiàn)以下錯誤:
各位就應(yīng)該及時想到是否落掉了一些庫沒有import。事實上,為了保險起見,建議各位每次在命令窗口運行命令之前都先把所有的庫import一遍(XD)。
好了,各位上班第一天,就不多說,以免給各位添堵。下次小胖先給各位整幾個建模過程中常用的命令,比如批量修改step、model change之類的。不著急,慢慢來。
(完)
相關(guān)標簽搜索:ABAQUS程序化建模教程(一)——Python基礎(chǔ) abaqus分析培訓(xùn) abaqus技術(shù)教程 abaqus巖土分析 鋼筋混凝土仿真 abaqus分析理論 abaqus軟件下載 abaqus umat用戶子程序編程 Abaqus代做 Abaqus基礎(chǔ)知識 Fluent、CFX流體分析 HFSS電磁分析 Ansys培訓(xùn)