ChemGen 다중종 화학반응 흐름 시뮬레이션을 위한 코드 생성 도구
초록
ChemGen은 파이썬 기반 데코레이터와 C++ 코드 생성을 결합해 다중종 열역학·화학동역학을 기존 CFD 코드에 손쉽게 통합한다. 온도·압력·물질 농도에 대한 열·화학 특성을 분석적 도함수와 함께 제공하고, 암시적 적분, 선형 솔버, 전처리기까지 포함한다. Cantera와 이론적 수렴률 검증을 거쳤으며, OpenFOAM에 적용했을 때 기존 화학 솔버 대비 약 4배의 속도 향상을 보였다.
상세 분석
ChemGen은 현대 CFD·연소 시뮬레이션에서 가장 큰 병목 중 하나인 화학 반응 계산을 코드 생성 방식으로 해결한다는 점에서 혁신적이다. 기존 접근법은 (1) 레거시 코드 이식, (2) 외부 라이브러리 연동, (3) 수작업 구현, (4) 코드 생성 도구 사용으로 구분된다. 이 중 4번을 선택한 이유는 확장성과 유지보수성을 동시에 확보할 수 있기 때문이다. ChemGen은 파이썬 데코레이터를 이용해 사용자가 정의한 화학 메커니즘(종, 반응식, 스토이키오메트리, 열역학 데이터)을 입력하면, 자동으로 C++ 헤더·소스 파일을 생성한다. 생성된 코드는 다음 세 가지 핵심 기능을 제공한다.
-
열역학 평가 – NASA 다항식 형태를 변형한 다항식 계수를 사용해 종별 비열, 엔탈피, 내부에너지, 엔트로피, 깁스 자유에너지를 온도 다항식 형태로 계산한다. 이를 통해 온도에 대한 미분(예: cv, cp)도 분석적으로 얻을 수 있어 Jacobian 구성에 바로 활용한다.
-
화학 소스 항 및 Jacobian – 전진·역반응 속도 상수를 온도·압력·혼합 농도에 대한 함수로 표현하고, 종 생산율 ωi 를 종합한다. 화학 소스 항의 미분을 자동으로 도출해 전체 보존 방정식의 RHS에 대한 정확한 Jacobian을 제공한다. 이는 강직한 반응 시스템을 암시적 적분(예: Rosenbrock, BDF)으로 풀 때 수렴성을 크게 향상시킨다.
-
시간 적분·선형 솔버·전처리기 – ChemGen은 여러 암시적/반암시적 ODE/DAE 솔버와 직접 연결되는 인터페이스를 생성한다. 또한, GMRES, BiCGStab 같은 Krylov 솔버와 ILU, Jacobian‑Free Newton‑Krylov 전처리기를 선택적으로 포함한다. 이렇게 통합된 스택은 사용자가 CFD 코드 내에서 화학 적분을 별도 라이브러리 호출 없이 바로 호출할 수 있게 만든다.
검증 단계에서는 Cantera와의 수치 일치를 확인했으며, 이론적 수렴률(1차·2차·3차) 테스트를 통해 생성된 Jacobian와 시간 적분기가 기대한 정확도를 유지함을 보였다. OpenFOAM에 ChemGen을 삽입한 연소·폭발 시뮬레이션에서는 기존 화학 솔버 대비 평균 4배, 최악의 경우 6배까지 실행 시간이 단축되었다. 이는 자동 생성된 코드가 메모리 접근 패턴을 최적화하고, 불필요한 런타임 파싱을 없애며, 컴파일 타임에 상수 전파를 수행하기 때문이다.
또한, ChemGen은 오픈소스(NRL Open License)로 배포되어 연구자와 엔지니어가 자유롭게 확장·수정할 수 있다. 현재 지원 언어는 C++와 파이썬이며, 향후 GPU( CUDA, HIP) 코드 생성, 비정상(Non‑ideal) 가스 모델, 다상(멀티‑phase) 반응까지 확대될 계획이다.
전반적으로 ChemGen은 화학 반응 모델링을 CFD 프레임워크에 매끄럽게 녹여내는 “코드‑생성‑플러그인” 역할을 수행한다. 자동 미분 기반 Jacobian 제공, 다양한 암시적 적분기와 선형 솔버 통합, 그리고 실제 CFD 코드와의 원활한 결합은 기존 방법론 대비 생산성·성능·유연성에서 큰 진전을 의미한다.
댓글 및 학술 토론
Loading comments...
의견 남기기