def avg_mole_per_sec(raw, start_point=0, end_point='eq', constV=False):
#print type(end_point)
T = raw['temperature']
x = raw['axis0']
rr = raw['net_reaction_rate']
V = raw['volume']
n_rxn = rr.shape[1] - 1
i_start = start_point
if type(end_point) is int:
i_end = end_point
if i_end == i_start:
mole_per_sec = rr[i_start, :] * float(V[i_start])
return np.transpose(mole_per_sec)
else:
if end_point is 'ign':
T_end = T[0] + 400
elif end_point is 'eq':
T_end = T[-1] - 50
i_end = np.argmin(abs(T - T_end))
avg_rr = np.ndarray([n_rxn+1,1])
for id_rxn in range(1, n_rxn + 1):
if constV:
mole_per_sec = rr[i_start:i_end,id_rxn] * V[0]
else:
mole_per_sec = np.multiply(rr[i_start:i_end, id_rxn], V[i_start:i_end])
int_rr = np.trapz(np.transpose(mole_per_sec), np.transpose(x[i_start:i_end]))
avg_rr[id_rxn] = float(int_rr) / (x[i_end] - x[i_start])
return avg_rr
评论列表
文章目录