Python在ABAQUS中的使用【z】

來源:互聯網
上載者:User

【篇首語】首先說,我不懂abaqus。只是一次幫同學處理混合編程問題查到這些資料,藉機貼過來。

拷貝過程中有些混亂字元,時間關係我沒有刪乾淨。因為我也是從轉帖轉過來,原出處找不到了。

 

#開頭的為注釋行.9 _-m2r;n%h-G
第一節, 建立建模環境, 這一步中py將從abaqus中匯入建模所需的所有程式模組
from part import *
接下來定義草圖環境
mdb.models['Model-1'].Sketch(name='__profile__', sheetSize=200.0)
mdb.models['Model-1'].sketches['__profile__'].sketchOptions.setValues(constructionGeometry=ON, decimalPlaces=2, dimensionTextHeight=5.0, grid=ON,
    gridFrequency=2, gridSpacing=5.0, sheetSize=200.0, viewStyle=AXISYM);

上面的設定為大小200*200, 格柵間距為5, 文字標註高度為5.5

mdb.models['Model-1'].sketches['__profile__'].ObliqueConstructionLine(point1=(0.0, -100.0), point2=(0.0, 100.0))5 ]7
本句語句設定軸對稱模型的對稱軸線位置
mdb.models['Model-1'].sketches['__profile__'].rectangle(point1=(0.0, 0.0),point2=(40.0, -40.0))
該語句繪製矩形, 從點0,0 至點40,-40
mdb.models['Model-1'].Part(dimensionality=AXISYMMETRIC, name='Boden', type=DEFORMABLE_BODY)
定義模型為軸對稱, 名字為boden,為可變形體8\%M0q ~1H%h;K) \
mdb.models['Model-1'].parts['Boden'].BaseShell(sketch=mdb.models['Model-1'].sketches['__profile__'])
del mdb.models['Model-1'].sketches['__profile__']
繪圖完成不要忘記收回建模環境所佔的記憶體

第二節, 材料定義
from material import *
from section import *
從ABAQUS提供的介面中匯入材料庫和組件庫
mdb.models['Model-1'].Material(name='Boden')
定義材料名#B6~9o2]3r Y4K"U&b
mdb.models['Model-1'].materials['Boden'].Density(table=((2000.0, ), ))

定義材料密度
mdb.models['Model-1'].materials['Boden'].Elastic(table=((210546.3, 0.3333), ))
定義材料線彈性模量和泊松比, 其它的材料, 如彈塑性, 粘彈性材料均對應不同的對象函數.
mdb.models['Model-1'].HomogeneousSolidSection(material='Boden', name='boden',thickness=1.0)
mdb.models['Model-1'].parts['Boden'].assignSection(region=Region(faces=mdb.models['Model-1'].parts['Boden'].faces[0:1]), sectionName='boden')
設定組件為座標無關性材料,厚度為單位厚度, 並將屬性附給所用的組件

第三節, 裝配
from assembly import *
首先, 匯入裝配所用到的對象
mdb.models['Model-1'].rootAssembly.DatumCsysByThreePoints(coordSysType=CYLINDRICAL, origin=(0.0, 0.0, 0.0), point1=(1.0, 0.0, 0.0), point2=(0.0,0.0, -1.0));
定義座標類型為柱座標, 原點0,0,0,另外兩個為單位向量, 確定該座標軸的方向.
mdb.models['Model-1'].rootAssembly.Instance(name='Boden-1', part=mdb.models['Model-1'].parts['Boden'])
產生草圖對像boden的實體, 名字叫Boden-1. 無位移插入

第四節, 定義分析步
from step import *! N;o&J-a' {9t.W*U5]
象其它步一樣, 先匯入分析步要用到的模組
mdb.models['Model-1'].ImplicitDynamicsStep(initialInc=0.005, maxNumInc=1024,name='Step-1', noStop=OFF, nohaf=OFF, previous='Initial',timeIncrementationMethod=FIXED, timePeriod=5.12)
定義對動力隱式分析, 時間長度為0.005*1024=5.12個時間單位, 前一步為Initial7

mdb.models['Model-1'].fieldOutputRequests['F-Output-1'].setValues(variables=('U',));
定義輸出到ODB檔案的資料, 這裡只定義了位移輸出
mdb.models['Model-1'].fieldOutputRequests['F-Output-1'].setValues(frequency=1)6 D,]
定義位移輸出的頻率為每步都輸出:

