CERFACS 化学网站中提供的机理文件是基于 Cantera 编写的,该类文件格式无法在 Chemkin 中使用,所以需要将 CTI 或 YAML 格式的文件转换为 Chemkin 格式的文件。
将 Cantera 的 CTI 输入文件转换为 Chemkin 格式机理文件(chem.inp、therm.dat 和 tran.dat)可以通过以下步骤完成:
一、安装 Cantera
方法1 在 cmd 中安装 Cantera:
pip install cantera
安装Cantera Python模块的第一步是确保安装了兼容版本的 Python,并且能够从命令行运行。Cantera 3.0.0 的软件包可用于 Python 版本 3.8、3.9、 3.10 和 3.11等。
方法2 在 Anaconda 中安装 Cantera:
如果在 cmd 中安装失败,可能是因为缺少 Boost 库等程序库,手动安装完这些库后还需设置环境变量,过程较繁琐。所以笔者建议使用 Anaconda 软件对 Cantera 进行安装。
软件来源:anaconda | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
安装教程:Anaconda 教程 | 菜鸟教程 (runoob.com)
笔者下载的是目前最新版本的 Anaconda:
安装完 Anaconda 后在 Anaconda Prompt 中,运行以下命令来安装 Cantera:
1、添加 conda-forge 频道:
conda config --add channels conda-forge
2、安装 Cantera:
conda install cantera
3、验证是否安装成功:
在 Anaconda Prompt 中通过以下命令来验证 Cantera 是否安装成功,若显示 Cantera 的版本号则安装成功:
python -c "import cantera as ct; print(ct.__version__)"
二、配置 PyCharm 使用 Anaconda 环境
(使用 cmd 安装 Cantera 可跳过此步)
1、打开 PyCharm
2、在设置中找到 Python Interpreter,选择 “Add Interpreter”、“Add Local Interpreter”
3、在 “Existing” 中索引到 Anaconda 的安装路径,选择 “python.exe” 、“Apply”
4、等待更新结束;
三、将 CTI 格式转换为 yaml 格式文件
打开 Anaconda Prompt(或 cmd ),依次输入:
cd C:\Users\lenovo\Desktop\chemkin_learning
# 其中“C:\Users\lenovo\Desktop\chemkin_learning”为CTI文件所在路径
cti2yaml "hydrocarbon_mechanism.cti" "hydrocarbon_mechanism.yaml"
# 其中 hydrocarbon_mechanism.cti 为要输入的 CTI 文件,后者为输出文件
( 该方法来自 Cantera 官网:Converting CTI and XML input files to YAML | Cantera )
注意:有些物质的机理在转换时会改变一些数值
四、编写 Python 脚本进行转换
1、编写脚本:
import subprocess
import sys
def convert_yaml_to_chemkin(yaml_file, output_dir='', mech_file='chem.inp', thermo_file='therm.dat', transport_file='tran.dat', phase_name=None):
mech_file_path = f'{output_dir}/{mech_file}' if output_dir else mech_file
thermo_file_path = f'{output_dir}/{thermo_file}' if output_dir else thermo_file
transport_file_path = f'{output_dir}/{transport_file}' if output_dir else transport_file
cmd = ['yaml2ck', f'--mechanism={mech_file_path}', f'--thermo={thermo_file_path}', f'--transport={transport_file_path}', yaml_file]
if phase_name:
cmd.insert(-1, f'--phase-name={phase_name}')
try:
subprocess.run(cmd, check=True)
print(f"Conversion successful! Files created at {output_dir if output_dir else 'current directory'}:")
print(f"- Mechanism file: {mech_file_path}")
print(f"- Thermodynamics file: {thermo_file_path}")
print(f"- Transport file: {transport_file_path}")
except subprocess.CalledProcessError as e:
print(f"An error occurred during conversion: {e}")
sys.exit(1)
if __name__ == '__main__':
yaml_file = 'C:/Users/lenovo/Desktop/chemkin_learning/hydrocarbon_mechanism.yaml' # yaml 文件路径
output_dir = 'C:/Users/lenovo/Desktop/chemkin_learning' # 输出文件路径
convert_yaml_to_chemkin(yaml_file, output_dir)
其中 'C:/Users/lenovo/Desktop/chemkin_learninghydrocarbon_mechanism.yaml' 为 yaml 文件完整路径,为保证解析正确使用正斜杠 ”/“ 。运行这个脚本后,会在当前目录下生成 chem.inp、therm.dat 和 tran.dat 文件。
2、将编写好的 Python 脚本放到 yaml 文件所在文件夹:
3、在 Anaconda Prompt(或 cmd )中运行脚本:
python "C:\Users\lenovo\Desktop\chemkin_learning\hydrocarbon.py"
注意:有些物质的机理在转换时会改变一些数值
4、检查生成的文件:
脚本运行完毕后,你应该会在当前目录下看到生成的 chem.inp 化学
反应机理输入文件、therm.dat
热力学文件 和 tran.dat
输运文件。
由于笔者是初学者,能力有限,程序内容需要仔细修改才能适用其他工作内容,并且程序本身不够简洁也可能有错误之处,欢迎使用者批评指正。