APP下载

基于Octave氢氟酸水溶液组成计算的研究

2023-09-27李永涛董灿生张雨嫣

云南化工 2023年9期
关键词:氢离子氢氟酸活度

李永涛,董灿生,张雨嫣,陆 桦,李 赛

(云南氟磷电子科技有限公司,云南 昆明 650309)

配制含氢氟酸或氟离子水溶液时,由于氢氟酸是一种弱酸且溶液中存在多种平衡[1],氟离子、氢离子等组分浓度不像强酸那样简单计算出来。当溶液中存在两个以下平衡方程时,可以通过近似方法简化方程,从而获得方程的解析解。例如,在一元弱酸或二元弱酸溶液中,计算氢离子的浓度。但平衡方程超过3个时,解析解无法得到,数值解只能通过编程计算的方式得到[2]。

在涉及氢氟酸或氟盐水溶液时,由于存在3个平衡方程、水的解离方程、氟守恒方程、电荷守恒等6个方程,构成了非线性方程组。要获得该方程组的数值解,需要借助计算机编程求解。Octave软件[3]的fsolve函数恰好可以对非线性方程组进行求解,简化了复杂的算法设计过程,从而可以快速获得氢氟酸或氟盐水溶液中各组分的平衡浓度。

在求解氢氟酸水溶液体系组分平衡浓度时,Brahim[4]采用NRTL模型进行求解,得出采用3个平衡时,模型的解与实验结果吻合较好。Kolasinski采用Mathematica软件对氢氟酸水溶液中各组分浓度进行了求解[5]。Baeza等人采用Octave求解化学平衡问题[6-7],还提出了计算多平衡中化学组分浓度的系统方法[8]。Paz-Carcia等人采用基于反应程度的算法计算多物种化学平衡[9]。Glaser等人采用动态方法解决了酸及其共轭碱混合物多平衡问题[10]。

1 溶液平衡方程组的建立

氢氟酸在水中发生解离反应,生成氢离子和氟离子,反应如下:

(1)

式中ax表示活度,Ka=6.84×10-4为解离常数(25 ℃ 时)。氢氟酸水溶液的活度系数见文献[11-12]。

氢氟酸与氟离子发生缔合反应,生成氟氢酸根离子,反应如下:

(2)

式中bx表示质量摩尔浓度mol/kg,K1=5.0。

此外,氢氟酸能与氟氢酸根离子进一步发生缔合反应,反应如下:

(3)

式中K2=0.58。氢氟酸水溶液中存在的3个平衡常数数值在文献[13-15]中报道。

在水溶液中存在水的自解离平衡[15],即

Kw=[H+][OH-]=1.008×10-14(25 ℃)

(4)

(5)

溶液中的电荷守恒可以表示为:

(6)

以上方程(1)~(6)含有6个方程,6个未知数,可以通过Octave进行求解。

1.1 Octave求解过程

1.1.1 求解方法一

1)设置初始猜测值。初始猜测值X0为一列向量。

2)调用fsolve函数。调用格式为[X,fval,info]=fsolve(fcn,X0)。fcn为需要求方程组的函数句柄,或函数名称。输出X为方程组的数值解,而第二个输出fval为取值为X时,方程的值,为全零向量。第三个输出info表示报告算法是否成功,info值为1表示方程组的解已经收敛。

4)设定形式浓度的值,运行程序得到该形式浓度下,溶液的平衡浓度X。列向量X中的数值,与(i)中列出的未知数顺序一致。

1.1.2 求解方法一程序代码

1)设置主函数并列出初始猜测值

function[X]=composition

%初始猜测值

HF0=1e-5;

Hx0=1e-5;

F0=1e-5;

HF20=1e-5;

H2F30=1e-5;

%将初始猜测值写为列向量X0

X0=[HF0;Hx0;F0;HF20;H2F30];

2)调用方程组函数fsolvefunction

fhandle=@fsolvefunction;

[X,fval,info]=fsolve(fhandle,X0);

X=abs(X);

3)编写方程组函数

%将未知变量X赋值给方程变量

HF=abs(X(1));

Hx=abs(X(2));

F=abs(X(3));

HF2=abs(X(4));

H2F3=abs(X(5));

%定义形式浓度mol/kg

a0=0.1;%氢氟酸(HF)形式浓度

b0=0;%氢离子(H+)形式浓度

c0=0;%氟离子(F-)形式浓度

%列出平衡常数

Ka=6.84e-4;

