日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

abaqus对应python版本_Abaqus里应用Python的一些技巧

發布時間:2023/12/20 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 abaqus对应python版本_Abaqus里应用Python的一些技巧 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

例如:cell4 = mdb.models['block'].parts['crankcase'].cells[4],要把part模塊中編號為4的體賦值給cell4,就需通過路徑mdb→models→part→cells(4號體屬性),其中'block'、'crankcase'、分別是model和part的名字。

在草圖Sketch中畫線:

s = mdb.models[' block '].ConstrainedSketch(name='grid',

sheetSize=3.0)

s.Line(point1=(-1.275, 0.0), point2=(-1.125, 0.0))

s.Line(point1=(1.125, 0.0), point2=(1.275, 0.0))

執行任何一條命令都必須按照結構樹的格式進行操作。我們所看到的python腳本繁雜的語句就是這樣形成的。這樣大量的命令不能在短時間內掌握,我們只需要根據自己的需要邊建立模型邊學習就可以了。

a = mdb.models['Model-1'].rootAssembly

s = a.instances['Mount-1'].edges

side1Edges = s.findAt(((0.0475, 0.0, 0.0), ))

以上三行與下面的句子是等同的,即把findat找到的edges賦值給side1Edges。分開來寫簡單明了,大大縮短了語句的長度。

side1Edges = mdb.models['Model-1'].rootAssembly. instances['Mount-1'].edges. findAt(((0.0475, 0.0, 0.0), ))

a.Surface(side1Edges=side1Edges, name='Bottom'),這行語句設置side1Edges所對應的edge為名稱'Bottom'的surface的set。

#===========================================================

3.模型參數分析技巧

Python腳本建模的好處就是可以進行參數分析,即改變我們要分析模型的幾何尺寸、材料屬性等可變參數,對數值模型進行求解計算,從而對所分析的對象有更全面的了解。

1.對自己要進行參數分析的參數賦值:如幾何尺寸或材料屬性等a1=20,b1=30,c1=40,命名要符合python規則。

2.cae與Python混合建模,不會的命令就利用cae自動生成,用Python reader記錄命令然后進行修改,可以彌補不熟悉Python的缺點;

3.逐句修改Python腳本,可以去掉一些不必要的語句并在cae中逐句進行驗證。

#===========================================================

4. 幾個命令的體會

4.1 Set ( )

Set命令在python建模時要經常用到,對實體、surface、element等分組,方便加載、施加約束和單元生死等控制

4.2 Findat ( )

對cell、edge、face、vertice進行查找,括號中參數為實體坐標

p = mdb.models['Model-1'].parts['Mount']

f = p.faces

faces = f.findAt(((0.042303, 0.006937, 0.0), ))

pickedRegions =(faces, )

p.setElementType(regions=pickedRegions,

elemTypes=(elemType1, elemType2))

4.3 Len ( )

利用len命令可以實現對單元選取

p = mdb.models['precast culvert'].parts['soil']

e = p.elements

len(e)

n1=len(e)

elements = e[1:n1] #單元數存放在e [ ]的一維數組里

p.Set(elements=elements, name='Set-3')

對單元進行編組set,可以進行生死單元的控制,我摸索了好久才想到這個辦法,目前只在二維模型應用過,三維也應該沒問題。Abaqus沒有辦法對單元編號進行編號控制,也沒有像ansys那樣有效的選擇命令,怎樣選擇abaqus的單元就是很頭疼的問題,我要做路堤的分層回填模擬,手動選取單元根本就沒有可能。Abaqus的編號其實是有規則的,后劃分的單元編號最小,先劃分的單元編號最大;這樣我們就可以每次劃分單元后都采用len命令計算一次單元數量,并用參數記錄下來,這樣我們就能計算出每部分單元的數量以及他的起始和終止編號。根據elements = e[1:n1]、p.Set(elements=elements, name='Set-3')語句就可以把每部分單元設置成set,以后操作就很方便了。

#===========================================================

5. 一個Abaqus/Python例子

下面是一個Getting Started with Abaqus: Interactive Edition中的一個橡膠避震墊例子:?號后語句表示我的注釋,注釋上面的句子。我也不懂的就沒有注釋,先熟悉一下Python的樣子。在學習的時候可以copy(Crtol + V)到cae下面的命令行中一句句的執行,并在cae視窗中查看命令執行情況,領會命令使用方法。

# Script for rubber mount example

?“#”開頭表示這一行為注釋行,同ansys的“!”號

from abaqus import *

from abaqusConstants import *

