2014. 9. 24. 00:44 - 성돌

무료 유체역학 시뮬레이션 (CFD) 프로그램 Gerris!



무료 유체역학 시뮬레이션 (CFD) 프로그램 Gerris를 소개하고자 한다.

- http://gfs.sourceforge.net/wiki/index.php/Main_Page -


이 프로그램은 Universite Pierre et Marie Curie에서 일하고 있는
Stephane Popinet이라는 사람에 의해서 개발이 되었다.


다른 Fluent같은 괜찮은 상용 유체역학 시뮬레이션 프로그램이 있지만, 일단 좀 비싸다.

Gerris는 무료 프로그램이지만 상당히 괜찮은 performance를 보여주는데
내 생각에는 서로 다른 액체들의 mixing, 표면장력 현상 등에 특히 유용한 것 같다. 

그리고 또다른 유명한 무료 CFD프로그램인 오픈폼(OpenFOAM)에 비해서는
사용방법이 훨씬 쉬운 것같다.

물론, 다른 기본적인 pipe flow시뮬레이션도 잘 되기는 한다.


Gerris로 무얼 할 수 있는지를 보고자 한다면, 링크에서 시뮬레이션 한 예들을 살펴보자. 

또한, Gerris를 이용해서 논문을 쓴 리스트들홈페이지에 소개하고 있는데 참고하자.

[배 주변에 생기는 물의 흐름 시뮬레이션, 링크를 따라가면 동영상도 볼 수 있다]



그리고, Linux기반이기에 윈도우 사용자들은 Ubuntu를 설치한 후, Gerris를 설치하여야 한다.
(설치법 를 참고하자)



내가 Gerris를 써보면서 느낀 점은, 꽤 괜찮다.

물론, Gerris의 최대 단점은 Linux기반의 프로그램이라는 것과 GUI가 없다는 것이다 .
Fluent처럼 그래픽 환경에서 작업하는 것이 아니라, 코딩을 해야한다는 것이다.

물론 결과물은 아래와 같이  사진이나  동영상으로 결과물을 얻을 수 있다.

GUI기반이 아니라 다소 불편한 점이 있지만,
조금만 프로그램에 익숙해지면 생각보다 사용법이 꽤나 쉽고, 코딩도 짧고, 단순하다
.


코딩이 단순하다는 것은 초보유저가 쉽게 몇몇 파라미터만 바꿔서 시뮬레이션할 수 있게 
Stephane Popinet이라는 사람이 코딩을 잘 짜놨다.

Mesh짜는 것도 간단하고, 코딩도 굉장히 짧다.


예를 들어, 위와 같이 원기둥 주변에 나타나는 유체현상을 시뮬레이션하는 경우
아래의 짧은 코드만을 작성해줌으로 실행이 가능하다.
아래의 코드를 잘 이해하고 싶다면, 튜토리얼을 참고하자.

Gerris는 더 복잡한 시뮬레이션이더라도 코딩 길이가 크게 늘어나지 않는다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Define CylinderRadius 0.0625
Define FinalTime 7.0
Define InletSpeed 1.0
  
2 1 GfsSimulation GfsBox GfsGEdge {} {
  
  Time { end = FinalTime }
  
  Refine 6
  
  Solid (x*x + y*y - CylinderRadius*CylinderRadius)
  
  Init {} { U = 1 }
  
  AdaptVorticity { istep = 1 } { maxlevel = 8 cmax = 1e-2 }
  
  SourceViscosity 0.78125
  PhysicalParams { alpha = 1e-3 }
  
  OutputTime { istep = 10 } stderr
  
  OutputPPM { istep = 2 } { ppm2mpeg > vort.mpg } {
    min = -10 max = 10 v = Vorticity }
    
  OutputSolidForce { istep = 1 } forces.dat
  OutputSimulation { istep = 100 } Output-%ld.gfs
  OutputSimulation { istep = 100 } Output-%ld.txt { format = text }
}
  
GfsBox { left = Boundary {BcDirichlet U InletSpeed}}
GfsBox { right = BoundaryOutflow }
1 2 right




그리고 컴퓨터를 병렬연결하여 시뮬레이션 속도를 높이는 것도 가능하다. 

[Gerris adaptive mesh refinement기술을 사용해 유동변화가 심한 곳에 프로그램이 알아서 많은 mesh를 형성하여 준다.

이것도 나중에 소개하겠지만, 코딩 한 줄이면 된다. ]

- http://gfs.sourceforge.net/tutorial/tutorial/node13.html -



Gerris를 설치하는 방법과 사용 방법에 대한 기본적인 튜토리얼

본 블로그에 설명해놓았으니 참고하자.


기타 Tutorial을 보고자 한다면, 아래의 링크를 보면 도움이 될 것이다.

http://gfs.sourceforge.net/wiki/index.php/Basic_Tutorial
[쉬운 버젼]

http://gfs.sourceforge.net/tutorial/tutorial/tutorial1.html
[더 전반적인 설명이 있는 버젼]

http://hmf.enseeiht.fr/travaux/projnum/book/export/html/907
[다른 홈페이지에서 가져왔는데, 여기 설명이 초보자에게 꽤나 괜찮은 것 같다]