索引器错误:用于多个组件的Peng-Robinson方程代码

2024-07-02 11:41:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码:

from scipy.constants import R as Rgi
from numpy import *
import numpy as np
import matplotlib.pyplot as plt

常量

^{pr2}$

程序接口

print 'Cálculo de la fugacidad de una mezcla de gases reales utilizando Peng Robinson'
print '-----------------------------------------------------------------------------------'
print ' Metano                          |(0)| '
print ' Etano                           |(1)| '
print ' Propano                         |(2)| '
print ' Butano                          |(3)| '
print ' Pentano                         |(4)| '
print ' Hexano                          |(5)| '
print ' Etileno                         |(6)| '
print ' Propileno                       |(7)| '
print ' Ciclopentano                    |(8)| '
print ' Ciclohexano                     |(9)| '
print ' Benceno                         |(10)|'
print ' Tolueno                         |(11)|'
print ' Metanol                         |(12)|'
print ' Etanol                          |(13)|'
print ' 1-propanol                      |(14)|'
print ' Dimetileter                     |(15)|'
print ' Formaldehido                    |(16)|'
print ' Acetona                         |(17)|'
print ' Ácido acético                   |(18)|'
print ' Óxido de etileno                |(19)|'
print ' Aire                            |(20)|'
print ' Oxígeno                         |(21)|'
print ' Nitrógeno                       |(22)|'
print ' Amoniaco                        |(23)|'
print ' Dióxido de azufre               |(24)|'
print ' Agua                            |(25)|'
print ' Metiletilcetona                 |(26)|'
print '-------------------------------------------------------------------------------------'
print ' '
print ' '

ncomp = int(input('numero de componentes del sistema  : '))

def PRMix(T,P):

    comp = zeros(ncomp)
    y = zeros(ncomp)
    Wcomp =  zeros(ncomp)
    Tccomp = zeros(ncomp)
    Pccomp = zeros(ncomp)
    a = zeros(ncomp)
    b = zeros(ncomp)
    sumbi = zeros(ncomp)
    s = (ncomp,ncomp)
    aij = zeros(s)
    sumaij = zeros(s)

    for i in arange(0,ncomp,1):
        comp[i] = int(input('Escoja el componente : '))
        y[i] = float(input(' Fraccion : '))
        print '      '

    for i in arange (0,ncomp,1):
        Wcomp[i] = Wcomp[int(comp[i])]
        Tccomp[i] = Tccomp[int(comp[i])]
        Pccomp[i] = Pccomp[int(comp[i])]


    kappa = 0.37464 + 1.54226*Wcomp - 0.26992*Wcomp**2
    alpha = (1 + kappa*(1 - sqrt(T/Tccomp)))**2
    a     = 0.45724*(((Rgi**2) * (Tccomp**2))/(Pccomp))*alpha
    b     = 0.0788*((Rgi*Tccomp)/Pccomp)
    for i in arange(0,ncomp,1):
        sumbi[i] = y[i]*b[i]
        for j in arange(0,ncomp,1):
            aij[i,j] = sqrt(a[i]*a[j])
            sumaij[i,j] = y[i]*y[j] * aij[i,j]
    amix = sum(sumaij)
    bmix = sum(sumbi)

    Aij = (aij * P) / ((Rgi*T)**2)
    Bi = (b * P) / (Rgi * T)
    Amix = (amix * P)/((Rgi*T)**2)
    Bmix = (bmix * P)/(Rgi * T)

    pol = [1,(Bmix - 1), (Amix - 2 * Bmix - 3 * Bmix**2),(Bmix**2 + Bmix**3 -Amix * Bmix)]
    Z = roots(pol)
    Z = real(Z)
    Zvmix = max(Z)
    Zlmix = min(Z)


    LnPhiV = (Bi/Bmix)*(Zvmix-1) - log(Zvmix-Bmix)-(Amix/(2*Sqrt(2)*Bmix)) * ((2 *(dot(Aij,y)/Amix) -(Bi/Bmix)) * log((Zvmix + (1 + sqrt(2)) * Bmix) / (Zvmix + (1 - sqrt(2)) * Bmix)))

    LnPhiL = (Bi/Bmix)*(Zlmix-1) - log(Zlmix-Bmix)-(Amix/(2*Sqrt(2)*Bmix)) * ((2 *(dot(Aij,y)/Amix) -(Bi/Bmix)) * log((Zlmix + (1 + sqrt(2)) * Bmix) / (Zlmix + (1 - sqrt(2)) * Bmix)))

    PhiV = exp(LnPhiV)
    PhiL = exp(LnPhiL)

但是,当我运行它时,我得到一个错误:

Traceback (most recent call last):
   line 82, in PRMix
    Wcomp[i] = Wcomp[int(comp[i])]
IndexError: index 5 is out of bounds for axis 0 with size 2
>>> IndexError: index 5 is out of bounds for axis 0 with size 2

我不知道怎么了。我试着阅读有关错误的信息,但没有找到任何适用于我的代码的内容。在


Tags: inforzerosdesqrtintprintcomp