You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cantera导出CSV失败及SolutionArray对象报错的解决方法问询

Cantera计算结果导出CSV解决方案

报错原因说明

你遇到的<cantera.composite.SolutionArray object at 0x7f4badca0fd0>报错,是因为使用的Cantera版本低于2.5.0,旧版本的SolutionArray没有内置to_csv方法,直接调用只会输出对象的内存地址,无法导出数据。
手动转换为Pandas DataFrame再导出的方案兼容所有Cantera版本,可解决该问题,且可以按需选择导出的字段,避免导出冗余数据。

具体修改步骤

1. 导出第一部分:单工况时间历程数据

找到第一部分中你取消注释的time_history.to_csv("time_history_TEST.csv")行,替换为以下代码:

# 构造时间序列结果DataFrame
df_time_history = pd.DataFrame()
# 写入基础参数
df_time_history['时间(s)'] = time_history.t
df_time_history['温度(K)'] = time_history.T
df_time_history['压力(Pa)'] = time_history.P
# 写入所有物种质量分数,可根据需要删减字段
for sp_name in gas.species_names:
    df_time_history[f'Y_{sp_name}'] = time_history(sp_name).Y[:, 0]
# 导出为CSV,无多余索引行
df_time_history.to_csv("time_history.csv", index=False, encoding='utf-8-sig')

2. 导出第二部分:温度与自燃延迟对应(NTC评估)数据

在第二部分的for循环跑完(所有温度工况的自燃延迟计算完成)、绘图代码之前,添加以下代码:

# 构造NTC结果DataFrame
df_ignition_delay = pd.DataFrame()
# 写入对应参数
df_ignition_delay['温度(K)'] = ignition_delays.T
df_ignition_delay['1000/T (1/K)'] = 1000 / ignition_delays.T
df_ignition_delay['自燃延迟时间(s)'] = ignition_delays.tau
df_ignition_delay['压力(Pa)'] = reactor_pressure
df_ignition_delay['当量比'] = 1.0
# 导出为CSV
df_ignition_delay.to_csv("ignition_delay_vs_temperature.csv", index=False, encoding='utf-8-sig')

验证说明

修改后运行脚本,会在脚本运行目录下生成两个CSV文件:

  • time_history.csv:包含1000K工况下反应过程的时间、温度、压力、各组分质量分数数据
  • ignition_delay_vs_temperature.csv:包含所有温度点对应的自燃延迟时间,可直接用于后续NTC行为分析

内容的提问来源于stack exchange,提问作者wundolab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 07:45:03