유체 계산은 공간을 작은 요소로 나누어 근사해요. 다음은 원문의 특정 프로그램을 재현한 것이 아니라, 한 방향으로 이동하는 색소의 자체 1차원 갱신식이에요. 어떤 칸의 현재 농도 c와 왼쪽 칸의 농도 b는 모두 0 이상이에요. 한 단계 뒤 농도를 c′라고 쓰고 다음 규칙을 문제에서 정해요.
여기서 C=uΔt/h입니다. u≥0은 오른쪽 이동 속도(m/s), Δt>0은 한 단계 시간(s), h>0은 칸 길이(m)여서 C는 단위 없는 수예요. 이전 단계의 두 값을 동시에 사용하며, 모든 유체 시뮬레이션에 이 식을 적용한다고 주장하지 않아요.
u=0.8m/s, h=0.2m, Δt=0.5s이면 C=2입니다. c=1, b=0을 넣으면 c′=−1로 실제 색소 농도로 읽을 수 없는 음수가 나와요. 같은 u,h에서 Δt를 0.125s로 줄이면 C=0.5, c′=0.5가 돼요.
0≤C≤1이면 두 계수가 모두 비음수이고 합은 1이므로, 어떤 비음수 b,c를 넣어도 c′는 비음수예요. C>1에서는 앞의 c=1,b=0이 언제나 음수 반례를 줘요. 따라서 이 식에서 모든 비음수 입력의 비음수를 보장하는 조건은 0≤C≤1입니다. 이것은 농도의 허용 범위를 유지하는 조건이며 계산의 정확도가 충분하다는 별도 증명은 아니에요.
참고한 수학 개념: Plus · Maths in a Minute: Computational fluid dynamics.
이 글의 생활 상황과 계산 예시는 수학 이야기에서 새로 구성했습니다.
