1. 개요
격자가 좋으면 해석의 절반은 끝난 것이다. 문제는 그 절반이 전체 일정의 절반을 잡아먹는다는 것이다.
격자(mesh, grid)는 연속적인 해석 공간을 유한 개의 셀(cell) 또는 요소(element)로 분할하여, 편미분방정식을 컴퓨터가 풀 수 있는 대수방정식으로 이산화할 수 있게 만드는 공간 분할 구조이다. 유한체적법이든 유한요소법이든 유한차분법이든, 컴퓨터는 연속체를 직접 다룰 수 없으므로 모든 수치해석은 격자에서 시작한다.
격자는 단순한 전처리 산출물이 아니라 해의 품질을 직접 결정하는 요소다. 같은 솔버, 같은 경계 조건이라도 격자가 나쁘면 수렴이 안 되거나, 더 무섭게는 그럴듯하게 수렴한 틀린 답이 나온다. 전산유체역학 업계에서 “Garbage in, garbage out”의 garbage 1순위가 바로 격자다.
이 문서는 격자라는 대상 자체(분류·셀 형상·품질 지표)를 다루는 허브다. 실제로 격자를 뽑는 알고리즘과 작업 절차는 메시 생성이, 격자를 조밀하게 해 가며 해의 신뢰도를 주장하는 절차는 메시 독립성 연구와 격자 수렴 지수가, 벽 근처 해상도 결정은 경계층·벽함수가 각각 맡는다.
2. 격자의 분류
2.1. 정렬 격자
정렬 격자(structured grid)는 셀이 인덱스로 규칙적으로 배열된 격자다. 이웃 셀을 인덱스 연산만으로 찾을 수 있어 연결 정보(connectivity)를 따로 저장할 필요가 없고, 메모리 효율과 솔버 성능이 좋다. 격자선을 유동 방향에 정렬시키면 수치 확산(numerical diffusion)도 줄어든다. 단점은 복잡한 형상에 씌우기가 고통스럽다는 것. 멀티블록(multi-block) 기법으로 어느 정도 극복하지만, 블록 토폴로지 설계 자체가 장인의 영역이다.1
2.2. 비정렬 격자
비정렬 격자(unstructured grid)는 셀 배열에 규칙이 없어 임의의 연결 관계를 명시적으로 저장하는 격자다. 사면체나 다면체 셀로 복잡한 형상을 자동으로 채울 수 있어 산업 현장의 대세가 되었다. 대가는 연결 정보 저장에 따른 메모리 증가, 간접 주소 참조로 인한 캐시 효율 저하, 그리고 일반적으로 정렬 격자보다 떨어지는 해의 정확도다.
2.3. 하이브리드 격자
벽 근처는 프리즘 층으로, 내부는 사면체나 다면체로 채우는 절충안. 경계층은 벽에 수직한 방향으로 얇고 정렬된 셀이 필요하고, 먼 영역은 아무래도 좋다는 유동의 특성을 반영한 것으로, 현대 자동 격자 생성기의 표준 전략이다.
3. 셀 형상
| 형상 | 장점 | 단점 |
|---|---|---|
| 육면체 (hexa) | 정확도 높음, 같은 해상도에 셀 수 적음 | 자동 생성 어려움 |
| 사면체 (tetra) | 완전 자동 생성 가능 | 수치 확산 큼, 셀 수 폭증 |
| 프리즘 (prism) | 경계층에 최적 | 단독 사용 불가 |
| 다면체 (polyhedral) | 이웃 많아 구배 계산 유리, 셀 수 절감 | 생성기 제한적, 후처리 불편 |
육면체는 면이 좌표 방향에 정렬될 때 절단 오차가 상쇄되는 이점이 있고, 사면체는 같은 정확도를 내려면 훨씬 많은 셀이 필요하다. 다면체는 이웃 셀이 보통 10개 이상이라 최소제곱·그린-가우스 구배 재구성이 안정적이다. “사면체를 다면체로 변환하면 셀 수가 3~5배 준다”는 수치가 널리 인용되지만, 이는 상용 코드 벤더의 자사 변환기 벤치마크에서 나온 값이고 형상·세분 설정에 따라 편차가 크다 — 그대로 옮겨 적기보다 자기 케이스에서 직접 재는 편이 안전하다.2 셀 수가 줄어도 셀당 면 수가 늘어 플럭스 계산량은 비례해서 줄지 않는다는 점도 자주 빠지는 단서다.
4. 경계층 격자와 y+
벽 근처 유동은 벽에 수직한 방향으로 구배가 극심하므로, 벽면을 따라 얇은 셀을 겹겹이 쌓는 경계층 격자(inflation layer)가 필요하다. 첫 셀의 높이는 무차원 벽 거리
로 관리한다. 난류 모델링에서 벽함수(wall function)를 쓰면 첫 셀 중심이 로그 법칙 영역인 에 오도록, 벽까지 직접 해석(low-Re 접근)하려면 이 되도록 첫 셀 높이를 잡는다.3 층간 성장률(growth ratio)은 통상 1.2 내외로 유지한다.
문제는 해석을 돌리기 전에는 를, 따라서 를 모른다는 것이다. 그래서 평판 마찰계수 상관식으로 한 번 추정한 뒤 격자를 만들고, 해석 후 실제 분포를 확인해 다시 조이는 반복이 관례다. 난류 평판 상관식 (경계층 참고)을 쓰면 첫 셀 높이는 이렇게 역산된다.
숫자를 넣어 보면 감이 온다. 20 °C 공기( m²/s)가 m/s 로 길이 1 m 판 위를 흐르면 , , m/s 다. 을 맞추려면 첫 셀 중심이 m, 즉 12 μm 여야 하고 셀 높이는 그 두 배인 24 μm 쯤이 된다. 벽함수를 쓰려고 을 노리면 같은 식에서 0.61 mm — 꼭 50배 여유다. 이 한 자릿수 차이가 프리즘 층 수와 전체 셀 수를 통째로 갈라놓는다.4
5. 격자 품질 지표
- 왜곡도(skewness) — 셀이 이상적인 형상(정육면체, 정사면체)에서 얼마나 찌그러졌는지. 0이 이상적이며 1에 가까우면 퇴화 셀이다. 정의가 도구마다 달라서 같은 격자가 어떤 툴에서는 합격, 다른 툴에서는 불합격 판정을 받기도 한다.5
- 종횡비(aspect ratio) — 셀의 가장 긴 변과 짧은 변의 비. 경계층처럼 구배 방향이 명확한 곳에서는 수백 대 일도 허용되지만, 유동 방향이 불명확한 영역에서 큰 종횡비는 수렴을 망친다.
- 비직교성(non-orthogonality) — 이웃 셀 중심을 잇는 벡터와 공유 면의 법선 벡터 사이의 각도. 유한체적법에서 확산항은 면 법선 방향 구배로 계산되는데, 비직교성이 크면 셀 중심 값만으로 이 구배를 정확히 표현할 수 없어 교차 확산(cross-diffusion) 보정항이 필요해진다. 이 보정항은 명시적(explicit) 으로, 즉 직전 반복의 값을 써서 우변에 얹는 방식으로 처리되므로 계수 행렬의 대각 지배성을 강화해 주지 못한다. 비직교성이 클수록 수렴이 느려지고 불안정해지는 이유가 이것이다.
OpenFOAM을 예로 들면 임계값이 문서화돼 있다. snappyHexMesh 의 meshQualityControls 기본값은 최대 면 비직교각 maxNonOrtho 65, 내부 면 왜도 maxInternalSkewness 4, 경계 면 왜도 maxBoundarySkewness 20 이고, checkMesh 는 비직교각이 70°를 넘으면 경고를 띄운다. 실무 감각으로는 40° 아래면 별도 처리가 필요 없고, 40~70° 구간은 fvSolution 의 nNonOrthogonalCorrectors 를 켜고 라플라시안 스킴을 corrected 로 바꿔서 버티며, 85°를 넘어가면 보정으로 살릴 단계가 아니라 격자를 다시 뽑아야 한다. 다만 이 숫자들은 OpenFOAM 의 정의 기준이고, 왜도·직교성의 정의는 코드마다 다르므로 다른 솔버의 임계값과 직접 비교하면 안 된다.
6. 격자 수렴성 연구 — 어디로 가야 하나
격자를 조밀하게 할수록 해가 격자 무관(grid-independent) 상태로 수렴하는지 확인하는 절차로, 해석 결과의 신뢰성을 주장하려면 사실상 필수다.6 체계적으로 세분화 비율 만큼 조밀한 격자 세 벌에서 관심 물리량 를 얻으면, 리처드슨 외삽으로 격자 간격이 0인 극한값을 추정할 수 있다.
여기서 은 가장 조밀한 격자의 해, 는 관측된 수렴 차수(이론 차수가 아니다), 은 두 격자 사이의 상대 오차이며, 세 격자 연구에서는 로치(Roache)의 안전계수 를 쓴다. 격자 두 벌만으로 를 가정해 쓸 때는 으로 올린다 — 관측 차수를 확인하지 못한 값이라 그만큼 보수적으로 잡는 것이다.
이 절차의 전체 이야기(관측 차수 계산, 진동 수렴 처리, 무엇을 보고해야 하는가)는 격자 수렴 지수가, 그 위에서 “결국 어느 격자를 쓸 것인가”를 정하는 실무 절차는 메시 독립성 연구가 맡는다. 스터디용 격자 세 벌을 같은 크기 함수의 스칼라배로 뽑아야 한다는 전제는 메시 생성 소관이며, 이걸 어기면 여기서 나온 는 아무 의미가 없다. ASME V&V 20 등 검증·확인(V&V) 표준이 이 개념 위에 서 있다.
7. 격자 생성 도구
- 오픈소스: OpenFOAM의 blockMesh(정렬)와 snappyHexMesh(핵사 지배 자동 격자), cfMesh, GMSH, Salome 등.
- 상용: ANSYS Meshing과 Fluent Meshing, Pointwise(현 Cadence Fidelity Pointwise), BETA CAE ANSA 등. Pointwise는 정렬/멀티블록 격자의 장인 도구로 항공우주 분야에서 특히 사랑받는다.
8. 현업에서의 현실
- “해석 시간의 절반은 격자”라는 말은 과장이 아니라 통계에 가깝다. CAD 클린업까지 포함하면 절반을 넘긴다.
- 격자 수를 두 배로 늘렸는데 결과가 5% 바뀌었다면, 아직 격자 수렴이 안 된 것이다. 일정이 없어서 그냥 간다면, 보고서에는 조용히 적지 않게 된다.
- 자동 사면체 격자 버튼은 달콤하다. 그 달콤함의 청구서는 수렴하지 않는 잔차 그래프로 날아온다.
- 격자 독립성 연구를 요구하는 리뷰어와 내일까지 결과를 요구하는 상사 사이에서, 엔지니어는 오늘도 성장률 1.2를 지킨다.
9. 관련 문서
- 전산유체역학
- 유한체적법 · 유한차분법 · 유한요소법
- 메시 생성 · 메시 독립성 연구 · 격자 수렴 지수
- 경계층 · 벽함수 · 난류 모델링
- 경계 조건
- CFL 조건 · 수치확산 · 절단오차
- OpenFOAM
- 구조해석
10. Footnotes
-
O-grid, C-grid, H-grid 같은 토폴로지 용어가 따로 있을 정도다. 잘 짜인 멀티블록 격자는 예술 작품 취급을 받으며, 실제로 그것을 만든 사람은 퇴사하면 안 되는 인력으로 분류된다. ↩
-
벤더 백서의 “3~5배” 는 대개 같은 사면체 격자를 자사 변환기로 병합한 전후 비교다. 비교 대상이 잘 만든 핵사 격자였다면 숫자가 저렇게 나오지 않는다. 마케팅 자료의 배수는 분모가 무엇인지부터 확인하는 것이 예의. ↩
-
첫 셀 높이를 마이크로미터 단위로 계산하고 있는 자신을 발견했다면, 축하한다. 당신은 이제 진짜 CFD 엔지니어다. ↩
-
첫 셀 높이를 로 잡을 때 툴마다 “셀 중심”을 요구하는지 “셀 높이”를 요구하는지가 다르다. 2배 차이를 무시하고 넣었다가 가 목표의 딱 2배로 나오는 사고는 이 바닥의 통과의례다. ↩
-
그래서 격자 품질로 논쟁이 붙으면 “어느 툴 기준인데?”부터 물어봐야 한다. 참고로 자기 격자가 통과되는 툴의 기준을 인용하는 것이 업계의 오랜 전통이다. ↩
-
논문 심사에서 “격자 수렴성 연구를 수행했는가?”는 국룰 질문이다. 답이 궁색하면 major revision이 날아온다. ↩
이 문서의 주요 출처
- OpenFOAM User Guide — Mesh quality (meshQualityControls 기본값)
- Roache, P. J. (1994). Perspective: A Method for Uniform Reporting of Grid Refinement Studies. J. Fluids Eng. 116(3), 405
- ASME V&V 20-2009 — Standard for Verification and Validation in CFD and Heat Transfer
- Thompson, Soni & Weatherill (eds.), Handbook of Grid Generation (CRC Press, 1999)
의견을 반영할게요. 감사합니다.