hp-적응

편집 역사 토론
수치해석 구조해석 시뮬레이션 마지막 수정: 2026-09-15 04:39:30

상위 문서: 유한요소법

1. 개요[편집]

hp-적응(hp-adaptivity)은 유한요소법에서 요소 크기 hh와 다항식 차수 pp요소별로 함께 조절해 오차를 줄이는 기법이다. 요소를 쪼개는 h-적응과 차수를 올리는 p-적응을 하나의 틀에서 섞어 쓰는 것이며, 잘 하면 오차가

uuhpCebNθ\|u - u_{hp}\| \le C e^{-b\,N^{\theta}}

처럼 자유도 NN에 대해 지수적으로 줄어든다. h-적응만 쓰면 오차는 O(Np/d)O(N^{-p/d}) 로 대수적으로만 줄어든다. 이 대수 → 지수 도약이 hp-적응이 “수치해석의 가장 좋은 공짜 점심”이라 불리는 이유이고, 동시에 구현이 지옥인 이유다.1

2. 왜 섞어야 하는가[편집]

해가 매끈한 곳과 특이한 곳에서 최적 전략이 정반대라서다.

국소 해의 성질최적 선택이유
해석적으로 매끈pp를 올린다차수에 대해 지수 수렴
특이점·재진입 모서리hh를 줄인다차수를 올려도 수렴 차수가 특이성 지수에 묶임
경계층·급한 구배이방적 hh + 중간 pp얇은 방향만 쪼갠다
불연속(충격파)hh를 줄이고 pp내린다고차가 진동을 만든다

L자형 영역의 재진입 모서리에서 해는 rλr^{\lambda} (λ=2/3\lambda = 2/3) 꼴로 거동하므로 차수를 아무리 올려도 수렴이 λ\lambda에 걸린다. 반대로 매끈한 내부에서 요소를 쪼개는 것은 자유도만 낭비한다. 유명한 결과는 특이점 주변으로 요소 크기를 기하급수적으로 줄이면서(등비율 σ0.15\sigma \approx 0.15) 바깥으로 갈수록 차수를 선형으로 올리는 기하 격자가 지수 수렴을 회복한다는 것이다. 바브슈카와 구오가 1980년대에 증명했고, 이후 모든 hp 코드가 이 패턴을 목표로 삼는다.

3. 무엇을 보고 결정하는가[편집]

hp-적응은 두 단계 결정이다. 먼저 어느 요소를 다듬을지, 다음이 h인지 p인지.

첫 단계는 사후 오차 추정자(오차 추정자)가 담당한다.

  • 잔차 기반. 요소 내부 잔차와 요소 간 플럭스 도약을 재서 국소 오차 지표를 만든다. 구현이 단순하고 상계를 준다.
  • 회복 기반. 지엔키에비치-주 방식으로 응력을 매끄럽게 회복시킨 뒤 원래 값과의 차이를 오차로 본다. 구조해석 상용 코드의 사실상 표준.
  • 쌍대 가중 잔차. 관심 물리량(항력, 특정 점의 응력) 하나에 대한 오차를 줄이려면 쌍대 문제를 함께 풀어 가중치를 얻는다. 목표 지향 적응이라 부르며, 비싸지만 “필요한 곳만” 다듬는다.

두 번째 단계가 hp의 고유한 어려움이다. 대표적 판정 전략은 이렇다.

  1. 매끄러움 추정. 요소 해를 르장드르 다항식으로 전개해 계수의 감쇠율을 본다. 지수적으로 떨어지면 매끈하니 pp를 올리고, 대수적으로 떨어지면 특이하니 hh를 줄인다. 계수 몇 개로 판단하므로 저렴하다.
  2. 참조 해 비교. 요소를 쪼갠 해와 차수를 올린 해를 둘 다 계산해 자유도당 오차 감소가 큰 쪽을 고른다(데믜코비치-솔린 방식). 가장 신뢰할 수 있고 가장 비싸다.
  3. 예측 기반. 이전 단계에서 예상한 오차 감소와 실제를 비교해, 예상만큼 줄지 않았으면 전략을 바꾼다.

