*. 이하의 글은 Artic Region Supercomputing Center에 있는 글을 번역+내용추가 한 것입니다.
*. 슈퍼컴퓨터 사용자를 위한 간단한 설명서 같지만 아바쿠스를 처음 접할 때 유용하리라고 생각하여
개인적인 공부 및 정보전달을 위해 블로깅합니다.
*. 원문링크 - http://www.arsc.edu/support/howtos/usingabaqus.html
아바쿠스 기본 사용법
내용
- 소개
- INP 파일의 구조
- 환경설정파일 abaqus.env
- 환경설정 예시
- 아바쿠스 JOG 실행하기
- INP 파일의 예시
- 기하모델
- 파일내의 노드와 엘리먼트
- 추가정보
소개
아바쿠스는 매우 뛰어난 유한요소해석프로그램이다. 공학의 많은 분야에서 이용되어왔으며 static, dynamic 해석을 수행한다.
현재 아바쿠스는 설계툴인 Catia의 제작사 Dassault Company에 인수되어 Simulia라는 이름으로 바뀌었다.
- 해석 모듈
- 전처리 모듈
- 후처리 모듈
- 유용한도구들
위의 세개의 프로그램에 대해서는 아바쿠스 제품군 을 참조하면 좋을 것이다.
추가적으로 유용한 도구들이 아래에 리스팅 되어 있다. 아바쿠스 실행명령어와 함께 실행되는 것들이다.
주. 아바쿠스를 슈퍼컴퓨터에서 솔버로만 돌릴경우는 아래와 같은 배치프로그램들이 필요하다.
클릭하면 ARSC로 넘어가면 슈퍼컴퓨터 관리자가 아니라면 넘어가도 좋을 듯한 부분이다.
- ABAQUS abares - 리스타트 파일을 다른 컴퓨터에서 돌릴 수 있도록 변환한다.
- ABAQUS append - 분리된 파일을 하나로 합친다.
- ABAQUS ascfil - 결과 파일을 ASCII와 바이너리 형식으로 상호 변환한다. 여러 컴퓨터에서 데이터를 이동할 때 편하다.
- ABAQUS fetch - 예제 파일들을 추출한다. (아바쿠스 예제는 파일개수와 용량이 커서 압축파일로 되어 있음)
- ABAQUS make - 후처리 과정에서 사용자정의의 컴파일을 한다.
- ABAQUS plot - 여러 장비용으로 아바쿠스 플롯을 생성한다.
아바쿠스는 포트란으로 작성되었고 배치 프로그램으로 실행된다.
아바쿠스의 Input 파일은 ASCII 형식이며 아바쿠스 입력규칙과 공학적인 기초지식에 의해 작성하거나 수정할 수 있다.
Input 파일
아바쿠스 Input 파일은 ASCII 포맷이며 inp 확장자를 가진다.
이 파일을 통해 사용자와 아바쿠스는 서로 정보를 교환하는 것이며 제일 먼저 생성해야되는 파일이다.
일반적인 유한요소해석을 위해서 아바쿠스는 여러개의 내장 라이브러리를 가지고 있다.
4개의 주요 라이브러리는 아래와 같다.
- 엘리먼트 라이브러리
- 물성치 라이브러리
- 하중 라이브러리
- 진행 라이브러리
각 라이브러리는 많은 키워드, 파라미터들을 가지고 있다.
이 키워드와 파라미터는 아바쿠스와 사용자 양쪽이 읽을 수 있는 것이다.
대부분의 컴퓨터 언어와 비교해 볼 때 아바쿠스의 구조는 매우 단순하다.
요점은 정확한 키워드와 파라미터를 선택하여 모델을 정의하고 해석 진행을 결정하는 것이다.
Input 라인에는 2가지가 있는데 키워드 라인과 데이터 라인이다.
아래의 그림은 아바쿠스 입력값을 분석해 놓은 것이다. (왼쪽이 코드 오른쪽이 설명이다.)
Figure 1
Figure 1에서 보는 바와 같이 Input 파일은 2개의 부분으로 구성되어 있다.
Model Input 과 History Input 인데 대부분 History는 여러개의 Step으로 구성되는 경우가 많으므로
*step 으로 시작하여 *end step으로 끝나는 Step을 1개 이상 포함한다.
Job의 복잡성은 Input 라인의 총갯수로 결정하는데 대부분의 구조와 정의가 꼭 필요한 것들로 구성된다면
Input 파일은 대부분 동일한 복잡도를 가진다.
abaqus.env 파일
abaqus.env 파일은 각기 다른 Job을 실행하면서 미세한 환경설정을 조정하는 파일이다.
사용자가 아바쿠스에서 특정 Job을 실행할 경우 특정한 변수를 조절할 필요가 있을 때 사용하면 된다.
사용자가 변경할 수 있는 변수는 아래와 같다.
- Job의 속도를 향상시키기 위한 메모리 조절
- Scratch파일의 기록 위치와 방법
- 작업을 쉽게 하기 위한 파라미터 조절
그 외에도 많은 작업들을 조절 할 수 있다.
Job이 실행되면 아바쿠스는 첫번째로 환경파일을 아래의 순서대로 검색한다.
- 아바쿠스 디렉토리에 abaqus.env 가 있어야 한다.
- 유저 계정 디텔토리 밑에 있는 abaqus.env
- 작업디렉토리 (working directory) 밑에 있는 abaqus.env
만약 하나의 파일내에서 환경변수가 1번 이상 정의된다면 마지막에 정의된 변수가 사용될 것이다.
예외는 start_cmd 와 end_cmd 이다.
아래의 명령어 라인으로 환경파일의 파라미터에 의해 생기는 문제점을 진달한 수 있다:
abaqus info=environment
환경변수 파일의 예제
queue_name="aba_short hold"
after_prefix="-a"
queue_prefix="-q"
aba_short="qsub -me -q batch -lM 64mw -lT 10000 %A %T -eo -o %L %S"
hold="echo Job %S not submitted"
post_geometry="800x500+12+34"
post_buffer="12000000"
post_memory="12000000"
cpus=1
아바쿠스 환경변수에 대해서 자세히 알고 싶다면 ABAQUS/POST 매뉴얼내의 "Using the ABAQUSenvironment file"을 참조한다.
아바쿠스 Job 실행하기
Figure 1에 있는 파일은 단순한 예제이며 파일명이 beam.inp 이라고 할 때 아래와 같이 실행할 수 있다:
abaqus job=beam
또는
abaqus
이경우 Identifier 프롬프트가 뜨는데 여기에 파일명을 입력한다. 확장자는 생략 가능하다.
이 작업을 예전에 돌렸었다면 Old jobfiles exist. Overwrite? (y/n) 라는 질문이 뜨고 각자 대답하면 된다.
Example Input File, beam.inp
*heading
cantilever beam
*node, nset=ends
1, 0.
6, 100.
*ngen
1, 6
*element, type=b21
1, 1, 2
*elgen, elset=beam
1, 5
*beam section,
section=rectangular,
elset=beam, material=steel
1., 2.
*material, name=steel
*elastic
30.e6
*boundary
6, encastre
*step, perturbation
*static
*cload
1, 2, -20000.
*el print, position=averaged at nodes,
summary=yes
s11, e11
sf
*node file, nset=ends
u, cf, rf
*restart, write
*end step
Job을 실행하면 여러가지 파일이 생성된다. 기본적으로 생성되는 파일중 중요한 파일은 아래와 같다.
- .log: 로그파일 - Job 실행정보를 요약한다.
- .dat: 아웃풋파일 - Input 파일의 정보및 해석에러 정보를 기록한다.
- .msg: 메세지 파일 - 히스토리 아웃풋에 관한 정보를 기록한다.
이 세개의 파일이 중요한 이유는 Input 파일의 오류를 수정할 수 있도록 해주기 때문이다.
기하모델은 노드와 노드셋정의를 포함하고 있어야 하며 엘리먼트와 엘리먼트 셋역시 정의되어야 한다.
(Figure 1을 참조)
일반적으로 사용되는 키워드는 아래와 같다:
- 노드 생성 및 노드 셋 정의:
*node, *ngen, *nfill, *nset, *ncopy, *nmap
- 엘리먼트 생성및 엘리먼트 셋 정의:
*element, *elgen, *elset, *elcopy
Figure 2, 3은 Input 파일에서 위의 키워드가 어떻게 사용되는지 보여준다.
Figure 2
Figure 3
Figure 2에 있는 모델은 Figure 3처럼 노드와 엘리먼트 번호를 지정할 수 있고 이것을 코딩하면 아래와 같다.
형상예시 파일
*HEADING
An example of 2-D geometry model
*NODE
35,0.,0.,0.
37,1.0,0.,0.
38,1.5,0.,0.
40,3.5,0.,0.
435,0.,2.0,0.
437,1.0,2.0,0.
438,1.5,2.0,0.
440,3.5,2.0,0.
635,0.,4.0,0.
637,1.0,4.0,0.
638,1.5,4.0,0.
640,3.5,4.0,0.
*NGEN,NSET=X11
35,37
*NGEN,NSET=X12
38,40
*NGEN,NSET=X13
435,437
*NGEN,NSET=X14
438,440
*NGEN,NSET=X15
635,637
*NGEN,NSET=X16
638,640
*NFILL,NSET=BLOCK1
X11,X13,4,100
*NFILL,NSET=BLOCK2
X12,X14,2,200
*NFILL,NSET=BLOCK3
X13,X15,2,100
*NFILL,NSET=BLOCK4
X14,X16,2,100
*NGEN,NSET=RIGHT
40,240,200
440,640,100
*NSET,NSET=TOP
X15,X16
*NSET,NSET=NALL
BLOCK1,BLOCK2,BLOCK3,BLOCK4
*ELEMENT,TYPE=DC2D4
35,35,36,136,135
*ELGEN,ELSET=EBLOCK1
35,2,1,1,4,100,100
*ELEMENT,TYPE=DC2D4
38,38,39,239,238
*ELGEN,ELSET=EBLOCK2
38,2,1,1,2,200,200
*ELEMENT,TYPE=DC2D4
435,435,436,536,535
*ELGEN,ELSET=EBLOCK3
435,3,1,1,2,100,100
*ELEMENT,TYPE=DC2D4
438,438,439,539,538
*ELGEN,ELSET=EBLOCK4
438,2,1,1,2,100,100
*ELEMENT,TYPE=DC2D3
37,37,38,137
*ELGEN,ELSET=EBLOCK5
37,1,1,1,2,200,200
*ELEMENT,TYPE=DC2D3
137,137,238,237
*ELGEN,ELSET=EBLOCK6
137,1,1,1,2,200,200
*ELEMENT,TYPE=DC2D3
138,137,38,238
*ELGEN,ELSET=EBLOCK7
138,1,1,1,2,200,200
*ELSET,ELSET=ALLBLOCK
EBLOCK1,EBLOCK2,EBLOCK3
EBLOCK4,EBLOCK5,EBLOCK6,EBLOCK7
*SOLID SECTION,ELSET=ALLBLOCK,MATERIAL=SILT
*MATERIAL,NAME=SILT
*CONDUCTIVITY
1.2,-40.
1.2,31.2
.9,32.
.9,80.
*DENSITY
105.
*SPECIFIC HEAT
.27,-40.
.27,31.2
.37,32.
.37,80.
*LATENT HEAT
28.8,31.2,32.
*INITIAL CONDITIONS,TYPE=TEMPERATURE
NALL,24.8
*RESTART,WRITE
*STEP,INC=100
TEMPERATURE ANALYSIS
*HEAT TRANSFER
1.,50.
*BOUNDARY
35,11, ,37.8
36,11, ,37.8
37,11, ,37.8
235,11, ,37.4
135,11, ,37.4
TOP,11, ,24.8
RIGHT,11, ,24.8
*PRINT,FREQUENCE=1
*NODE PRINT,FREQUENCE=1
NT
*NODE FILE,FREQUENCE=1
NT
*CONTOUR
TEMP
*END STEP
위의 코드는 열전달 해석을 위한 inp 파일 예제이다. 결과는 아래와 같이 나온다..
그림 4 : 아바쿠스에서의 2D 모델
텍스트 파일을 참조하여 노드와 엘리먼트 생성하기
복잡한 유한요소해석에서는 메쉬영역이 수천개의 엘리먼트와 노드를 포함하고 있다.
이런 경우 잠재적인 복잡성을 가지고 있으므로 때문에 정리를 하는 것이 좋다.
*ncopy 와 *elcopy 를 이용하면 쉽게 해결이 가능하다.
아래의 예제에서는 TEXT 파일에 노드정보를 넣어놓고
*ncopy로 노드들을 각 거리별로 복사한 후
*elcopy로 최종 형상을 모델링하는 예시를 보여준다.
Input file: beam1.inp Data file: gm3dnd.txt
*HEADING 35,0.,0.,0.
An example of 3-D geometry 37,1.0,0.,0.
model (modified) 38,1.5,0.,0.
*NODE,INPUT=gm3dnd.txt 40,3.5,0.,0.
*NGEN,NSET=X11 435,0.,2.0,0.
35,37 437,1.0,2.0,0.
*NGEN,NSET=X12 438,1.5,2.0,0.
38,40 440,3.5,2.0,0.
*NGEN,NSET=X13 635,0.,4.0,0.
435,437 637,1.0,4.0,0.
*NGEN,NSET=X14 638,1.5,4.0,0.
438,440 640,3.5,4.0,0.
*NGEN,NSET=X15
635,637
*NGEN,NSET=X16
638,640
*NSET,NSET=NFRONT
BLOCK1,BLOCK2,BLOCK3,BLOCK4
*NCOPY, OLD SET=NFRONT,
NEW SET=NBACK,
CHANGE NUMBER=4000,
REFLECT=MIRROR
0.0,0.0,-2.0,1.0,0.0,-2.0
0.0,1.0,-2.0
*NFILL,NSET=NALL
NFRONT,NBACK,4,1000
*ELEMENT,TYPE=DC3D8,
INPUT=gm3del1.txt Data file: gm3del1.txt
*ELGEN,ELSET=EBLOCK1
35,2,1,1,4,100,100,2,1000,1000 35,35,36,136,135,1035,1036,1136,1135
*ELGEN,ELSET=EBLOCK2 38,38,39,239,238,1038,1039,1239,1238
38,2,1,1,2,200,200,2,1000,1000 435,435,436,536,535,1435,1436,1536,1535
*ELGEN,ELSET=EBLOCK3 438,438,439,539,538,1438,1439,1539,1538
435,3,1,1,2,100,100,2,1000,1000
*ELGEN,ELSET=EBLOCK4
438,2,1,1,2,100,100,2,1000,1000
*ELEMENT,TYPE=DC3D6,
INPUT=gm3del2.txt Data file: gm3del2.txt
*ELGEN,ELSET=EBLOCK5
37,1,1,1,2,200,200,2,1000,1000 37,37,38,137,1037,1038,1137
*ELGEN,ELSET=EBLOCK6 137,137,238,237,1137,1238,1237
137,1,1,1,2,200,200,2,1000,1000 138,137,38,238,1137,1038,1238
*ELGEN,ELSET=EBLOCK7
138,1,1,1,2,200,200,2,1000,1000
*ELSET,ELSET=FIRSTHALF
EBLOCK1,EBLOCK2,EBLOCK3
EBLOCK4,EBLOCK5,EBLOCK6,EBLOCK7
*ELCOPY,OLD SET=FIRSTHALF,
NEW SET=SECONDHALF,ELEMENT SHIFT=2000,
SHIFT NODES=2000
*ELSET,ELSET=ALLBLOCK
FIRSTHALF,SECONDHALF
...
...
...
그림 5: 아바쿠스 후처리에서 그린 3차원모델
'2FeRed`s 공돌이생활 > ABAQUS' 카테고리의 다른 글
[아바쿠스] 쉘 엘리먼트란? 소개 및 활용방법 (Shell Element) (3) | 2010.01.15 |
---|---|
[아바쿠스] Shell(쉘)에서 Contact(접촉)시 Penetration(침투) 조절하기 (0) | 2010.01.13 |
[아바쿠스] 아바쿠스 CAE 튜토리얼 (0) | 2010.01.05 |
[아바쿠스] *Restart 명령어 사용방법 (ABAQUS/STANDARD) (0) | 2009.12.17 |
[아바쿠스] 파이썬 스크립팅 #6. 시퀀스 연산 (0) | 2009.11.23 |