我试图实现阿累尼乌斯型定律来计算无量纲的温度相关粘度
我想迭代一系列的活化能(Ea),这是函数的一个参数,以及作为自变量的无量纲温度
代码:
import numpy as np
"""
define class for Arrhenius viscosity law
Langemeyer et. al. Eta_T = b*exp((Ea/(temp +1)) - (Ea/2))
Where Eta_T ==> Temperature dependent Viscosity
Ea ==> Activation Energy
t ==> Non-dimensional temperature
"""
class ArrVisc(object):
def __init__(self, Ea):
self.Ea = Ea
def value(self, t):
return np.exp((self.Ea/(t+1.))-(self.Ea/2.))
'''
Define arrays for valid activation energies and non-dimensional
temperature
'''
t = np.linspace(0, 1, 100)
Ea = [20.0, 23.03, 25.35, 29.96, 32.22]
''' Initialize array for temperature dependent viscosity Eta_T '''
Eta_T = []
"""
Iterate Class ArrVisc() over activation Ea[]
and non-dimensional temperature
"""
for i in range(len(Ea)):
visc = ArrVisc.value(t, Ea[i])
Eta_T.append(visc)
错误消息:
AttributeError: 'numpy.ndarray' object has no attribute 'Ea'
您需要创建一个对象:
直接调用
ArrVisc.value(...)
是不正确的;普通方法是在对象上调用的,而不是直接在类上调用的。如果您确实有应该直接在类上调用的方法,那么应该将它们标记为@classmethod
或@staticmethod
(并且不能访问self
,因为在这种情况下没有self
)在尝试调用value方法之前,应该首先实例化对象。我建议您将visc的定义更改为以下内容:
相关问题 更多 >
编程相关推荐