基于PC-SAFT的甲烷-苯二元体系泡点压力计算报错求助
求助:PC-SAFT计算甲烷-苯二元系泡点压力报错排查
我用Python基于PC-SAFT模型计算421.05 K下甲烷-苯二元混合物的泡点压力,运行代码时出现如下报错:SolutionError: A solution was not found for flashTQ. T=421.05
预期计算结果应为24 MPa,对应实验数据来自文献:
H.-M. Lin, H. M. Sebastian, J. J. Simnick, and K.-C. Chao, “Gas-liquid equilibrium in binary mixtures of methane with N-decane, benzene, and toluene,” J. Chem. Eng. Data, vol. 24, no. 2, pp. 146–149, Apr. 1979.
我的代码如下:
import numpy as np from thermo import PC_SAFT # Define components and conditions components = ['methane', 'benzene'] T = 421.05 # Kelvin x_liquid = [0.6, 0.4] # Liquid phase mole fractions # Initialize PC-SAFT model pc_saft = PC_SAFT(components=components) # Calculate bubble point pressure try: P_bubble, y_vapor = pc_saft.bubble_point(T=T, x=x_liquid) print(f"Bubble Point Pressure: {P_bubble / 1e6:.2f} MPa") except Exception as e: print(f"Error occurred: {e}")
恳请帮忙排查问题,以下是我想到的可能方向,也欢迎补充其他排查思路:
- 指定初始压力猜测:
bubble_point方法默认的初始压力可能离24 MPa的真实值相差过大,导致迭代不收敛。可以尝试手动添加P0参数,比如P0=22e6(22 MPa),给算法一个接近目标值的起点。 - 核对组分PC-SAFT参数:模型计算的准确性依赖组分的链长、段直径、能量参数等,检查
thermo库中甲烷和苯的内置参数是否与文献或标准数据库一致,必要时手动输入更准确的参数。 - 确认液相组成匹配:确保输入的
x_liquid与文献中421.05 K下对应泡点的液相组成完全一致,组成偏差可能导致无法找到相平衡解。 - 调整迭代控制参数:尝试修改
bubble_point方法的max_iter(最大迭代次数)或tol(收敛容差)参数,给迭代过程更多收敛空间。
内容的提问来源于stack exchange,提问作者PPG2889
相关产品推荐
相关产品推荐

