Abaqus二次开发:杆件静力学分析自动化

代码如下:

from abaqus import *
from abaqusConstants import *
import regionToolset
import sketch
import part
import material
import section
import assembly
import step
import mesh
import visualization

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

#Create model
model = mdb.models['Model-1']

#create sketch
mSketch = model.ConstrainedSketch(name = 'Model_Sketch', sheetSize = 5)
mSketch.rectangle(point1= (0.1,0.1), point2=(0.3,-0.1))

#create solid part from sketch
mPart = model.Part(name = 'Solid_Part' , type = DEFORMABLE_BODY, dimensionality = THREE_D)
mPart.BaseSolidExtrude(sketch =mSketch , depth = 5)

#create material
mMat = model.Material(name = 'steel')
mMat.Density(table = ((7872,),))
mMat.Elastic(table = ((200e9,0.29),))

#create and assign section
mSection = model.HomogeneousSolidSection(name='Model_Section' , material = 'steel')
mRegion = (mPart.cells,)
mPart.SectionAssignment(region = mRegion, sectionName = 'Model_Section')

#create instance
mInstance = model.rootAssembly.Instance(name='Model_Instance', part = mPart, dependent =ON)

#create load step
model.StaticStep(name='Static_Load', previous = 'Initial')


#fieldOutputvariables
model.fieldOutputRequests.changeKey(fromName = 'F-Output-1', toName = 'Field Outputs')
model.fieldOutputRequests['Field Outputs'].setValues(variables=('S','E','PEMAG','U','RF','CF'))

#apply pressure
topPt = (0.2,0.1,2.5)
topFace = mInstance.faces.findAt((topPt,))
topFaceRegion = regionToolset.Region(side1Faces = topFace)
model.Pressure(name = 'Model_Load', region = topFaceRegion, createStepName = 'Static_Load',
	distributionType = UNIFORM, magnitude =10, amplitude=UNSET)

#bc
sidePt = (0.2,0,0)
sideFace = mInstance.faces.findAt((sidePt,))
sideFaceRegion = regionToolset.Region(faces = sideFace)
model.EncastreBC(name = 'Encastre' , region= sideFaceRegion, createStepName='Initial')

#generate mesh
elemType = mesh.ElemType(elemCode = C3D8R, elemLibrary = STANDARD, kinematicSplit = AVERAGE_STRAIN,
	secondOrderAccuracy = OFF, hourglassControl = DEFAULT, distortionControl = DEFAULT )
inPt = (0.2,0,2.5)
mCells = mPart.cells.findAt((inPt,))
meshRegion = (mCells,)
#assign
mPart.setElementType(regions = meshRegion, elemTypes= (elemType,))
mPart.seedPart(size=0.2, deviationFactor = 0.1)
mPart.generateMesh()

mdb.Job(name='cantileverJob', model = 'Model-1', type = ANALYSIS, explicitPrecision = SINGLE,
	nodalOutputPrecision = SINGLE, parallelizationMethodExplicit =DOMAIN, multiprocessingMode = DEFAULT,
	numDomains = 1, userSubroutine = '', numCpus =1, memory = 50, memoryUnits = PERCENTAGE, scratch='',
	echoPrint = OFF, modelPrint = OFF, contactPrint=OFF, historyPrint = OFF)

mdb.jobs['cantileverJob'].submit(consistencyChecking=OFF)
mdb.jobs['cantileverJob'].waitForCompletion()

beam_viewport = session.Viewport(name = 'Beam results viewport')
beam_Odb_Path= 'cantileverJob.odb'
an_odb_object = session.openOdb(name= beam_Odb_Path)
beam_viewport.setValues(displayedObject = an_odb_object)
beam_viewport.odbDisplay.display.setValues(plotState=(DEFORMED,))

重要代码讲解:

基于坐标点位置获取面id,并施加压力载荷

#apply pressure
topPt = (0.2,0.1,2.5) #面上坐标点
topFace = mInstance.faces.findAt((topPt,))
#获取面id
topFaceRegion = regionToolset.Region(side1Faces = topFace)
model.Pressure(name = 'Model_Load', region = topFaceRegion, createStepName = 'Static_Load',
	distributionType = UNIFORM, magnitude =10, amplitude=UNSET)

边界约束:

#输入点坐标
sidePt = (0.2,0,0)
#获取面对象id
sideFace = mInstance.faces.findAt((sidePt,))
sideFaceRegion = regionToolset.Region(faces = sideFace)
#约束
model.EncastreBC(name = 'Encastre' , region= sideFaceRegion, createStepName='Initial')

生成网格:基于坐标点获取区域位置

#坐标点位置
inPt = (0.2,0,2.5)
mCells = mPart.cells.findAt((inPt,))
#获取区域id
meshRegion = (mCells,)
#对区域划分网格
mPart.setElementType(regions = meshRegion, elemTypes= (elemType,))
mPart.seedPart(size=0.2, deviationFactor = 0.1)
mPart.generateMesh()

运行脚本

结果:

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空