?引入abaqus中的一些模塊,這些模塊是abaqus已事先存儲在文件中,要引入才這些模塊能運行相應的命令

session.viewports['Viewport: 1'].makeCurrent()

session.viewports['Viewport: 1'].maximize()

session.journalOptions.setValues(replayGeometry=COORDINATE,

recoverGeometry=COORDINATE)

?對cae視窗的操作命令;maximize()的括號好像是默認為當前值

from caeModules import *

from driverUtils import executeOnCaeStartup

executeOnCaeStartup()

Mdb()

#--------------------------------------------------------------------------------------------------

## Sketch profile of the mount

?進入草圖模塊

s = mdb.models['Model-1'].ConstrainedSketch(name='__profile__', sheetSize=0.3)

?建立一個sketch草圖,草圖的尺寸為0.3個單位;這個句子算是一個標準的Python語句,具體后面解釋

g, v, d, c = s.geometry, s.vertices, s.dimensions, s.constraints

s.sketchOptions.setValues(decimalPlaces=3, viewStyle=AXISYM)

s.setPrimaryObject(option=STANDALONE)

?設置草圖為軸對稱模式

s.ConstructionLine(point1=(0.0, -100.0), point2=(0.0, 100.0))

s.FixedConstraint(entity=g[2])

?建立輔助線及約束

mdb.models['Model-1'].sketches['__profile__'].sketchOptions.setValues(gridFrequency=4)

?sketch參數修改

s.rectangle(point1=(0.01, 0.0), point2=(0.025, 0.01))

?畫矩形

s.DistanceDimension(entity1=g[2], entity2=v[0],textPoint=(0.00998260825872421, -0.00830297358334064), value=0.01)

s.VerticalDimension(vertex1=v[0],vertex2=v[1],textPoint=(0.0,0.00851448811590672), value=0.03)

s.ObliqueDimension(vertex1=v[0],vertex2=v[3],textPoint=(0.025699570775032, -0.00830297358334064), value=0.05)

?標注圖形尺寸,還可以修改圖形尺寸,如拉伸、壓縮等

s.CircleByCenterPerimeter(center=(0.085,0.025),point1=(0.06, 0.00740899052470922))

?畫圓

s.CoincidentConstraint(entity1=v[5], entity2=g[5])

s.DistanceDimension(entity1=g[2], entity2=v[4],textPoint=(0.0811913833022118, -0.023865295574069), value=0.1)

s.VerticalDimension(vertex1=v[2], vertex2=v[4],textPoint=(0.115524396300316, 0.0262394621968269), value=0.0)

s.ObliqueDimension(vertex1=v[5], vertex2=v[3],textPoint=(0.0519323498010635, 0.0), value=0.005)

?修改圓尺寸、移動位置―――沒搞清楚修改尺寸命令有什么實際意義,直接定義好尺寸不就結了?

s.autoTrimCurve(curve1=g[7],point1=(0.124150268733501,-0.00965208746492863))

?裁剪命令,其中g[7]是圓的線編號,g=s.geometry

s.autoTrimCurve(curve1=g[5],point1=(0.0601795427501202,0.020298857241869))

s.autoTrimCurve(curve1=g[4],point1=(0.0557677671313286,0.030869778245687))

?裁剪命令

s.RadialDimension(curve=g[8],textPoint=(0.0725325122475624,0.0207393132150173),radius=0.047169905660283)

d[6].setValues(reference=ON)

?標注命令,標注界面很漂亮

session.viewports['Viewport: 1'].view.fitView()

?cae圖形縮放的合適大小

p = mdb.models['Model-1'].Part(name='Mount', dimensionality=AXISYMMETRIC, type=DEFORMABLE_BODY)

p = mdb.models['Model-1'].parts['Mount']

?命名model

p.BaseShell(sketch=s)

s.unsetPrimaryObject()

session.viewports['Viewport: 1'].setValues(displayedObject=p)

del mdb.models['Model-1'].sketches['__profile__']

?顯示model

#--------------------------------------------------------------------------------------------------

## Create material 'Rubber'

?創建材料模型

mdb.models['Model-1'].Material('Rubber')

mdb.models['Model-1'].materials['Rubber'].Hyperelastic(type=POLYNOMIAL, table=())

mdb.models['Model-1'].materials['Rubber'].hyperelastic.UniaxialTestData(table=(( 0.054E6, 0.0380), (0.152E6, 0.1338), (0.254E6, 0.2210), (0.362E6, 0.3450), (0.459E6, 0.4600), (0.583E6, 0.6242), (0.656E6, 0.8510), (0.730E6, 1.4268)))