4. 구현이 어려운 이유[편집]

  • 행 매달림 절점(hanging node). 요소를 국소적으로 쪼개면 이웃과 절점이 안 맞는다. 연속성을 지키려면 제약 조건을 걸어야 하고, 그 제약이 차수가 다른 이웃과 겹치면 코드가 급격히 복잡해진다.
  • 차수 불일치 접합. 차수 3 요소와 차수 6 요소가 면을 공유하면 그 면에서 낮은 차수로 사영해 맞춘다(“minimum rule”). 이 사영을 빼먹으면 해가 불연속이 되어 수렴 차수가 통째로 무너지는데, 증상이 조용해서 찾기 힘들다.
  • 조건수. 고차 요소는 질량·강성 행렬 조건수가 pp에 따라 빠르게 나빠진다. 계층적(hierarchic) 기저와 적절한 스케일링, 정적 응축이 필수다. 전처리기도 다중격자 대신 pp-다중레벨이나 요소별 블록 자코비를 쓴다.
  • 희소행렬 패턴 변화. 적응 단계마다 자유도 수와 연결 구조가 바뀌므로 행렬 조립·재배열·전처리기를 매번 다시 만든다. 병렬 환경에서는 부하 재분배까지 따라온다. 실무에서 hp 도입을 포기하는 가장 흔한 이유가 성능이 아니라 이 인프라 비용이다.
  • 적분 차수. 차수가 요소마다 다르면 구적점 수도 요소마다 다르다. 곡선 경계 요소에서는 기하 사상 차수까지 맞춰야 하고, 적분이 부족하면 요소 잠김이나 영에너지 모드가 생긴다.

5. 어디서 쓰이나[편집]

  • 탄성·구조해석. 응력 집중과 균열 선단이 정확히 hp가 이기는 상황이다. 재료 계면과 모서리에 h를, 나머지에 p를 준다.
  • 전자기 해석. 고주파 문제는 파장당 요소 수가 필요한데, 고차 요소가 자유도를 훨씬 아낀다. 다만 벡터 유한요소 공간에서의 hp 적합성이 추가 제약을 만든다.
  • 스펙트럴 요소법과의 관계. 스펙트럴 요소법은 사실상 균일 고차 pp를 쓰는 특수한 경우다. hp-적응은 여기서 pp를 국소화한 확장으로 볼 수 있고, 지진파·해양 모델에서 지형이 급한 영역에만 차수를 낮추는 식으로 쓰인다.
  • 불연속 갤러킨법 기반 CFD. DG는 요소 간 연속성을 요구하지 않으므로 차수 불일치 문제가 저절로 사라진다. 그래서 hp 구현 난이도가 연속 갤러킨보다 훨씬 낮고, 현대 hp-적응 CFD 코드가 대부분 DG인 이유가 이것이다.2

6. 실무 조언[편집]

적응을 켜기 전에 균일 세분화로 수렴을 먼저 확인하는 게 순서다. 적응 격자에서 수렴이 안 되면 원인이 오차 추정자인지 물리인지 구분이 안 된다. 그리고 적응 단계 수는 보통 5~8회면 충분하다 — 그 이상 돌려도 자유도만 늘고 관심 물리량은 안 변하는 구간에 들어간다. 격자 수렴 지수로 정량화해 놓고 멈추는 게 좋고, “오차 추정자가 수렴했다”는 말은 “해가 맞다”와 다르다는 점도 기억할 만하다.3

7. 관련 문서[편집]

8. Footnotes[편집]

  1. “지수 수렴”이라는 단어에 홀려 손으로 구현하려 들면 행 매달림 절점에서 현생이 끝난다. deal.II, MFEM, hp-FEM 계열 라이브러리를 쓰는 게 인생에 이롭다.

  2. DG의 대가는 자유도 증가다. 같은 차수에서 연속 갤러킨보다 자유도가 몇 배 많다. “적응이 쉬운 대신 기본 비용이 비싸다”는 거래인데, 적응을 정말 쓰면 남는 장사가 된다.

  3. 오차 추정자는 자기가 재는 노름에서만 정직하다. 에너지 노름 오차가 0.1%인데 어떤 점의 응력은 30% 틀릴 수 있다. 관심 물리량이 정해져 있으면 목표 지향 적응을 쓰자.