mdb.models['Model-1'].steps['Step-1'].Restart(frequency=1, overlay=ON)

定義重啟動析, 每一步記錄, 只記錄最後一次的正確狀態

第五節, 定義接觸
from interaction import *
依然是先匯入所用的模組
mdb.models['Model-1'].rootAssembly.PartitionEdgeByParam(edges=(mdb.models['Model-1'].rootAssembly.instances['Boden-1'].edges[3], ), parameter=0.975)
在上部即第3面的97.5%的地方設定一個點, 用於定義接觸5B3p)c)

mdb.models['Model-1'].ContactProperty('IntProp-1')7 j)c)
定義接觸屬性名稱#U1n7e;D4|6B
mdb.models['Model-1'].interactionProperties['IntProp-1'].TangentialBehavior(formulation=FRICTIONLESS)
mdb.models['Model-1'].interactionProperties['IntProp-1'].NormalBehavior(allowSeparation=OFF, augmentedLagrange=OFF, pressureOverclosure=HARD), {1V8R#X0I$Z.O" }
定義接觸特性,為無摩擦硬接觸不允許分開- M1i#s-w(Q0q+F7f!K
mdb.models['Model-1'].SurfaceToSurfaceContactStd(adjustMethod=NONE,
    createStepName='Initial', interactionProperty='IntProp-1', master=Region(
    side1Edges=mdb.models['Model-1'].rootAssembly.instances['fun-1'].edges[0:1])
    , name='Int-1', slave=Region(
    side1Edges=mdb.models['Model-1'].rootAssembly.instances['Boden-1'].edges[4:5])
    , sliding=FINITE)3 ](F!f N7a.K.K& @4D1~
這一句是建立接觸對, 分別為兩個面上的一條邊, 這裡邊的定義由ABAQUS內定, 具體可以查閱參考手冊.

第六節, 荷載邊界定義from load import *
mdb.models['Model-1'].PeriodicAmplitude(a_0=1.0, data=((3.0, 1.1), (3.2, 1.7)), frequency=2.454, name='Fourier',start=0.0, timeSpan=STEP)
定義fourier級數表示的荷載

mdb.models['Model-1'].Pressure(amplitude='Fourier', createStepName='Step-1', distribution=UNIFORM, magnitude=50.0, name='Load-1', region=Region(- H2_$J2q6F)G1e
    side1Edges=mdb.models['Model-1'].rootAssembly.instances['fun-1'].edges[2:3])), l:^4@7S!X,j;q
定義壓強, 設定載入的分析步,地區及放大係數
mdb.models['Model-1'].DisplacementBC(amplitude=UNSET, createStepName='Initial',distribution=UNIFORM, localCsys=None, name='BC-1', region=Region(
    edges=mdb.models['Model-1'].rootAssembly.instances['Boden-1'].edges[0:1]+\mdb.models['Model-1'].rootAssembly.instances['Boden-1'].edges[2:3]+\mdb.models['Model-1'].rootAssembly.instances['fun-1'].edges[3:4]), u1=SET,u2=UNSET, ur3=UNSET)6 j&B+o3\*v
