Kaolinite 0.0 KAlSi3O8 10.0 K-mica 0.0 1.0 END
TITLE Example 6B.--Path between phase boundaries. USE solution 1
EQUILIBRIUM_PHASES 1
Kaolinite 0.0 0.0
Gibbsite 0.0 0.0 K-mica 0.0 0.0 K-feldspar 0.0 0.0 REACTION 1
K-feldspar 1.0
0.04 0.08 0.16 0.32 0.64 1.0 2.0 4.0 8.0 16.0 32.0 64.0 100 200 umol END
TITLE Example 6C.--kinetic calculation SOLUTION 1
units mol/kgw Al 1.e-13 K 1.e-13 Si 3.e-13 EQUILIBRIUM_PHASES 1
Gibbsite 0.0 0.0 Kaolinite 0.0 0.0 K-mica 0.0 0.0 KINETICS 1 K-feldspar
parms 1.36e-11 m0 2.16 m 1.94
step_divide 1e-6
steps 1e2 1e3 1e4 1e5 1e6 1e7 1e8 INCREMENTAL_REACTIONS true RATES
K-feldspar -start
10 REM store the initial amount of K-feldspar 20 IF EXISTS(1) = 0 THEN PUT(M, 1) 30 REM calculate moles of reaction 40 SR_kfld = SR(\
50 moles = PARM(1) * (M/M0)^0.67 * (1 - SR_kfld) * TIME 60 REM The following is for printout of phase transitions 80 REM Start Gibbsite
90 if ABS(SI(\ 100 i = 2
110 GOSUB 1500
150 REM Start Gibbsite -> Kaolinite
160 if ABS(SI(\ 170 i = 3
180 GOSUB 1500
200 REM End Gibbsite -> Kaolinite
210 if ABS(SI(\ 220 i = 4
230 GOSUB 1500
250 REM Start Kaolinite -> K-mica
260 if ABS(SI(\
270 i = 5
280 GOSUB 1500
300 REM End Kaolinite -> K-mica
310 if ABS(SI(\ 320 i = 6
330 GOSUB 1500
350 REM Start K-mica -> K-feldspar
360 if ABS(SI(\ 370 i = 7
380 GOSUB 1500 1000 SAVE moles 1010 END
1500 REM subroutine to store data 1510 if GET(i) >= M THEN RETURN 1520 PUT(M, i)
1530 PUT(TOTAL_TIME, i, 1)
1540 PUT(LA(\ 1550 PUT(LA(\ 1560 RETURN -end
USER_PRINT
10 DATA \Gibbsite \Gibbsite -> Kaolinite \\Gibbsite -> Kaolinite \\Kaolinite -> K-mica \Kaolinite -> K-mica \ 20 PRINT \LA(H4SiO4)\
30 PRINT \ 40 PRINT \ 50 FOR i = 2 TO 7 60 READ s$
70 IF EXISTS(i) THEN PRINT s$, GET(i,1), GET(1) - GET(i), GET(i,2), GET(i,3) 80 NEXT i SELECTED_OUTPUT
file ex6C.sel reset false USER_PUNCH
heading pH+log[K] log[H4SiO4]
10 PUNCH LA(\END
输入数据的设置(表21),首先在SOLUTION输入中定义纯水,在PHASES输入中定
义相的热动力学数据。一些矿物在数据库文件中已经定义(phreeqc.dat),但是在运行过程中,在输入数据设置中包含的相代替以前的定义(数据库文件没有改变)。
SELECTED_OUTPUT是用来产生在表22中列出的所有数据的文件,这些数据被用来会制图6。指定了钾离子、氢离子和硅酸活度系数的对数;水铝矿、高岭石、钾云母、钾长石的饱和指数以及在相集合中的总数量,并且在每一次计算之后,水铝矿、高岭石、钾云母、和钾长石的摩尔转换都将写到文件ex6A-B.sel中。SELECTED_OUTPUT的定义在运行所有模拟中都保持有效,直到读入新的SELECTED_OUTPUT数据块,或是直到在PRINT数据块中,用-selected_output标识符将写到文件暂停。
表22. —例6A的选择输出
[例6A输入数据组中模拟的参考标志。负摩尔转移标明溶解,正摩尔转移标明沉淀。图形上的点标明的是例6中的标志点]
钾长石的
模拟
摩尔转移,微摩尔
6A1 6A2 6A3 6A4 6A5 6A6
活度对数
+
摩尔转移,微摩尔 水铝矿
高岭石
钾云母
水铝矿 0.0 .0 -.7 .0 -.9
饱和指数 高岭石
钾 云 母
钾 长 石
图形上的点 A B D F C E
H
K? H4SiO4 ?H-7.10 -5.20 -4.47 -3.55 -5.20 -4.25
-0.03 -2.18 -20.02 -190.9 -3.02 -32.68
-7.01 -0.57 -8.21 -9.11 -9.39 -8.35 -9.07
2.55 4.41 5.49 2.83 4.41
0.00 0.00 0.00 1.78 .00 .00
.00
.00 .00 .00
.00 9.71 .00 1.24
-3.8 -10.7 -14.7 .0 .0 -.7 .0 .0
-1.9 .0 .0 -1.6 .0
-5.9 -2.5 .0 -5.6 -2.1
.00 63.61 -2.0 .00 10.78
模拟6A1允许钾长石参加反应,直到达到水铝矿矿物的溶解平衡。这在EQUILIBRIUM_PHASES输入中设置的,它是通过指定水铝矿平衡(饱和指数为0.0)和一个选择的反应达到其平衡,KAlSi3O8(钾长石的分子式)。大量的钾长石(10.0mol)可确保能达到水铝矿的平衡。高岭石,钾云母,和钾长石在达到饱和之后,可允许生成沉淀,但不允许其溶解,这是因为在相集合中,所给定它们的初始摩尔数为0。在这个模拟中所计算
的反应的数量是刚好溶解足够的钾长石以达到与水铝矿的平衡,这也可能包含一种或是几种其它的矿物沉淀。没有水铝矿将会溶解或是沉淀;选择的反应物(KAlSi3O8)将会在它们本来的位置溶解或沉淀。模拟6A2-6A4中对高岭石,钾云母、和钾长石进行了相同的计算。在其它的温度下或是应用其它的矿物时,可能的情况是,不管所增加的替代反应的数量有多少,目标相仍不饱和,这是因为相对于其它相而言,该相不稳定。在这种情况下,这种数字化的方法将会找到产生最大饱和指数的选择反应的数量。
图6—25℃下,纯水中钾长石溶解的相图表(微斜长石)表明了稳定相边界的交叉点(例6A)和穿过稳定区域的反应路径(例6B)。图表的建立用到了来自Robie和他人(1978)所做的水铝矿,高岭石,钾云母(白云母),和微斜长石的热动力学数据。
模拟6A1-6A4的选取结果见表22,并且在图6中以点A、B、D和F标出。基于热动力学数据,在图上标出了相的稳定区域,但没有建立这些模拟来进行计算。在点B,水铝矿开始形成高岭石,这个反应消耗Si。这个反应路径必须沿着水铝矿-高岭石相的边界达到一些中间点C,直到水铝矿被转换,然后这个路径穿过高岭石区域到D点。相似的,在高岭石-K-云母相边界会形成点E,在那里反应路径开始穿过K-云母区域到点F。模拟6A5和6A6(表21)解释了这两点。在模拟6A5中,通过允许钾长石溶解,并在某一点上,高岭石达到饱和且出现在相集合中,而水铝矿饱和却不出现在相集合中计算得到点C。同样,模拟6A6解答了钾云母处于饱和态且出现在相集合中,而高岭石达到饱和,但不出现在相集合中的点。在6A5和6A6中,为高岭石和钾云母指定1 mol的初始量是任意的,这个数量仅仅要求必须足够达到矿物平衡。
决定反应路径的一种简单方法是增加钾长石的反应,允许在沿路径的每一点形成水铝矿,高岭石,钾云母,和钾长石之间稳定的相集合。在这种方法中,唯一的难点是知道所加反应的适当的数量。在表22中,从点A到点F钾长石的溶解范围从0.03到190.0 mmol。在6B
部分中(表21),反应增量的对数范围是用来定义路径(固体线),这个路径穿过相图,从水铝矿的平衡(A点)开始到钾长石的平衡(F点)结束。然而,A点到F点的准确位置不是由B部分中应用的任意的反应增量决定的。通过6B部分中计算的反应路径标出在图6中的相图中,从A点到在6A部分F点。
最后,在动力学方法中,钾长石的动力学分解是遵循不同的时间变量而决定的,随着动力学反应的进行,允许水铝矿、高岭石和钾云母沉淀或再次溶解。SOLUTION 1定义为溶解有少量的钾长石(1e-13 moles),那么这种溶液包含有与EQUILIBRIUM_PHASES中的相相关的所有元素,虽然程序的成功运行不要求,但可以排除一些警告信息。
在反应速率的积分期间,基于过渡态理论,假定了一个简单的溶解速率定律。
RK?feldspar?k1这里,k = 1e-16 mol/cm2/s。
AmIAP()(1?()K?feldspar)Vm0K
这个KINETICS数据块是用来输入动力学模拟的指定数据。动力学反应的化学计量是钾长石的化学分子式;缺省状态下,速率的名字是假定在PHASES数据块中所定义的相,且相分子式用作反应的化学计量系数。据假定,在0.1 立方毫米的古土壤中含有10%的钾长石,
3?/??6g/cmb其中,,因此,A/V?136/cm。用-parms标识符在KINETICS数据块
中输入
k1A?1.36e?11V的值(假定1kgw=1升),且能够在RATES数据块中的Basic速率定
义中作为“PARM(1)”调用。假定土壤在一定程度上风化,最初的钾长石仅余下了90%[-m0 2.16 和 -m 1.94,这里m0表示初始质量(1 kg soil x 0.1 = 100 g / 278.3 g/mol = 0.359 mol/kg x 6 kg/L = 2.16 mol/L),m为剩余的质量(2.16的90%为1.94mol/L)]。在任何时间间隔反应的最大数量限制在1e-6mole(-step_divide 1e-6)。时间步长(秒)以-steps标识符来定义。INCREMENTAL_REACTIONS true使得模拟的总时间为所有时间步长的总和(1.111111e8秒);每一次新的时间步长都在前面时间步长的结束后开始。
钾长石分解速率在RATES数据块中以Basic声明的形式定义。为了证明Basic编译的一些
特点,Basic程序同样在相转换时确定和保存一些信息,这在运行结束时通过USER_PRINT来打印。确定相转换的准确性是通过用户可定义的积分的准确性决定的。小的公差(-tol),大于1的大的-step_divide(初始时间间隔将会通过这个数字来剖分),以及小于1的
-step_divide(反应所指定的最大数量)将会产生小一些的时间间隔阂更准确的相转换证明。在这个例子中,-step_divide设置为1e-6,这将会限制任何的时间段反应的最大数量小于1 micromole。这样,达到相转换的反应的数量应当为的精度1micromole。然而,在积分反应期间,限制反应数量需要更小的时间间隔,因此,需要更多的时间间隔用来完成积分反应,这将会增加CPU的运行时间。
Basic程序不同部分函数的描述见表23。函数PUT, GET,和EXISTS用作操纵静态,和动态存贮的数据。应用在PUT声明中的下标指明唯一的数据。EXISTS能够用来决定是否具有给定下标的数据已被存贮,GET是用来检索已被存贮的数据。一旦一种数据已经用PUT保存,
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库phreeqc实例练习(6)在线全文阅读。
相关推荐: