Loading
2015. 6. 18. 02:49 - 성돌

[Gerris] 시뮬레이션에 사용할 형상 제작 (gts파일 만들기)



Gerris에서 solid를 시뮬레이션에 활용할 때,
기본적인 도형은 Solid명령어를 이용해서 만들 수 있지만...

이 명령어도 움직이는 solid에 대해서는 적용할 수 없으며,
비행기 날개와 같이 복잡한 형상을 저 명령어로 만드는 건 사실상 불가능하다.

따라서 CAD프로그램을 이용해서 solid를 제작한 후 stl파일로 저장하고,
이를 나중에 Gerris에서 읽을 수 있는 gts파일로 변환시키는 방법을 사용한다.

Gerris에서 무료 CAD프로그램인 Blender를 이용할 것을 추천한다.

다른 거 써도 되긴 하겠지만,
아무래도 무료고 잘 되니까... 거침없이 권할 수 있다고나 할까?

예를 들어, Blender를 이용해 비행기 날개를 만드는 포스팅이 있으니 참고하자.



이 포스팅에서는 매우 간단한 원기둥을 만든다고 해보자.

Blender는 다들 알아서 설치하시고...
아래가 Blender의 화면이다.


Add
Mesh Cylinder를 통하여 원기둥을 만들어 주었고...

한 가지 tip을 주자면 원기둥을 만들기 전에 
Shift+S를 누르고 Cursor to center를 선택하여
원기둥이 원점에 만들어지게 할 수 있다.

그 다음으로 중요한 것이 빨간색으로 밑줄을 칠한 Vertices인데 이게 많을 수록 섬세한 원기둥이 만들어진다.
Vertices숫자를 줄여보고 키워보면 이게 무슨 말인지 자연스럽게 알것이다.

그리고 원기둥의 크기는...
어짜피 나중에 시뮬레이션 크기에 맞춰서 정규화(normalize)시킬 것이기에 별로 신경 안 써도 된다.

그리고 나는 이걸 2D시뮬레이션에 이용하기에 xy평면에 원이 놓여져 있어야 함을 명기해두자.
뭐... 위 그림에서 보면 알아서 그렇게 잘 놓여있다.

아무튼 이렇게 원기둥을 잘 만들고, stl파일로 export를 하면 된다.

MyCylinder.stl란 파일을 export하였다.



그리고 터미널에서 MyCylinder.stl이 있는 폴더로 이동해서
stl2gts명령어를 사용하면 gts파일이 만들어진다.


명령어가 매우 간단하지 않은가?

gts파일명에 임시적임을 (temporarily) 나타내는 Temp을 붙인 것은...
앞서 말한대로 내 시뮬레이션에 맡게 정규화를 시켜줄 것이기 때문이다.

이번에는 아래와 같이 transform명령어과 -o옵션을 사용하면
내 시뮬레이션 박스 1칸과 solid의 크기가 일치하고 시뮬레이션 박스의 중앙에 위치하게
gts파일을 자동적으로 변환시켜줄 수 있다.


위에서 -i옵션은 원기둥의 solid의 안과 밖을 바꾸는 건데...
이 포스팅의 원기둥의 경우에는 처음에 Blender로 만들었을 때,
default값으로 원기둥의 바깥 부분이 solid로 지정이 되어있었다.

그래서 -i명령어를 통해서 원기둥의 내부가 solid가 되도록 변환시켜준 것이다.



아무튼 이렇게 gts파일을 제작하였고... 아래에서 다운로드 받을 수 있다.

MyCylinder.gts


이 후 Gerris시뮬레이션 파일은 gfs파일을 작성할 때,
이 파일을 정지하고 있는 solid의 경우 Solid명령어를 통해
움직이는 solid의 경우 SolidMoving명령어를 통해 불러올 수 있다.

예를 들어 아래와 같이 Solid명령어를 통해 읽어드리면 아래와 같이 solid를 불러올 수 있다.



transform -o명령어에 의해서 한 개의 시뮬레이션 박스의 크기와 동일한 원(또는 원기둥)이
생겼음을 알 수 있다.

참고로 아까 transform을 할 때 -i을 사용하지 않았다면,
아래와 같이 원기둥 안 부분이 유체가 있는 부분으로 간주되고 (mesh가 있고...),
바깥 부분이 solid가 있는 곳으로 간주되었다는 것을 아래의 그림에서 확인할 수 있다.


Solid명령어에 있는 tx, ty, scale옵션을 활용해서 원기둥의 크기나 위치를 변경할 수 있는데,
예를 들어 아래와 같이 하면


아래처럼 x방향으로 0.25의 비율만큼 평행이동하고, 0.5의 비율로 축소된 원기둥이 형성된 것을 볼 수 있다.
여기서 비율이라는 것은 한 개의 시뮬레이션 박스의 길이에 대한 기준이다.