Я хотел бы рассчитать свойства пара наиболее эффективным способом, учитывая скаляр, вектор и матрицу в качестве параметров ввода с двумя аргументами. Что меня беспокоит, так это то, что я должен использовать, если блоки по отношению к размеру входных данных (скаляр, вектор или матрица) делают код довольно длинным. Я простой инженер-механик, довольно новичок в Python, любая помощь в том, как оптимизировать код, высоко ценится. Это код:
from iapws.iapws97 import _Region4
import numpy as np
def h_x(P,x):
''' spec enthalpy in liquid, steam and wet (two-phase flow) regions
P - pressure in bar
x - drayness steam fraction [-]
h - specific heat of wet region returned [kJ/kW]
'''
mm = len(np.shape(x))
if mm == 0:
h_ = _Region4(P/10,0)['h']
h__ = _Region4(P/10,1)['h']
# return h_ + x * (h__ - h_)
return h_ + x * (h__ - h_)
elif mm == 1:
return np.array([ _Region4(i/10,0)['h'] + j * ( _Region4(i/10,1)['h'] - _Region4(i/10,0)['h'] ) for i,j in zip(P,x) ])
elif mm == 2:
mmm,nnn = x.shape
h = np.ndarray(shape=(mmm,nnn)) #(mm,nn)
for i in range(mmm):
for j in range(nnn):
h_ = _Region4(P[i,j]/10,0)['h']
h__ = _Region4(P[i,j]/10,1)['h']
h[i,j] = h_ + x[i,j] * (h__ - h_)
return h
else:
print('h_x input must be scalar, vector or 2D matrix!')
# code testing
P = np.array([[.0234,.0193,0.244],[.0244,.0185,0.254]])
x = np.array([[.812,.782,.620],[.912,.882,.820]])
h_x(P,x)