将python2.6 cantera1.8转换为python2.7 cantera2.2

时间:2016-03-08 14:16:37

标签: python

我是化学网络模型的新手。目前我正在转换以前的学生python代码,以便将实验室中的新版本改编为标题。

首先,定义来自机制(预定义)的气体混合物

gas_mix = ct.import_phases(mech,['gas'])

然后,我想得到物种的数量并使用cantera nSpecies

nsp = gas_mix.nSpecies()

我收到错误消息

  

AttributeError:' list'对象没有属性' nSpecies'

我也试过了:

nsp = gas_mix.n_species

它也显示

  

AttributeError:' list'对象没有属性

请你帮我这个吗? 感谢你并致以真诚的问候, YouBe

2 个答案:

答案 0 :(得分:0)

看起来import_phases会返回一个对象列表 - 可以列出" gas mix"或者只是" gas"对象。我不太确定,因为这对您正在使用的计划非常具体。

无论如何,请尝试循环gas_mix中的值,看看您是否可以调用nSpecies()方法或访问n_species属性:

gas_mix = ct.import_phases(mech,['gas'])
for gm in gas_mix:
    print(gm.nSpecies())
    # or you can try this:
    print(gm.n_species)

也许这会让你更接近你想要的东西。

答案 1 :(得分:0)

函数import_phases返回一个列表,这对于要从同一文件导入多个阶段定义的情况很有用,例如

mixtures = ct.import_phases(mech, ['gas1', 'gas2'])

其中mixtures[0]mixtures[2]将成为单一阶段定义。如果您只想定义一个阶段,则更容易编写:

gas_mix = ct.Solution(mech,'gas')

或者,如果机制文件只包含一个阶段定义,则只需

gas_mix = ct.Solution(mech)

从这里开始,您应该可以访问物种数量

gas_mix.n_species

文档页面“Migrating from the Old Python Module”中描述了从旧Cantera接口迁移到新Cantera接口的许多细节。