TITLE Example 9.--Kinetically controlled oxidation of ferrous iron. Decoupled valence states of iron.SOLUTION_MASTER_SPECIESFe_di Fe_di+2 0.0 Fe_di 55.847Fe_tri Fe_tri+3 0.0 Fe_tri 55.847SOLUTION_SPECIESFe_di+2 = Fe_di+2 log_k 0.0Fe_tri+3 = Fe_tri+3 log_k 0.0## Fe+2 species#Fe_di+2 + H2O = Fe_diOH+ + H+ log_k -9.5 delta_h 13.20 kcal##... and also other Fe+2 species#Fe_di+2 + Cl- = Fe_diCl+ log_k 0.14Fe_di+2 + CO3-2 = Fe_diCO3 log_k 4.38Fe_di+2 + HCO3- = Fe_diHCO3+ log_k 2.0Fe_di+2 + SO4-2 = Fe_diSO4 log_k 2.25 delta_h 3.230 kcalFe_di+2 + HSO4- = Fe_diHSO4+ log_k 1.08Fe_di+2 + 2HS- = Fe_di(HS)2 log_k 8.95Fe_di+2 + 3HS- = Fe_di(HS)3- log_k 10.987Fe_di+2 + HPO4-2 = Fe_diHPO4 log_k 3.6Fe_di+2 + H2PO4- = Fe_diH2PO4+ log_k 2.7Fe_di+2 + F- = Fe_diF+ log_k 1.0## Fe+3 species#Fe_tri+3 + H2O = Fe_triOH+2 + H+ log_k -2.19 delta_h 10.4 kcal##... and also other Fe+3 species#Fe_tri+3 + 2 H2O = Fe_tri(OH)2+ + 2 H+ log_k -5.67 delta_h 17.1 kcalFe_tri+3 + 3 H2O = Fe_tri(OH)3 + 3 H+ log_k -12.56 delta_h 24.8 kcalFe_tri+3 + 4 H2O = Fe_tri(OH)4- + 4 H+ log_k -21.6 delta_h 31.9 kcal2 Fe_tri+3 + 2 H2O = Fe_tri2(OH)2+4 + 2 H+ log_k -2.95 delta_h 13.5 kcal3 Fe_tri+3 + 4 H2O = Fe_tri3(OH)4+5 + 4 H+ log_k -6.3 delta_h 14.3 kcalFe_tri+3 + Cl- = Fe_triCl+2 log_k 1.48 delta_h 5.6 kcalFe_tri+3 + 2 Cl- = Fe_triCl2+ log_k 2.13Fe_tri+3 + 3 Cl- = Fe_triCl3 log_k 1.13Fe_tri+3 + SO4-2 = Fe_triSO4+ log_k 4.04 delta_h 3.91 kcalFe_tri+3 + HSO4- = Fe_triHSO4+2 log_k 2.48Fe_tri+3 + 2 SO4-2 = Fe_tri(SO4)2- log_k 5.38 delta_h 4.60 kcalFe_tri+3 + HPO4-2 = Fe_triHPO4+ log_k 5.43 delta_h 5.76 kcalFe_tri+3 + H2PO4- = Fe_triH2PO4+2 log_k 5.43Fe_tri+3 + F- = Fe_triF+2 log_k 6.2 delta_h 2.7 kcalFe_tri+3 + 2 F- = Fe_triF2+ log_k 10.8 delta_h 4.8 kcalFe_tri+3 + 3 F- = Fe_triF3 log_k 14.0 delta_h 5.4 kcalPHASESGoethite Fe_triOOH + 3 H+ = Fe_tri+3 + 2 H2O log_k -1.0ENDSOLUTION 1 pH 7.0 pe 10.0 O2(g) -0.67 Fe_di 0.1 Na 10. Cl 10. chargeEQUILIBRIUM_PHASES 1 O2(g) -0.67RATESFe_di_ox -start 10 Fe_di = TOT("Fe_di") 20 if (Fe_di <= 0) then goto 200 30 p_o2 = SR("O2(g)") 40 moles = (2.91e-9 + 1.33e12 * (ACT("OH-"))^2 * p_o2) * Fe_di * TIME 200 SAVE moles -endKINETICS 1Fe_di_ox -formula Fe_di -1.0 Fe_tri 1.0 -steps 100 400 3100 10800 21600 5.04e4 -step_divide 1e-4INCREMENTAL_REACTIONS trueSAVE SOLUTION 2SELECTED_OUTPUT -file ex9_1.sel -reset falseUSER_PUNCH -headings Fe(2) Fe(3) pH si_goethite 10 PUNCH TOT("Fe_di")*1e6, TOT("Fe_tri")*1e6, -LA("H+"), SI("Goethite")ENDUSE SOLUTION 2EQUILIBRIUM_PHASES 2 Al(OH)3(a) 0 10 O2(g) -0.67KINETICS 2Fe_di_ox -formula Fe_di -1.0 Fe_tri 1.0 -steps 8.64e4 1.728e5 1.728e5 1.728e5 1.728e5 -step_divide 1e-4INCREMENTAL_REACTIONS trueSELECTED_OUTPUT -file ex9_2.sel -reset falseUSER_PUNCH -headings Fe(2) Fe(3) pH si_goethite si_Calcite 10 PUNCH TOT("Fe_di")*1e6, TOT("Fe_tri")*1e6, -LA("H+"),SI("Goethite"),SI("Calcite")END
#ex9_1.pqi,and phreeqcrm's step is 100 400 3100 10800 21600 5.04e4SOLUTION_MASTER_SPECIESSOLUTION_SPECIESPHASESENDSOLUTION 1 pH 7.0 pe 10.0 O2(g) -0.67 Fe_di 0.1 Na 10. Cl 10. chargeEQUILIBRIUM_PHASES 1 O2(g) -0.67RATESFe_di_ox -start 10 Fe_di = TOT("Fe_di") 20 if (Fe_di <= 0) then goto 200 30 p_o2 = SR("O2(g)") 40 moles = (2.91e-9 + 1.33e12 * (ACT("OH-"))^2 * p_o2) * Fe_di * TIME 200 SAVE moles -endKINETICS 1Fe_di_ox -formula Fe_di -1.0 Fe_tri 1.0 -step_divide 1e-4SELECTED_OUTPUT -file ex9_1.sel -reset falseUSER_PUNCH -headings Fe(2) Fe(3) pH si_goethite 10 PUNCH TOT("Fe_di")*1e6, TOT("Fe_tri")*1e6, -LA("H+"), SI("Goethite")END
#ex9_2.pqiSOLUTION_MASTER_SPECIESSOLUTION_SPECIESPHASESENDSOLUTION 1 #new value from getconcentrations() pH 7.0 pe 10.0 O new_value Fe_di new_value …EQUILIBRIUM_PHASES 1 Al(OH)3(a) 0 10 O2(g) -0.67RATESKINETICS 1Fe_di_ox -formula Fe_di -1.0 Fe_tri 1.0 -step_divide 1e-4SELECTED_OUTPUT -file ex9_2.sel -reset falseUSER_PUNCH -headings Fe(2) Fe(3) pH si_goethite 10 PUNCH TOT("Fe_di")*1e6, TOT("Fe_tri")*1e6, -LA("H+"), SI("Goethite")END
TITLE Example 9.--Kinetically controlled oxidation of ferrous iron. Decoupled valence states of iron.SOLUTION_MASTER_SPECIESFe_di Fe_di+2 0.0 Fe_di 55.847Fe_tri Fe_tri+3 0.0 Fe_tri 55.847SOLUTION_SPECIESFe_di+2 = Fe_di+2 log_k 0.0Fe_tri+3 = Fe_tri+3 log_k 0.0## Fe+2 species#Fe_di+2 + H2O = Fe_diOH+ + H+ log_k -9.5 delta_h 13.20 kcal##... and also other Fe+2 species#Fe_di+2 + Cl- = Fe_diCl+ log_k 0.14Fe_di+2 + CO3-2 = Fe_diCO3 log_k 4.38Fe_di+2 + HCO3- = Fe_diHCO3+ log_k 2.0Fe_di+2 + SO4-2 = Fe_diSO4 log_k 2.25 delta_h 3.230 kcalFe_di+2 + HSO4- = Fe_diHSO4+ log_k 1.08Fe_di+2 + 2HS- = Fe_di(HS)2 log_k 8.95Fe_di+2 + 3HS- = Fe_di(HS)3- log_k 10.987Fe_di+2 + HPO4-2 = Fe_diHPO4 log_k 3.6Fe_di+2 + H2PO4- = Fe_diH2PO4+ log_k 2.7Fe_di+2 + F- = Fe_diF+ log_k 1.0## Fe+3 species#Fe_tri+3 + H2O = Fe_triOH+2 + H+ log_k -2.19 delta_h 10.4 kcal##... and also other Fe+3 species#Fe_tri+3 + 2 H2O = Fe_tri(OH)2+ + 2 H+ log_k -5.67 delta_h 17.1 kcalFe_tri+3 + 3 H2O = Fe_tri(OH)3 + 3 H+ log_k -12.56 delta_h 24.8 kcalFe_tri+3 + 4 H2O = Fe_tri(OH)4- + 4 H+ log_k -21.6 delta_h 31.9 kcal2 Fe_tri+3 + 2 H2O = Fe_tri2(OH)2+4 + 2 H+ log_k -2.95 delta_h 13.5 kcal3 Fe_tri+3 + 4 H2O = Fe_tri3(OH)4+5 + 4 H+ log_k -6.3 delta_h 14.3 kcalFe_tri+3 + Cl- = Fe_triCl+2 log_k 1.48 delta_h 5.6 kcalFe_tri+3 + 2 Cl- = Fe_triCl2+ log_k 2.13Fe_tri+3 + 3 Cl- = Fe_triCl3 log_k 1.13Fe_tri+3 + SO4-2 = Fe_triSO4+ log_k 4.04 delta_h 3.91 kcalFe_tri+3 + HSO4- = Fe_triHSO4+2 log_k 2.48Fe_tri+3 + 2 SO4-2 = Fe_tri(SO4)2- log_k 5.38 delta_h 4.60 kcalFe_tri+3 + HPO4-2 = Fe_triHPO4+ log_k 5.43 delta_h 5.76 kcalFe_tri+3 + H2PO4- = Fe_triH2PO4+2 log_k 5.43Fe_tri+3 + F- = Fe_triF+2 log_k 6.2 delta_h 2.7 kcalFe_tri+3 + 2 F- = Fe_triF2+ log_k 10.8 delta_h 4.8 kcalFe_tri+3 + 3 F- = Fe_triF3 log_k 14.0 delta_h 5.4 kcalPHASESGoethite Fe_triOOH + 3 H+ = Fe_tri+3 + 2 H2O log_k -1.0RATESFe_di_ox -start 10 Fe_di = TOT("Fe_di") 20 if (Fe_di <= 0) then goto 200 30 p_o2 = SR("O2(g)") 40 moles = (2.91e-9 + 1.33e12 * (ACT("OH-"))^2 * p_o2) * Fe_di * TIME 200 SAVE moles -endENDSOLUTION 1 pH 7.0 pe 10.0 O(0) 1 O2(g) -0.67 Fe_di 0.1 Na 10. Cl 10. chargeENDEQUILIBRIUM_PHASES 1 O2(g) -0.67 10ENDKINETICS 1Fe_di_ox -formula Fe_di -1.0 Fe_tri 1.0 -steps 100 400 3100 10800 21600 5.04e4 -step_divide 1e-4ENDUSER_GRAPH 1 -headings time Fe_di Fe_tri -axis_titles "Days" "Molality" "" -initial_solutions false -connect_simulations true -plot_concentration_vs x -start10 GRAPH_X TOTAL_TIME / 8640020 GRAPH_Y TOT("Fe_di"), TOT("Fe_tri") -end -active trueENDRUN_CELLS-cell 1ENDEQUILIBRIUM_PHASES 1 Al(OH)3(a) 0 10 O2(g) -0.67ENDRUN_CELLS-cell 1-time_step 1e6REACTION_TEMPERATURE 125 25 in 5 stepsEND
RunFile (ex9_1.pqi)RUN_CELLS()input = "EQUILIBRIUM_PHASES 1 Al(OH)3(a) 0 10 O2(g) -0.67"RunString(input) RUN_CELLS()
SOLUTIONENDEQUILIBRIUM_PHASES 1O2(g) -0.7 0.001ENDRUN_CELLS-cell 1ENDEQUILIBRIUM_PHASES_MODIFY 1-component Gibbsite# -moles 0# -si 0ENDRUN_CELLS-cell 1END
TITLE Example 9.--Kinetically controlled oxidation of ferrous iron. Decoupled valence states of iron.SOLUTION_MASTER_SPECIESFe_di Fe_di+2 0.0 Fe_di 55.847Fe_tri Fe_tri+3 0.0 Fe_tri 55.847SOLUTION_SPECIESFe_di+2 = Fe_di+2 log_k 0.0Fe_tri+3 = Fe_tri+3 log_k 0.0…PHASESGoethite Fe_triOOH + 3 H+ = Fe_tri+3 + 2 H2O log_k -1.0RATESFe_di_ox -start 10 Fe_di = TOT("Fe_di") 20 if (Fe_di <= 0) then goto 200 30 p_o2 = SR("O2(g)") 40 moles = (2.91e-9 + 1.33e12 * (ACT("OH-"))^2 * p_o2) * Fe_di * TIME 200 SAVE moles -endENDSOLUTION 1 pH 7.0 pe 10.0 O(0) 1 O2(g) -0.67 Fe_di 0.1 Na 10. Cl 10. chargeEQUILIBRIUM_PHASES 1 O2(g) -0.67INCREMENTAL_REACTIONS trueKINETICS 1Fe_di_ox -formula Fe_di -1.0 Fe_tri 1.0 -steps 100 400 3100 10800 21600 5.04e4 -step_divide 1e-4ENDRUN_CELLS-cell 1ENDEQUILIBRIUM_PHASES_MODIFY 1 -component Al(OH)3(a) -moles 10 -si 0ENDRUN_CELLS-cell 1-time_step 518400END
# Initialization (many definitions omitted here) status = phreeqc_rm.RunFile(True, True, True, "ex9_1.pqi") # status = phreeqc_rm.RunString(True, False, False, "DELETE; -all") time = 0.0 time_step = 0.0 status = phreeqc_rm.SetTime(time) status = phreeqc_rm.SetTimeStep(time_step) status = phreeqc_rm.RunCells()# Kinetic reactions time = 0.0 time_steps = [100, 400, 3100, 10800, 21600, 50400] for time_step in time_steps: time += time_step status = phreeqc_rm.SetTime(time) status = phreeqc_rm.SetTimeStep(time_step) status = phreeqc_rm.SetConcentrations(concentrations) status = phreeqc_rm.RunCells() concentrations = phreeqc_rm.GetConcentrations()# Modify solid phases input = "EQUILIBRIUM_PHASES_MODIFY 1 -component Al(OH)3(a) -moles 10 -si 0" status = phreeqc_rm.RunString(True, False, True, input)# Continue kinetic reactions time = 86400 time_steps = [8.64e4, 8.64e4,8.64e4, 8.64e4,8.64e4, 8.64e4] for time_step in time_steps: time += time_step status = phreeqc_rm.SetTime(time) status = phreeqc_rm.SetTimeStep(time_step) status = phreeqc_rm.SetConcentrations(concentrations) status = phreeqc_rm.RunCells() concentrations = phreeqc_rm.GetConcentrations()# Clean up status = phreeqc_rm.CloseFiles() status = phreeqc_rm.MpiWorkerBreak()