티스토리 뷰


작성일 : 2015년 10월  17일
번역일 : 2016년    4월  11일


크롬 브라우저로 보시는 것을 권장해 드립니다.


 ------ OpenFOAM 소스코드 파해치기 시리즈 ------

OpenFOAM 소스코드 파해치기 목차로 이동

 ------------------------------------------------------------

 ----- OpenFOAM 소스코드를 다루는 문법 기본 -----

OpenFOAM 소스코드를 다루는 문법 기본으로 이동

 ------------------------------------------------------------



 



  3. 유한체적법에 의한 이산화


     OpenFOAM에서는 편미분방정식의 이산화를 위해 주로 유한체적법을 사용한다. 유한체적법은, 컨트롤볼륨법으로도 불리며, 연속체의 편미분방정식을 이산화해 풀어내는 수법의 한가지이다. 연속체를 콘트롤볼륨 또는 셀이라고 부르는 다면체로 나누어, 방정식을 셀의 체적적분형태로 표현한다(그림 1).
     이산화점을 셀의 중심에 놓고, 셀의 중심의 값이 셀 내부의 값을 대표하도록 한다. P 는 주목하는 셀의 중심의 점, N 은 옆 셀의 중심의 점, f 는 주목하는 셀과 옆 셀이 공유하는 면의 중심 점이다. 이 점들이 가지는 값을 각각 P, N, f 아래첨자로 표현한다. 예를들어 각각의 점의 위치는 x_p, x_n, x_f 로 표현한다.

그림. 1 


     예를들어, 다음과 같은 스칼러 수송방정식을 생각해 보자.
(식 30)


여기서 rho 는 밀도, u 는 속도벡터, k 는 확산계수, S 는 소스항에 해당한다. 이것을 유한체적법으로 이산화 한다. 먼저 방정식을 셀에 대해 적분한다.

(식 31)


이것은 다음과 같이 적을 수 있다.

(식 32)


이때, V_p 는 주목하는 셀의 체적이다. 시간미분은 차분법으로 이산화한다고 생각하면 되고, 공간미분의 이산화에 대해 생각해보자.

     발산(divergence)는 가우스의 발산정리에 의해 다음과 같이 표현된다.

(식 33)


여기서, n 은 영역표면의 법선벡터를 나타낸다. S_f 는 셀을 구성하는 각각의 면에 대해 수직인 각각의 면의 면적을 크기로 가지는 벡터(면적벡터)를 나타낸다.

     라플라시안에 대해서도 동일하다.

(식 34)


     구배에 대해서도 같은 방법으로,

(식 35)


     자, 여기서 미지수는 ϕ_f 나 (∇ϕ)_f 의 면중심의 값이다. 이것들을 표현하는 방법에 따라 이산화의 오류가 영향을 주게 된다. 이것들을 보간법하거나 이산화하는 방법을 보간스킴(interpolation scheme) 이라던지 이산화 스킴(discretization scheme) 등으로 부른다. ϕ_f 는 다음의 식으로 표현한다.

(식 36)


여기서 w 는 비율을 나타내며, 선형보간일때 w 는 Nf 간의 거리와 PN 간의 거리의 비를 나타낸다.

(식 37)


선형보간은 차분법에서 말하는 중심차분(central differencing)에 해당하며, 대류항에 사용하기에 부적절하다. 대류항에 대해서는 다음과 같은 Upwind스킴 등을 사용한다.

(식 38)


     면중심의 구배 (∇ϕ)_f 에 대해서는,  (∇ϕ)_f . S의 형태로 면의 법선방향의 구배를 이산화한다.

(식 39)


이같은 방법으로 방정식 (30) 을 이산화하면, 일반적으로 다음과 같은 형태로 표현된다.

(식 40)


여기서, A_P, A_N 은 대수방정식의 계수행렬에 해당하는 것으로, b 는 대수방정식의 우변에 해당한다. 이것을 전체 셀에 대해 합성하면 편미분방정식의 대응하는 대수방정식이 완성된다.



댓글