본문 바로가기
Program/ABAQUS

ABAQUS Subroutine이란?

by 시레엔 2017. 4. 10.
반응형
안녕하세요.

이번에 소개할 부분은 ABAQUS Subroutine에 관련되어서 설명을 드릴려고 합니다. 실제로 Subroutine이라는 것은 함수라고 생각하시면 될 것 같습니다. 이것은 ABAQUS에서 사용되는 용어가 아니라 FORTRAN에서 사용되는 함수를 말합니다. 그래서 용어 자체도 Subroutine이라고 말합니다. 또한, 이것이 ABAQUS에서 사용될때 사용자가 Customization한다는 의미이며, 특별한 해석에 대해서 적용할 때 사용합니다. 이것은ABAQUS의 상용 코드를 사용해서 하는 부분이 아니기 때문에 크게는 Element의 계산 방법까지 관여를 할 수 있습니다.


ABAQUS Subroutine으로 관여할 수 있는 Subroutine에 대해서 먼저 설명을 드리겠습니다.

ABAQUS SubroutineABAQUS/STANDARD에서는 일반적인 고유의 이름으로 붙이고, ABAQUS/EXPLICITSubroutine은 앞에 V라는 영어가 붙습니다. 이유는 모르겠지만, 크게는 영어가 붙고 안붙고의 기준으로 분류를 할 수 있습니다. 또한, ABAQUS/STANDARD에서는 DLOAD, FILM, FRIC, HETVAL, UEL, UEXPAN, UEXTERNALDB, UGENS, UMAT, USDFLD, UWAVE 등이 있습니다. 또한, 아래에서 이 부분에 대한 간단한 설명을 하겠습니다.


ABAQUS/STANDARD Subroutine


 DLOAD

DLOAD Subroutine은 분포하중에서 Nonuniform하게 적용될때, 사용하는 함수입니다. 또한, 이것의 대표적인 적용 예로 압력과 Body Force와 같은 부분에 적용될 때 사용됩니다.


 FILM

이 부분은 대류에 관한 ABAQUS Subroutine에 대한 것입니다. 이것은 복합하게 변화하는 대류 계수와 Sink Temperature에 대해서 변화하는 부분을 Fortran Code로 정의를 해줄 수 있습니다.


 FRIC

이제는 단어만 봐도 어느정도 추측할 수 있을 것이라고 생각됩니다. 이 부분은 마찰계수에 대해서 관여하는 Subroutine입니다.


 HETVAL

이 부분은 내부 열에 대해서 관여하는 부분입니다. ABAQUS /CAE에서도 자체적으로 설정을 할 수가 없는 부분이며, 사용하기 위해서는 Subroutine을 무조건 적용시켜야 하는 부분입니다.


 UEL

위에서도 언급한 ELEMENT의 계산에 관여하는 Subroutine입니다. 이것에는 Weight Function이나 Shape Function에 대한 정보도 같이 도입이 되며, 이에 따라 Element의 Stress 계산이 어떻게 되는지에 대해서 관여를 할 수 있습니다. 그래서 다른 Subroutine보다는 더 많이 주의를 기울여야 하는 것입니다.


 UEXPAN

이 부분은 열 팽창 계수에 대해서 ABAQUS에 새로운 함수로 적용할 수 있는 부분입니다. UEXPAN은 용접과 같은 상변화 코드에 사용에 대해서 도움을 줄 수 있는 것들 중에 하나입니다.


 UGENS

이것은 Shell Element의 Stiffness에 관여할 수 있는 부분으로 복잡한 거동인 비선형 거동에 있어서 UGENS을 많이 사용합니다. 또한, 추가적인 파단기준에 따라서 Element Deletion 부분도 보통 많이 적용합니다.


 UMAT

위에서 언급한 UGENS와 달리 SOLID요소에 대한 부분에 적용할 수 있습니다.


 USDFLD

user defined field에 관여하는 Subroutine으로 getvrm이라는 자체적 함수를 가지고 있습니다. 그래서 다른 subroutine에 비해서 변수를 불러오는게 더 쉽다고 느껴질 것이라고 생각합니다. 보통 이것을 통해서 의공학 분야에서는 밀도의 변화에 따라서 해석하는 것을 주로 하고 있으며, 그 외에도 파단기준을 설정하는 부분도 편하게 할 수 있습니다.


위에 언급한 Subroutine 외에도 더 많은 함수들이 존재합니다.
이런 것들은 ABAQUS Documentation를 통해서 더 잘 알 수 있다고 생각합니다. 마지막으로 Subroutine을 Command로 구동하는 방법에 대해서 설명을 드리겠습니다.

abaqus job=(input file name) int cpus=(number of cpu) user=(subroutine file name.for)

위에서와 같이 붉은 부분은 서브루틴을 적용을 안했을때 기본적으로 사용하는 COMMAND LINE입니다. 하지만, 서브루틴을 적용하게 되면, 파란색 글씨 부분을 더 추가해줘야하는 것을 알 수 있고, 여기서는 꼭 확장자명을 써줘야합니다.


반응형

댓글