수렴에 관한 글을 몇가지 모아 놓은 것인데 .... 참고하시는게 좋을 것 같아서요 ..
PART 1
수렴에 관해서 정답이 있을까 하는 의구심이 들지만, 개인적으로 알고 있는 정도에서 답변을 드려볼까 합니다.
FLUENT manual에 나와있는 바로는 수렴의 기준은 residual이라는 개념으로 판단됩니다. Residual이라는 것에 대해서 아직 저도 정확한 개념을 잡지는 못했습니다만, 간단한 2차원의 정렬격자를 기준으로 이산화 방정식을 세웠을때 중심격자에서의 a(p)*phi(p)값과 나머지 주변격자의 값의 합과의 차이가 얼마나 적냐의 차이로 그 수렴을 판단하는 것으로 알고 있습니다.
CFD라는 것은 이미 이론적으로 정형화되어있는 여러 개(혹은 몇 개)의 지배방적식을 풀어서 그 해를 구하고 구해진 해를 가지고 해석을 하는 학문입니다. 이 때의 지배방정식은 대부분의 경우가 편미분형태를 띠고 있기 때문에 반복법을 기본으로 해서 그 해를 구해나가게 됩니다.
100% 수렴된 해를 구한다는 것은 주어진 지배방정식의 등식을 100%만족시키는 값들을 구해낸다고 생각할 수 있는데, 실제적으로는 여러가지 이유로 인해 100%의 엄밀해를 구하는 경우는 없다고 볼 수 있습니다. 그래서 수치해석에서 많이 사용하는 오차의 개념과 비슷한 것이 앞서 말씀드린 residual이라는 것인데, 아시다시피 continuity나 momentum과 같은 것은 defult value로 10^-3, energy나 species와 같은 것은 10^-6으로 그 값이 맞춰져 있습니다.
하지만, 위의 값이 절대적인 판단기준이 될 수는 없습니다.
"Residual value가 10^-3이하면 왠만한 경우에 대해서는 적절하게 수렴했다고 생각해도되겠다"는 의미이지 모든 경우에 대해서 적절하게 수렴했다라는 의미가 아닙니다. 불행하게도 수렴의 판단은 결국 전적으로 사용자의 판단에 맡겨진다고 이야기해도 과언이 아니라고 생각됩니다.
말씀하신 대로 유동의 pattern만을 보시려면 500번과 600번이 비슷하다면 그다지 문제 될것이 없다고 생각됩니다. 500번과 600번의 사이에는 각각의 나누어진 control volume에서 수렴해를 찾아가기 위한 좀 더 많은 노력이 이루어지겠지만, 어떤 특정부분에서의 값이나 유동 패턴을 자세히 보려는 것이 아닌 전체적인 유동패턴만을 보시려한다면 그 차이는 없다고 봐도 무방하지 않을까 싶습니다. 하지만 몇 번의 iteration만에 수렴이 될지는 누구도 알 수 없기때문에, 최소한의 기준으로 잡혀있는 residual값을 떨어뜨리는 것이 최소한의 안전대책(?)정도로 생각됩니다. 수렴의 판단을 위한 mass 및 energy imbalance check나 surface의 평균값을 monitoring하는 것이나 default residual value를 더 낮게 잡는 다던가 하는 것들은 수렴을 판단하는데 좀 더 도움을 줄만한 것들입니다. 또한 비현실적인 결과를 꼬집어냄으로써 반대로 수렴이 잘못 되었다고 판단할 수 도 있을 겁니다.
그 중에 그래도 최선으로 꼽을 수 있다면 실험결과와의 비교가 될 수 있을거라 생각합니다.
모든 경우가 같고 input각도만 달라졌는데, 수렴이 잘안된다고 말씀하셨는데, 현상적으로 input각도가 달라지면 systme내부에서 유동의 패턴이 달라진다는건 쉽게 예측할 수 있습니다. 결국 geometry는 같지만 다른 문제를 푸는 것이라고 봐도 무방할것입니다. 따라서 수렴이 되는 경향이나 수렴유무는 당연히 다를거라고 생각됩니다.
글이 너무 장황해진 것 같습니다.
P.S. Residual에 관한 식은 지배방정식마다 다른 것으로 알고 있습니다. Manual을 보시면 다른 식들을 찾아보실수 있습니다.
원본 위치 <http://www.ates.co.kr/support/cafe_view.asp?Idx=1103&GP=2&SS=a.vc_title&ST=수렴&S1=2&S2=>
PART 2
제가 아는것까지만 설명드리겠습니다.
(1)모델에 따른 수렴성
수렴 및 정확성의 격자 의존성은 설명이 필요치 않을 정도로 중요합니다.어떤 격자에서 문제가 발산하면 더이상 할말은 없지만 만약 진동만 계속한다면 격자 형상이 유동을 잡아
내기에 부적합한지 검토해야 됩니다. 방법은 여러가지가 있을 수 있지만, 진동하는 모델에서 격자수를 높이는 방법이 생각 나네요. 아마 Fluent에서 Grid Adaption을 통해 시도해 볼 수 있지 않나 생각합니다. 황문식 님이 뒤에서 언급한 유동 각도를 바꾸었을 때 진동하는 양상이 나타난다고 하니 이것이 문제이지 않을 까 생각합니다. 참고적으로 격자는
stream align되어 있을 때 가장 좋은 결과를 보여줍니다. 또한, 수렴곡선의 진동은 비정상(unsteady) 현상이 나타나는 것이 아닌가 검토해야 됩니다. 어떤 문제에서 정상상태로 수렴하지 못하는 모델이 비정상 문제로 놓고 해석하면 수렴하는 경우가 발생합니다. 수치 기법상의 문제이기도 합니다.
(2) 수렴?
Fluent의 수렴 판단은 레지듀얼로 하는 것 같습니다.
레지듀얼은 F(Q)=0을 풀 때, F(Q)를 이산화한 양을 적절한 값으로 무차원화한 값인데, 연구용 코드에서는 때로 Del Q/ Q 를 쓰기도 합니다. 엄밀한 의미에서 이산화한 F(Q)
가 0 이 되면 방정식을 만족하는 해 Q가 나온것이므로 맞다고 할 수 있지만, 실제로 이산화오차와 연산에러 때문에 0이 될 수는 없으므로 적절한 값(1.e-3)이하로 떨어지면
수렴했다고 판단합니다. 이값이 보통 Engineering accracy라 하는 데, 수치기법 만을 전공하는 사람들이 엄격하게 판단할 때는 single precision에서 1.e-8, double
precision에서 1.e-16으로 판단합니다. 황문식 님이 수렴여부를 Fluent에 맡기기 전에 스스로 판단하는 것이 좋습니다. Fluent 에서 제시하는 값은 단지 참고만
하시면 됩니다. 저같은 경우, criterion은 1e-4으로 놓고 계산의 원만한 진행 여부를 판단한 다음, 일정한 면을 잡아 Force나 pressure, temperature 등 중에서 관심있는 값들을 골라 변화없이 일정하냐로 수렴여부를 판단합니다. 다른 분들은 어떨지 몰라도 꽤나 신뢰할 수 있는 방법이라 추천합니다. 눈에 보이는 멋있는 그림만 믿다간 나중에 낭패를 당할 수 있습니다.
재미있는 것은 수렴성을 따지는 F(Q)나 Del Q/Q가 같이 수렴하지 않을 수도 있다는 사실입니다. F(Q)가 계속 떨이지는데 Del Q/Q가 일정값 이하로 떨어지지 않을 수도
있고, 반대의 경우도 생깁니다. 물론 눈에 보이는 해의 모습은 큰 차이는 없구요. 제가 만든 코드에서 나타난
현상인데 왜 그런지는 잘 모르겠습니다. 참고가 되었으면 좋겠습니다.
원본 위치 <http://www.ates.co.kr/support/cafe_view.asp?Idx=1105&GP=2&SS=a.vc_title&ST=수렴&S1=2&S2=>
PART 3
문제 > ----------------------------------------------------------
> 궁금이 님의 글 "수렴된 해의 해석"
> ----------------------------------------------------------
> 난류에 관해서 연습을 하다가 궁금한 점이 있어서 질문드립니다.
>
> inlet과 outlet이 존재하는 간단한 2D 문제입니다.
> 조금 더 정확히 설명드리자면, 직사각형의 box의 왼쪽 하단과 오른쪽 상단에 pipe가 달려 있습니다.
> 계산한 결과를 살펴보다가 오른쪽 상단 pipe의 절반 아래부분에 recirculation zone이 생겼습니다. outflow boundary condition을 유출구쪽에 주었는데,
위와 같은 문제때문에 계산영역을 늘렸습니다. 즉, 오른쪽 상단의 pipe길이를 늘렸습니다. 사실 k-e모델은 계산영역을 늘리기 전에도수렴은 했는데, RSM으로 돌리니까 발산을 했습니다.
> 일단은 계속 pipe를 늘려서 recirculation zone이 잘리지 않을 정도가 되니까 RSM의 경우도 무난하게 수렴을 한 것 같습니다.
> 문제는, 유동의 패턴에 관해서 관심을 가지고 수렴된 해를 보려고 할 때 계산영역을 늘려서 수렴시킨 유동((특히 outflow쪽의)이 물리적으로 의미가 있는냐가 궁금합니다.
> 가령 Outflow쪽의 실제 pipe의 길이가 50cm인데 수렴을 위해 10cm로 늘렸다면... 수렴된 결과에서 5cm부분까지를 유동을 의미가 있다고 봐야 하는지요?
> 5cm까지 결과를 본다면 recirculation이 잘리게 되는데 잘린 recirculation zone으로 실제현상을 생각해봐야 하는지, 아니면 outflow쪽에 꽤 커다란 영역의 domain을 연결해서
> 대기상태와 유사하다는 가정하게 생겨나는 유동을 실제의 현상으로 생각해야 할지 말입니다.
>
원본 위치 <http://www.ates.co.kr/support/cafe_view.asp?Idx=390&GP=2&SS=a.vc_title&ST=수렴&S1=2&S2=>
Answer>
1. 유체역학을 지배하는 방정식인 미분방정식을 수학적으로 분류하면 'elliptic equation'입니다. 즉, 모든 경계조건의 영향을 받는다는 것이지요. 그런데 대부분의
유동에서 'convection(운동량 방정식의 d/dx(rho*u*phi) 등)'의 영향이 'diffusion(운동량방정식의 d2/dx2(phi) 등)의 영향보다 우세하기 때문에 하류가 상류에 미치는 영향은
약한편입니다. 이 가정도 하류에 큰 물체가 놓여있다던지 하는 등으로서 하류에서 상류에 영향을 크게 미칠 수 있는 원인이 있는 경우에는 적용하기가 힘이듭니다. 그러나 이 경우도 상류가 하류에 미치는 영향에 비하면 약한편이지요.
2. 위와 같은 배경을 참고로 하여 보면, 출구 조건을 최대한 실제와 유사하게 두는 것이 좋겠습니다. 예를 들어 대기로 방출되는 유동의 경우, pressure outflow 경계조건이 보다 실제에 가까운 경계조건이며, pressure outflow 경계조건은 역류가 있어도 수렴된 해를 제시하는 경우가 많습니다.
3. 대안이 없다면, 길게 영역을 확장하고, 해석된 결과에서 역류가 생기는 부분 근처에 일부 오차가 있을 것이며 멀리 떨어질수록(특히 상류쪽에는) 영향이 적을 것이라고 판단하는 수 밖에 없습니다.
-J.W.LEE-
원본 위치 <http://www.ates.co.kr/support/cafe_view.asp?Idx=390&GP=2&SS=a.vc_title&ST=수렴&S1=2&S2=>
PART 4
자연대류 문제는 원래 수렴을 잘 안하는 수학적 특성을 지니고 있습니다. 우선 본 BBS의 104번의 질의 응답을 잘 읽어보시면 많은 도움이 되리라 생각합니다. 즉,
1. Boundary layer 내에 충분히 grid가 포함되었는가 ? (제일 중요)
2. Rayleigh Number가 크다면(약 10^5~10^6 이상) unsteady calculation의 필요성을 검토해 보셔야 하고, 난류영역(Rayleigh number가 10^8 이상, 어떤이는 10^10 이상 듣등)인지도 꼭 확인하여 보시기 바랍니다.
3. 다른 분들을 위해서 첨언하자면,
3.1) 잘아시겠지만, First Order로 수렴이 되면 Second Order로 해보세요 보다 정확한 답을 얻을 수 있습니다.
3.2) 안될리가 없다고 확신(+확신)합니다만, 그래도 안되면, Fluent 4.5를 써보시면 계산시간은 좀 많이 걸리지만 수렴성은 훨씬 좋을 것입니다.
-J.W.LEE-
> ----------------------------------------------------------
> 김윤장 님의 글 "수렴에 관해서..."
> ----------------------------------------------------------
> 2d 원통 자연대류에 관해 수렴이 안되서 고민중입니다..채준희씨 메일로 plot을 tiff파일로 보내드렸는데 아직 답변이 없어서요...
> fluent에서 수렴이 된다는것은 plot을 보고 어떻게 판단합니까?
> 혹시 solve->monitors->residual에서 convergence criterion값이 있던데 계산도중 이 수치에 도달하면 수렴으로 판단하는건가요?
> 제 경우엔 continuity,x y velocity는 0.001, energy는 1e-6이던데...그래프는 진동을 계속 할뿐 plot에서 이지점으로 내려가는 모습은 보이지 않습니다.
> 수렴을 할려면 다른 어떤 방법이 있습니까?
> solve -> controls -> solution에서 discretization ->
> pressure -> body force weghted
> momentum -> first order upwind
> pressure-velocity coupling -> simple
> energy -> first order upwind
> 로 적용했습니다...
>
>
원본 위치 <http://www.ates.co.kr/support/cafe_view.asp?Idx=257&GP=2&SS=a.vc_title&ST=수렴&S1=2&S2=>