2016. 02. 01 / 하루생각 Blog
[OpenFOAM 기본] OpenFOAM 설정파일 형식
들어가기 |
OpenFOAM 설정파일의 형식에 대해
기준 OpenFOAM 버전 |
OpenFOAM 2.4.0
설정파일의 형식 |
OpenFOAM의 설정파일은 C++언어의 소스코드와 유사한 양식으로 작성된다.
C++와 같은 형식의 커맨트문을 사용할수 있다. 적 "/*"과 "*/"의 사이 또는 "//"로 시작하는 행을 커맨트로 인식하고 무시한다.
설정파일에는 다음과 같은 헤더가 사용된다.
FoamFile {
version 2.0;
format ascii;
class dictionary;
location "constant";
object transportProperties;
}
필드데이터의 경우, class에 아래와 같은 필드 클래스를 적는다
- volScalarField : 스칼라장(압력이나 온도 등)
- volVectorField : 벡터장(속도 등)
- volSymmTensorField : 대칭텐서장(레이놀즈응력 등)
OpenFOAM의 데이터에는 사전(Dictionary, 딕셔너리)라는 형식이 사용된다. 딕셔너리는 아래와 같이 기술한다.
<딕너리리 이름>
{
... 키워드 ...
};
키워드 부분은, 다음과 같은 형식이다.
<키워드> <항목 1> <항목 2> ... <항목 N>;
마지막에는 꼭 세미콜론을 붙여야 한다.
예를 들어 아래와 같다.
boundaryField
{
inlet
{
type fixedValue;
value uniform (1 0 0);
}
outlet
{
type zeroGradient;
}
wall
{
type fixedValue;
value uniform (0 0 0);
}
}
위의 예와 같이 딕셔너리는 하위 딕셔너리(sub Dictionary)를 가질 수 있다.
딕셔너리명과 키워드는 이중인용부호를 이용해 정규화하고 있다. 가능한 전부에 대해 기술하려면 ".*"로 표현가능하다. 이름의 끝에 Final이 있는 모든 것을 선택하려면 ".*Final"로 기술한다. k 또는 epsilon을 선택하려면 "(k|epsilon)"으로 표현한다. kFinal 또는 epsilonFinal을 선택하려면 "(k|epsilon)Final"로 기술가능하다. 아래는 사용예이다.
relaxationFactors
{
fields
{
p 0.3;
}
equations
{
U 0.7;
"(k|epsilon|omega|R)" 0.7;
}
}
괄호 안에 다수의 데이터를 합쳐 기술하는 것을 리스트라고 한다. 리스트는 아래와 같은 형식으로 지정되어있다.
<리스트 이름>
<리스트 갯수>
(
...항목...
);
리스트이름이나 리스트 갯수는 생략하는 경우도 있다. 또한, 다음과 같이 항목을 클래스로 정의하기도 한다.
<리스트 이름>
List <클래스 이름>
<리스트 수>
(
...항목...
);
벡터는 예를들어 X 방향으로 1 m/s, Y방향과 Z방향으로는 0 m/s의 속도를 표현할때 아래와 같이 기술한다.
(1 0 0)
(2단의) 텐서의 경우, 9개성분을 나란히 적는다. 단위텐서를 행렬식으로 적으면 아래와 같이 표현할 수 있다.
(
1 0 0
0 1 0
0 0 1
)
대칭텐서의 경우, 6개 성분을 지정한다. 단위 텐서를 행렬식으로 적으면, 아래와 같다.
(
1 0 0
1 0
1
)
단위를 가지는 데이터는 예를들어 아래와 같이 지정한다.
nu nu [ 0 2 -1 0 0 0 0 ] 1e-05;
처음의 "nu"는 키워드, 다음의 "nu"는 데이터 이름(보통은 키워드와 같다), 그리고 뒤의 항목은 단위 차원(dimension), 마지막은 값에 해당한다.
단위는, 다음과 같은 형식으로 각단위에 숫자로 지정한다.
[kg m s K mol A Cd]
예를들어 m/s이면 "[0 1 -1 0 0 0 0]"이다.
#include문으로 파일을 불러올 수 있다.
#include "파일명"
OpenFOAM 2.4.0부터 $FOAM_ETC이하의 파일을 불러올때는 #includeEtc도 사용가능하다.
#includeEtc "caseDicts/setConstraintTypes"
"$이름"으로 딕셔너리나 키워드의 값을 참조할 수 있다.
solvers
{
p
{
solver PCG;
preconditioner DIC;
tolerance 1e-06;
relTol 0.01;
}
pFinal
{
$p;
tolerance 1e-06;
relTol 0;
}
...생략...
}
위의 예와 같이, "$p"에 의해 딕셔너리 p의 항목이 딕셔너리 pFinal에 불러진다.
딕셔너리이름 또는 키워드에는 기본적으로 솔버나 유틸리티등의 프로그램이 필요로 하는 것을 지정하지만 임의의 이름을 사용할 수 있으며, 그것을 참조할수도 있다.
식을 지정할때는 아래와 같은 기술로 가능하다.
value uniform (#calc "pow(200.,2)/(pow(50.,2)*3.14)*10." 0 0);
식을 코드로 계싼하도록 지정하려면 아래와 같은 기술로 가능하다.
L 200.;
D 50.;
Ux0 10.;
Ux #codeStream
{
code
#{
const scalar pi = constant::mathematical::pi;
os << pow($L,2)/pow($D,2)*pi)*$Ux0;
#};
};
value uniform ($Ux 0 0);
[원문출처 : http://onedayof.tistory.com/entry/OpenFOAM-기본-OpenFOAM-설정파일의-형식]
번호 | 제목 | 작성 | 조회수 |
---|---|---|---|
484 | ITWorld 용어풀이 | 쿠키 | 2016-12-05 | 1876 |
483 | [IT열쇳말] 소프트웨어 정의 네트워크(SDN) | 2016-11-29 | 2427 |
482 | [IT열쇳말] 유니티 | 2016-11-15 | 1912 |
481 | [리눅스] 모든 리눅스 초보자가 알아야 할 5가지 터미널 명령 | 2016-11-10 | 20437 |
480 | 마이크로소프트 애저의 오픈소스 서버 및 랙 설계 들여다 보기 | 2016-11-07 | 1466 |
479 | [IT열쇳말] 데스크톱 가상화 | 2016-11-01 | 2226 |
478 | [IT열쇳말] 혼합현실 | 2016-11-01 | 1919 |
477 | [OpenFOAM] OpenFOAM 설정파일 형식 (OpenFOAM 기본) | 2016-10-28 | 1899 |
476 | [OpenFOAM] OpenFOAM 개요 및 기본 (OpenFOAM 기본) | 2016-10-14 | 3552 |
475 | [IT열쇳말] 자바스크립트 | 2016-10-11 | 2376 |
0개 댓글