#Kinetic Modeling HdgDATA llnl.dat#DATABASE llnl.datRATES Quartz1 REM d qu / dt = (A0 / V) * (m / m0)^0.67 * k * (1 - SI_qu)2 REM Specific rate k from Rimstidt and Barnes, 1980, GCA 44, 16833 REM k = 10^-13.7 mol/m2/s (25 C)4 REM A0, initial surface of quartz (m2) recalc's to mol/s5 REM V, solution volume in contact with A0-start10 A0 = parm(1)20 V = parm(2)30 dif_temp = 1/TK - 1/29840 pk_w = 13.7 + 4700.4 * dif_temp50 rate = (A0 / V) * (m/m0)^0.67 * 10^-pk_w * (1 - SR("Quartz"))60 save rate * time-endDolomite-start10 mole = 020 If (m <= 0) and (SR("Dolomite") < 1) Then GoTo 24030 S = 0.09 # average BET; suggested value in m2/g40 Mm = 184.401 # molar mass in g/mol50 If (SR("Dolomite") > 1) Then GoTo 13060 knu = 1.1E-8 * exp((-31000 / 8.314) * ((1 / TK) - (1 / 298.15)))70 k1 = 2.8E-4 * exp((-46000 / 8.314) * ((1 / TK) - (1 / 298.15))) * (ACT("H+") ^ 0.61)80 k = knu + k190 theta = 0.16 # default value100 eta = 2.1 # default value110 rate = S * m * Mm * k * ((1 - SR("Dolomite") ^ theta) ^ eta)120 GoTo 230130 knu = 9.5E-15 * exp((-103000 / 8.314) * ((1 / TK) - (1 / 298.15)))140 kpre = (-1) * knu150 theta = 1160 eta = 1170 If (m <= 0) then GoTo 200180 rate = S * m * Mm * kpre * (ABS(1 - SR("Dolomite") ^ theta) ^ eta)190 GoTo 230200 rate = -1E-10230 mole = rate * Time240 Save mole-endK-Feldspar-start10 REM PARM(1) = MSA (Molar surface area) [m^2/mol]20 si_kfeld = SI("K-Feldspar")30 if (M <= 0 and si_kfeld < 0) then goto 200 40 SA = PARM(1) * M 50 if (M = 0 and si_kfeld > 0) then SA = 1e-05 #nucleation60 k_acid = 10^(-10.06)*EXP(-51.70e+03/8.314*(1.0/TK-1.0/298.15))*ACT("H+")^(0.500) 70 k_neut = 10^(-12.41)*EXP(-38.00e+03/8.314*(1.0/TK-1.0/298.15))80 k_base = 10^(-21.20)*EXP(-94.10e+03/8.314*(1.0/TK-1.0/298.15))*ACT("OH-")^(-0.823)90 k_rateconst = k_acid + k_neut + k_base100 r = k_rateconst * SA * (1-(10^si_kfeld))190 moles = r * TIME200 SAVE moles-endIllite-start10 REM PARM(1) = MSA (Molar surface area) [m^2/mol]20 si_ill = SI("Illite")30 if (M <= 0 and si_ill < 0) then goto 200 40 SA = PARM(1) * M 50 if (M = 0 and si_ill > 0) then SA = 1e-05 #nucleation60 k_acid = 10^(-10.12)*EXP(-58.00e+03/8.314*(1.0/TK-1.0/373.15))*ACT("H+")^(0.550) 70 k_neut = 10^(-12.26)*EXP(-54.00e+03/8.314*(1.0/TK-1.0/373.15))80 k_base = 10^(-10.60)*EXP(-77.00e+03/8.314*(1.0/TK-1.0/373.15))*ACT("OH-")^(-0.350)90 k_rateconst = k_acid + k_neut + k_base100 r = k_rateconst * SA * (1-(10^si_ill))190 moles = r * TIME200 SAVE moles-endKaolinite-start10 REM PARM(1) = MSA (Molar surface area) [m^2/mol]20 si_kao = SI("Kaolinite")30 if (M <= 0 and si_kao < 0) then goto 200 40 SA = PARM(1)*M 50 if (M = 0 and si_kao > 0) then SA = 1e-05 #nucleation60 k_acid = 070 k_neut = (4.9e-12)*EXP(-65.9e+03/8.314*(1.0/TK-1.0/298.15))80 k_base = 090 k_rateconst = k_acid + k_neut + k_base100 r = k_rateconst * SA * (1-(si_kao))*ACT("H+")^0.2190 moles = r * TIME200 SAVE moles-endChlorite(14A)-start10 REM PARM(1) = MSA (Molar surface area) [m^2/mol]20 si_chlo = SI("Chlorite(14A)")30 if (M <= 0 and si_chlo < 0) then goto 200 40 SA = PARM(1)*M 50 if (M = 0 and si_chlo > 0) then SA = 1e-05 #nucleation60 k_acid = 070 k_neut = (7.76e-12)*EXP(-88e+03/8.314*(1.0/TK-1.0/298.15))80 k_base = 090 k_rateconst = k_acid + k_neut + k_base100 r = k_rateconst * SA * (1-(si_chlo))*ACT("H+")^0.5190 moles = r * TIME200 SAVE moles-endAlbite-start10 REM PARM(1) = MSA (Molar surface area) [m^2/mol]20 si_alb = SI("Albite")30 if (M <= 0 and si_alb < 0) then goto 200 40 SA = PARM(1) * M 50 if (M = 0 and si_alb > 0) then SA = 1e-05 #nucleation60 k_acid = 10^(-10.16)*EXP(-65.00e+03/8.314*(1.0/TK-1.0/298.15))*(ACT("H+")^(0.457)) 70 k_neut = 10^(-12.56)*EXP(-69.80e+03/8.314*(1.0/TK-1.0/298.15))80 k_base = 10^(-15.60)*EXP(-71.00e+03/8.314*(1.0/TK-1.0/298.15))*(ACT("OH-")^(-0.572))90 k_rateconst = k_acid + k_neut + k_base100 r = k_rateconst * SA * (1-(10^si_alb))190 moles = r * TIME200 SAVE moles-endCalcite -start10 REM PARM(1) = MSA (Molar surface area) [m^2/mol]20 si_calc = SI("Calcite")30 if (M <= 0 and si_calc < 0) then goto 20040 SA = PARM(1) * M50 if (M = 0 and si_calc > 0) then SA = 1e-05 #nucleation60 k_acid = 10^(-0.30)*EXP(-14.40e+03/8.314*(1.0/TK-1.0/298.15))*ACT("H+")^(1.000)70 k_neut = 10^(-5.81)*EXP(-23.50e+03/8.314*(1.0/TK-1.0/298.15))80 k_carb = 10^(-3.48)*EXP(-35.40e+03/8.314*(1.0/TK-1.0/298.15))*PR_P("CO2(g)")^(1.000)90 k_rateconst = k_acid + k_neut + k_carb100 r = k_rateconst * SA * (1-(10^si_calc))190 moles = r * TIME200 SAVE moles -end Hdg(g)-start10 if (M < 0) then goto 7020 rate = 2.3e-09*(TOT("C(4)")/1e-3 + TOT("C(4)")) + 9.26e-8*(TOT("S(6)")/(1.e-4 + TOT("S(6)")))30 moles = rate * TIME40 if (moles > M) then moles = M70 SAVE moles-endKINETICSQuartz 1-formula SiO2-m0 138 -parms 23.13 0.16-tol 1e-12 Dolomite 1-formula CaMg(CO3)2 -m0 3.97-parms 33.192-tol 1e-12K-Feldspar 1-formula KAlSi3O8 1-m0 0.07-parms 86.282-tol 1e-12Illite 1-formula K0.6Mg0.25Al2.3Si3.5O10(OH)2 1-m0 0.39-parms 5956.902-tol 1e-12Kaolinite 1-formula Al2Si2O5(OH)4-m0 0.072-parms 298.377-tol 1e-12Chlorite(14A) 1-formula Mg5Al2Si3O10(OH)8 1-m0 0.017-parms 1-tol 1e-12Albite 1-formula NaAlSi3O8 1-m0 0.035-parms 5.260-tol 1e-12Calcite-formula CaCO3 1 -m 100.09 -m0 100.09 -parms 0.001499 -tol 1e-08Hdg(g) -M0 3.340580489 # initial moles -tol 1e-8 -formula Hdg -1 H2 +1#-time_step 2 day in 2 # 2 time steps-cvode true-steps 15 year in 300 stepsINCREMENTAL_REACTIONS trueRUN_CELLS-cell 1EQUILIBRIUM_PHASES#Fix_pe 0.78 O2(g)#CO2(g) 1.9886 #97.4 atm #Hdg(g) 3Calcite 0.0 0.185 dissolve only SOLUTION 1 Interval Sampled 3-8-22units mg/Ltemp 85.1 #131.1 Fpe -0.78pH 7.2Al 0.4Ba 0.43Br 9.0Sr 13.5Alkalinity 248 as HCO3Cl 10700S(6) 2680 chargeF 1.0Ca 606Fe(2) 78.5Mg 110K 130Si 11.2Na 6410PHASESCO2(g)CO2 = CO2 log_k -1.468 delta_h -4.776 kcal -analytical_expression 10.5624 -2.3547e-2 -3972.8 0 5.8746e5 1.9194e-5 -T_c 304.2 # critical T, K -P_c 72.86 # critical P, atm -Omega 0.225 # acentric factor EQUILIBRIUM_PHASES 1CO2(g) 2.10 0.08345 # Partial pressure of CO2 and CO2 molsCalcite 0.0 0.185 dissolve only GAS_PHASE -fixed_pressure -pressure 100 CO2(g) 1e-20 H2S(g) 1e-20 Hdg(g) 1e-20 H2O(g) 1e-20Use solution 1REACTION 1 Hdg 1 0.06 in 10 steps RUN_CELLS-cell 1SELECTED_OUTPUT-reset false-time true-file saida.txt #Output file location goes here-simulation true-reaction true-totals Na Cl Ca K C S Mg H H(0)-equilibrium_phases Calcite -temperature true-gases CO2(g) CH4(g) H2S(g) Hdg(g) -water-charge_balance true-ionic_strength trueUSER_PUNCH-headings Delta_Qtz Delta_Dol Delta_Cal Delta_Ill Delta_K-Feld Delta_Kao Delta_Chl Delta_Alb Si Ca Mg K Na Porosity 10 PUNCH KIN_DELTA("Quartz")20 PUNCH KIN_DELTA("Dolomite")30 PUNCH EQUI_DELTA("Calcite")40 PUNCH KIN_DELTA("Illite")50 PUNCH KIN_DELTA("K-Feldspar")60 PUNCH KIN_DELTA("Kaolinite")70 PUNCH KIN_DELTA("Chlorite14A")80 PUNCH KIN_DELTA("Albite")90 PUNCH TOT("Si")*1000*28.0843100 PUNCH TOT("Ca")*1000*40.08110 PUNCH TOT("Mg")*1000*24.312120 PUNCH TOT("K")*1000*39.102130 PUNCH TOT("Na")*1000*22.9898REM Calculate Porosity140 qtz = KIN("Quartz")150 dol = KIN("Dolomite")160 cal = EQUI("Calcite")170 ill = KIN("Illite")180 kao = KIN("Kaolinite")190 fel = KIN("K-Feldspar")200 alb = KIN("Albite")210 qtz_V = (qtz * 22.67)220 dol_V = (dol * 64.5)230 cal_V = (cal * 36.9)240 ill_V = (ill * 141.48)250 kao_V = (kao * 99.35)260 fel_V = (fel * 108.15)270 alb_V = (alb * 101.31)280 Vtot = 1000 + qtz_V + dol_V + cal_V + ill_V + kao_V + fel_V + alb_V290 new_por = 1-(qtz_V + dol_V + cal_V + ill_V + kao_V + fel_V +alb_V)/Vtot300 PUNCH new_por-endEND