1. 개요[편집]
| 스펙트럴 요소법 Spectral Element Method (SEM) | |
|---|---|
| 제안 | 패테라 (Patera, 1984) — 채널 확장부 층류 |
| 정체 | 유한요소의 영역분할 + 요소 내부의 고차 스펙트럴 기저 |
| 절점 | 가우스-로바토-르장드르(GLL) 점 |
| 질량행렬 | 대각 — 역행렬이 나눗셈 한 번 |
| 수렴 | 매끄러운 해에서 차수 $p$ 에 대해 지수 수렴 |
| 연산자 비용 | 합 인수분해로 요소당 $\mathcal{O}(p^{d+1})$ |
| 대표 코드 | Nek5000 / NekRS · SPECFEM3D · Semtex |
| 진짜 병목 | 육면체 격자 생성 |
스펙트럴 요소법(spectral element method, SEM)은 영역을 요소로 쪼개는 유한요소의 유연함과, 요소 안에서 아주 높은 차수의 다항식을 쓰는 스펙트럴 방법의 정확도를 한 몸에 넣은 기법이다. 1984년 패테라가 채널 확장부 유동을 풀며 제안했다.
동기는 두 진영의 약점이 정확히 상보적이라는 데 있다. 스펙트럴 방법은 전 영역을 하나의 삼각함수·다항식 급수로 전개해 오차가 지수적으로 줄지만, 주기 상자나 매끈한 직사각형이 아니면 쓸 수가 없다. 유한요소법은 아무 형상이나 다루지만 보통 1~2차라 오차가 로 느리게 줄고 격자를 잘게 쪼개야 한다. SEM은 “형상은 요소로, 정확도는 차수로” 라는 분업을 택한다.
실무에서 이게 왜 중요한가. 난류나 파동은 “긴 시간·긴 거리를 오차 누적 없이” 옮겨야 하는 문제다. 저차 기법의 수치확산과 위상 오차는 파장당 격자점을 아무리 늘려도 결국 누적되지만, 고차 기법은 파장당 점 수가 몇 개만 넘어가면 오차가 급락한다. 지진파 전파와 직접 수치 모사에서 SEM이 표준이 된 이유가 이것이다.
2. 어떻게 생겼나[편집]
요소 하나를 기준 정육면체 로 사상하고, 각 방향에 가우스-로바토-르장드르(GLL) 절점을 깐다. 차 요소라면 한 방향에 개, 3차원이면 개의 절점이 텐서곱으로 놓인다. 기저는 그 절점에서의 르장드르 다항식 기반 라그랑주 보간다항식이고, 절점에서 값이 1 아니면 0이므로 미지수가 곧 절점의 물리값이다. 요소 경계의 절점은 이웃과 공유해 연속을 만든다 — 이 점에서 SEM은 연속 갤러킨이고, 요소마다 독립인 불연속 갤러킨법과 갈린다.
여기서 이 방법의 상징적 트릭이 나온다. 적분 구적점을 절점과 같은 GLL 점으로 잡는 것.
이므로 질량행렬이 정확히 대각이 된다. 양해법 시간적분에서 매 스텝 선형계를 푸는 대신 가중치로 나누기만 하면 된다. 지진파 코드가 SEM을 채택한 결정적 이유가 이것이다. 대가로 GLL 구적은 차까지만 정확해서 질량행렬 원소( 차)를 미세하게 과소적분하지만, 그 오차는 기법의 수렴 차수를 떨어뜨리지 않는다.1
3. 왜 지수적으로 수렴하나[편집]
해가 매끄러우면(해석적이면) 다항식 근사 오차가 차수에 대해 로 줄어든다. 격자를 쪼개는 -세분화가 이라는 다항식 속도를 주는 반면, 차수를 올리는 -세분화는 지수 속도를 준다. 정확도 한 자릿수를 더 얻는 비용이 압도적으로 싸다는 뜻이다.
단, 이 특권에는 조건이 붙는다.
- 해가 매끄러워야 한다. 요소 안에 충격파·특이점·재진입 모서리가 있으면 지수 수렴은 즉시 사라지고 심지어 깁스 진동이 생긴다. 특이점 주변은 요소를 잘게(), 매끈한 곳은 차수를 높게() 가는 hp-적응이 정공법이다.
- 격자가 뒤틀리면 안 된다. 사상의 야코비안이 나빠지면 실효 차수가 깎인다. 고차 기법일수록 격자 품질에 예민하다.
4. 비용을 감당하는 법 — 합 인수분해[편집]
개 미지수를 가진 요소 강성행렬을 순진하게 만들면 원소 수가 이다. 이면 요소 하나에 26만 개, 메모리부터 감당이 안 된다. 살길은 텐서곱 구조를 절대 풀어헤치지 않는 것이다. 3차원 미분 연산자는 1차원 연산자 세 개의 텐서곱이므로, 방향마다 순차로 적용하면
로 떨어진다(합 인수분해). 행렬을 아예 만들지 않고 “벡터에 연산자를 작용시키는 함수”만 제공하는 행렬-프리 구현이 표준이고, 크리로프 부분공간법과 궁합이 좋다. 덤으로 이 커널은 작은 밀집 행렬곱의 연속이라 GPU에서 잘 터진다 — NekRS 같은 코드가 여기서 이득을 본다.
대신 조건수가 아프다. 강성행렬의 조건수는 1차원에서 대략 규모로 커지고 요소 크기까지 곱해지므로, 반복해법에 전처리기가 선택이 아니라 필수다. 저차 유한요소 이산화를 전처리기로 쓰는 오르사그의 고전적 아이디어와, 요소 단위 중첩 슈바르츠 + 다중격자 조합이 표준 처방이다.
5. 비압축성 유동에서의 함정[편집]
나비에-스토크스 방정식을 SEM으로 풀 때 두 가지가 반드시 문제를 일으킨다.
압력 체커보드. 속도와 압력을 같은 차수로 두면 inf-sup(LBB) 조건이 깨져 허위 압력 모드가 뜬다. 표준 해법은 – 정식화 — 속도는 GLL 절점의 차, 압력은 요소 내부 가우스 점의 차로 두 단계 낮춰 잡는 것이다.
에일리어싱. 비선형 이류항 는 두 차 다항식의 곱이라 차인데, 차 공간에서 구적하면 고주파가 저주파로 접혀 들어온다. 이 에너지는 갈 곳이 없어 쌓이고, 레이놀즈수가 높을수록 확실하게 폭주한다. 처방은 과적분(3/2 법칙) 또는 스펙트럴 필터링, 그리고 이산적으로 에너지를 보존하는 왜대칭형 정식화다. 고차 코드가 “돌다가 갑자기 NaN”이 되는 사고의 절반은 여기서 나온다.2
여기에 시간간격 제한도 더 가혹하다. GLL 점은 요소 경계 쪽으로 몰리므로 최소 간격이 이고, CFL 조건도 그만큼 조여진다. 고차로 얻은 이득 일부는 짧아진 로 반납한다.
6. 현장[편집]
- 지진학 — SPECFEM3D. 지구 전체 규모의 탄성파 전파에서 사실상 표준이다. 대각 질량행렬 덕에 양해법으로 수백만 스텝을 돌린다.
- 난류 DNS/LES — Nek5000(아르곤 국립연구소)과 GPU 판 NekRS. 원자로 노심, 연소기 같은 복잡 형상의 고정밀 해석에 쓰인다.
- 해양·대기 — 구면 위의 분광요소 동역학 코어.
- 범용 프레임워크 — deal.II, MFEM, Firedrake가 고차 요소를 지원한다.
그런데 SEM의 실전 병목은 수학이 아니다. 육면체 격자 생성이다. 사면체 격자는 자동 생성기가 잘 뽑아주지만, 고차 SEM이 좋아하는 품질 좋은 육면체 격자는 여전히 반쯤 수작업이다.3 이 바닥 격언대로 결국 격자가 다 했다.
7. 관련 문서[편집]
8. Footnotes[편집]
-
정확히는 질량행렬을 “뭉치는(lumping)” 근사와 결과가 같지만, 저차 요소에서의 질량 뭉치기가 정확도를 깎는 임시방편인 것과 달리 여기서는 구적 오차가 이산화 오차와 같은 차수 안에 들어간다. 이걸 두고 “SEM은 공짜로 대각 질량행렬을 얻는다”고들 한다. ↩
-
저차 코드가 같은 상황에서 멀쩡해 보이는 이유는 수치확산이 그 에너지를 알아서 태워주기 때문이다. 즉 저차 기법은 틀린 답을 안정적으로 주고, 고차 기법은 맞는 답을 주거나 폭발하거나 한다. 어느 쪽이 나은지는 취향이 아니라 상황의 문제다. ↩
-
그래서 최근에는 사면체·다면체 격자 위의 고차 불연속 갤러킨으로 우회하려는 흐름이 있다. 대각 질량행렬이라는 SEM의 최대 장점을 일부 포기하는 대신 격자 생성 지옥에서 탈출하는 거래다. ↩