mdb.models['Model-1'].materials['Rubber'].hyperelastic.BiaxialTestData(table=((0.089E6, 0.0200), (0.255E6, 0.1400), (0.503E6, 0.4200), (0.958E6, 1.4900), (1.703E6, 2.7500), (2.413E6, 3.4500)))

mdb.models['Model-1'].materials['Rubber'].hyperelastic.PlanarTestData(table=((0.055E6, 0.0690), (0.324E6, 0.2828), (0.758E6, 1.3862), (1.269E6, 3.0345), (1.779E6, 4.0621)))

##

## Create material 'Steel'

##

mdb.models['Model-1'].Material('Steel')

mdb.models['Model-1'].materials['Steel'].Elastic(table=((200.E9, 0.3), ))

##

## Create solid sections for the rubber and steel

##

mdb.models['Model-1'].HomogeneousSolidSection(name='RubberSection',

material='Rubber', thickness=1.0)

mdb.models['Model-1'].HomogeneousSolidSection(name='SteelSection',

material='Steel', thickness=1.0)

#-------------------------------------------------------------------

## Partition the part into two regions (rubber and steel regions)

?切割體形成兩個部分,從而可以賦予不同材料屬性

f, e, d = p.faces, p.edges, p.datums

t =p.MakeSketchTransform(sketchPlane=f.findAt(coordinates=(0.043333,

0.001667,0.0),normal=(0.0,0.0,1.0)),sketchPlaneSide=SIDE1,

origin=(0.033052,0.014514, 0.0))

s = mdb.models['Model-1'].ConstrainedSketch(name='__profile__',

sheetSize=0.134, gridSpacing=0.003, transform=t)

g, v, d1, c = s.geometry, s.vertices, s.dimensions, s.constraints

s.sketchOptions.setValues(decimalPlaces=3)

s.setPrimaryObject(option=SUPERIMPOSE)

p.projectReferencesOntoSketch(sketch=s, filter=COPLANAR_EDGES)

?進入草圖,并設置草圖屬性(圖紙大小、網格間距等)

s.Line(point1=(0.026948, -0.009514), point2=(-0.03, -0.009514))

s.HorizontalConstraint(entity=g.findAt((-0.001526, -0.009514)))

s.PerpendicularConstraint(entity1=g.findAt((0.026948, -0.012014)),

entity2=g.findAt((-0.001526, -0.009514)))

?作輔助線,findat(查找)命令很有用,可以用來選擇實體

pickedFaces = f.findAt(((0.043333, 0.001667, 0.0), ))

p.PartitionFaceBySketch(faces=pickedFaces, sketch=s)

?用輔助線分割體

s.unsetPrimaryObject()

?顯示分割后體

del mdb.models['Model-1'].sketches['__profile__']

#--------------------------------------------------------------------------------------------------

## Assign rubber section

?實體指定不同的材料屬性

p = mdb.models['Model-1'].parts['Mount']

f = p.faces

faces = f.findAt(((0.042303, 0.006937, 0.0), ))

region = regionToolset.Region(faces=faces)

p.SectionAssignment(region=region, sectionName='RubberSection', offset=0.0)

##

## Assign steel section

##

faces = f.findAt(((0.043333, 0.003333, 0.0), ))

region = regionToolset.Region(faces=faces)

p.SectionAssignment(region=region, sectionName='SteelSection', offset=0.0)

a = mdb.models['Model-1'].rootAssembly

session.viewports['Viewport: 1'].setValues(displayedObject=a)

##

## Set coordinate system (done by default)

##

a.DatumCsysByDefault(CARTESIAN)

##

## Instance the mount

##

p = mdb.models['Model-1'].parts['Mount']

a.Instance(name='Mount-1', part=p, dependent=ON)

##

## Create geometry set 'Middle'

##

e = a.instances['Mount-1'].edges

edges = e.findAt(((0.020708, 0.03, 0.0), ))

a.Set(edges=edges, name='Middle')

?通過findat命令定義了一個edges組“Middle”

## Create geometry set 'Out'

##

v = a.instances['Mount-1'].vertices

verts = v.findAt(((0.01, 0.0, 0.0), ))

a.Set(vertices=verts, name='Out')

?通過findat命令定義了一個vertices組“Out”

## Create surface 'Bottom'

##

s = a.instances['Mount-1'].edges

side1Edges = s.findAt(((0.0475, 0.0, 0.0), ))

a.Surface(side1Edges=side1Edges, name='Bottom')

