实际气体状态方程:Peng-Robinson(P-R)方程计算指南

一、P-R方程基本原理

Peng-Robinson(P-R)方程是立方型状态方程的代表之一,由Peng和Robinson于1976年提出,用于描述实际气体的压力(PPP)、体积(VVV)、温度(TTT)关系,考虑了分子间作用力(通过参数aaa)和分子固有体积(通过参数bbb),比理想气体方程(PV=nRTPV=nRTPV=nRT)更准确。

二、P-R方程数学表达式

对于任意物质的量nnn的气体,P-R方程的摩尔体积形式 为:
P=RTVm−b−a(T)Vm(Vm+b)+b(Vm−b) P = \frac{RT}{V_m - b} - \frac{a(T)}{V_m(V_m + b) + b(V_m - b)} P=Vm−bRT−Vm(Vm+b)+b(Vm−b)a(T)

其中:

  • PPP:气体压力(Pa),Vm=V/nV_m = V/nVm=V/n:摩尔体积(m³/mol),TTT:热力学温度(K);
  • RRR:通用气体常数(KaTeX parse error: Undefined control sequence: \cdotp at position 1: \̲c̲d̲o̲t̲p̲ 或 KaTeX parse error: Undefined control sequence: \cdotp at position 1: \̲c̲d̲o̲t̲p̲);
  • a(T)a(T)a(T):温度依赖的分子间吸引力参数(Pa·m⁶/mol²);
  • bbb:分子固有体积参数(m³/mol)。
三、参数a(T)a(T)a(T)与bbb的计算

参数a(T)a(T)a(T)和bbb由气体的临界性质 (TcT_cTc:临界温度,PcP_cPc:临界压力)和偏心因子 (ω\omegaω)决定:

1. 参数bbb(分子固有体积)

b=0.07780⋅RTcPc b = 0.07780 \cdot \frac{RT_c}{P_c} b=0.07780⋅PcRTc

2. 参数a(T)a(T)a(T)(温度依赖的吸引力参数)

a(T)=ac⋅α(T) a(T) = a_c \cdot \alpha(T) a(T)=ac⋅α(T)

其中:

  • 临界吸引参数 aca_cac:ac=0.45724⋅R2Tc2Pca_c = 0.45724 \cdot \frac{R^2 T_c^2}{P_c}ac=0.45724⋅PcR2Tc2;
  • 温度修正因子 α(T)\alpha(T)α(T):α(T)=[1+κ(1−Tr)]2\alpha(T) = \left[1 + \kappa\left(1 - \sqrt{T_r}\right)\right]^2α(T)=[1+κ(1−Tr )]2;
  • 对比温度 Tr=T/TcT_r = T/T_cTr=T/Tc(TTT为当前温度,TcT_cTc为临界温度);
  • 系数 κ\kappaκ:κ=0.37464+1.54226ω−0.26992ω2\kappa = 0.37464 + 1.54226\omega - 0.26992\omega^2κ=0.37464+1.54226ω−0.26992ω2(ω\omegaω为偏心因子)。
四、P-R方程求解步骤

实际应用中,常需根据已知条件(T,PT,PT,P求VmV_mVm,或T,VmT,V_mT,Vm求PPP)解方程。由于P-R方程是关于VmV_mVm的三次多项式,需通过代数或数值方法求解实根。

步骤1:整理为三次方程标准形式

将P-R方程展开并整理为关于VmV_mVm的三次方程:
Vm3−(b+RTP)Vm2+(a(T)−3b2−2RTbP)Vm−(ab−b2−RTb2P)=0 V_m^3 - \left(b + \frac{RT}{P}\right)V_m^2 + \left(a(T) - 3b^2 - \frac{2RTb}{P}\right)V_m - \left(ab - b^2 - \frac{RTb^2}{P}\right) = 0 Vm3−(b+PRT)Vm2+(a(T)−3b2−P2RTb)Vm−(ab−b2−PRTb2)=0

令:
A=a(T)PR2T2,B=bPRT A = \frac{a(T)P}{R^2 T^2}, \quad B = \frac{bP}{RT} A=R2T2a(T)P,B=RTbP

则方程简化为无量纲形式(压缩因子Z=PVm/(RT)Z = PV_m/(RT)Z=PVm/(RT) ):
Z3−(1−B)Z2+(A−3B2−2B)Z−(AB−B2−B3)=0 Z^3 - (1 - B)Z^2 + (A - 3B^2 - 2B)Z - (AB - B^2 - B^3) = 0 Z3−(1−B)Z2+(A−3B2−2B)Z−(AB−B2−B3)=0

步骤2:求解三次方程实根

三次方程可能有1个或3个实根,物理意义如下:

  • 1个实根:超临界流体或单一气相/液相;
  • 3个实根 :气液共存区(最大根为气相VmgV_m^gVmg,最小根为液相VmlV_m^lVml,中间根不稳定)。

求解方法

  • 解析法:卡尔达诺公式(复杂,较少用);
  • 数值法:牛顿迭代法(实用,需给定初值)。
五、计算实例(以甲烷为例)

已知条件 :甲烷(CH4CH_4CH4)的临界参数Tc=190.56 KT_c=190.56\ \text{K}Tc=190.56 K,Pc=4.5992 MPa=4.5992×106 PaP_c=4.5992\ \text{MPa}=4.5992\times10^6\ \text{Pa}Pc=4.5992 MPa=4.5992×106 Pa,偏心因子ω=0.011\omega=0.011ω=0.011;当前状态T=300 KT=300\ \text{K}T=300 K,P=1 MPa=1×106 PaP=1\ \text{MPa}=1\times10^6\ \text{Pa}P=1 MPa=1×106 Pa。求摩尔体积VmV_mVm。

1. 计算参数bbb

b=0.07780⋅RTcPc=0.07780⋅8.314×190.564.5992×106≈2.69×10−5 m3/mol b = 0.07780 \cdot \frac{RT_c}{P_c} = 0.07780 \cdot \frac{8.314 \times 190.56}{4.5992\times10^6} \approx 2.69\times10^{-5}\ \text{m}^3/\text{mol} b=0.07780⋅PcRTc=0.07780⋅4.5992×1068.314×190.56≈2.69×10−5 m3/mol

2. 计算参数a(T)a(T)a(T)
  • 对比温度Tr=T/Tc=300/190.56≈1.574T_r = T/T_c = 300/190.56 \approx 1.574Tr=T/Tc=300/190.56≈1.574;
  • 系数κ=0.37464+1.54226×0.011−0.26992×0.0112≈0.391\kappa = 0.37464 + 1.54226\times0.011 - 0.26992\times0.011^2 \approx 0.391κ=0.37464+1.54226×0.011−0.26992×0.0112≈0.391;
  • 温度修正因子α(T)=[1+0.391(1−1.574)]2≈0.839\alpha(T) = \left[1 + 0.391(1 - \sqrt{1.574})\right]^2 \approx 0.839α(T)=[1+0.391(1−1.574 )]2≈0.839;
  • 临界吸引参数KaTeX parse error: Undefined control sequence: \cdotp at position 1: \̲c̲d̲o̲t̲p̲;
  • KaTeX parse error: Undefined control sequence: \cdotp at position 1: \̲c̲d̲o̲t̲p̲(注:此处单位需注意,aca_cac实际计算应为KaTeX parse error: Undefined control sequence: \cdotp at position 1: \̲c̲d̲o̲t̲p̲,修正后KaTeX parse error: Undefined control sequence: \cdotp at position 1: \̲c̲d̲o̲t̲p̲)。
3. 代入P-R方程求VmV_mVm

将已知参数代入P-R方程:
1×106=8.314×300Vm−2.69×10−5−1.91×105Vm(Vm+2.69×10−5)+2.69×10−5(Vm−2.69×10−5) 1\times10^6 = \frac{8.314\times300}{V_m - 2.69\times10^{-5}} - \frac{1.91\times10^5}{V_m(V_m + 2.69\times10^{-5}) + 2.69\times10^{-5}(V_m - 2.69\times10^{-5})} 1×106=Vm−2.69×10−58.314×300−Vm(Vm+2.69×10−5)+2.69×10−5(Vm−2.69×10−5)1.91×105

通过牛顿迭代法求解(初值取理想气体体积Vm0=RT/P≈2.494×10−3 m3/molV_m^0 = RT/P \approx 2.494\times10^{-3}\ \text{m}^3/\text{mol}Vm0=RT/P≈2.494×10−3 m3/mol),最终得Vm≈2.52×10−3 m3/molV_m \approx 2.52\times10^{-3}\ \text{m}^3/\text{mol}Vm≈2.52×10−3 m3/mol(气相)。

六、Matlab代码实现

以下代码实现P-R方程计算,支持已知T,PT,PT,P求VmV_mVm或** 已知T,VmT,V_mT,Vm求PPP**:

