2015-07-09 3 views
0

Я работаю над симуляцией Cantera в Python и смотрю на концентрации некоторых продуктов и топлива. Я успешно смоделировал концентрации для разных видов топлива. Однако, как только я пытаюсь вычитать 2 значения концентрации друг от друга, чтобы получить квадрат ошибки, я получаю следующее сообщение об ошибке:Почему эти результаты NoneType?

Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
File "Comparison.py", line 145, in <module> 
    SEPOSF2 = (ConcPOSF-ConcPOSF2)^2 
TypeError: unsupported operand type(s) for -: 'NoneType' and 'NoneType' 

Мои вопросы:

  1. Почему ConcPOSF и ConcPOSF2 типа NoneType?
  2. Как я могу обойти эту проблему, чтобы получить разницу?

Вот код до того момента, когда он разбивается:

(Примечание: Каждый результат до последней строки сюжетно-состоянии, но печатает, как None, почему.?)

import cantera as ct 

T = 1200 
#Pb is P in bar 
Pb = 1 
P = Pb*101325 
tn = 100 
reactors = 'POSF10264:1' 

gas = ct.Solution('mech10264C2.cti') 
gas.TPY = T, P, reactors 
r = ct.IdealGasReactor(gas) 
net = ct.ReactorNet([r]) 

gas2 = ct.Solution('5k410k.cti') 
gas2.TPY = T,P,reactors 
r2 = ct.IdealGasReactor(gas2) 
net2 = ct.ReactorNet([r2]) 

tim = [] 

Temp = [] 
Pres = [] 
p = [] 
t = [] 
x0 = [] 
x1 = [] 
x2 = [] 
x3 = [] 
x4 = [] 
x5 = [] 
x6 = [] 
x7 = [] 
y0 = [] 

Temp2 = [] 
Pres2 = [] 
p2 = [] 
t2 = [] 
x02 = [] 
x12 = [] 
x22 = [] 
x32 = [] 
x42 = [] 
x52 = [] 
x62 = [] 
x72 = [] 
y02 = [] 

timen = [] 

for n in range(tn): 
    time = (n+1)*(0.001) 
    net.advance(time) 
    net2.advance(time) 

    timen = tim.append(time * 1000) 

    Temp = t.append(r.T) 
    Pres = p.append(r.thermo.P) 
    ConcPOSF = x0.append(r.thermo['POSF10264'].X[0]) 
    ConcC2H4 = y0.append(r.thermo['C2H4'].X[0]) 
    ConcC3H6 = x1.append(r.thermo['C3H6'].X[0]) 
    ConcC4H81 = x2.append(r.thermo['C4H81'].X[0]) 
    ConciC4H8 = x3.append(r.thermo['iC4H8'].X[0]) 
    ConcC6H6 = x4.append(r.thermo['C6H6'].X[0]) 
    ConcC6H5CH3 = x5.append(r.thermo['C6H5CH3'].X[0]) 
    ConcH = x6.append(r.thermo['H'].X[0]) 
    ConcCH3 = x7.append(r.thermo['CH3'].X[0]) 

    Temp2 = t2.append(r2.T) 
    Pres2 = p2.append(r2.thermo.P) 
    ConcPOSF2 = x02.append(r2.thermo['POSF10264'].X[0]) 
    ConcC2H42 = y02.append(r2.thermo['C2H4'].X[0]) 
    ConcC3H62 = x12.append(r2.thermo['C3H6'].X[0]) 
    ConcC4H812 = x22.append(r2.thermo['C4H81'].X[0]) 
    ConciC4H82 = x32.append(r2.thermo['iC4H8'].X[0]) 
    ConcC6H62 = x42.append(r2.thermo['C6H6'].X[0]) 
    ConcC6H5CH32 = x52.append(r2.thermo['C6H5CH3'].X[0]) 
    ConcH2 = x62.append(r2.thermo['H'].X[0]) 
    ConcCH32 = x72.append(r2.thermo['CH3'].X[0]) 

    SEPOSF2 = (ConcPOSF-ConcPOSF2)^2 #### BOOM 

ответ

1

Метод append() ничего не возвращает. Он добавляет элемент в список на месте и, таким образом, возвращает None.

+0

Aah, прохладно. Спасибо, что помогли мне! Я понял одну проблему и столкнулся с другой. На данный момент я буду работать над этим. Спасибо! – Sari

+0

Если это помогает, пожалуйста, примите ответ :) – Kikohs

+0

Я не знал об этом. Спасибо, что дали мне знать. – Sari

Смежные вопросы