2016-03-08 36 views
1

我是新化学网络模型。目前我正在转换以前的学生Python代码,以适应实验室中新版本的标题。将python2.6 cantera1.8转换为python2.7 cantera2.2

首先,从机构的气体混合物(预定义)被定义

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

然后,我想要得到的种类和使用坎特拉nSpecies

nsp = gas_mix.nSpecies() 

的号码,我得到了错误消息

AttributeError: 'list' object has no attribute 'nSpecies'

我也试过:

nsp = gas_mix.n_species 

,它也显示

AttributeError: 'list' object has no attribute

你请请帮我在这? 谢谢你,最好的问候, YouBe

回答

0

它看起来像import_phases回报对象的列表 - 无论是“混合气体”或只是“气”的对象名单。我并不确定,因为这与您正在使用的程序非常具体。

无论如何,尝试循环遍历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) 

也许这将让你更接近你想要什么。

+0

谢谢您的回复。不幸的是我得到了同样的错误信息。 AttributeError:'list'对象没有属性'set'我正在计算物种的外部循环,并将其作为快速解决方案的数字放入此代码中。 – BeYo

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”中描述。

+0

对于最近的回复感到抱歉,并感谢您的回答。我发现我使用了nSpecies的错误更新版本,它应该是没有()的.n_species。现在看来不是这个问题,而是其他问题。 – BeYo