我是化学网络模型的新手。目前我正在转换以前的学生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
答案 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接口的许多细节。