?通過findat命令定義了一個edges組“Bottom”

#--------------------------------------------------------------------------------------------------

## Create a static general step

?進入step模塊

mdb.models['Model-1'].StaticStep(name='Compress mount', previous='Initial',

description='Apply axial pressure load to mount', timePeriod=1,

adiabatic=OFF, maxNumInc=100, stabilization=None,

timeIncrementationMethod=AUTOMATIC,

initialInc=0.01, minInc=1e-05, maxInc=1, matrixSolver=SOLVER_DEFAULT,

amplitude=RAMP, extrapolation=LINEAR, fullyPlastic="", nlgeom=ON)

?step中的一些設置,與cae操作框相對應

session.viewports['Viewport: 1'].assemblyDisplay.setValues(

step='Compress mount')

?cae中顯示step模塊 Compress mount

##

## Modify output requests

##

mdb.models['Model-1'].fieldOutputRequests['F-Output-1'].setValues(

variables=('S', 'PE', 'PEEQ', 'PEMAG', 'NE', 'LE', 'U', 'RF',

'CF', 'CSTRESS', 'CDISP'))

?對結果數據輸出的一些定義

regionDef=a.sets['Out']

mdb.models['Model-1'].HistoryOutputRequest(name='H-Output-1',

createStepName='Compress mount', variables=('U1', 'U2', 'U3'),

region=regionDef)

session.viewports['Viewport: 1'].assemblyDisplay.setValues(loads=ON, bcs=ON,

predefinedFields=ON)

#--------------------------------------------------------------------------------------------------

## Apply pressure load

?進入load模塊

region = a.surfaces['Bottom']

mdb.models['Model-1'].Pressure(name='Pressure',

createStepName='Compress mount', region=region, magnitude=500000.0)

?通過bottom的set對底邊進行加載

## Apply symmetry bc to set "Middle'

##

region = a.sets['Middle']

mdb.models['Model-1'].DisplacementBC(name='Symmetry',

createStepName='Compress mount', region=region, u2=0.0)

?對頂面進行約束

## Suppress visibility of datum geometry

##

session.viewports['Viewport: 1'].assemblyDisplay.geometryOptions.setValues(

geometryEdgesInShaded=OFF, datumPoints=OFF, datumAxes=OFF, datumPlanes=OFF,datumCoordSystems=OFF)

session.viewports['Viewport: 1'].assemblyDisplay.setValues(mesh=ON, loads=OFF,

bcs=OFF, predefinedFields=OFF)

session.viewports['Viewport: 1'].assemblyDisplay.meshOptions.setValues(

meshTechnique=ON)

p = mdb.models['Model-1'].parts['Mount']

session.viewports['Viewport: 1'].setValues(displayedObject=p)

?mesh模塊的一些顯示設置

#--------------------------------------------------------------------------------------------------

## Assign edge seeds

?進入mesh模塊

p = mdb.models['Model-1'].parts['Mount']

e = p.edges

pickedEdges = e.findAt(((0.0225, 0.005, 0.0), ), ((0.0475, 0.0, 0.0), ),

((0.020708, 0.03, 0.0), ))

p.seedEdgeByNumber(edges=pickedEdges, number=30)

pickedEdges = e.findAt(((0.053289, 0.023434, 0.0), ), ((0.01, 0.01125, 0.0), ))

p.seedEdgeByNumber(edges=pickedEdges, number=14)

pickedEdges = e.findAt(((0.01, 0.00125, 0.0), ), ((0.06, 0.00375, 0.0), ))

p.seedEdgeByNumber(edges=pickedEdges, number=1)

?選擇邊,設置種子數

## Use structured meshing

##

f = p.faces

pickedRegions = f

p.setMeshControls(regions=pickedRegions, technique=STRUCTURED)

? STRUCTURED劃分網格

## Assign element type to the rubber

##

elemType1 = mesh.ElemType(elemCode=CAX4H, elemLibrary=STANDARD)

elemType2 = mesh.ElemType(elemCode=CAX3, elemLibrary=STANDARD)

faces = f.findAt(((0.042303, 0.006937, 0.0), ))

pickedRegions =(faces, )

p.setElementType(regions=pickedRegions, elemTypes=(elemType1, elemType2))

## Assign element type to the steel

##

elemType1 = mesh.ElemType(elemCode=CAX4I, elemLibrary=STANDARD)

elemType2 = mesh.ElemType(elemCode=CAX3, elemLibrary=STANDARD)

faces = f.findAt(((0.043333, 0.003333, 0.0), ))

