Ships, Splashes, and Waves on a Vast Ocean ๋ ผ๋ฌธ์ ์ดํดํ๋ ๊ฒ์ ๋ชฉํ๋ก Robert Bridson ์ Fluid Simulation for Computer Graphics ๋ฑ์ ๊ธฐ๋ฐ์ผ๋ก ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค.
1. Navier-Stokes ๋ฐฉ์ ์
์ ์ฒด์ ์์ง์์ ์ ์ดํ๋ ๊ธฐ๋ณธ๋ฐฉ์ ์์ ๋๋น์-์คํ ํฌ์ค ๋ฐฉ์ ์์ด๋ค.
์ ์์์ u๊ฐ ์ ์ฒด์ ์๋์ฅ์ ์๋ฏธํ๋ค. ์ฐธ๊ณ ๋ก ๋ง์ง๋ง ํญ์ ์ ์ฑ์ ๋ํ ๊ฒ์ธ๋ฐ, ์ ์ฑ์ด ์๋ ๋ฌผ์ ๋ํด ๋ค๋ฃฐ ๊ฒ์ด๋ฏ๋ก ํด๋น ํญ์ ๊ณ ๋ คํ์ง ์๋๋ค.
์ ์์ด ๋๋น์-์คํ ํฌ์ค ๋ฐฉ์ ์์ด๊ณ , ์๋ ์์ ์ ์ฒด๊ฐ ๋น์์ถ์ฑ์ด ๋๋๋ก ํ๋ ์์ด๋ค. ์ฆ ๋ ์์ ์ด์ฉํ์ฌ ๋น์์ถ์ฑ ์ ์ฒด์ ์์ง์์ ํํํ ์ ์๋ค.
2. ์ค์ผ๋ฌ(Eulerian) ๊ด์ ๊ณผ ๋ผ๊ทธ๋์ง์ (Lagrangian) ๊ด์
์ฐ์์ฒด์ ์์ง์์ ๋ํด ์๊ฐํ ๋, ์ด๋์ ์ถ์ ํ๋ ๋ฐ๋ ๋ ๊ฐ์ง ์ ๊ทผ๋ฒ, ๋ผ๊ทธ๋์ง์ ๊ด์ ๊ณผ ์ค์ผ๋ฌ ๊ด์ ์ด ์๋ค.
๋ผ๊ทธ๋์ง์์ ์ ์ ํ๋ํ๋๋ฅผ ๋ฐ๋ผ๊ฐ๋ฉด์ ์ด ์ ์๊ฐ ์ด๋ป๊ฒ ๋ณํ๋์ง๋ฅผ ์ดํด๋ณด๋ ๊ฒ์ด๊ณ , ์ค์ผ๋ฌ ๊ด์ ์์๋ ์ ์๋ฅผ ์ถ์ ํ์ง ์๊ณ , ์ด๋ ๊ณ ์ ๋ '์์น'๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ทธ ์์น์ ๋ฌผ๋ฆฌ๋์ด ์ด๋ป๊ฒ ๋ณํ๋์ง๋ฅผ ์ดํด๋ณธ๋ค.
์๋ฅผ ๋ค์ด ์จ๋ 10๋์ธ ์ ์๊ฐ ์ง๋๊ฐ๊ณ ์จ๋ 20๋์ธ ์ ์๊ฐ ์ง๋๊ฐ๋ค๊ณ ํ์ ๋, ์ค์ผ๋ฌ ๊ด์ ์์๋ ๊ทธ ์จ๋ 10์ธ ์ ์๊ฐ ์จ๋๊ฐ ๋ณํ๋์ง ์๋ณํ๋์ง์๋ ๊ด์ฌ์ด ์๊ณ ๋จ์ง ์ฌ๊ธฐ ์ฐ๋ฆฌ๊ฐ ๋ณด๊ณ ์๋ ์์น์ ์จ๋๊ฐ 10๋์์ 20๋๋ก ๋ณํ๋ค ์ด๋ฐ ๊ด์ ์ผ๋ก ๋งํ๋ ๊ฒ์ด๋ค.
๋ผ๊ทธ๋์ง์ ๊ด์ ์ ์ ์ ์์คํ ์, ์ค์ผ๋ฌ ๊ด์ ์ ๊ณ ์ ๋ ๊ทธ๋ฆฌ๋ ์์คํ ์ ํด๋นํ๋ค๊ณ ํ๊ธฐ๋ ํ๋ค.
์ ์ฒด์ญํ์์๋ ๋ณดํต ์ค์ผ๋ฌ๊ด์ ์ ์ด์ฉํ๋ค.
๊ทธ๋ฐ๋ฐ ์ค์ผ๋ฌ ๊ด์ ์์๋ ์ ์๋ฅผ ์ถ์ ํ์ง ์์ผ๋๊น ์ฃผ์ด์ง ์ ์์ ๋ฌผ๋ฆฌ๋์ด ์ผ๋ง๋ ๋น ๋ฅด๊ฒ ๋ณํ๋์ง, ์๋ฅผ ๋ค์ด ๊ฐ์๋ ๊ฐ์ ๊ฒ๋ค์ ํ๋จํ ์ ๊ฐ ์๋ค.
๊ทธ๋์ ์ค์ผ๋ฌ ๊ด์ ์์ ๋ฌผ์ง์ ์ถ์ ํ๋ฉด์ ๋ฏธ๋ถํ๊ธฐ ์ํด ๋ฑ์ฅํ๊ฒ ๋ฌผ์ง ๋ฏธ๋ถ(material derivate)์ด๋ค.
์ด๋ค ๋ฌผ๋ฆฌ๋์ ๋ํ ์์(ex. q(t,x) - ์๊ฐ t, ์์น x์์ ๋ฌผ๋ฆฌ๋ q์ ๊ฐ)๋ฅผ ๊ทธ๋ฅ ํต์ผ๋ก ๋ฏธ๋ถํด๋ฒ๋ฆฌ๋ฉด ๋ฌผ์ง ๋ฏธ๋ถ์์ด ๋์จ๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ๋ฌผ์ง ๋ฏธ๋ถ์ ์ด์ฉํ์ฌ ์๊น ๋งํ ๋๋น์-์คํ ํฌ์ค ๋ฐฉ์ ์์ ํํํ๋ฉด, ์ค์ผ๋ฌ ๊ด์ ์์์ ๋น์์ถ์ฑ ๋๋น์-์คํ ํฌ์ค ๋ฐฉ์ ์์ด ๋๋ค. ์ด๊ฒ ๋ ผ๋ฌธ์์์ ์ฃผ๋ ๋ฐฉ์ ์์ด๋ค.
3. Numerical Simulation - Split
์ด์ ์ ๋ฐฉ์ ์์ผ๋ก ํํ๋๋ ์ ์ฒด๋ฅผ ์ปดํจํฐ๋ก ์๋ฎฌ๋ ์ด์ ํ๋ ค๋ฉด ์ด์ฐํ ๊ณผ์ ์ด ํ์ํ๋ค. ์ด์ฐํ๋ ์ฐ์์ ์ธ ์์น๋ฅผ ์ด์ฐ์ ์ธ, ๋ถ์ฐ์์ ์ธ ์์น๋ก ๋ณํ์ํค๋ ๊ฒ์ด๋ค.
๊ทธ๋ฌ๊ธฐ ์ํด ๋จผ์ ๋ณต์กํ ๋๋น์-์คํ ํฌ์ค ๋ฐฉ์ ์์ ๋ถํ ํ๋ค.
๋ฐฉ์ ์์ 3๊ฐ๋ก ๋๋ ๋ค์, ์ด๋ค ํญ์ ๊ณ์ฐํ๊ณ , ๊ทธ ํจ๊ณผ๋ฅผ ํฌํจ์ํค๋ฉด์ ๊ฐฑ์ ํ๊ณ ์ด๋ฐ์์ผ๋ก ์งํ๋๋ค.
๋๋น์-์คํ ํฌ์ค ๋ฐฉ์ ์์ ์๋์ฒ๋ผ 3๊ฐ๋ก ์ชผ๊ฐ ๋ค.
1. ์ด๋ฅ(advection) : ์ด๋ฅ๋ ๋ฌผ๋ฆฌ๋(๋๋, ์จ๋ ๋ฑ)์ ์ฐจ์ด๋ก ์ธํด ์ ์ฒด๊ฐ ํ๋ฅด๋ ๊ฒ์ ๋งํ๋ค. ์ฐ๋ฆฌ๋ ์๋์ ๊ด์ฌ์ด ์์ผ๋ฏ๋ก ๋ฌผ๋ฆฌ๋ q๋ฅผ ์๋์ฒ๋ผ u๋ก ๋์๋ค.
์ด๋ฅ ํญ์์๋ ์๋ ๊ฐ๋จํ ์ด๋ฅ ๋ฐฉ์ ์์ ํ๋ฉด ๋๋ค.
๋ ผ๋ฌธ์์๋ ์ด๊ธฐ ์๋๋ฅผ u-, ์ด๋ฅ ํ ์๋๋ฅผ u, ์๋ ฅ ํฌ์ ํ ์๋๋ฅผ u+๋ผ๊ณ ๋ณด์๋ค.
์ฆ, ์ ์์ ํ์ด ์ฐ๋ฆฌ๋ u-์์ u๋ก ๊ฐ์ ์ ๋ฐ์ดํธ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ๋ค๊ฐ ์ค๋ ฅ์ ๊ณ ๋ คํ๋ฉด ๋๋ค. ๊ทธ๊ฒ ๋๋ฒ์งธ ํญ์ด๋ค.
2. body force : ๋ถํผ ์ ์ฒด์ ๊ฑธ์ณ ์์ฉํ๋ ํ์ด๋ค. ์ฌ๊ธฐ์๋ ์ค๋ ฅ๋ง์ ์๋ฏธํ๋ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค.
3. ์๋ ฅ ํฌ์ ๋ฐ ๋น์์ถ์ฑ (pressure projection + incompressibility) : ์ฐ๋ฆฌ๋ ๋น์์ถ์ฑ ์ ์ฒด๋ฅผ ๋ค๋ฃจ๊ธฐ ๋๋ฌธ์ ๋น์์ถ์ฑ ์ ์ฝ์ ๊ฐ์ ํด์ผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฑธ ํ๊ฒ ๋๋ ํญ์ด ์ด 3๋ฒ์งธ ํญ์ด๋ค.
์๋ ฅ์ด ๋ถํผ๊ฐ ์ถ์๋์ง ์๋๋ก ํ๋ ์ผ์ ํ๋ค๊ณ ๋ณด๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์ ์ด๊ฑธ ๊ณ ๋ คํ๋ค.
์ฌ๊ธฐ์ ์ผ๋จ ์ ์, ์๋์ฅ์ ์๊ฐ์ ๋ํด ํธ๋ฏธ๋ถ ํ ์์ ์ด์ฐํํด๋ณด์.
์๊ฐ์ ๋ํ ๋ฏธ๋ถ์์ ์ด๋ ๊ฒ ์ด์ฐํ ํ๋ฉด 3๋ฒ์งธ ํญ์ ์๋์ ๊ฐ์ด ๋ณํ๋ค.
๋ ผ๋ฌธ์์๋ ์๋์ ๊ฐ์ด pressure projection ํ ์๋ u+์ ๋ํ ์์ผ๋ก ํํํ์๋ค.
์ฌ๊ธฐ์ ์ฐ๋ฆฌ๊ฐ ๋ชจ๋ฅด๋ ๊ฒ ์ฆ ๊ตฌํด์ผ๋๋ ๊ฒ์ ์๋ ฅ P์ด๋ค. ๋ ผ๋ฌธ์์๋ ์ด๋ฅผ ๊ตฌํ๊ธฐ ์ํด ํฌ์์ก ๋ฐฉ์ ์(Poisson's equation)์ ์ด์ฉํ๋ค.
์ด ์์ ํธ๋ ๋ฐฉ๋ฒ์ด BEM๊ณผ FLIP์์ ๋ค๋ฅด๋ค. BEM์ ์์ง ๊ณต๋ถํ์ง ์์์ผ๋ ์ฐ์ FLIP์์ ์ด๋ฅผ ํธ๋ ๋ฐฉ๋ฒ๋ง ์์๋ณด์.
4. How to get Pressure
์ฐ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํฌ์์ก ๋ฐฉ์ ์์ ํ์ด ์๋ ฅ์ ๊ตฌํ๊ธฐ ์ํด ์ ํ์ฐจ๋ถ(finite difference)์ ์ด์ฉํ๋ค.
์ ํ์ฐจ๋ถ์ด๋ ํจ์ซ๊ฐ์ ์ฐจ๋ฅผ ์ด์ฉํด ๋ฏธ๋ถ๊ณ์๋ฅผ ๊ทผ์ฌํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ด๋ ๊ฒ ๋งํ๋ฉด ์ ์์๋ฟ์ ์ ์๋๋ฐ,
์๋์ ๊ฐ์ ํจ์ f(x)๊ฐ ์๋ค๊ณ ๊ฐ์ ํด๋ณด์.
๊ทธ๋ผ ์ด ํจ์์์ ๋ํจ์ f'(x)๋ ์๋์ ๊ฐ์ด ๊ทผ์ฌํ ์ ์๋ค.
์ด๊ฒ ์ ํ์ฐจ๋ถ์ด๋ค.
์ด๊ฑธ ํ๋ ์ด์ ๋ ํฌ์์ก ๋ฐฉ์ ์์ ์ด์ฐํํ๊ธฐ ์ํด์์ด๋ค.
๊ทธ๋ฆฌ๊ณ 2D ์ด์์์ ์ด ์ ํ์ฐจ๋ถ์ ์คํํ๋ ๋ฐฉ๋ฒ์ด '๊ทธ๋ฆฌ๋(Grid)'์ด๋ค. ๊ณต๊ฐ์ ๊ทธ๋ฆฌ๋๋ก ์ฐจ๋ถํ(Discretization)ํ์ฌ, ์๋ ๊ทธ๋ฆผ ์ฒ๋ผ x์ ์ฑ๋ถ, y์ ์ฑ๋ถ, ์๋ ฅ ๋ฑ์ ๋ค ๋ค๋ฅธ ์์น์ ์ ์ฅํ๋ค.
์๋ ฅ์ ๊ทธ๋ฆฌ๋์ ์ค์์, x์ฑ๋ถ์ ์ธ๋ก์ ์ ์ค์์ u๋ก, y์ฑ๋ถ์ ๊ฐ๋ก์ ์ ์ค์์ v๋ก ์ ์ฅํ๋ค.
๊ทธ๋ผ ์ด๊ฑธ ์ด์ฉํ์ฌ ์๊น ํฌ์์ก ๋ฐฉ์ ์์ ์ฒซ๋ฒ์งธ ์์ ์ฐ๋ณ(์์ ์ ์ธ)์ ์ด์ฐํํด๋ณด์.
์ฒซ๋ฒ์งธ ์์ ๊ทธ๋ฅ ๊ณต์์ด๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๊ฑธ ๊ทธ๋ฆฌ๋ ๊ฒฉ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ด์ฐํ ํ ๊ฒ์ด ๋๋ฒ์งธ ์ค์ ์์ด๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ์์ ํ๋ ฌ์ ๊ณฑ์ผ๋ก ํํํ ์ ์๋ค.
์ด ํ๋ ฌ๊ณฑ์ ๋ณด๋ฉด ์ข๋ณ์ด div์ ๋ํ ์, ์ฐ๋ณ์ด ์๋์ ๋ํ ์์ด๋ผ๋ ๊ฑธ ์ ์ ์๋ค.
์ฆ div๋ฅผ ์ด์ฐํํ๊ฒ ์ ์ข๋ณ์ ์์ด๋ผ๋ ๊ฑฐ ๊ฐ์๋ฐ, ์ด๊ฑด ์ข ๋ ์์๋ด์ผ ๋ ๊ฑฐ ๊ฐ๋ค.
์ด๋ ๊ฒ ํด์ ์ฐ๋ณ์ ์ด์ฐํ ํ๋ค!
๊ทธ๋ผ ์ด์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์ข๋ณ์์ divP๋ฅผ ์ด์ฐํํด๋ณด์.
๋ง์ฐฌ๊ฐ์ง๋ก ํ๋ ฌ ๊ณฑ์ผ๋ก ๋ํ๋ด๋ฉด ์๋์ ๊ฐ๋ค.
์ด๋ ๊ฒ ํ์ฌ ์๋ ฅ๊ณผ ๊ด๋ จ๋ ํฌ์์ก ๋ฐฉ์ ์์ ๋ชจ๋ ์ด์ฐํ ํ์๊ณ , ํ๋ ฌ ๊ณฑ์ผ๋ก๊น์ง ๋ํ๋ด์๋ค !
์ ๋ฆฌํด๋ณด๋ฉด ์๋์ ๊ฐ๋ค.
์ด๋ ๊ฒ ํด์ ๋๋น์-์คํ ํฌ์ค์ ์ธ๋ฒ์งธ ์, pressure projection์ด ์ผ์ถ ํด๊ฒฐ๋์ด ๋ณด์ธ๋ค.
๊ทธ๋ผ ์ด์ ์ฒซ๋ฒ์งธ ์ advection์ ์ด์ฐํํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์.
5. Semi-Lagrangian Advection
advection์ ์์์ ์ฌ์ฉํ ๋ฐฉ๋ฒ์ฒ๋ผ ์ด์ฐํํ๊ธฐ๋ ์ด๋ ต๋ค.
๋์ ์ฌ๊ธฐ์์๋ semi-Lagrangian method ๋ผ๊ณ ๋ถ๋ฆฌ๋ ๋ฐฉ๋ฒ์ ์ด์ฉํ๋ค.
๊ณต๊ฐ์ ์ด๋ค ์ x์์ q์ ์๋ก์ด ๊ฐ์ ์ป๊ธฐ ์ํด์๋ ๊ฐ๋ ์ ์ผ๋ก x์ ๋๋ฌํ๋ ์ ์๋ฅผ ์ฐพ์ q์ ๊ฐ์ ๊ตฌํ ์ ์๋ค.
์ด ๋ ผ๋ฆฌ๋ฅผ ๊ทธ๋ฆฌ๋์ ์ ์ฉํ๊ฒ semi-Lagrangian method์ด๋ค.
์์๋ฅผ ๋ค์ด ์์ธํ ์ดํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํ์ฌ ์ด๋ค ๊ทธ๋ฆฌ๋ ํฌ์ธํธ์์์ ๋ฌผ๋ฆฌ๋์ ์๊ณ ์ถ์ผ๋ฉด ์๋์ฅ์ ๋ฐ๋ผ ์ญ์ถ์ ํ๋ฉด ๋๋ค.
๊ทธ๋ ๋ค๋ฉด Xp์ ์์น๋ ์ด๋ป๊ฒ ์์๋ผ๊น?
์ ์๋ ์๋ ๋ฐฉ์ ์์ ๋ฐ๋ผ โt์ ์๊ฐ๋์ Xg๊น์ง ์์ง์ธ๋ค.
๋ฐ๋ผ์ Xg์ ์์น๋ก Xp์ ์์น๋ฅผ ๊ตฌํ๋ฉด ์๋์ ๊ฐ๋ค.
๋จ์ํ๊ฒ, u(Xg)๋ ์๋์ ๊ดํ ์์ด๊ณ , โt๋ ์๊ฐ์ด๋๊น ์๊ฐ*์๋ํด์ โt ์๊ฐ๋์ ์ด๋ํ ๊ฑฐ๋ฆฌ๋งํผ์ ๋นผ์ค ๊ฒ์ด๋ค.
์ด๋ฐ์์ผ๋ก ์ด๋ค ์ ์๊ฐ ์์ํ ์์น์ธ Xp๋ฅผ ๊ตฌํ๊ณ ๋๋ฉด, ์ด Xp์์์ ๋ฌผ๋ฆฌ๋ q๊ฐ ํ์ฌ Xg์์์ ๋ฌผ๋ฆฌ๋์ด ๋๋ค.
์ด๋ ๊ฒ ํด์ ์ ์ฒด ์๋ฎฌ๋ ์ด์ ์ ๊ธฐ๋ณธ์ด ๋๋ ๋๋น์-์คํ ํฌ์ค ๋ฐฉ์ ์์ 3๊ฐ๋ก ๋ถํ ํ๊ณ , ๊ฐ๊ฐ์ ์ด์ฐํํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์๋ค.
๋ค์ ๊ธ์์๋ FLIP์ ๋ํด ๋ ์์๋ณด๋๋ก ํ์! ๐