mdb.models['Model-1'].DisplacementBC(amplitude=UNSET, createStepName='Initial', distribution=UNIFORM, localCsys=None, name='BC-2', region=Region(- y5v3`2J,W+N$t5{
    edges=mdb.models['Model-1'].rootAssembly.instances['Boden-1'].edges[1:2]), u1=UNSET, u2=SET, ur3=UNSET)9 V8w6A'S!z2V:_7F#v8f* ^
設定邊界位移為0的邊界條件, 注意文法中對象相加的方法.

第七節, 網格劃分控制
from mesh import *
import mesh3 R0B4k4Z4}9P%b8D3d1x
匯入網格劃分模組$f0\0y4K*P6\${
elemType1 = mesh.ElemType(elemCode=CAX8, elemLibrary=STANDARD,secondOrderAccuracy=OFF, hourglassControl=STIFFNESS, distortionControl=OFF)7 a9Y4N*N;d$R; ]2W
elemType2 = mesh.ElemType(elemCode=CAX6M, elemLibrary=STANDARD)
a1 = mdb.models['Model-1'].rootAssembly
f1 = a1.instances['Boden-1'].faces& n/i9h&k( ^#?%e.z.T
faces1 = f1[0:1]
regions =(faces1, )
a1.setElementType(regions=regions, elemTypes=(elemType1, elemType2))
定義其中一個物體的網格為二次8結點單元, 如果其中有無法劃分成四邊形單元的情況, 則用三角形二次6結點單元.
elemType1 = mesh.ElemType(elemCode=CAX4, elemLibrary=STANDARD)
elemType2 = mesh.ElemType(elemCode=CAX3, elemLibrary=STANDARD)% ]4 H9N5M'u
a1 = mdb.models['Model-1'].rootAssembly& I#k3c7E,O5s6l G(w
f1 = a1.instances['fun-1'].faces0
faces1 = f1[0:1]
regions =(faces1, )
a1.setElementType(regions=regions, elemTypes=(elemType1, elemType2))(H" ~ a'B,F"W r
定義其中一個物體的網格為一次4結點單元,如果其中有無法劃分成四邊形單元的情況, 則用三角形一次3結點單元.
mdb.models['Model-1'].rootAssembly.seedPartInstance(regions=(mdb.models['Model-1'].rootAssembly.instances['fun-1'], ), size=0.5)
mdb.models['Model-1'].rootAssembly.seedPartInstance(regions=(mdb.models['Model-1'].rootAssembly.instances['Boden-1'], ), size=1)' i3K$l2X.J/U6n%O
定義網格劃分全域單元大小.: J) }#R1X-Z2@/{&L8d
mdb.models['Model-1'].rootAssembly.generateMesh(regions=(mdb.models['Model-1'].rootAssembly.instances['Boden-1'],mdb.models['Model-1'].rootAssembly.instances['fun-1']))
按照定義劃分單元

第八節, 任務提交及雜項功能
mdb.models.changeKey(fromName='Model-1', toName='Fall-Muster')
修改模型名稱
mdb.Model(name='Fall-015', objectToCopy=mdb.models['Fall-Muster'])
拷貝模型
mdb.models['Fall-015'].materials['Boden'].elastic.setValues(table=((210546.3, 0.15),))
修改模型中的材料屬性; S9H w7w5t+Q9W(K/z
mdb.Job(contactPrint=OFF, description='', echoPrint=OFF, explicitPrecision=1 {7T#B"X0W#C%y0}
    SINGLE, historyPrint=OFF, model='Fall-015', modelPrint=OFF, ) B* |%{3l H&c d8a7S4t
    multiprocessingMode=THREADS, name='Job-015', nodalOutputPrecision=SINGLE, +F%a9L:[0V0x7^,Z7q8B5z1J
    numCpus=1, numDomains=1, parallelizationMethodExplicit=LOOP,
    parallelizationMethodStandard=TREE, preMemory=1024.0, scratch='', 6]$W3x2I'G7Q3_3?
    standardMemory=2048.0, standardMemoryPolicy=MODERATE, type=ANALYSIS,
    userSubroutine='')
產生任務
mdb.saveAs(pathName='D:/temp/FundamentSchwingungStudie'); i9I#l4^+z:d5R) ^
儲存模型
mdb.jobs['Job-015'].submit()
提交任務

第九節,關於如何在python中提交多個任務的問題
如果您使用下面這樣的命令做的提交
mdb.jobs['Job-01'].submit()
mdb.jobs['Job-02'].submit()" S8e't&R0n!c4K"F O/Q9{
mdb.jobs['Job-03'].submit()
你就會看到, 所有的任務是一次性提交的, 多個任務在一起運行, 這肯定不是你想看到的結果, 如何完成一個接著一個的提交呢, 其實很簡單, 在每個任務後面加上一句
mdb.jobs['Job-01'].waitForCompletion()
就可以了.
那麼上面的語句就改為-

mdb.jobs['Job-01'].submit()
mdb.jobs['Job-01'].waitForCompletion())

mdb.jobs['Job-02'].submit()
mdb.jobs['Job-02'].waitForCompletion()
mdb.jobs['Job-03'].submit()
mdb.jobs['Job-03'].waitForCompletion()
......0 g7d9c2m-?;h
就一切OK了

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.