BARAM의 격자생성 모듈인 baramMesh는 snappyHexMesh를 사용합니다. baramMesh를 이용하여 격자를 만들 때 참고할 만한 팁을 소개합니다.
Sliding mesh를 위한 cell zone과 interface 만들기
stl 파일이란
stl 파일이란 StereoLithoGraphy의 약자로 3차원 객체의 표면을 삼각형의 세 꼭지점과 법선 벡터로 정의하는 파일 형식입니다. 3차원 모델의 형상을 표현하는 가장 간단한 방식이며 텍스처, 색상, 기타 속성에 대한 정보는 없습니다. 대부분의 CAD 프로그램에서 stl 형식으로 내보낼 수 있습니다.
일반적인 stl 파일은 아래 그림과 같이 “solid solidName” 으로 시작해서 모든 삼각형에 대해 법선 벡터와 꼭지점 좌표가 나열되고 마직막은 “endsolid”로 끝납니다. baramMesh에서 stl 파일을 읽으면 solid의 name이 geometry 패널에 표시됩니다.
stl 파일은 전체 형상이 하나의 객체로 표현되기 때문에 면을 구분하기 위해서는 여러개의 파일이 있어야 합니다. 여러개의 파일을 다루기가 번거로울 때 여러개의 파일을 합쳐서 하나의 파일로 다룰 수 있습니다. 하나의 파일로 합칠 때는 단순히 새로운 파일에 여러 파일들을 순서대로 써 주면 됩니다. 그러면 여러개의 solid로 이루어진 하나의 파일이 만들어지고 baramMesh에서 읽으면 여러개의 파일을 동시에 읽는 것과 같이 됩니다.
리눅스에서 여러 파일을 하나로 합치는 가장 간단한 방법은 다음과 같이 cat 명령을 사용하면 file1, file2 2개의 파일이 newfile.stl이라는 하나의 파일이 됩니다.
cat file1.stl file2.stl > newfile.stl
stl 파일 읽기
import 버튼을 이용하여 stl 파일을 읽을 때 여러개의 파일을 한꺼번에 읽을 수 있습니다. 하나씩 여러번 읽을 때와 한꺼번에 여러개를 읽을 때 차이가 있는 경우가 있습니다.
아래 그림은 axisTips.stl, inter.stl이라는 두 개의 파일을 읽을 때의 차이를 보여줍니다. 하나씩 읽을 때는 Geometry 설정이 오른쪽 위와 같고, 한꺼번에 두 개를 읽으면 오른쪽 아래와 같이 됩니다. 여러 개의 파일이 하나의 볼륨을 구성하고 여기를 cellZone 등으로 설정하고 싶으면 오른쪽 아래와 같이 한꺼번에 선택해야 합니다.
육면체 내부에 경계층 격자 만들기
가장 간단한 형상인 육면체 내부에 경계층 격자 생성 예를 통해 입력 조건의 특성을 알아보겠습니다.
Feature angle threshold는 각 면의 법선벡터가 이루는 각이 특정값 이하일 때 모서리에 경계층을 생성하지 않은 옵션입니다. 육면체일 때는 각도가 90도이기 때문에 90보다 작은 값을 입력하면 아래 가운데 그림처럼 경계층격자가 만들어지고, 90보다 크면 오른쪽 그림처럼 만들어집니다.
Feature angle threshold가 90보다 큰 값일 때, 아래 그림의 왼쪽과 같이 경계층격자를 만들면서 모서리의 형상이 손상되는 경우가 있습니다. 성긴 격자인 경우에 많이 나타나며 육면체 내부에 다른 형상이 있을 때 모서리 뿐 아니라 에지의 형상이 손상되는 경우도 발생합니다. Feature angle threshold가 90보다 작은 경우 아래 오른쪽 그림처럼 이런 문제는 나타나지 않습니다. 이런 형상의 문제는 육면체의 6개면이 하나의 이름으로 되어 있는 경우에 발생하며, 6개의 면이 나누어져 별도의 이름으로 주어져 있는 경우에는 나타나지 않습니다.
아래 그림과 같이 격자의 크기가 균일하지 않을 때, 경계층 격자의 configuration에서 Size specification을 Relative로 설정하면 아래 오른쪽 그림과 같이 격자가 만들어집니다. 경계층격자의 높이가 벽면 격자 크기에 대해 상대적으로 결정되기 때문에 격자 크기가 작은쪽은 높이가 낮고 큰쪽은 높게 됩니다. 이런 경우는 Relative 옵션을 사용하지 않고 실제 높이를 입력해주면 가운데 그림과 같은 격자를 만들 수 있습니다.
Sliding mesh를 위한 cell zone과 interface 만들기
회전체를 sliding mesh로 계산하기 위해서는 회전체를 둘러싸는 실린더를 만들고 그 내부를 cell zone으로 지정해야 합니다. 그리고 cell zone을 둘러싸고 있는 실린더에 2개의 interface면이 있어야 합니다. 대부분의 회전체는 축이 있는데 축과 실린더가 만나는 곳을 잘 처리하지 않으면 격자가 제대로 만들어지지 않습니다.
아래 그림은 원방경계 내부에 2개의 실린더가 있고 직경이 큰 실린더 내부가 cell zone인 경우입니다.
baramMesh에서 설정을 잘못하면 아래 그림과 같은 격자가 만들어집니다. cell zone 영역과 회전축이 만나는 부분의 격자가 형상을 제대로 따라가지 못해 문제있는 격자가 만들어진 것입니다. 이 경우는 snap의 feature snapping 방법을 explicit으로 사용한 경우인데, cell zone 영역과 회전축이 만나는 부분에는 feature가 없기 때문에 문제가 발생한 것입니다. baramMesh에서는 stl 파일을 읽어오거나 육면체나 실린더 등의 형상을 만들 때 면 사이의 각도를 이용해 자동으로 feature를 만들어 줍니다. Explicit feature snap은 주어진 feature를 이용해서 격자를 만드는데, 이 경우에 feature는 2개의 실린더의 모서리에만 만들어지고 2개의 실린더가 만나는 곳에는 feature가 만들어지지 않기 때문에 생기는 문제입니다.
Implicit feature snap
Implicit feature snap은 주어진 feature를 사용하지 않고 내부적으로 feature를 찾아서 사용합니다. 형상이 매우 복잡한 경우 implicit를 사용하면 만족스럽지 못한 결과가 나오는 경우가 있지만 이 문제와 같이 단순한 형상에서는 feature를 잘 구현해 줍니다. 이 문제에서 implicit를 사용하면 아래 그림과 같이 2개의 실린더가 만나는 곳에도 격자가 잘 만들어지는 것을 볼 수 있습니다.
Explicit feature snap
Explicit feature snap을 사용하고 싶다면 2개의 실린더가 만나는 곳에 feature가 있어야 합니다. feature를 만들어주기 위해 축을 cell zone 내부와 외부 영역으로 나누어주는 방법이 있습니다. 아래 그림과 같이 축의 stl 파일을 2개로 나누어 주고 explicit로 격자를 만들면 문제가 없습니다.(이 경우 Castellation의 “Keep Open Edges” 옵션은 반드시 사용해야 합니다.)
Smoothing surface
위의 그림에서 cell zone과 축이 만나는 부분에 feature를 만들고 Explicit을 사용했을 때 좋은 격자가 만들어진 것을 볼 수 있지만, 경우에 따라 아래와 같은 문제있는 격자가 만들어지기도 합니다. cell zone과 축이 만나는 부분 뿐만 아니라 cell zone 외곽도 형상을 따라가지 못하고 있습니다.
이것은 표면 격자를 smoothing 하면서 생긴 결과입니다. baramMesh에서 snap – smoothing for surface의 디폴트 값이 3인데 이 값을 0으로 주면 이 문제는 해결됩니다. 단순한 형상의 성긴 격자의 경우 surface smoothing이 형상을 왜곡하는 경우가 있습니다.
Boundary layer – Feature angle threshold
snap 과정까지 성공적으로 격자가 만들어졌을 때 경계층 격자를 만들면서 문제가 생기는 경우가 있습니다. 아래의 왼쪽 그림에서 축에 경계층 격자를 넣었을 때 cell zone의 외곽 형상에 문제가 생겼음을 볼 수 있습니다. 이것은 Boundary Layer의 Feature angle threshold를 120으로 주었을 때의 결과입니다. Feature angle threshold는 각 면의 법선벡터가 이루는 각도가 이 값보다 크면 모서리 부분에 경계층 격자를 만들지 않는 옵션인데, 성긴 격자의 경우 각이 클 때(90 이상의 값) 형상에 변형이 오는 경우가 있습니다. 아래 그림의 왼쪽은 120일 때의 결과이며 오른쪽은 60일 때의 결과입니다.
Sliding mesh를 위한 interface에서 형상의 정밀한 구현이 되지 않으면 격자가 움직이면서 계산 초기에 발산하는 경우가 많이 있습니다. 이런 문제는 Geometry 단계에서 feature의 구현, Snap 단계에서 smoothing for surface 옵션, Boundary layer 단계에서 feature angle threshold 등을 잘 설정하면 해결할 수 있습니다.
두께가 없는 벽, baffle 형상 구현
회전축에 있는 블레이드를 두께가 없는 벽(baffle)로 모델링할 때 Snap의 “smoothing for surface ” 값을 크게 주면 형상의 왜곡이 생기는 경우가 있습니다. 아래 그림의 왼쪽은 형상 파일이며 가운데는 “smoothing for surface”를 3으로 주었을 때의 결과입니다. 회전축과 baffle이 만나는 부분과 baffle의 끝 부분 모서리에 약간의 형상 왜곡이 있음을 볼 수 있습니다. “smoothing for surface”를 0으로 주면 오른쪽 그림과 같은 결과를 얻을 수 있습니다.
baffle이 배경격자와 정확히 45도 각도를 이루고 있을 때 표면의 snap에 문제가 발생할 수 있습니다. 배경격자는 같은 크기의 정육면체이고 baffle이 배경격자의 대각선 방향일 때 그림의 위쪽과 같이 표면의 형상에 문제가 생깁니다. 이런 경우 배경격자의 x,y,z 방향의 개수를 조절하여 직육면체로 만들면 그림의 아래쪽과 같이 이 문제를 해결할 수 있습니다.
Great tips thankyou. I’m so grateful you made BaramMesh and BaramFlow! Please continue to make more helpful information about them