본문 바로가기
Program/ABAQUS

ABAQUS를 위한 PYTHON 예제 01 (PYTHON 구성)

by 시레엔 2017. 3. 31.
반응형

안녕하세요

오늘은 ABAQUS를 위한 PYTHON 예제에 대해서 설명을 드릴려고 합니다.

일반적으로 PYTHON의 법칙에 대한 정보를 몰라도 ABAQUS의 PYTHON이라고 따로 인식하시면 될 것 같습니다.

일반적으로 Python 파일을 Kernal Command Line Interface의 창에 넣어주면 Python code의 설정에 맞게 적용이 되어집니다.

또한, CAE로 모델을 구성하고 진행하는 모든 과정이 Temp 폴더의 rpy파일로 쓰여지기 때문에, CAE로 먼저 모델 구성을 한 뒤에 rpy파일을 확인하면 아래와 같은 형식으로 나와있습니다.


1. Sketch 및 Part 형상을 구성하는 단계입니다.


import sketch

import part

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

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

s.setPrimaryObject(option=STANDALONE)

s.rectangle(point1=(0.0, 0.0), point2=(L, H))

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

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

p.BaseSolidExtrude(sketch=s, depth=W)

s.unsetPrimaryObject()

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


2. Material을 구성하는 단계입니다.

import material

mdb.models['Model-1'].Material(name='material')

mdb.models['Model-1'].materials['material'].Density(table=((bar_material_density, ), ))

mdb.models['Model-1'].materials['material'].Elastic(table=((bar_material_youngs, bar_material_poissons), ))


3. Section을 구성하는 단계입니다.


import section

mdb.models['Model-1'].HomogeneousSolidSection(name='Section-1', material='material', thickness=None)

c = p.cells

region = regionToolset.Region(cells=c)

p.SectionAssignment(region=region, sectionName='Section-1',

offset=0.0,     offsetType=MIDDLE_SURFACE, offsetField='',thicknessAssignment=FROM_SECTION)


4. Assembly 과정입니다.

import assembly

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

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

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


5. Step을 구성하는 단계입니다.


import step

mdb.models['Model-1'].StaticStep(name='Step-1', previous='Initial',     initialInc=0.1)

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

f1 = a.instances['Part-1-1'].faces

faces1 = f1.getByBoundingBox(-1, -1, -1, 1, H+1, W+1)

region = regionToolset.Region(faces=faces1)

mdb.models['Model-1'].EncastreBC(name='BC-1', createStepName='Initial',     region=region)

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

v1 = a.instances['Part-1-1'].vertices

verts1 = v1. getByBoundingBox(L-1, H-1, -1, L+1, H+1, W+1)

region = regionToolset.Region(vertices=verts1)

mdb.models['Model-1'].ConcentratedForce(name='Load-1', createStepName='Step-1',     region=region, cf2=-F, 

      distributionType=UNIFORM, field='',     localCsys=None)


6. Mesh를 적용하는 부분입니다.


import mesh

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

p.seedPart(size=W/4, deviationFactor=0.1)

p.generateMesh()


7. Job을 설정하고 제출하는 단계입니다.


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

type=ANALYSIS, atTime=None, waitMinutes=0, waitHours=0, queue=None, 

memory=90, memoryUnits=PERCENTAGE, getMemoryFromAnalysis=True, 

explicitPrecision=SINGLE, nodalOutputPrecision=SINGLE, echoPrint=OFF, 

modelPrint=OFF, contactPrint=OFF, historyPrint=OFF, userSubroutine='', 

scratch='', multiprocessingMode=DEFAULT, numCpus=4, numDomains=4, 

numGPUs=0)

mdb.jobs[job_name].submit(consistencyChecking=OFF)

mdb.jobs[job_name].waitForCompletion()    


8. ODB를 불러오고 변형 모델을 볼 수 있는 부분입니다.


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

o1 = session.openOdb(name='C:/Temp/'+job_name+'.odb')

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

session.viewports['Viewport: 1'].odbDisplay.display.setValues(plotState=(

CONTOURS_ON_DEF, ))

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



위와 같이 Python에 대한 코드 구성이 되어 있지만, 중간 중간에 다른 변수들이 도입이 되어 있는 것을 볼 수 있습니다.

일단 오늘은 예제만 올려두고 내일 설명에 대해서 올리겠습니다. 또한, 참고하실 사항은 위의 코드를 복사해도 변수 설정을 해놓은 부분이 있어서 따로 수정을 하지 않으면, 도입을 할 수 없을 것입니다. 내일 설명 포스팅을 보시면서 따로 코드는 만들어 보셔야할 것 같습니다.

이상으로 Python 포스팅을 마치겠습니다.

반응형

댓글