mcpField
C
cantera

cantera

github.com/k-dense-ai数据与数据库55.1k273 次安装2 天前更新
代码仓库

关于 cantera

使用 Cantera 执行并检查均相理想气体点火计算的 skill,适用于燃烧建模人员。它按温度变化率定义点火延迟,并明确反应器假设、数值细化和机理适用限制。

主要功能

  1. 01定容与定压计算
  2. 02基于温度梯度的点火延迟
  3. 03四组计算进行数值细化
  4. 04守恒与热力学检查
  5. 05导出 CSV 历程和 JSON 报告

适用场景

  1. 01估算指定气体混合物的点火延迟
  2. 02比较不同反应器约束下的结果
  3. 03检查延迟是否达到数值收敛

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/k-dense-ai/scientific-agent-skills --skill cantera

安装后在 Claude Code 中输入/cantera确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/
hydrogen-ignition.json
references/
interpretation.md
scripts/
ignition_delay.py

详细介绍

Cantera:均质着火计算

何时使用

用于封闭、绝热、均质的理想气体反应器,且已知动力学机理、初始温度、压力和摩尔组成。随附的辅助脚本可运行定容和定压两种工况,并报告一个精确定义的基于温度的延迟时间。它不是火焰求解器,也不是通用反应器网络构建工具。

计算成功完成只能证明数值执行成功,并不能证明机理对燃料、压力、温度、稀释剂或实测着火观测量有效。在选择机理、比较实验或解释未解析/两阶段着火时,请阅读 references/interpretation.md。

工作流

  1. 确定机理及其已验证的工况范围。保留其来源、版本、引用信息以及任何修改。检查其相为 ideal-gas,并确认每种反应物、稀释剂和跟踪组分均存在。对于带导入的自定义 YAML,除生成的相快照外,还要保留原始依赖文件。自定义 Python 速率扩展还需要保留其原始代码和运行环境以便复现。
  2. 根据物理实验选择定容或定压。显式提供 K、Pa、秒和摩尔量。mole_amounts 会被归一化为摩尔分数;它不是质量分数映射。报告包含归一化后的初始组成。
  3. 复制 assets/hydrogen-ignition.json 并修改其工况。随附的 H2/O2/Ar 案例使用 Cantera 自带的 h2o2.yaml 作为可执行的数值示例;它并不是对每个氢实验的建议。
  4. 设置足够长的时间范围,以观察温度上升和加热速率峰值下降。选择足够精细的输出间隔以定位该峰值。设置最小温升,以区分着火与可忽略的加热或数值噪声。
  5. 运行辅助脚本并检查全部四个历史记录和报告。如果延迟时间发生显著变化、最大值接近时间边界或守恒失败,则再次细化。将温度和跟踪组分历史与实际的着火定义进行比较。
  6. 报告工况集、机理哈希、反应器约束、延迟时间定义、输出间隔、数值更改和科学限制,以及延迟时间。

执行已测试示例

从集合根目录:

uv run --no-project --python 3.12 --with cantera==3.2.0 --with numpy==2.5.3 \
  python skills/cantera/scripts/ignition_delay.py \
  skills/cantera/assets/hydrogen-ignition.json hydrogen-result

已在 Python 3.12、Cantera 3.2.0 和 NumPy 2.5.3 上测试。无需外部求解器可执行文件或凭据。本地相对机理路径在 Cantera 内置数据搜索之前,会先相对于配置文件目录进行解析。每次运行使用新的输出目录。

1000 K、101325 Pa、H2:O2:Ar = 2:1:7 的定容示例使用所述 max(dT/dt) 定义,结果约为 0.313 ms。在 3 ms 时,其温度约为 2920.67 K,并与单独的 UV 平衡计算一致。这些是软件包回归值,不是实验验证数据。

精确延迟与细化契约

延迟是在均匀输出网格上 numpy.gradient(T, time, edge_order=2) 全局最大值对应的时间。仅当最大温升达到 minimum_temperature_rise_k,且最大值距离每个边界至少两个采样索引时,才会报告该延迟。否则 delay_s 为 null,并由状态说明原因。不会外推超出模拟时间范围的延迟。

该辅助函数明确使用 Cantera 3.2 的 clone=True,并从 reactor.phase 读取演化中的属性。原始 Solution 保留初始状态;不要将其读取为反应器的最终状态。ReactorNet.advance(t) 请求的是绝对时间,且未配置推进限制,因此输出网格保持均匀。

它运行四个相互独立的全新反应器:

运行相对配置条件的变化
baseline原始设置
finer_output输出间距减半,时间范围和求解器控制相同
tighter_solver两个求解器容差均除以十;最大内部时间步长减半
longer_horizon时间范围加倍,输出间距保持原始值

numerically_resolved 要求所有运行都产生延迟、相对延迟变化在 delay_relative_tolerance 之内,并且所有守恒检查均通过。在离散网格上的一致并不等同于统计误差棒:还需报告输出间距。基线采样数必须在 11 到 50000 之间,为细化留出空间。运行时间随机理规模、刚性和所选时间范围而增长;积分失败会保留 Cantera 的错误文本。

输出与检查

  • report.json:所有输入设置、包版本、配置与机理哈希、归一化起始组成、四个延迟估计、数值变化、守恒以及机理热力学温度边界。
  • baseline.csv、finer_output.csv、tighter_solver.csv、longer_horizon.csv:时间、温度、压力、体积、质量、总内能、总焓以及所请求的组分摩尔分数。
  • mechanism.yaml:由 Cantera 写入的已加载相、组分和反应的快照。该辅助函数请求 write_yaml(precision=17),并保存其计算哈希时所用的精确 UTF-8 字节,不进行平台换行符转换。报告还会对定位到的原始机理文件计算哈希。导入的源依赖不会单独计算哈希;快照捕获的是已加载的模型。其生成的头部包含日期,因此快照哈希标识的是已保存的产物,在其他方面相同的重跑之间无需匹配。

封闭反应器守恒质量和元素质量分数。定容情形检查总内能;定压情形检查总焓。能量误差除以 max(abs(initial_energy_J), 1 J)。诊断容差为:质量相对漂移 <1e-8、元素绝对漂移 <1e-8、能量缩放漂移 <1e-6、组分质量分数求和误差 <1e-8,以及组分质量分数 >-1e-10。这些检查用于揭示数值问题,并不衡量动力学模型的不确定性。

单独检查 within_thermo_temperature_range:它检查已保存的输出状态,而非每一个内部积分状态。数值分辨率并不意味着组分热力学拟合始终处于其温度边界内。该辅助函数无法根据这些边界评估压力相关的动力学有效性。

范围与上游参考

该套件涵盖两类反应器约束、守恒、与独立 Cantera 平衡的最终状态一致性、不点火条件、未解析边界最大值、细化、快照回放,以及无效组分/条件。它不验证激波管热损失、真实气体效应、表面、流动装置、火焰或多级实验点火定义。仅在有必要的物理模型及其自身检查时构建这些模型;不要将此辅助工具的结果重新标记为其中之一。

评论

支持 Markdown