pickedRegions =(faces, )

p.setElementType(regions=pickedRegions, elemTypes=(elemType1, elemType2))

? 單元類型設置及不同材料面指定

## Generate mesh

##

p.generateMesh()

? 劃分當前網格

session.viewports['Viewport: 1'].assemblyDisplay.setValues(mesh=OFF)

session.viewports['Viewport: 1'].assemblyDisplay.meshOptions.setValues(

meshTechnique=OFF)

#--------------------------------------------------------------------------------------------------

## Create job

? 創建job設置

mdb.Job(name='Mount', model='Model-1',

description='Axisymmetric mount analysis under axial loading',

modelPrint=ON)

a = mdb.models['Model-1'].rootAssembly

a.regenerate()

##

## Save model database

##

mdb.saveAs('Mount')

#--------------------------------------------------------------------------------------------------

小結:

1.Abaqus的python看似繁瑣,但有著其固定、嚴謹的結構并不難理解

2.pthon的順序與cae的模塊操作順序基本一致

3.這個例子的python腳本基本與cae自動生成的python腳本基本相同,完全可以通過交互式修改cae生成的python.rpy文件來建立自己的python腳本,免去了許多學習abaqus python命令格式的痛苦。

總結

以上是生活随笔為你收集整理的abaqus对应python版本_Abaqus里应用Python的一些技巧的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲伦理精品 | 九九热这里有精品视频 | 日操干 | 中国女人一级一次看片 | 在线免费看黄网站 | 黄色特级大片 | 首尔之春在线观看 | 伊人网av在线 | 欧美人吸奶水吃奶水 | 风流少妇按摩来高潮 | 禁片天堂| 黄色一级片在线播放 | 噼里啪啦国语版在线观看 | 看毛片视频 | 精品视频一区二区 | 国产精品一区在线观看你懂的 | 天堂аⅴ在线最新版在线 | 久久亚洲AV无码 | 国产自产自拍 | xxxx视频在线观看 | 噼里啪啦动漫高清在线观看 | 亚洲超碰av | 91在线高清 | 亚洲一级在线 | 女生毛片 | 影音先锋中文字幕资源 | 看片在线观看 | 国产日本欧美在线观看 | 狠狠婷婷| 51国产偷自视频区视频 | 女厕厕露p撒尿八个少妇 | 欧美壮男野外gaytube | 国产性―交―乱―色―情人 | aaa黄色片 | 国产午夜精品一区二区理论影院 | 激情毛片视频 | 久久一二三四区 | 久久视精品 | 国产人澡人澡澡澡人碰视频 | 99在线视频精品 | 毛片av在线播放 | 国产精品福利片 | 国产婷婷色一区二区三区 | 国产精品911 | 男女无遮挡免费视频 | 欧美淫 | 欢乐谷在线观看免费播放高清 | 色就色综合| 加勒比精品在线 | 嫩草嫩草嫩草嫩草嫩草 | 国产精品成人在线 | 精品国产自在精品国产精小说 | 欧美日韩精品一区二区三区 | 日韩精品一区在线播放 | 老头巨大又粗又长xxxxx | 日本免费在线观看 | 日噜 | 亚洲热av| 亚洲精品乱码久久久久久麻豆不卡 | www.白浆 | 国产一区二区在线精品 | 成年人在线观看视频 | 免费视频毛片 | 久久精品无码人妻 | 美女隐私黄www网站动漫 | 四虎影酷 | 亚洲精品影院 | 美女被男人桶出白浆喷水 | 国产一区亚洲一区 | 麻豆影视国产在线观看 | 国产chinesehd精品| 国产精品免费无遮挡无码永久视频 | 精品国产乱码久久久久久郑州公司 | 亚洲一区欧美一区 | 97爱爱视频 | 男人的天堂av女优 | 色哟哟一区二区三区四区 | 黄页网站免费在线观看 | 成人免费网站视频 | 天天干夜夜想 | 日日日日日日bbbbbb | 国产精品99久久久久久大便 | 中国videosex高潮hd | 苍井空亚洲精品aa片在线播放 | 精品人伦一区二区三区蜜桃免费 | 水多多在线 | 亚洲色在线视频 | 国产午夜视频在线播放 | 奇米一区| 久久精品动漫 | 精品二三区 | 男女污污视频在线观看 | 欧美亚洲国产精品 | 国产免费二区 | 毛片免 | 天堂视频在线免费观看 | 一色屋免费视频 | 操女人的逼逼 | 图片区 小说区 区 亚洲五月 |