google/jax-cfd

Computational Fluid Dynamics in JAX

JAX‑CFD: JAX를 이용한 미분 가능한 계산 유체 역학

개요JAX를 사용하여 핵심 CFD 솔버(유한체적법 및 유사 스펙트럼법)를 구현한 오픈 소스 연구용 라이브러리입니다. 따라서 코드는 자동으로 미분 가능하며 GPU/TPU에서 실행할 수 있습니다. 또한 Haiku로 구축된 몇 가지 머신러닝 증강 모델도 제공합니다.

중요성 – JAX의 JIT 컴파일과 자동 미분 기능을 활용하여 연구자들은 다음과 같은 작업을 수행할 수 있습니다:

  • 유체 시뮬레이션과 상호작용하는 신경망을 학습시킵니다 (예: 대리 모델, 폐쇄 모델).
  • CFD 솔버에서 직접 경사도 기반 최적화 또는 데이터 동화를 수행합니다.
  • 코드 변경 없이 CPU, GPU 또는 TPU에서 동일한 코드를 실행합니다.

주요 구성 요소

  • jax_cfd.base – 스테거드 그리드 (Arakawa‑C/MAC) 상의 유한체적법/차분법 솔버.

  • jax_cfd.spectral – 안티앨리어싱 기능이 포함된 유사 스펙트럼 와류 솔버.

  • jax_cfd.ml – ML 증강 CFD 모델 (Haiku 신경망) 및 예시 사전 학습 모델.

  • jax_cfd.data – 시뮬레이션 데이터 로딩, 처리 및 시각화를 위한 유틸리티 (Xarray + Pillow).

수치 계산 초점

  • 비정상 난류 유동.

  • 공간 이산화: 스테거드 그리드 FV/Diff 또는 유사 스펙트럼 와류.

  • 시간 이산화: 1차 명시적 이류, 암시적/명시적 확산.

  • 압력 솔버: Conjugate‑gradient 또는 FFT 기반 대각화 (주기적 BCs만 해당).

  • 이류 스킴: 2차 Van Leer.

  • 난류 폐쇄: Smagorinsky eddy‑viscosity.

시작하는 방법

  1. 핵심 패키지를 설치합니다:
    pip install jax-cfd
    
  2. 선택 사항인 ML 또는 데이터 유틸리티를 위한 추가 기능을 추가합니다:
    pip install jax-cfd[ml]   # Haiku + ML helpers
    pip install jax-cfd[data] # Xarray, Pillow, etc.
    
  3. notebooks/ 폴더에 있는 준비된 Colab 노트북을 실행하여 다음을 확인합니다:
    • 2-D 스테거드 그리드 FV 데모
    • 2-D 유사 스펙트럼 난류 데모
    • 채널 플로우 예시
    • PNAS 2021 논문의 결과 재현 (데이터 분석 & 모델 추론)

프로젝트 상태더 이상 유지보수되지 않음 (2024년 6월)으로 표시되었습니다. README는 JAX‑Fluids, PhiFlow, 및 Exponax와 같은 활발히 유지보수되는 대체재를 가리킵니다.

전형적인 사용 사례

  • 미분 가능한 CFD에 대한 학술 연구, 예: 난류 폐쇄 모델 학습 또는 역관측 연산자 학습.

  • ML‑CFD 하이브리드 모델의 프로토타이핑, 즉 유체 솔버를 통한 경사도를 필요로 하는 모델.

  • JAX의 유체 역학 워크로드에서의 성능 벤치마크.

인용 – 유한체적법 코드를 사용하거나 ML 모델을 사용한다면, PNAS 2021 논문을 인용하십시오. 스펙트럼법 코드를 사용한다면, arXiv 2022 pre‑print를 인용하십시오. \n관련 프로젝트 – README는 다른 미분 가능한 CFD 라이브러리 (PhiFlow, Autograd fluid examples) 및 더 넓은 JAX 과학용 도구 (JAX‑MD, JAX‑DFT, jax‑cosmo, Veros)를 목록에 나열열합니다.


위의 모든 세부 사항은 저장소의 README에서 직접 가져온 것입니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트