본문 바로가기
ABAQUS/Subroutine

ABAQUS 서브루틴을 위해 알아야 할 FORTRAN 기초-Part1

by Ori & Azi 2023. 3. 2.
728x90
반응형

포트란(Fortran)은 FORmula TRANslation의 약자로 수학/과학 계산을 위한 프로그래밍 언어이다.

C 언어가 더 범용적이지만 Fortran은 빠른 계산속도가 장점이다.

 

Abaqus에서 사용자 서브루틴은 주로 Fortran으로 작성되지만 C 또는 C++로 코드를 개발하는 것도 가능.

 

Abaqus 서브루틴 작성 시작: 기본 사항 및 권장 사항

Fortran은 배우기 가장 쉬운 프로그래밍 언어 중 하나이며 MATLAB과 매우 유사하다. 또한 Abaqus에서 서브루틴 코드를 작성하려면 소규모의 FORTRAN 하위 집합만 알면 된다.

 

1. 기본

Fortran은 텍스트의 순서에 따라 수행 된다.

Fortran은 대문자와 소문자의 구분이 없다. 소문자 "x"와 대문자 "X"는 같은 변수로 인식된다.

 

기본구조

1. 선언영역(Declararation) - 프로그램명, 변수 선언

2. 실행영역(Execution) - 각종 수식 및 명령 수행

3. 종료영역(Termination) - 프로그램 종료

 

ABAQUS에 사용되는 서브루틴이나 모듈등도 모두 같은 구조를 가진다.

예시) 포트란 언어

열위치 규칙

Fortran에는 소스 코드의 형식을 지정하는 방법에 대한 규칙이 거의 없다. 가장 중요한 규칙은 열 위치 규칙입니다.

» 1열 : 공백 또는 주석의 경우 "C"

» 열 1-5 : 문장(statement) label (optional)

» 6열 : 앞 문장(statement) 계속(optional)

» 7-72 ​​: 문장들(statements)

 

주석들(Comments)

여기서  " C " 로 시작하는 줄은 주석이며 프로그램을 더 읽기 쉽게 만드는 것 외에 다른 목적은 없다. 

주석에 느낌표 !를 사용할 수도 있다.

느낌표 주석은 코드의 어느 위치에나 있을 수 있다.

 

 명령문장 라벨 (Statement label)

명령문 레이블은 프로그램에서 위치를 표시하는 데 사용된다. 일반적으로 단일 프로그램의 많은 루프 및 기타 명령문에는 명령문 레이블이 필요하다. 프로그래머는 각 프로그램(또는 하위 프로그램)의 각 레이블에 고유 번호를 할당할 수 있다.

 

 명령문장 계속 (Continuation of Statement)

경우에 따라 명령문이 한 줄의 사용 가능한 66개 열(7-72)에 맞지 않거나 가독성 뚜문에 열을 변경해야할 수도 있다.

이때 6번째 열에 + 를 입력하여 다음문장을 이어 이어갈 수 있다.

열에 따른 문장 구조

2. Data 유형

Fortran의 변수 이름은 문자  A~Z, 숫자 0~9 및 밑줄( _ )로 구성됩니다. 첫 번째 문자는 문자여야 합니다.

다른 많은 언어와 마찬가지로 Fortran 언어를 구성하는 단어를 reserved words 라고 하며 변수 이름으로 사용할 수 없다.

 예로서 PROGRAM , REAL , STOP , END 등입니다

변수 유형

Fortran은 데이터 조작을 쉽게 하기 위해 여러 가지 데이터 유형을 지원한다.

 

Data 유형   설명 예시
Numerical 1 Integer 정수    
2 Real 실수    
3 Complex 복소수    
Non-Numerical 4 Logical 논리 .TRUE. or .FALSE.  
5 Character 문자    

Integers(정수)

정수는 분수 구성요소 없이 쓸 수 있는 숫자입니다. 예를 들어, 21, 4, 0 및 -2048은 정수입니다. Fortran에는 정수 변수에 대한 유형이 하나만 있습니다. 일반적으로 4바이트 변수로 저장됩니다.

Floating-point variables(부동 소수점 변수)

숫자가 정수가 아닌 경우 소수로 간주됩니다. Fortran에는 REAL  DOUBLE PRECISION 이라는 두 가지 유형의 10진수(부동 소수점) 변수가 있습니다 . 서브루틴의 수치 계산에는 일반적으로 매우 높은 정밀도가 필요하며 DOUBLE PRECISION을 사용해야 합니다. 일반적으로 REAL은 4 byte 변수이고 DOUBLE PRECISION는 8바이트입니다. REAL*8 구문을 사용하여 Abaqus 서브루틴에서 8 byte 부동 소수점 변수를 나타낼 수 있습니다.

Declarations(선언)

모든 변수는 Declarations에서 정의되어져야 한다. 가장 일반적인 Declarations은 아래와 같음.

각 변수는 정확히 한 번만 선언해야 합니다. 변수가 선언되지 않은 경우 Fortran은  암시적 규칙 세트를 사용하여 유형을 설정합니다.  I , J , K , L , M  N 문자 로 시작 하는 모든 변수 는 정수 이고 다른 모든 변수 는 실수 입니다 . 변수 이름에 매우 주의해야 합니다.

선언문(Declarations)

그러나 각 서브루틴의 맨 위에 간단한 코드를 넣는 습관을 들일 수 있습니다.

그런 다음 서브루틴이 사용하거나 필요로 하는 모든 변수를 명시적으로 선언해야 합니다.

Parameter(매개변수)

일부 상수는 프로그램에서 중복해서 나타납니다. 따라서 프로그램 시작 시 한 번만 정의하는 것이 바람직합니다. 이것을 정의할 때 Fortran에서 PARAMETER 라고 합니다. 

 PARAMETER 를 정의하는 목적

1. 오타(즉, 입력 오류)의 수를 줄이기 위해.
2. 프로그램에서 여러 번 나타나는 상수를 쉽게 변경
3. 코드의 가독성을 높이기 위해.

PARAMETER 사용 예시
PARAMETER 명령문

 PARAMETER 은 첫 번째 실행문장 앞에 와야 합니다.

 

3. 연산자

연산자는 아래표와 같다. 표현식의 결과 자체가 피연산자입니다. 

연산자 표현식

 

728x90
반응형