1. 개요[편집]
| CHEMKIN | |
|---|---|
| 종류 | 기체상 화학반응 동역학 소프트웨어 패키지 |
| 출발 | 미국 산디아 국립연구소 (1980년대, R. J. Kee 등) |
| 원 구현 언어 | Fortran 77 |
| 현재 | ANSYS Chemkin-Pro (상용) |
| 진짜 유산 | CHEMKIN 입력 포맷 — 업계 사실상 표준 |
| 구성 파일 | chem.inp · therm.dat · tran.dat |
| 오픈소스 대안 | Cantera · FlameMaster · OpenSMOKE++ |
프로그램은 상용이 되어 값이 붙었고, 파일 포맷은 공짜로 온 세상이 베꼈다. 어느 쪽이 유산인지는 명백하다.
CHEMKIN은 기체상 화학반응 메커니즘·열역학·수송 물성을 표준화된 텍스트 파일로 기술하고, 그것을 읽어 반응속도와 물성을 평가한 뒤 균질 반응기·1차원 화염 같은 표준 문제를 푸는 소프트웨어 패키지다. 1980년대 초 미국 산디아 국립연구소에서 R. J. Kee 를 중심으로 개발이 시작됐고, Fortran 77 라이브러리로 배포되어 20년 가까이 연소 연구의 공용 인프라 역할을 했다.
이 문서에서 가장 강조해야 할 것은 소프트웨어 자체가 아니라 CHEMKIN 포맷이다. 오늘날 CHEMKIN 프로그램을 직접 돌리는 사람보다 CHEMKIN 형식으로 배포된 메커니즘 파일을 쓰는 사람이 몇 자릿수 더 많다. GRI-Mech 부터 대학·국립연구소가 내놓는 최신 상세 메커니즘까지, 화학반응 메커니즘이 세상에 배포되는 기본 형식이 여전히 chem.inp + therm.dat + tran.dat 세 장이다. Cantera 도, OpenFOAM 계열도, 상용 CFD 코드도 전부 이 형식을 읽는 변환기를 안에 달고 있다.1
2. 계보[편집]
- 산디아 시절. 1980년대 초 첫 릴리스가 나오고, 1980년대 말 CHEMKIN-II 가 사실상의 표준판으로 자리 잡는다. 여기에 수송 물성 패키지(TRANSPORT), 표면 반응 패키지(SURFACE CHEMKIN), 그리고 응용 프로그램군(PREMIX·SENKIN·PSR·OPPDIF 등)이 순차적으로 붙는다. 소스와 문서(산디아 리포트)가 널리 배포되어 연소 학계 전체가 같은 코드 기반 위에 서게 된 시기다.
- 상용화. 1990년대 후반 산디아로부터 라이선스를 받은 Reaction Design 이 상용 배포를 맡으면서 CHEMKIN-PRO 계열로 이어진다. GUI 와 지원, 그리고 새 해석기 모듈이 추가됐다.
- 현재. 2010년대 중반 ANSYS 가 Reaction Design 을 인수해 지금은 ANSYS Chemkin-Pro 라는 이름으로 팔린다. ANSYS Fluent 의 화학 전처리·메커니즘 축소 워크플로와 묶여 있는 것이 현재의 포지션이다.
한편 원래의 산디아 Fortran 코드베이스는 여러 갈래로 갈라져 각지의 연구실에 남았고, 그중 일부가 오픈소스로 재구현되거나 계승되었다. “내가 쓰는 CHEMKIN 이 어느 계보인가”가 결과에 영향을 준다는 것이 이 분야의 오래된 성가심이다.
3. CHEMKIN 포맷 — 진짜 핵심[편집]
3.1. chem.inp — 반응 메커니즘[편집]
블록 구조가 극도로 단순하다. 아래는 문법을 보이기 위한 예시이고, 계수 값은 메커니즘마다 다르다.
ELEMENTS H O C N AR END
SPECIES H2 O2 H O OH HO2 H2O2 H2O CH4 CO CO2 N2 END
REACTIONS
H+O2<=>O+OH 2.644E+16 -0.6707 17041.0
O+H2<=>H+OH 3.870E+04 2.700 6260.0
H+O2(+M)<=>HO2(+M) 1.475E+12 0.600 0.0
LOW / 6.366E+20 -1.720 524.8 /
TROE / 0.8 1.0E-30 1.0E+30 /
H2O/11.0/ O2/0.78/ CO2/3.8/
END
읽는 규칙은 이렇다.
- 반응식 뒤 세 숫자가 수정 아레니우스 계수 , , 다(아레니우스 방정식). 속도계수는 .
- 단위 기본값이 cm-mol-s-K 와 cal/mol 이다.
REACTIONS줄 뒤에MOLES/JOULES/MOLE/KELVINS같은 키워드로 바꿀 수 있는데, 이 줄을 안 읽고 SI 로 착각하는 것이 초심자 사고 1위다. (+M)은 압력 의존 반응이고, 보조 줄LOW(저압 극한 계수),TROE/SRI(폭 함수), 3체 효율(H2O/11.89/)이 뒤따른다. 최근 메커니즘은PLOG(압력별 아레니우스 표)나 체비쇼프 형식(CHEB)도 쓴다.<=>는 가역이며 역방향 속도를 따로 주지 않는다 — 평형상수에서 유도되므로 메커니즘이 자동으로 열역학과 모순되지 않는다. 굳이 역방향을 독립적으로 주고 싶으면REV키워드를 쓰는데, 그 순간 열역학 정합성이 깨질 수 있다.- 같은 반응식이 두 번 나오면(서로 다른 경로)
DUPLICATE를 명시해야 한다. 안 쓰면 해석기가 에러를 낸다. 이건 실수 방지 장치이며, 잘 작동하는 몇 안 되는 것 중 하나다.
3.2. therm.dat — NASA 7계수 다항식[편집]
열역학은 NASA 7계수 다항식으로 준다. 종마다 저온·고온 두 구간에 각각 7개, 총 14개 계수다.
는 생성 엔탈피, 은 기준 엔트로피를 담는 적분상수다. 파일 형식은 한 종당 4줄, 고정 열 위치, 각 줄 80번째 칸에 카드 번호 1~4 라는 천공카드 시대의 유물이다. 배치만 보이면 이렇다(계수는 자리 표시용).
OH 121286O 1H 1 G 0300.00 5000.00 1000.00 1
a1(고온) a2 a3 a4 a5 2
a6 a7 a1(저온) a2 a3 3
a4 a5 a6 a7 4
첫 줄에 종 이름·날짜 코드·원소 조성·상(G/L/S)·저온/고온/중간 온도가 정해진 칸에 들어가고, 나머지 세 줄이 고온 구간 7개 → 저온 구간 7개 순서로 계수를 싣는다. 순서가 온도 낮은 쪽부터가 아니라는 것이 첫 번째 함정이다. 그리고 공백 한 칸이 밀리면 값이 통째로 바뀐다.2 손으로 편집하다 종 이름 칸을 넘겨 써서 원소 조성이 깨지는 사고가 전설처럼 전해진다. 또 하나의 고전적 함정은 중간 온도에서 두 구간 다항식이 불연속인 파일이다. 가 그 지점에서 튀는데 계산은 그냥 돌아가고, 화염 온도가 수십 K 어긋난 채 결과가 나온다.
3.3. tran.dat — 수송 데이터[편집]
각 종의 분자 수송 파라미터를 한 줄씩 준다. 순서는 기하 지표(0 원자, 1 선형, 2 비선형), 레너드-존스 퍼텐셜의 우물 깊이 [K], 충돌 지름 [Å], 쌍극자 모멘트 [Debye], 분극률 [ų], 회전 완화 충돌수(298 K)다.
H2 1 38.000 2.920 0.000 0.790 280.000
H 0 145.000 2.050 0.000 0.000 0.000
OH 1 80.000 2.750 0.000 0.000 0.000
H2O 2 572.400 2.605 1.844 0.000 4.000
이 여섯 숫자에서 기체운동론의 충돌적분을 거쳐 점성·열전도도·이항 확산계수가 계산되고, 거기서 프란틀 수·슈미트 수·루이스 수가 따라 나온다. 다성분 확산이냐 혼합평균이냐, 소레 효과를 켜느냐가 여기 얹히는 옵션이고, 수소가 낀 화염에서는 그 선택이 결과를 바꾼다.
4. 아키텍처 — 해석기와 링킹 파일[편집]
CHEMKIN 의 설계에서 오래 살아남은 아이디어가 전처리 해석기와 실행시 라이브러리의 분리다.
- 해석기(interpreter)가
chem.inp와therm.dat를 읽어 문법을 검사하고, 종·반응·계수를 정리한 링킹 파일(이진)로 떨군다. - 응용 프로그램은 링킹 파일만 읽어 작업 배열을 초기화하고, 이후에는
CK로 시작하는 서브루틴 라이브러리를 호출한다. 조성·온도·압력을 넘기면 생성률·비열·엔탈피·평형상수를 돌려주는 구조다. - 수송은 별도 해석기가
tran.dat를 읽어 다항식 적합 계수를 만들어 두고, 실행시에는 그 다항식만 평가한다.
이 분리 덕분에 응용 프로그램은 화학의 내부를 전혀 몰라도 된다. 사용자가 자기 CFD 코드에 화학을 붙이는 방법이 “라이브러리를 링크하고 생성률 함수를 호출한다”로 표준화됐고, 그것이 이 패키지가 인프라가 된 이유다. Cantera 의 Solution 객체가 하는 일도 본질적으로 같은 계층이며, 차이는 링킹 파일 대신 객체를, Fortran 대신 C++/파이썬을 쓴다는 것이다.
5. 해석기 모듈[편집]
| 모듈 | 문제 | 대응하는 물리량 |
|---|---|---|
| SENKIN 계열 | 균질 정압·정적 반응기 + 민감도 | 착화지연 (자착화) |
| PSR / AURORA | 완전혼합 반응기(PSR/WSR) | 체류시간-소염 곡선 |
| PLUG | 관형 반응기(PFR) | 축 방향 조성 이력 |
| PREMIX | 1차원 예혼합 층류 화염 | 층류 화염 속도 |
| OPPDIF | 대향류 확산 화염 | 소염 스트레인율 |
| EQUIL | 화학평형 | 단열화염온도 |
| SURFACE CHEMKIN | 기체-표면 반응 | CVD·촉매 연소 |
PREMIX 가 특히 중요하다. 1차원 정상 예혼합 화염에서 질량유속을 고윳값처럼 함께 푸는 경계값 문제이고, 그 해가 이다. 여기서 쓰인 감쇠 뉴턴법 + 적응 격자 + 실패 시 의사시간 전진으로 되돌아가는 전략은 이후 이 분야 화염 솔버의 공통 설계가 됐다. Cantera 의 FreeFlame 이 하는 일도 정확히 같은 구조다.
6. 강성 ODE 적분기와 야코비안[편집]
균질 반응기 문제는 화학종 수만큼의 상미분방정식계이고, 라디칼의 시간척도와 주요 종의 시간척도가 여러 자릿수 차이 나는 전형적인 강성 방정식이다. 명시적 적분기는 시간 간격이 가장 빠른 라디칼에 묶여 사실상 못 쓴다.
그래서 CHEMKIN 계열은 처음부터 암시적 다단계 적분기를 썼다. 전통적으로 쓰인 것이 DAE 를 직접 다루는 DASSL 계열과 후진 미분 공식(BDF) 기반의 VODE/DVODE 계열이다. 경계값 문제(PREMIX·OPPDIF)에는 감쇠 뉴턴법 기반의 별도 솔버가 붙는다.
공통 병목은 **자코비안 행렬**이다. 종 수 에 대해 조밀 행렬의 LU 분해가 이므로, 종이 수백 개인 상세 메커니즘에서는 야코비안 조립과 분해가 계산의 대부분을 먹는다. 대응은 세 갈래다.
- 수치 미분 대신 해석적 야코비안. 각 반응의 미분을 손으로(또는 코드 생성기로) 만든다. 정확도와 속도가 함께 오른다.
- 희소행렬 구조 활용. 종 하나가 참여하는 반응은 전체의 일부라 야코비안이 실제로는 희소하다.
- 메커니즘 축소. 가장 효과가 큰 방법이다. 3차 비용을 줄이는 최선은 자체를 줄이는 것이다.
CFD 와 결합할 때는 연산자 분리로 셀마다 반응 서브스텝을 돌리는 것이 표준이고, 그러면 위의 비용이 셀 수만큼 곱해진다. 상세 화학 3차원 계산이 왜 그렇게 비싼지가 이 한 줄로 설명된다. 그래서 실무는 축소된 메커니즘이나 표 형태 화학(ISAT·FGM/FPI 계열)으로 도망간다 — 미리 계산해 둔 화학 응답을 조회로 대체하는 것이다.
7. 오픈소스 대안[편집]
| 도구 | 성격 | 특징 |
|---|---|---|
| Cantera | 라이브러리 | BSD, 파이썬 API, YAML 입력, ck2yaml 변환기 |
| FlameMaster | 화염 계산 코드 | 화염렛 라이브러리 생성 쪽으로 특화 |
| OpenSMOKE++ | C++ 프레임워크 | 상세 메커니즘 대상 반응기·화염 해석 |
셋 다 CHEMKIN 포맷을 읽는다. 대안이 등장했음에도 포맷은 살아남았다는 사실이 이 패키지의 위상을 요약한다. 다만 포맷 자체의 한계 — 고정 열 위치, 파일 세 개로 흩어진 정보, 파서마다 미묘하게 다른 예외 처리 — 때문에 새 프로젝트는 사람이 읽을 수 있는 형식으로 옮겨 가는 추세다. Cantera 가 YAML 로 전환한 것이 대표적이고, 변환 과정에서 원본 파일의 숨은 오류가 드러나는 일이 잦다는 것이 은근한 부수 효과다.
8. 실무에서 자주 밟는 지뢰[편집]
- 단위. 기본값이 cal/mol 과 cm-mol-s 다. 논문에서 계수를 옮겨 적을 때 kJ/mol 로 착각하면 활성화 에너지가 4배 어긋난다. 결과가 이상하면 여기부터 본다.
- 열역학 파일 불일치. 메커니즘 파일과 다른 출처의
therm.dat를 섞어 쓰면 종 이름은 맞는데 계수가 달라 평형상수가 어긋난다. 역방향 속도가 평형상수에서 유도되므로 열역학이 틀리면 반응속도가 틀린다. - 검증 범위 밖 사용. 파일이 로드된다는 사실은 그 메커니즘이 내 조건에서 유효하다는 증거가 아니다. 상압 데이터로 맞춘 메커니즘을 수십 bar 엔진 조건에 그대로 외삽하는 것이 흔한 사고다(검증 및 확인).
- 허용오차 방치. 기본 허용오차로는 착화지연이 몇 % 흔들린다. 메커니즘 비교라면 조여야 한다.
- 수송 옵션 미기재. 혼합평균/다성분/소레 조합에 따라 화염 속도가 달라진다. 논문에 안 적으면 재현이 불가능하다(루이스 수).3
9. 관련 문서[편집]
- Cantera · 화학반응 메커니즘 · 메커니즘 축소 · 반응속도론
- 아레니우스 방정식 · 화학평형 · 깁스 자유에너지
- 층류 화염 속도 · 자착화 · 연속 교반 탱크 반응기 · 연소 시뮬레이션
- 강성 방정식 · 후진 미분 공식 · 자코비안 행렬 · LU 분해 · 희소행렬 · 연산자 분리
- 루이스 수 · 다성분 확산 · 기체운동론 · 레너드-존스 퍼텐셜 · 민감도 해석
- OpenFOAM · ANSYS Fluent · 검증 및 확인
10. Footnotes[편집]
-
소프트웨어의 수명보다 파일 포맷의 수명이 긴 것은 이 바닥의 일반 법칙에 가깝다. 원본 코드를 돌려 본 적 없는 대학원생이 “CHEMKIN 형식 메커니즘”이라는 말을 매일 쓰고 있다는 사실이 그 증거다. ↩
-
천공카드 시대의 고정 열 위치 포맷이 2020년대까지 살아남은 이유는 단순하다 — 그 형식으로 배포된 메커니즘이 수천 개라서 아무도 못 버린다. 종 이름 길이 제한 때문에 이성질체 이름을 억지로 줄여 쓴 흔적이 상세 메커니즘 곳곳에 화석처럼 남아 있다. ↩
-
“우리는 CHEMKIN 으로 계산했습니다”라는 문장이 방법론 서술을 대체해 버리는 것도 흔한 일이다. 어느 모듈인지, 어떤 허용오차인지, 어떤 수송 모드인지, 어떤 메커니즘 버전인지가 없으면 재현이 안 된다. 도구 이름은 방법이 아니다. ↩