Cantera 的 CTI 文件(或YAML文件)转换为 Chemkin 格式文件

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输运文件。

        由于笔者是初学者,能力有限,程序内容需要仔细修改才能适用其他工作内容,并且程序本身不够简洁也可能有错误之处,欢迎使用者批评指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值