我正在尝试实现一个Arrhenius类型的定律来计算一个无量纲的温度相关粘度。
我想要迭代一系列的激活能(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'发布于 2020-12-15 11:45:50
在尝试调用value方法之前,您应该首先实例化对象。我建议您将visc的定义更改为:
visc = ArrVisc(Ea[i]).value(t)发布于 2020-12-15 11:46:02
您需要创建一个对象:
av = ArrVisc(Ea)
for i in ...:
visc = av.value(t)
Eta_T.append(visc)直接调用ArrVisc.value(...)是不正确的;普通方法是在对象上调用的,而不是直接在类上调用的。如果您确实有应该直接在类上调用的方法,则应该将它们标记为@classmethod或@staticmethod (并且不能访问self,因为在这种情况下没有self )。
https://stackoverflow.com/questions/65299681
复制相似问题