abaqus對參數化長方體進行自動仿真,外表面壓力載荷100000Pa,用python編寫代碼,實現修改幾何參數后,自動劃分六面體網格,自動加載壓力載荷;
(資料圖片僅供參考)
1. 在創建網格前,添加一個命令將單元類型設置為六面體單元。
2. 在創建壓力荷載時,需要修改 region 參數為一個包含單元的集合,而不是面的集合。
代碼如下:
```python
from abaqus import *
from abaqusConstants import *
from caeModules import *
from driverUtils import executeOnCaeStartup
# 執行CAE界面
executeOnCaeStartup()
# 新建模型和草圖
modelName = 'ParametricBox'
mdb.Model(name=modelName)
sketchName = modelName + '_Sketch'
mdb.models[modelName].ConstrainedSketch(name=sketchName, sheetSize=10.0)
# 定義幾何參數
width = 2.5
height = 4.0
length = 5.0
# 繪制草圖
sketch = mdb.models[modelName].sketches[sketchName]
sketch.rectangle(point1=(0.0, 0.0), point2=(width, height))
sketch.verticalLine(point=(0.0, 0.0), length=length)
# 創建特征
partName = modelName + '_Part'
extrudeName = modelName + '_Extrude'
part = mdb.models[modelName].Part(name=partName, dimensionality=THREE_D)
part.BaseSolidExtrude(sketch=sketch, depth=length)
part.SectionAssignment(region=part.faces.findAt((width/2.0, height/2.0, length)),
sectionName='Abaqus_Default')
# 創建網格和材料
meshName = partName + '_Mesh'
part.setElementType(elemTypes=(ElemType(elemCode=C3D8),),
regions=(part.cells,))
part.seedPart(size=0.1)
part.generateMesh()
materialName = 'Steel'
mdb.models[modelName].Material(name=materialName)
mdb.models[modelName].materials[materialName].Elastic(table=((200.0E9, 0.3),))
# 創建裝配和分析步
assemblyName = modelName + '_Assembly'
mdb.models[modelName].rootAssembly.DatumCsysByDefault(CARTESIAN)
mdb.models[modelName].rootAssembly.Instance(name=partName + '_Instance',
part=part)
mdb.models[modelName].rootAssembly.Instance(name='Pressure_Instance',
part=mdb.models['Parts'].findAt((width/2.0, height/2.0, length),))
stepName = modelName + '_Step'
mdb.models[modelName].StaticStep(name=stepName, previous='Initial',
timePeriod=1.0, maxNumInc=1000)
# 定義壓力荷載
pressureName = modelName + '_Pressure'
pressureRegion = part.cells.findAt((width/2.0, height/2.0, length),)
mdb.models[modelName].Pressure(name=pressureName, createStepName=stepName,
region=pressureRegion,
distributionType=UNIFORM, magnitude=100000.0)
# 提交作業
mdb.Job(name=modelName, model=modelName)
mdb.jobs[modelName].submit()
mdb.jobs[modelName].waitForCompletion()
# 修改幾何參數并重新建模分析
for i in range(5):
width += 0.5
length += 0.5
sketch = mdb.models[modelName].sketches[sketchName]
sketch.rectangle(point1=(0.0, 0.0), point2=(width, height))
sketch.verticalLine(point=(0.0, 0.0), length=length)
mdl = mdb.models[modelName]
extrude = mdl.features[extrudeName]
mdl.ConstrainedSketch(name='__profile__', objectToCopy=sketch)
mdl.features.changeKey(fromName='__profile__', toName=sketchName)
extrude.setValues(sketch=sketch)
mdl.parts[partName].setElementType(elemTypes=(ElemType(elemCode=C3D8),),
regions=(mdl.parts[partName].cells,))
mdl.parts[partName].seedPart(size=0.1)
mdl.parts[partName].generateMesh()
mdb.jobs[modelName].rerun()
mdb.jobs[modelName].waitForCompletion()
```
鏈接:https://pan.baidu.com/s/1Qkrls0vtssNueYKsolvXrg?
提取碼:t0gw?
--來自百度網盤超級會員V6的分享