K1=5.0;

K2=0.58;

%列出方程组

eq1=HF+F+2*HF2+3*H2F3-a0-c0-2*d0;

eq2=F+HF2+H2F3+b0-Hx-c0-d0;

eq3=Hx*F/HF-Ka;

eq4=HF2/(HF*F)-K1;

eq5=H2F3/(HF*HF2)-K2;

%将方程组写为列向量F。

F=[eq1;eq2;eq3;eq4;eq5];

1.1.3 求解方法二

参考文献[7]的方法,方程(1),(2)和(3)取负常用对数,然后将用到的五个方程进行归一化,再求解。

1.1.4 求解方法二代码

function[X]=composition2

%初始猜测值

pHF0=1;

pHx0=2;

pF0=2;

pHF20=1;

pH2F30=2;

X0=[pHF0;pHx0;pF0;pHF20;pH2F30];

%调用方程组函数

fhandle=@fsolvefunction;

[X,fval,exitflag]=fsolve(fhandle,X0);

X=10.^-X;

function F=fsolvefunction(X)

%将未知变量X赋值给方程变量

pHF=X(1);

pHx=X(2);

pF=X(3);

pHF2=X(4);

pH2F3=X(5);

HF=10^-X(1);

Hx=10^-X(2);

F=10^-X(3);

HF2=10^-X(4);

H2F3=10^-X(5);

%定义形式浓度mol/kg

a0=0.1;%氢氟酸(HF)形式浓度

b0=0;%氢离子(H+)形式浓度

c0=0;%氟离子(F-)形式浓度

%列出平衡常数

pKa=-log10(6.84e-4);

pK1=-log10(5.0);

pK2=-log10(0.58);

%列出方程组

eq1=1-(HF+F+2*HF2+3*H2F3)/(a0+c0+2*d0);

eq2=1-(F+HF2+H2F3+b0)/(Hx+c0+d0);

eq3=1-(pHx+pF-pHF)/pKa;

eq4=1-(pHF2-pHF-pF)/pK1;

eq5=1-(pH2F3-pHF-pHF2)/pK2;

%将方程组写为列向量F。

F=[eq1;eq2;eq3;eq4;eq5];

1.1.5 运行测试

将上述代码分别保存为 composition.m,composition2.m文件,放在Octave的运行路径下。在Octave程序命令窗口输入X=composition或X2=composition2,即可求解出X或X2的数值。经验证,两种方法获得的解完全一致。

2 模型验证

将运行上述代码的结果与文献[16]的实验数据进行对比,结果如图(1),图(2)和图(3)所示。从图中(实线)可看出,模拟结果对氢氟酸和氢离子的平衡浓度结果较好,对氟离子平衡浓度有约20%的负偏差。出现偏差的原因是,方程式(1)没有采用活度系数进行计算。采用活度系数校正计算结果与实验结果吻合均较好(图中虚线)。

图1 氢氟酸活度模拟值与实验值对比

图2 氢离子活度模拟值与实验值对比

图3 氟离子活度模拟值与实验值对比

3 应用举例

3.1 氢氟酸稀溶液中各组分平衡浓度

模拟氢氟酸形式浓度从0.1~2 mol/kg 变化时,溶液中各组分平衡浓度(活度)的分布。将程序中形式浓度部分取a0的值从0.1到2(每次取一个值进行计算),b0,c0,d0值为零,保持不变。计算出不同氢氟酸形式浓度下各组分多组平衡浓度数值,并绘图可得如图(4)所示各组分浓度随氢氟酸形式浓度变化曲线图。

从图(4)可看出氢氟酸的平衡浓度要小于形式浓度,溶液中存在较多的氢氟酸。随着氢氟酸形式浓度的增加,氟离子平衡浓度先增加后减少,而氟氢酸根离子浓度非线性地升高。

图4 氢氟酸稀溶液中各组分平衡浓度随氢氟酸形式浓度的分布

3.2 氢氟酸盐酸溶液中各组分平衡浓度

模拟含有 0.1 moL/kg 盐酸,氢氟酸形式浓度从0.1~2 moL/kg 变化时,溶液中各组分平衡浓度(活度)的分布。将程序中的形式浓度部分取a0的值从0.1到2(每次取一个值进行计算),b0=0.1,c0,d0值为零,保持不变。计算出不同氢氟酸形式浓度下各组分平衡浓度的多组数值,并绘图可得如图(5)所示的各组分浓度随氢氟酸形式浓度的变化曲线图。

