李永濤,董燦生,張雨嫣,陸 樺,李 賽
(云南氟磷電子科技有限公司,云南 昆明 650309)
配制含氫氟酸或氟離子水溶液時(shí),由于氫氟酸是一種弱酸且溶液中存在多種平衡[1],氟離子、氫離子等組分濃度不像強(qiáng)酸那樣簡單計(jì)算出來。當(dāng)溶液中存在兩個(gè)以下平衡方程時(shí),可以通過近似方法簡化方程,從而獲得方程的解析解。例如,在一元弱酸或二元弱酸溶液中,計(jì)算氫離子的濃度。但平衡方程超過3個(gè)時(shí),解析解無法得到,數(shù)值解只能通過編程計(jì)算的方式得到[2]。
在涉及氫氟酸或氟鹽水溶液時(shí),由于存在3個(gè)平衡方程、水的解離方程、氟守恒方程、電荷守恒等6個(gè)方程,構(gòu)成了非線性方程組。要獲得該方程組的數(shù)值解,需要借助計(jì)算機(jī)編程求解。Octave軟件[3]的fsolve函數(shù)恰好可以對(duì)非線性方程組進(jìn)行求解,簡化了復(fù)雜的算法設(shè)計(jì)過程,從而可以快速獲得氫氟酸或氟鹽水溶液中各組分的平衡濃度。
在求解氫氟酸水溶液體系組分平衡濃度時(shí),Brahim[4]采用NRTL模型進(jìn)行求解,得出采用3個(gè)平衡時(shí),模型的解與實(shí)驗(yàn)結(jié)果吻合較好。Kolasinski采用Mathematica軟件對(duì)氫氟酸水溶液中各組分濃度進(jìn)行了求解[5]。Baeza等人采用Octave求解化學(xué)平衡問題[6-7],還提出了計(jì)算多平衡中化學(xué)組分濃度的系統(tǒng)方法[8]。Paz-Carcia等人采用基于反應(yīng)程度的算法計(jì)算多物種化學(xué)平衡[9]。Glaser等人采用動(dòng)態(tài)方法解決了酸及其共軛堿混合物多平衡問題[10]。
氫氟酸在水中發(fā)生解離反應(yīng),生成氫離子和氟離子,反應(yīng)如下:
(1)
式中ax表示活度,Ka=6.84×10-4為解離常數(shù)(25 ℃ 時(shí))。氫氟酸水溶液的活度系數(shù)見文獻(xiàn)[11-12]。
氫氟酸與氟離子發(fā)生締合反應(yīng),生成氟氫酸根離子,反應(yīng)如下:
(2)
式中bx表示質(zhì)量摩爾濃度mol/kg,K1=5.0。
此外,氫氟酸能與氟氫酸根離子進(jìn)一步發(fā)生締合反應(yīng),反應(yīng)如下:
(3)
式中K2=0.58。氫氟酸水溶液中存在的3個(gè)平衡常數(shù)數(shù)值在文獻(xiàn)[13-15]中報(bào)道。
在水溶液中存在水的自解離平衡[15],即
Kw=[H+][OH-]=1.008×10-14(25 ℃)
(4)
(5)
溶液中的電荷守恒可以表示為:
(6)
以上方程(1)~(6)含有6個(gè)方程,6個(gè)未知數(shù),可以通過Octave進(jìn)行求解。
1.1.1 求解方法一
1)設(shè)置初始猜測(cè)值。初始猜測(cè)值X0為一列向量。
2)調(diào)用fsolve函數(shù)。調(diào)用格式為[X,fval,info]=fsolve(fcn,X0)。fcn為需要求方程組的函數(shù)句柄,或函數(shù)名稱。輸出X為方程組的數(shù)值解,而第二個(gè)輸出fval為取值為X時(shí),方程的值,為全零向量。第三個(gè)輸出info表示報(bào)告算法是否成功,info值為1表示方程組的解已經(jīng)收斂。
4)設(shè)定形式濃度的值,運(yùn)行程序得到該形式濃度下,溶液的平衡濃度X。列向量X中的數(shù)值,與(i)中列出的未知數(shù)順序一致。
1.1.2 求解方法一程序代碼
1)設(shè)置主函數(shù)并列出初始猜測(cè)值
function[X]=composition
%初始猜測(cè)值
HF0=1e-5;
Hx0=1e-5;
F0=1e-5;
HF20=1e-5;
H2F30=1e-5;
%將初始猜測(cè)值寫為列向量X0
X0=[HF0;Hx0;F0;HF20;H2F30];
2)調(diào)用方程組函數(shù)fsolvefunction
fhandle=@fsolvefunction;
[X,fval,info]=fsolve(fhandle,X0);
X=abs(X);
3)編寫方程組函數(shù)
%將未知變量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-)形式濃度
%列出平衡常數(shù)
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 求解方法二
參考文獻(xiàn)[7]的方法,方程(1),(2)和(3)取負(fù)常用對(duì)數(shù),然后將用到的五個(gè)方程進(jìn)行歸一化,再求解。
1.1.4 求解方法二代碼
function[X]=composition2
%初始猜測(cè)值
pHF0=1;
pHx0=2;
pF0=2;
pHF20=1;
pH2F30=2;
X0=[pHF0;pHx0;pF0;pHF20;pH2F30];
%調(diào)用方程組函數(shù)
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-)形式濃度
%列出平衡常數(shù)
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 運(yùn)行測(cè)試
將上述代碼分別保存為 composition.m,composition2.m文件,放在Octave的運(yùn)行路徑下。在Octave程序命令窗口輸入X=composition或X2=composition2,即可求解出X或X2的數(shù)值。經(jīng)驗(yàn)證,兩種方法獲得的解完全一致。
將運(yùn)行上述代碼的結(jié)果與文獻(xiàn)[16]的實(shí)驗(yàn)數(shù)據(jù)進(jìn)行對(duì)比,結(jié)果如圖(1),圖(2)和圖(3)所示。從圖中(實(shí)線)可看出,模擬結(jié)果對(duì)氫氟酸和氫離子的平衡濃度結(jié)果較好,對(duì)氟離子平衡濃度有約20%的負(fù)偏差。出現(xiàn)偏差的原因是,方程式(1)沒有采用活度系數(shù)進(jìn)行計(jì)算。采用活度系數(shù)校正計(jì)算結(jié)果與實(shí)驗(yàn)結(jié)果吻合均較好(圖中虛線)。
圖1 氫氟酸活度模擬值與實(shí)驗(yàn)值對(duì)比
圖2 氫離子活度模擬值與實(shí)驗(yàn)值對(duì)比
圖3 氟離子活度模擬值與實(shí)驗(yàn)值對(duì)比
模擬氫氟酸形式濃度從0.1~2 mol/kg 變化時(shí),溶液中各組分平衡濃度(活度)的分布。將程序中形式濃度部分取a0的值從0.1到2(每次取一個(gè)值進(jìn)行計(jì)算),b0,c0,d0值為零,保持不變。計(jì)算出不同氫氟酸形式濃度下各組分多組平衡濃度數(shù)值,并繪圖可得如圖(4)所示各組分濃度隨氫氟酸形式濃度變化曲線圖。
從圖(4)可看出氫氟酸的平衡濃度要小于形式濃度,溶液中存在較多的氫氟酸。隨著氫氟酸形式濃度的增加,氟離子平衡濃度先增加后減少,而氟氫酸根離子濃度非線性地升高。
圖4 氫氟酸稀溶液中各組分平衡濃度隨氫氟酸形式濃度的分布
模擬含有 0.1 moL/kg 鹽酸,氫氟酸形式濃度從0.1~2 moL/kg 變化時(shí),溶液中各組分平衡濃度(活度)的分布。將程序中的形式濃度部分取a0的值從0.1到2(每次取一個(gè)值進(jìn)行計(jì)算),b0=0.1,c0,d0值為零,保持不變。計(jì)算出不同氫氟酸形式濃度下各組分平衡濃度的多組數(shù)值,并繪圖可得如圖(5)所示的各組分濃度隨氫氟酸形式濃度的變化曲線圖。
圖5 氫氟酸-鹽酸溶液中各組分平衡濃度隨氫氟酸形式濃度的分布
從圖(5)可看出,氫離子平衡濃度從 0.1 moL/kg 的基礎(chǔ)上增加到 0.2 moL/kg,這是由于溶液中含有 0.1 moL/kg的鹽酸。氟離子濃度逐漸增加,但濃度比沒有鹽酸時(shí)要小。氟氫酸根離子濃度非線性地增加。
模擬氟化鈉濃度 0.5 moL/kg,氫氟酸形式濃度從0.1~2 moL/kg 變化時(shí),溶液中各組分平衡濃度(活度)的分布。將程序中的形式濃度部分取a0的值從0.1到2(每次取一個(gè)值進(jìn)行計(jì)算),b0=0,c0=0.5,d0值為零,保持不變。計(jì)算出不同氫氟酸形式濃度下各組分平衡濃度多組數(shù)值,并繪圖可得如圖(6)所示的各組分濃度隨氫氟酸形式濃度變化曲線圖。
圖6 氫氟酸-氟化鈉溶液中各組分平衡濃度隨氫氟酸形式濃度的分布
從圖(6)可看出,氫離子平衡濃度從0增加到 0.02 moL/kg,這是由于溶液中開始時(shí)氫氟酸濃度較小,解離出的氫離子與溶液中的氟離子反應(yīng)。氟離子濃度逐漸減少,除了參與氫離子的反應(yīng),還與氫氟酸反應(yīng)生成氟氫酸根離子。氟氫酸根離子濃度非線性地先增加后減少。
模擬氟氫化鉀形式濃度從0.1~2 moL/kg 變化時(shí),溶液中各組分平衡濃度(活度)的分布。將程序中的形式濃度部分取d0的值從0.1到2(每次取一個(gè)值進(jìn)行計(jì)算),a0,b0,c0值為零,保持不變。計(jì)算出不同氟氫化鉀形式濃度下各組分濃度多組數(shù)值,并繪圖可得如圖(7)所示的各組分濃度隨氟氫化鉀形式濃度變化曲線圖。
圖7 氟氫化鉀溶液中各組分平衡濃度隨氫氟酸形式濃度的分布
從圖(7)可看出,氫氟酸的平衡濃度從0.05增加到 0.35 moL/kg,這是由于溶液中氟氫酸根離子分解產(chǎn)生氟離子和氫氟酸。氟離子濃度逐漸增加,除了參與氫離子的反應(yīng),還與氫氟酸反應(yīng)生成氟氫酸根離子。氟氫酸根離子濃度幾乎線性地增加。
模擬鹽酸形式濃度從0.1~2 moL/kg 變化時(shí),1 moL/kg 氟化鈉溶液中各組分平衡濃度(活度)的分布。將程序中的形式濃度部分取b0的值從0.1到2(每次取一個(gè)值進(jìn)行計(jì)算),a0=0,c0=1,d0=0,保持不變。計(jì)算出不同鹽酸形式濃度下各組分濃度多組數(shù)值,并繪圖可得如圖(8)所示的各組分濃度隨鹽酸形式濃度變化曲線圖。
圖8 氟化鈉溶液中各組分平衡濃度隨鹽酸形式濃度的分布
從圖(8)可看出,氫氟酸平衡濃度從0增加到 1 mol/kg,這是由于鹽酸的加入,氫離子與氟離子反應(yīng)生成氫氟酸。氟離子濃度逐漸減少,除了參與氫離子的反應(yīng),還與氫氟酸反應(yīng)生成氟氫酸根離子。氟氫酸根離子濃度先增加后減少。鹽酸形式濃度 0.5 moL/kg 時(shí),氟氫酸根離子濃度最大,約為 0.24 mol/kg。
利用Octave開源軟件的fsolve函數(shù),解決了氫氟酸溶液體系中各組分平衡濃度計(jì)算問題。討論了五種不同情形下,氫氟酸或氟化鹽水溶液中各組分平衡濃度的計(jì)算方法及模擬結(jié)果,可直觀了解各組分平衡濃度隨形式濃度的變化情況。