運用python語言在Abaqus中進行建模
23 人贊了文章
(1)運用編程的方式建模,可以對參數的影響進行分析;
(2)inp和python語言的區別在於,python語言可以提供建模信息;
今天嘗試建立一個薄壁圓柱殼的彎曲模型,#號開頭表示注釋行。
from abaqus import *from abaqusConstants import *#模型的名字為crack,因為最終想建立含裂縫的圓柱殼模型myModel=mdb.Model(name=crack)#進入part模塊,用import表示導入import part#建立1/4模型,用拉伸的方式建模mySketch=myModel.ConstrainedSketch(name=crackProfile,sheetSize=200)mySketch.ArcByCenterEnds(center=(0.0, 0.0), point1=(0.0, 50.0), point2=(0.0, -50.0), direction=CLOCKWISE)mySketch.ArcByCenterEnds(center=(0.0, 0.0), point1=(0.0, 48.0), point2=(0.0, -48.0), direction=CLOCKWISE)mySketch.Line(point1=(0.0, 48.0), point2=(0.0, 50.0)) mySketch.Line(point1=(0.0, -48.0), point2=(0.0, -50.0))#建立三維模型,提供厚度與模型的屬性myShell=myModel.Part(name=crack, dimensionality=THREE_D, type=DEFORMABLE_BODY)myShell.BaseSolidExtrude(sketch=mySketch, depth=500.0)#進入材料模塊import materialmysteel=myModel.Material(name=steel)elasticProperties=(2.0E5,0.3)#這裡長度單位採用的是mm,所以應力的單位是Mpamysteel.Elastic(table=(elasticProperties, ) )#導入截面模塊import sectionmySection = myModel.HomogeneousSolidSection(name=ShellSection, material=steel, thickness=1.0)region=(myShell.cells,)myShell.SectionAssignment(region=region,sectionName=ShellSection)#導入裝配模塊,導入非獨立實體import assemblymyAssembly=myModel.rootAssemblymyInstance=myAssembly.Instance(name=ShellInstance,part=myShell, dependent=OFF)#這一步是建立參考點RP,這裡的程序顯得有一些冗長,是有pythonreader從Abaqus/cae中轉換過來的#由於對於RP的命令還並不熟悉,所以這裡先採用pythonreader的結果ModelAssembly=mdb.models[crack].rootAssemblydistance=ModelAssembly.instances[ShellInstance].edgesModelAssembly.ReferencePoint(point=ModelAssembly.instances[ShellInstance].InterestingPoint(edge=distance[0], rule=CENTER))#建立參考點的目的是,讓參考點和面進行耦合,以便在點上施加彎矩#在interaction模塊中的coupling進行耦合,這裡依然採用reader的結果a = mdb.models[crack].rootAssemblyr1 = a.referencePointsrefPoints1=(r1[3], )region1=a.Set(referencePoints=refPoints1, name=m_Set-1)a = mdb.models[crack].rootAssemblys1 = a.instances[ShellInstance].facesside1Faces1 = s1.getSequenceFromMask(mask=([#10 ], ), )region2=a.Surface(side1Faces=side1Faces1, name=s_Surf-1)mdb.models[crack].Coupling(name=Constraint-1, controlPoint=region1, surface=region2, influenceRadius=WHOLE_SURFACE, couplingType=KINEMATIC, localCsys=None, u1=ON, u2=ON, u3=ON, ur1=ON, ur2=ON, ur3=ON)#接下來進入分析步,增加一個載荷步import stepmyModel.StaticStep(name=ShellLoad, previous=Initial, timePeriod=1.0, initialInc=0.1,description=Boundry Condition)#進入載荷模塊import load#通過找點確定面的方式施加邊界條件endFaceCenter1 = (0,50,500)endFace1 = myInstance.faces.findAt((endFaceCenter1,) )endRegion1 = (endFace1,)myModel.DisplacementBC(name=BC-1, createStepName=ShellLoad, region=endRegion1, u1=0.0, u2=0.0, u3=UNSET, ur1=UNSET, ur2=UNSET, ur3=UNSET, amplitude=UNSET, fixed=OFF, distributionType=UNIFORM, fieldName=, localCsys=None)endFaceCenter2 = (0,50,0)endFace2 = myInstance.faces.findAt((endFaceCenter2,) )endRegion2 = (endFace2,)myModel.DisplacementBC(name=BC-2, createStepName=ShellLoad, region=endRegion2, u1=0.0, u2=0.0, u3=0, ur1=UNSET, ur2=UNSET, ur3=UNSET, amplitude=UNSET, fixed=OFF, distributionType=UNIFORM, fieldName=, localCsys=None)#這裡的彎矩,加在前面定義好的region1(RP1)上即可myModel.Moment(name=Load-1, createStepName=ShellLoad, region=region1, cm1=100.0, distributionType=UNIFORM, field=, localCsys=None)
這個模型也比較簡單,我沒有mesh,可以隨便mesh一下看一下結果;
後續想在這個基礎上做一些裂縫的參數分析,不過感覺並不能勝任...
今天是六一兒童節,祝各位兒童節快樂~^.^~
推薦閱讀:
※群、環的一些基本概念
※馬元龍:通向存在的道路:詩還是數學?
※奧數是怎樣一步步變得「臭名昭著」的?
※csvService csv操作讀寫
※這道循環小數的奧數題有點難(18年5月12日)