matlab 复制代码
function result = peng_robinson(T, P, Tc, Pc, omega, mode, Vm)
    % P-R方程计算函数
    % 输入:
    %   T: 温度(K), P: 压力(Pa), Tc: 临界温度(K), Pc: 临界压力(Pa), omega: 偏心因子
    %   mode: 'V' (已知T,P求Vm) 或 'P' (已知T,Vm求P)
    %   Vm: 摩尔体积(m³/mol) (mode='P'时需输入)
    % 输出:
    %   result: 摩尔体积(m³/mol) 或 压力(Pa)
    
    R = 8.314; % 气体常数 J/(mol·K)
    
    % 1. 计算参数a(T)和b
    Tr = T / Tc; % 对比温度
    kappa = 0.37464 + 1.54226*omega - 0.26992*omega^2; % 系数κ
    alpha = (1 + kappa*(1 - sqrt(Tr)))^2; % 温度修正因子
    ac = 0.45724 * (R^2 * Tc^2) / Pc; % 临界吸引参数a_c
    a = ac * alpha; % 温度依赖参数a(T)
    b = 0.07780 * (R * Tc) / Pc; % 分子体积参数b
    
    if strcmp(mode, 'V') % 已知T,P求Vm
        % 定义三次方程 f(Vm) = Vm³ + c2*Vm² + c1*Vm + c0 = 0
        c2 = -(b + R*T/P);
        c1 = a - 3*b^2 - 2*R*T*b/P;
        c0 = -(a*b - b^2 - R*T*b^2/P);
        
        % 牛顿迭代法求解(初值取理想气体体积)
        Vm0 = R*T/P; % 理想气体体积
        tol = 1e-6; max_iter = 100;
        for iter = 1:max_iter
            f = Vm0^3 + c2*Vm0^2 + c1*Vm0 + c0;
            df = 3*Vm0^2 + 2*c2*Vm0 + c1;
            Vm1 = Vm0 - f/df;
            if abs(Vm1 - Vm0) < tol, break; end
            Vm0 = Vm1;
        end
        result = Vm1;
        
    elseif strcmp(mode, 'P') % 已知T,Vm求P
        term1 = R*T / (Vm - b);
        denominator = Vm*(Vm + b) + b*(Vm - b);
        term2 = a / denominator;
        result = term1 - term2;
    else
        error('模式错误!请选择''V''(求Vm)或''P''(求P)');
    end
end

参考代码 用于计算实际气体状态方程P-R方程 www.youwenfan.com/contentcsr/100766.html

七、使用说明
  1. 单位统一 :压力PPP用Pa,温度TTT用K,体积VmV_mVm用m³/mol,临界参数TcT_cTc、PcP_cPc单位对应;
  2. 常见气体参数 :可通过NIST数据库或化工手册查询(如甲烷:Tc=190.56 KT_c=190.56\ \text{K}Tc=190.56 K,Pc=4.5992 MPaP_c=4.5992\ \text{MPa}Pc=4.5992 MPa,ω=0.011\omega=0.011ω=0.011);
  3. 多根选择:气液共存区需根据实际状态(气相/液相)选择对应实根(气相取最大根,液相取最小根)。
八、应用场景

P-R方程广泛用于化工热力学计算,如:

  • 气体压缩因子ZZZ计算;
  • 气液平衡(VLE)预测;
  • 压缩机/换热器设计中实际气体物性估算。
相关推荐
谁刺我心1 小时前
qt源码、qt在线安装器镜像下载
开发语言·qt
LYS_06182 小时前
C++学习(8)(文件输入输出,类和对象(1))
开发语言·c++·学习
历程里程碑2 小时前
26信号处理一:从闹钟到进程控制的奥秘
linux·运维·服务器·开发语言·c++·算法·排序算法
jghhh012 小时前
基于C# WinForm实现自动在线升级的方案
开发语言·c#
Gofarlic_OMS2 小时前
LS-DYNA许可证全局状态及集群计算资源使用可视化监控大屏
运维·开发语言·算法·matlab·自动化
阿里嘎多学长2 小时前
2026-02-25 GitHub 热点项目精选
开发语言·程序员·github·代码托管
fengfuyao9852 小时前
基于局部均值分解(LMD)的MATLAB信号分解程序实现
算法·matlab·均值算法
troublea2 小时前
ThinkPHP vs Laravel:PHP框架终极对决
开发语言·php·laravel
Ronin3052 小时前
信道管理模块和异步线程模块
开发语言·c++·rabbitmq·异步线程·信道管理