2016

2016. 02. 01 / 하루생각 Blog


[OpenFOAM 기본] OpenFOAM 설정파일 형식

일본어 원문링크


들어가기

OpenFOAM 설정파일의 형식에 대해



기준 OpenFOAM 버전

OpenFOAM 2.4.0



설정파일의 형식

OpenFOAM의 설정파일은 C++언어의 소스코드와 유사한 양식으로 작성된다.


Comments

C++와 같은 형식의 커맨트문을 사용할수 있다. 적 "/*"과 "*/"의 사이 또는 "//"로 시작하는 행을 커맨트로 인식하고 무시한다.



Header

설정파일에는 다음과 같은 헤더가 사용된다.


FoamFile {

version     2.0;

format     ascii;

class       dictionary;

location    "constant";

object     transportProperties;

}


필드데이터의 경우, class에 아래와 같은 필드 클래스를 적는다

  • volScalarField : 스칼라장(압력이나 온도 등)
  • volVectorField : 벡터장(속도 등)
  • volSymmTensorField : 대칭텐서장(레이놀즈응력 등)


Dictionary

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

괄호 안에 다수의 데이터를 합쳐 기술하는 것을 리스트라고 한다. 리스트는 아래와 같은 형식으로 지정되어있다.


<리스트 이름>

<리스트 갯수>

(

    ...항목...

);


리스트이름이나 리스트 갯수는 생략하는 경우도 있다. 또한, 다음과 같이 항목을 클래스로 정의하기도 한다.


<리스트 이름>

List <클래스 이름>

<리스트 수>

(

    ...항목...

);



벡터와 텐서(Vector and Tensor)

벡터는 예를들어 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);

 


프로필사진

하루생각

OneDay by Eric

에릭의 티스토리 http://onedayof.tistory.com


[원문출처 : http://onedayof.tistory.com/entry/OpenFOAM-기본-OpenFOAM-설정파일의-형식]

Creative Commons License
크리에이티브 커먼즈 라이선스
맨 위로
맨 위로