Geometry

BaramMesh에서 geometry는 다음의 3가지 목적으로 만들어진다.

  • 물체의 형상을 표현하기 위해

  • 격자 내부의 특정 영역을 구분 짓기 - cell zone을 만들거나 격자의 조밀도를 지정하기 위해

  • 외부 유동의 경우 계산 영역을 정의하기 위해

Import

복잡한 물체의 형상은 CAD 파일(stl 파일)을 사용한다. Import 버튼으로 파일을 선택할 수 있다.

파일을 불러올 때 면들의 각도(feature angle)를 이용해서 분리할 수 있다. 이 때 stl 파일의 삼각형 격자가 한 평면에 있더라도 수직벡터(normal vector)의 방향이 반대이면 다른 면으로 나누어지기 때문에 stl 파일의 수직벡터를 확인해야 한다.


Import stl 파일

stl 파일을 읽어오면 Geometry 창에 표시되고 그 아래에 surface가 표시된다. 여러 개의 solid 영역으로 구성된 파일의 경우 각각의 solid 영역은 분리되어 하위 레벨로 따로 표시된다.

Add

간단한 물체의 형상이나 격자 내부의 영역 구분, 외부 유동의 계산 영역 정의 등과 같이 간단한 형상은 Add를 통해 만들 수 있다.

Hex, Cylinder, Sphere, Hex6의 4가지 primitive 형상이 제공된다. Hex6는 Hex와 같이 육면체인데 6개의 면이 분리되어 있는 것으로 외부 유동의 계산 영역을 정의할 때 사용된다. Hex6는 snappyHexMesh에서 geometry로 다루지 않기 때문에 물체의 형상을 표현하는 용도로는 제한이 있다.

4가지 primitive 형상은 volume과 surface로 만들어진다. Geometry 리스트에 surface는 volume의 하위 레벨로 표시된다.

Type

volume과 surface는 다음과 같은 속성(type)을 갖는다. 리스트에서 항목을 오른쪽 마우스 버튼으로 선택하면 수정할 수 있다.

  • Volume은 None / CellZone 둘 중 하나

  • Surface는 Boundary / None / Interface 셋 중 하나

    • Interface는 None / Non-Conformal / Inter-Region 셋 중 하나

Surface의 속성이 boundary이면 격자의 경계면이 된다. Cell zone을 위해 만든 형상의 surface 속성이 boundary가 되면 외부와 내부가 분리되기 때문에 그 중 하나를 계산영역으로 인식하지 않아 격자를 만들지 않게 된다. 그래서 cell zone이 경계면으로 구분될 필요가 없을 때는 none으로 주고, slidng mesh에서 처럼 cell zone이 움직일 때는 interface로 설정해야 한다.

Interface 속성을 갖는 surface는 같은 위치에 2개의 경계면이 만들어 진다. 해당 surface 이름에 _slave가 붙은 경계면이 추가로 만들어 진다.

아무런 interface 속성을 주지 않은(none) 경우 두 면에 똑같은 격자가 만들어지고 non-conformal인 경우 두 면의 격자가 달라질 수 있다. porous jump, fan 경게조건과 같이 OpenFOAM의 cyclic polyPatchType을 사용해야 하는 경우는 non-conformal을 사용하면 안된다. Sliding mesh와 같이 한쪽은 움직이고 다른 쪽은 움직이지 않는 경우에는 non-conformal을 사용해야 한다. None과 non-conformal은 오픈폼의 snappyHexMeshDict 파일의 castellatedMeshControlds에서 surface refinement를 정의할 때 faceType이 baffle인지 boundary인지의 차이이다. None(baffle)인 경우 2개의 경계면이 만들어지지만 두 면이 공통된 점을 사용하기 때문에 한쪽면은 움직이고 다른쪽은 움직이지 않을 때 사용할 수 없다.

여러 개의 region이 있는 경우 region간의 경계면은 inter-region으로 주어야 한다.


Geometry import/add 예