图5 氢氟酸-盐酸溶液中各组分平衡浓度随氢氟酸形式浓度的分布

从图(5)可看出,氢离子平衡浓度从 0.1 moL/kg 的基础上增加到 0.2 moL/kg,这是由于溶液中含有 0.1 moL/kg的盐酸。氟离子浓度逐渐增加,但浓度比没有盐酸时要小。氟氢酸根离子浓度非线性地增加。

3.3 氢氟酸氟化钠溶液中各组分平衡浓度

模拟氟化钠浓度 0.5 moL/kg,氢氟酸形式浓度从0.1~2 moL/kg 变化时,溶液中各组分平衡浓度(活度)的分布。将程序中的形式浓度部分取a0的值从0.1到2(每次取一个值进行计算),b0=0,c0=0.5,d0值为零,保持不变。计算出不同氢氟酸形式浓度下各组分平衡浓度多组数值,并绘图可得如图(6)所示的各组分浓度随氢氟酸形式浓度变化曲线图。

图6 氢氟酸-氟化钠溶液中各组分平衡浓度随氢氟酸形式浓度的分布

从图(6)可看出,氢离子平衡浓度从0增加到 0.02 moL/kg,这是由于溶液中开始时氢氟酸浓度较小,解离出的氢离子与溶液中的氟离子反应。氟离子浓度逐渐减少,除了参与氢离子的反应,还与氢氟酸反应生成氟氢酸根离子。氟氢酸根离子浓度非线性地先增加后减少。

3.4 氟氢化钾溶液中各组分平衡浓度

模拟氟氢化钾形式浓度从0.1~2 moL/kg 变化时,溶液中各组分平衡浓度(活度)的分布。将程序中的形式浓度部分取d0的值从0.1到2(每次取一个值进行计算),a0,b0,c0值为零,保持不变。计算出不同氟氢化钾形式浓度下各组分浓度多组数值,并绘图可得如图(7)所示的各组分浓度随氟氢化钾形式浓度变化曲线图。

图7 氟氢化钾溶液中各组分平衡浓度随氢氟酸形式浓度的分布

从图(7)可看出,氢氟酸的平衡浓度从0.05增加到 0.35 moL/kg,这是由于溶液中氟氢酸根离子分解产生氟离子和氢氟酸。氟离子浓度逐渐增加,除了参与氢离子的反应,还与氢氟酸反应生成氟氢酸根离子。氟氢酸根离子浓度几乎线性地增加。

3.5 氟化钠盐酸溶液中各组分平衡浓度

模拟盐酸形式浓度从0.1~2 moL/kg 变化时,1 moL/kg 氟化钠溶液中各组分平衡浓度(活度)的分布。将程序中的形式浓度部分取b0的值从0.1到2(每次取一个值进行计算),a0=0,c0=1,d0=0,保持不变。计算出不同盐酸形式浓度下各组分浓度多组数值,并绘图可得如图(8)所示的各组分浓度随盐酸形式浓度变化曲线图。

图8 氟化钠溶液中各组分平衡浓度随盐酸形式浓度的分布

从图(8)可看出,氢氟酸平衡浓度从0增加到 1 mol/kg,这是由于盐酸的加入,氢离子与氟离子反应生成氢氟酸。氟离子浓度逐渐减少,除了参与氢离子的反应,还与氢氟酸反应生成氟氢酸根离子。氟氢酸根离子浓度先增加后减少。盐酸形式浓度 0.5 moL/kg 时,氟氢酸根离子浓度最大,约为 0.24 mol/kg。

4 结语

利用Octave开源软件的fsolve函数,解决了氢氟酸溶液体系中各组分平衡浓度计算问题。讨论了五种不同情形下,氢氟酸或氟化盐水溶液中各组分平衡浓度的计算方法及模拟结果,可直观了解各组分平衡浓度随形式浓度的变化情况。

猜你喜欢

氢离子氢氟酸活度
超高纯氢氟酸的分析检测方法综述
制作雕花玻璃
2018年氢氟酸将引领氟化工涨跌榜
CaO-SiO2-FeO-P2O5-Al2O3脱磷渣系中组元活度的计算
氢离子与氢氧根离子对溶液导电性的显著影响
核电厂惰性气体排放活度浓度的估算
水电离产生的氢离子浓度的求法探讨
钻井液处理剂溶液活度测量方法对比
如何准确高效检定实验室pH酸度计
由三元相图计算活度