def get_Z(self, T, p):
#A = self.a * p / self.R**2 / T**2.5
#B = self.b * p / self.R / T
A = self.get_A(T, p)
B = self.get_B(T, p)
# Solve the cubic equation for compressibility factor z
# Z^3 - Z^2 + (A-B-B**2)*Z - A*B = 0
coeffs = [1, -1, A-B-B**2, -A*B]
roots = np.roots(coeffs)
real_roots = roots[np.isreal(roots)].real
valid_roots = real_roots[real_roots > p*self.b/self.R/T]
return valid_roots
# dZ/dT at const. p
评论列表
文章目录