Processes > Dissolution and precipitation

Co2 mineralization

(1/2) > >>

Amr khan:
Hello, I am new to PHREEQC and still developing my understanding of its concepts. I am working on the effect of storage efficiency due to changes in porosity and permeability caused by carbon mineralization in a basalt reservoir. However, when I run my input file, I encounter an error related to porosity calculation (not giving any change in output also).

--- Code: ---PHASES
Magnesite
    MgCO3 = Mg+2 + CO3-2
    log_k     -8.029
    delta_h   -6.169 kcal

# Simulation at 25?C
SOLUTION 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 # kg

EQUILIBRIUM_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-8

RATES
    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
        -end

USER_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
    -end

SELECTED_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



--- End code ---

dlparkhurst:
There are several posts in the forum related to porosity changes.

The Basic function TOT applies to the total molality of an element in solution. EQUI applies to equilibrium phases and KIN applies to kinetic reactants. Look at the section The Basic Interpreter in the manual for more details and more Basic functions.

Amr khan:
Okay... Thank you.

Amr khan:
I amended a few steps but am still not getting the right result. If you can help me with this i will be grateful
Thank you 

--- Code: ---PHASES
Magnesite
    MgCO3 = Mg+2 + CO3-2
    log_k     -8.029
    delta_h   -6.169 kcal

# Simulation at 25?C
SOLUTION 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 # kg

EQUILIBRIUM_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-8

RATES
    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
        -end

USER_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
    -end

SELECTED_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


--- End code ---

dlparkhurst:
First, you need to decide on the volume of your cell. Two possibilities are (1) you have 1 L of solution, or (2) 1 L of porous media. If you have porosity of 0.15, then in case (1) you have 1/0.15 = 6.67 L of porous media; 5.57 L of rock, and 1 L of water. In case (2) you have 1 L of porous media, 0.85 L of rock, and 0.15 L of water.

Your input file as 1 kg of water, so about 1 L of water, which would translate to a representative volume (RV) of 6.67 L.

However you define RV, you can use the following definitions to calculate the change in porosity from before reaction (p) to after reaction (p').

Let dn(i) represent the change in moles of mineral i due to reaction,
vm(i) the molar volume of mineral i, cm^3/mol,

then the change in porosity is

--- Code: ---p' = p - [sum(dn(i)*vm(i))/1000)]/RV

--- End code ---

If you consider only reactions with equilibrium phases, each dn(i) is given by the function EQUI_DELTA. If you are also considering kinetic reactions, then dn for kinetic reactions is given by KIN_DELTA, and you need to account for all of the minerals, both equilibrium and kinetic, that are reacting.

Navigation

[0] Message Index

[#] Next page

Go to full version