Numpilot
손안의 수치해석/3부 계산의 기초

형상이 복잡해지면 (FEM)

17 / 30
2026-08-09 · 읽는 데 9분

FDM이 막히는 지점

14편의 방법은 격자를 규칙적인 사각형으로 자르는 것이었다. 판이나 원통 같은 단순한 형상에는 잘 맞는다.

그런데 형상이 이렇게 생겼다면 어떨까. 곡면이 있고, 구멍이 뚫려 있고, 두께가 위치마다 다르고, 모서리가 둥글게 처리된 실제 부품.

사각 격자를 대면 경계가 계단 모양이 된다. 매끄러운 곡선을 사각형 블록으로 표현하는 것이니 어쩔 수 없다.

이게 왜 문제인가. 경계는 조건이 붙는 곳이기 때문이다. 16편에서 봤듯 경계조건이 결과를 크게 좌우한다. 그 경계의 모양이 실제와 다르면, 면적이 달라지고 열이 빠져나가는 양이 달라진다.

격자를 아주 촘촘히 하면 계단이 작아져서 개선된다. 그런데 14편에서 봤듯 촘촘히 하면 계산량이 폭발한다. 정확도를 사려면 계산으로 지불해야 한다.

다른 접근: 조각을 형상에 맞춘다

FEM(Finite Element Method, 유한요소법)은 접근을 바꾼다.

격자를 정해놓고 형상을 맞추는 대신, 형상에 맞춰 조각을 만든다.

조각의 모양이 자유롭다. 삼각형, 사각형, 3차원이면 사면체. 크기도 위치마다 다를 수 있다. 곡면 근처에서는 작고 촘촘한 삼각형을, 변화가 완만한 안쪽에서는 크고 성긴 조각을 쓴다.

이러면 두 가지를 동시에 얻는다.

경계를 잘 표현한다. 삼각형은 어떤 형상의 윤곽이든 비교적 잘 따라간다.

필요한 곳에만 촘촘하게 한다. 온도가 급하게 변하는 곳에 조각을 몰아넣고, 완만한 곳은 성기게 둔다. 전체 조각 수를 아끼면서 필요한 정확도를 얻는다.

발상의 차이

두 방법의 근본적인 차이를 짚어두면 이해가 쉬워진다.

FDM은 점에서 생각한다. 각 격자점의 값이 이웃과 어떻게 관계되는지를 본다. 미분을 이웃 간의 차이로 바꾼다.

FEM은 조각에서 생각한다. 각 조각 안에서 온도가 어떻게 분포하는지를 단순한 함수로 가정한다. 예를 들어 삼각형 조각 안에서는 온도가 평면처럼 선형으로 변한다고 본다.

그러고 나서 조각들이 서로 맞물릴 조건전체적으로 물리 법칙을 만족할 조건을 세운다. 그 조건들을 모으면 커다란 연립방정식이 되고, 그걸 풀면 각 조각 꼭짓점의 온도가 나온다.

비유하면 이렇다. FDM은 벽면을 작은 점들로 나눠 각 점의 색을 정하는 것이고, FEM은 벽면을 타일로 덮고 각 타일 안에서 색이 어떻게 변하는지를 정하는 것이다.

대가는 무엇인가

FEM이 더 유연한데, 그러면 왜 우리는 FDM으로 시작했나. 대가가 있기 때문이다.

구현이 훨씬 복잡하다. 조각 만들기, 조각 간 연결 관리, 연립방정식 구성, 그 방정식 풀기. 각 단계가 FDM보다 무겁고 코드가 길다.

격자 만들기 자체가 어려운 문제다. 임의 형상을 좋은 삼각형들로 나누는 일은 그 자체로 연구 주제다. 그리고 실패할 수 있다. 너무 납작한 삼각형이 생기면 계산이 불안정해진다. 자동화된 격자 생성기도 이상한 형상에서는 나쁜 격자를 만든다.

메모리 사용을 예측하기 어렵다. 형상에 따라 조각 수가 크게 달라진다. 폰에서는 이게 곧 앱이 죽는 문제가 된다.

연립방정식을 풀어야 한다. FDM에서 시간을 앞으로 밀 때는 각 점을 독립적으로 갱신할 수 있었다. FEM은 모든 미지수가 얽힌 큰 방정식을 풀어야 한다. 계산 구조가 훨씬 무겁다.

그래서 우리의 선택

정리하면 이렇다.

FDM FEM
형상 자유도 낮다 높다
구현 복잡도 낮다 높다
메모리 예측 쉽다 어렵다
격자 생성 실패 거의 없다 가능하다
국소적 정밀 제어 어렵다 쉽다

우리는 FDM으로 시작하고, FEM을 이후 단계로 두었다.

이유는 성능이 아니라 신뢰성이다. 14편에서 말한 그 이야기다. 앱이 언제 죽을지 모르는 것보다, 조금 느려도 항상 끝나는 것이 낫다.

특히 격자 생성 실패가 결정적이었다. 사용자는 자기 형상이 격자 생성기를 곤란하게 만드는지 알 수 없다. 어떤 형상에서는 되고 어떤 형상에서는 실패하는 도구는 믿을 수 없는 도구가 된다.

그리고 9편에서 다룰 형상을 좁힌 결정이 여기서 정당화된다. 정해진 몇 가지 도형만 허용한다면, FDM으로 충분하다. 형상의 자유를 포기하는 대신 예측 가능성을 얻은 것이다.

그럼 FEM은 언제 필요한가

우리 로드맵에서 FEM은 두 상황에서 필요해진다.

첫째, 구조해석으로 확장할 때. 응력과 변형을 다루려면 FEM이 사실상 표준이다. 응력은 형상의 모서리와 구멍 주변에 집중되고, 그 국소적인 집중을 잡으려면 그 부분만 촘촘한 격자가 필요하다. FDM으로는 불편하다.

둘째, 3차원 실물 형상을 다룰 때. CAD 파일을 받아 계산하려면 FEM 계열이어야 한다.

둘 다 지금 단계가 아니다. 그리고 둘 다 폰만으로는 어렵다. 그때는 4편에서 말한 분할 — 계산은 기기에서 — 을 다시 검토해야 할 것이다. 무거운 3차원 FEM은 서버로 보내고, 가벼운 것은 기기에서 하는 혼합 방식.

즉 지금의 결정은 영구적인 것이 아니라 첫 단계의 것이다. 9편에서 “확장할 자리를 남겨뒀다”고 한 것이 이런 뜻이다. DSL의 다섯 칸 구조는 어떤 계산 기법을 쓰든 같다. 아래에서 FDM이 돌든 FEM이 돌든, 위층의 언어는 바뀌지 않는다.

계산 기법은 교체 가능한 부품이고, 언어는 그렇지 않다. 이게 2부를 3부보다 먼저 다룬 이유다.

다음 편에서는 계산의 신뢰성 문제로 들어간다. 격자를 정하는 판단을 시스템이 대신하기로 했으니, 그 판단이 옳았는지 어떻게 확인하는가.


다음 편 예고 — 수렴한다는 것은 무슨 뜻인가. 계산이 끝났다는 판단과, 그 답을 믿을 수 있다는 판단이 어떻게 다른지 짚는다.