[Simulation] Lattice Boltzmann method 기반 시뮬레이션

2025. 10. 19. 04:20·수치해석 Numerical Analysis

최근 들어 physical AI나 디지털 트윈에 대한 관심이 높은데, 이런 주제들에서 중요한 것이 시뮬레이션이다. 물리 시뮬레이션을 어떻게 할 것인가는 graphics에서도 많이 고민한 부분이라(특히 게임업계) 나중에 이에 대한 글도 쓰면 좋겠다.

 

기계공학과 비슷한 계열의 엔지니어링 관점에서 봤을 때는 differential equation를 적분하는 방식으로 시뮬레이션을 돌린다.

하지만 우리가 다루는 물리적 법칙이 어느 스케일까지 적용 가능한지에 따라 물리 법칙을 유도하고 시뮬레이션 돌리는 방식이 다를 수 있다는 것을 최근 들어 알게 되었다. (아직 공부중...)

 

 

 

왜냐하면 이 글에서 다룰 Lattice Boltzmann method (이하 LBM)은 mesoscopic scale에서 evolving flow field를 표현한 것이기 때문이다.

최근에는 Lattice Boltzmann Method (kinetic gas theory)를 기반으로 한 시뮬레이션이 주목을 받고 있다.

 

Laminar, turbulent flow

Subsonic, supersonic flow

flow through porous media

free-surface and multiphase flows

 

등에 활용될 수 있다.

 

1. Lattice Boltzmann method

 

LBM equations은 velocity distribution function $f_i(x,t)$의 공간, 시간에 대한 행동을 묘사하는 time-dependent and discrete equatios으로 구성되어있다.

 

 

i : discrete lattice directions 인덱스를 의미한다.

여기서 $\mathcal{l]$는 general collision operator를 의미한다. 따라서 collison operator를 어떻게 정의하느냐에 따라 결과가 달라질 수 있다.

 

이 collison operator는

form of the moment space 기반 방법들

- Bhatnagar-Gross-Krook

- multi-relaxation time (MRT)

좀 더 발전된 방법들

- cumulant collision

- recursive regularized / multi-relaxation entropic model 등이 있다.

 

이 글에서는 Bhatnagar-Gross-Krook (BGK) method를 기반으로 한다.

 

 

$f_i^{eq}$는 equilibrium state를 의미하고 time scale $\tau$는 다음과 같이 정의된다. $\Delta t$는 discrete time step:

 

$$\tau=\frac{\nu}{c_{s}^2}+\frac{\Delta t}{2}$$

 

$$c_s^2 = \frac{1}{3} \left(\frac{\Delta x}{\Delta t}\right)^2$$

 

collision model과 별개로 equilibrium distribution function $f_i^{eq}$는 다음과 같이 계산된다. 

 

 

 

$w_i$는 each lattice direction $c_i$과 관련된 weight이다. $\rho$는 fluid density, $u$는 velocity, $p$는 pressure는 macroscopic state variables로 다음과 같이 유도된다.

 

 

 

실제 implementation 할 때는 다음과 같은 lattices를 선택한 다음에,

 

 

위의 collision operator를 적용하고, boundary condition을 적용한다. 그 다음에 streaming operation을 적용하고 boundary condition을 적용한다. collision operator와 streaming operation+boundary conditions이 포함된 이 프로세스를 한 스텝으로 생각할 수 있다. boundary condition 타입에 따라 collision 이후에 적용할지, streaming 이후에 적용할지가 결정된다. 이를 반복해서 풀면 된다.

 

 

더 디테일한 수식이나 implementation은 아래 마지막 참고 문헌을 보는 게 좋을 듯하다.

 

 


참고문헌

 

https://www.research.autodesk.com/publications/xlb-differentiable-massively-parallel-lattice-boltzmann-library-python/

 

XLB: A Differentiable Massively Parallel Lattice Boltzmann Library in Python

This research introduces the XLB library, a scalable Python-based...

www.research.autodesk.com

 

 

https://link.springer.com/chapter/10.1007/978-3-319-44649-3_3

 

저작자표시 비영리 변경금지 (새창열림)

'수치해석 Numerical Analysis' 카테고리의 다른 글

[수치해석] Partial Differential Equation (4) Modified Wavenumber Analysis  (0) 2025.07.20
[수치해석] Partial Differential Equation (3) Von Neumann Stability Analysis  (0) 2025.07.20
[수치해석] Partial Differential Equation (2) Matrix stability analysis  (0) 2025.07.20
[수치해석] Partial Differential Equation (1) semi-discretization  (0) 2025.07.20
[수치해석] System of ODEs - Boundary value problem  (0) 2025.07.20
'수치해석 Numerical Analysis' 카테고리의 다른 글
  • [수치해석] Partial Differential Equation (4) Modified Wavenumber Analysis
  • [수치해석] Partial Differential Equation (3) Von Neumann Stability Analysis
  • [수치해석] Partial Differential Equation (2) Matrix stability analysis
  • [수치해석] Partial Differential Equation (1) semi-discretization
보통의공대생
보통의공대생
수학,프로그래밍,기계항공우주 등 공부하는 기록들을 남깁니다.
  • 보통의공대생
    뛰는 놈 위에 나는 공대생
    보통의공대생
  • 전체
    오늘
    어제
    • 분류 전체보기 (470)
      • 공지 (1)
      • 영어 공부 English Study (40)
        • 텝스 TEPS (7)
        • 글 Article (21)
        • 영상 Video (10)
      • 연구 Research (99)
        • 최적화 Optimization (3)
        • 데이터과학 Data Science (7)
        • 인공지능 Artificial Intelligent (40)
        • 제어 Control (45)
      • 프로그래밍 Programming (103)
        • 매트랩 MATLAB (25)
        • 파이썬 Python (33)
        • 줄리아 Julia (2)
        • C++ (3)
        • 리눅스 우분투 Ubuntu (6)
      • 항공우주 Aeronautical engineeri.. (21)
        • 항법 Navigation (0)
        • 유도 Guidance (0)
      • 기계공학 Mechanical engineering (13)
        • 열역학 Thermodynamics (0)
        • 고체역학 Statics & Solid mechan.. (10)
        • 동역학 Dynamics (1)
        • 유체역학 Fluid Dynamics (0)
      • 수학 Mathematics (34)
        • 선형대수학 Linear Algebra (18)
        • 미분방정식 Differential Equation (3)
        • 확률및통계 Probability & Sta.. (2)
        • 미적분학 Calculus (1)
        • 복소해석학 Complex Analysis (5)
        • 실해석학 Real Analysis (0)
      • 수치해석 Numerical Analysis (28)
      • 확률 및 랜덤프로세스 Random process (2)
      • 추론 & 추정 이론 Estimation (3)
      • 기타 (26)
        • 설계 프로젝트 System Design (8)
        • 논문작성 Writing (56)
        • 세미나 Seminar (2)
        • 생산성 Productivity (3)
      • 실험 Experiment (1)
      • 유학 생활 Daily (8)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    생산성
    고체역학
    텝스공부
    수치해석
    matplotlib
    LaTeX
    서버
    WOX
    Julia
    Dear abby
    JAX
    텝스
    Statics
    IEEE
    obsidian
    논문작성법
    옵시디언
    논문작성
    우분투
    pytorch
    Numerical Analysis
    에러기록
    Zotero
    Linear algebra
    MATLAB
    인공지능
    ChatGPT
    teps
    Python
    딥러닝
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
보통의공대생
[Simulation] Lattice Boltzmann method 기반 시뮬레이션
상단으로

티스토리툴바