PHASESMagnesite MgCO3 = Mg+2 + CO3-2 log_k -8.029 delta_h -6.169 kcal# Simulation at 25?CSOLUTION 1 # Initial formation water at 25?C temp 25 pH 7.5 pe 4 units mol/kgw Ca 0.0132 Mg 0.0165 Fe 0.0003 Al 1e-6 Si 0.0006 Na 0.0054 Cl 0.0148 -water 1 # kgEQUILIBRIUM_PHASES 1 CO2(g) 1.398 10.0 # 25 bar PCO2 Calcite 0.0 0.0 Magnesite 0.0 0.0 Dolomite 0.0 0.0 KINETICS 1 -steps 0 1 2 4 8 24 48 72 days # Time steps in days Plagioclase -formula CaAl2Si2O8 -m0 0.45 # Initial moles -m 0.45 -parms 65.0 1e-12 # Ea (kJ/mol), k25 (mol/m2/s) -tol 1e-8 Pyroxene -formula MgSiO3 -m0 0.35 -m 0.35 -parms 40.0 3e-11 -tol 1e-8 Olivine -formula Mg2SiO4 -m0 0.18 -m 0.18 -parms 67.2 6.9e-10 -tol 1e-8RATES Plagioclase -start 10 if TK <= 0 then TK = 273.15 + 25 # Ensure TK is initialized 20 R = 1e-12 * exp(-65000/8.314*(1/TK - 1/298.15)) * (1 + 10^(-pH))^0.5 30 moles = R * TIME 40 save moles -end Pyroxene -start 10 if TK <= 0 then TK = 273.15 + 25 # Ensure TK is initialized 20 R = 3e-11 * exp(-40000/8.314*(1/TK - 1/298.15)) * (1 + 10^(-pH))^0.7 30 moles = R * TIME 40 save moles -end Olivine -start 10 if TK <= 0 then TK = 273.15 + 25 # Ensure TK is initialized 20 R = 6.9e-10 * exp(-67200/8.314*(1/TK - 1/298.15)) * (1 + 10^(-pH))^0.5 30 moles = R * TIME 40 save moles -endUSER_PUNCH -headings Time pH SI_Cal SI_Mag SI_Dol Por Perm Storage CO2_min -start 10 REM Initial parameters 20 phi_0 = 0.15 # Initial porosity 30 k_0 = 1e-13 # Initial permeability (m^2) 40 rho_CO2 = 65.7 # CO2 density at 25?C, 25 bar (kg/m^3) 50 REM Calculate mineral volumes 60 vol_min = TOT("Calcite")*36.9 + TOT("Magnesite")*28.0 + TOT("Dolomite")*64.3 70 REM Update porosity 80 new_phi = phi_0 - vol_min/1000 90 REM Kozeny-Carman permeability 100 new_k = k_0 * (new_phi/phi_0)^3 * ((1-phi_0)/(1-new_phi))^2 110 REM CO2 storage capacity 120 storage = new_phi * rho_CO2 + (1-new_phi) * 0.3 * rho_CO2 130 REM CO2 mineralized 140 co2_min = (TOT("Calcite") + TOT("Magnesite") + 2*TOT("Dolomite")) * 44.01 150 REM Output results 160 punch TOTAL_TIME 170 punch -LA("H+") 180 punch SI("Calcite") 190 punch SI("Magnesite") 200 punch SI("Dolomite") 210 punch new_phi 220 punch new_k 230 punch storage 240 punch co2_min -endSELECTED_OUTPUT -file results_25C.xls -reset false -time true -pH true -alkalinity true -ionic_strength true -totals Ca Mg Fe Al Si C(4) -saturation_indices Calcite Magnesite Dolomite -kinetic_reactants Plagioclase Pyroxene Olivine
PHASESMagnesite MgCO3 = Mg+2 + CO3-2 log_k -8.029 delta_h -6.169 kcal# Simulation at 25?CSOLUTION 1 # Initial formation water at 25?C temp 25 pH 7.5 pe 4 units mol/kgw Ca 0.0132 Mg 0.0165 Fe 0.0003 Al 1e-6 Si 0.0006 Na 0.0054 Cl 0.0148 -water 1 # kgEQUILIBRIUM_PHASES 1 CO2(g) 1.398 10.0 # 25 bar PCO2 Calcite 0.0 0.0 Magnesite 0.0 0.0 Dolomite 0.0 0.0 KINETICS 1 -steps 0 1 2 4 8 24 48 72 days # Time steps in days Plagioclase -formula CaAl2Si2O8 -m0 0.45 # Initial moles -m 0.45 -parms 65.0 1e-12 # Ea (kJ/mol), k25 (mol/m2/s) -tol 1e-8 Pyroxene -formula MgSiO3 -m0 0.35 -m 0.35 -parms 40.0 3e-11 -tol 1e-8 Olivine -formula Mg2SiO4 -m0 0.18 -m 0.18 -parms 67.2 6.9e-10 -tol 1e-8RATES Plagioclase -start 10 if TK <= 0 then TK = 273.15 + 25 # Ensure TK is initialized 20 R = 1e-12 * exp(-65000/8.314*(1/TK - 1/298.15)) * (1 + 10^(-pH))^0.5 30 moles = R * TIME 40 save moles -end Pyroxene -start 10 if TK <= 0 then TK = 273.15 + 25 # Ensure TK is initialized 20 R = 3e-11 * exp(-40000/8.314*(1/TK - 1/298.15)) * (1 + 10^(-pH))^0.7 30 moles = R * TIME 40 save moles -end Olivine -start 10 if TK <= 0 then TK = 273.15 + 25 # Ensure TK is initialized 20 R = 6.9e-10 * exp(-67200/8.314*(1/TK - 1/298.15)) * (1 + 10^(-pH))^0.5 30 moles = R * TIME 40 save moles -endUSER_PUNCH -headings Time pH SI_Cal SI_Mag SI_Dol Por Perm Storage CO2_min -start 10 REM Initial parameters 20 phi_0 = 0.15 # Initial porosity 30 k_0 = 1e-13 # Initial permeability (m^2) 40 rho_CO2 = 65.7 # CO2 density at 25?C, 25 bar (kg/m^3) 50 REM Calculate mineral volumes 60 vol_min = EQUI("Calcite")*36.9 + EQUI("Magnesite")*28.0 + EQUI("Dolomite")*64.3 70 REM Update porosity 80 new_phi = phi_0 - vol_min/1000 90 REM Kozeny-Carman permeability 100 new_k = k_0 * (new_phi/phi_0)^3 * ((1-phi_0)/(1-new_phi))^2 110 REM CO2 storage capacity 120 storage = new_phi * rho_CO2 + (1-new_phi) * 0.3 * rho_CO2 130 REM CO2 mineralized 140 co2_min = (EQUI("Calcite") + EQUI("Magnesite") + 2*EQUI("Dolomite")) * 44.01 150 REM Output results 160 punch TOTAL_TIME 170 punch -LA("H+") 180 punch SI("Calcite") 190 punch SI("Magnesite") 200 punch SI("Dolomite") 210 punch new_phi 220 punch new_k 230 punch storage 240 punch co2_min -endSELECTED_OUTPUT -file results_123.xls -reset false -time true -pH true -alkalinity true -ionic_strength true -totals Ca Mg Fe Al Si C(4) -saturation_indices Calcite Magnesite Dolomite -kinetic_reactants Plagioclase Pyroxene Olivine
p' = p - [sum(dn(i)*vm(i))/1000)]/RV
PHASESMagnesite MgCO3 = Mg+2 + CO3-2 log_k -8.029 delta_h -6.169 kcal# Simulation at 50?C with improved conditionsSOLUTION 1 temp 50 pH 8.5 pe 4 units mol/kgw Ca 0.015 # Slightly increased for carbonate formation Mg 0.018 Fe 0.0003 Al 1e-6 Si 0.0006 Na 0.0054 Cl 0.0148 C(4) 2e-3 # Increased bicarbonate to buffer pH -water 1EQUILIBRIUM_PHASES 1 CO2(g) 1.398 10.0 # 25 bar PCO2 Calcite 0.0 0.1 # Ensure presence for precipitation Magnesite 0.0 0.1 Dolomite 0.0 0.1 KINETICS 1 -steps 0 86400 172800 345600 691200 2073600 4147200 6220800 8208000 10368000 13392000 # Converted days to seconds Plagioclase -formula CaAl2Si2O8 -m0 0.45 -m 0.45 -parms 65.0 5e-13 # Reduced dissolution rate -tol 1e-8 Pyroxene -formula MgSiO3 -m0 0.35 -m 0.35 -parms 40.0 1e-11 # Adjusted reaction rate -tol 1e-8 Olivine -formula Mg2SiO4 -m0 0.18 -m 0.18 -parms 67.2 3.5e-10 # Adjusted to promote precipitation -tol 1e-8RATES Plagioclase -start 10 if TK <= 0 then TK = 273.15 + 25 20 R = 5e-13 * exp(-65000/8.314*(1/TK - 1/298.15)) * (1 + 10^(-pH))^0.5 30 moles = R * TIME 40 save moles -end Pyroxene -start 10 if TK <= 0 then TK = 273.15 + 25 20 R = 1e-11 * exp(-40000/8.314*(1/TK - 1/298.15)) * (1 + 10^(-pH))^0.7 30 moles = R * TIME 40 save moles -end Olivine -start 10 if TK <= 0 then TK = 273.15 + 25 20 R = 3.5e-10 * exp(-67200/8.314*(1/TK - 1/298.15)) * (1 + 10^(-pH))^0.5 30 moles = R * TIME 40 save moles -endUSER_PUNCH -headings Time pH SI_Cal SI_Mag SI_Dol Por Perm Storage CO2_min -start 10 REM Initial conditions 20 phi_0 = 0.15 # Initial porosity 30 k_0 = 1e-13 # Initial permeability (m^2) 40 rho_CO2 = 65.7 # CO2 density at 50?C, 25 bar (kg/m^3) 50 RV = 1000 # Representative volume in cm3 (1 L) 60 REM Molar volumes (cm3/mol) 70 vm_olivine = 43.0 80 vm_magnesite = 28.0 90 vm_calcite = 36.9 100 vm_dolomite = 64.3 110 vm_plagio = 100.0 120 vm_pyroxene = 31.0 130 REM Calculate mineral volumes - use TOT() for absolute amounts 140 vol_calc = EQUI("Calcite")*vm_calcite 150 vol_mag = EQUI("Magnesite")*vm_magnesite 160 vol_dol = EQUI("Dolomite")*vm_dolomite 170 vol_olv = KIN("Olivine")*vm_olivine 180 vol_pyr = KIN("Pyroxene")*vm_pyroxene 190 vol_pla = KIN("Plagioclase")*vm_plagio 200 REM Sum all mineral volumes 210 vol_total = vol_calc + vol_mag + vol_dol + vol_olv + vol_pyr + vol_pla 220 REM Update porosity - scale properly with representative volume 230 new_phi = max(0.01, phi_0 - vol_total/RV) 240 REM Kozeny-Carman permeability 250 new_k = k_0 * (new_phi/phi_0)^3 * ((1-phi_0)/(1-new_phi))^2 260 REM CO2 storage capacity 270 storage = new_phi * rho_CO2 + (1-new_phi) * 0.3 * rho_CO2 280 REM CO2 mineralized 290 co2_min = (TOT("Calcite") + TOT("Magnesite") + 2*TOT("Dolomite")) * 44.01 300 REM Output results 310 punch TOTAL_TIME 320 punch -LA("H+") 330 punch SI("Calcite") 340 punch SI("Magnesite") 350 punch SI("Dolomite") 360 punch new_phi 370 punch new_k 380 punch storage 390 punch co2_min -endSELECTED_OUTPUT -file results_94D.xls -reset false -time true -pH true -alkalinity true -ionic_strength true -totals Ca Mg Fe Al Si C(4) -saturation_indices Calcite Magnesite Dolomite -kinetic_reactants Plagioclase Pyroxene OlivinePRINT -saturation_indices Calcite Magnesite Dolomite