PhreeqcUsers Discussion Forum

Registrations currently disabled due to excessive spam. Please email phreeqcusers at gmail.com to request an account.
Welcome Guest
 

  • Forum Home
  • Login
  • Register

  • PhreeqcUsers Discussion Forum »
  • Processes »
  • Surface Complexation »
  • SOLUTION_SPREAD not functioning well in my example
« previous next »
  • Print
Pages: [1]   Go Down

Author Topic: SOLUTION_SPREAD not functioning well in my example  (Read 1825 times)

amaury22

  • Frequent Contributor
  • Posts: 15
SOLUTION_SPREAD not functioning well in my example
« on: 30/08/22 13:08 »
Dear All

I am new in phreeqc. O running an example with surface complexation but when i run simple solution
is ok, but when i try to use solution_spread solution is not.

my code 1, funtioning well is

Code: [Select]

# DATABASE C:\Program Files (x86)\USGS\Phreeqc Interactive 3.0.6-7757\database\phreeqc.dat
TITLE Example Amaury, Hans Sruface complexation 2022
 SURFACE_MASTER_SPECIES
# Oil
Oil_w Oil_wCOOH # Carboxylic acid group
Oil_s Oil_sNH+ # Amin base group
# Calcite
Surf_s Surf_sCaOH #Hydrated Calcium cation surface site
Surf_w Surf_wCO3H #Hydrated Carbonate anion surface site

SURFACE_SPECIES
Oil_sNH+ = Oil_sNH+
    log_k     0
Oil_wCOOH = Oil_wCOOH
    log_k     0
Oil_sNH+ = Oil_sN + H+
    log_k     -6.0
    delta_h 34 #KJ/mol
Oil_wCOOH = Oil_wCOO- + H+
    log_k     -5.0
    delta_h    0
Oil_wCOOH + Ca+2 = Oil_wCOOCa+ + H+
    log_k     -3.8
    delta_h 1.2

# Carbonate & Calcite
Surf_wCO3H = Surf_wCO3H
    log_k     0
Surf_wCO3H = Surf_wCO3- + H+
    log_k     -5.1
Surf_wCO3H + Ca+2 = Surf_wCO3Ca+ + H+
    log_k    -2.6
    delta_h 1.2

Surf_sCaOH = Surf_sCaOH
    log_k 0
Surf_sCaOH + H+ = Surf_sCaOH2+
    log_k 12.2
    delta_h -77.5
Surf_sCaOH = Surf_sCaO- + H+
    log_k -17.0
    delta_h 116.4
Surf_sCaOH + 2H+ + CO3-2 = Surf_sCaHCO3 + H2O
    log_k 24.2
    delta_h -90.7
Surf_sCaOH + H+ + CO3-2 = Surf_sCaCO3- + H2O #(NB Surf_cCaCO3 in ref)
    log_k 15.5
    delta_h -61.6
Surf_sCaOH + H+ + SO4-2 = Surf_sCaSO4- + H2O #(NB Surf_cCaSO4 in ref)
    log_k 13.9
    delta_h -72.0

SURFACE 1 #STO
-sites_units density
Oil_wCOOH 22.0 0.2 2.59 # sites, area/gram, mass
Oil_sNH 75.1 # Use formula to compute site of Surf_aCOOH & Surf_bNH
#Carbonates
Surf_sCaOH 4.9 0.2 0.2
Surf_wCO3H 4.9
# -diffuse_layer
SOLUTION 1 # FW
-units mmol/kgw #mass of solids = 79.04 g/kg water
pH 7.15
density 1.0387 #meas using 100 ml brine at 25C
temp 25
Na 684
Mg 25
Ca 231
Cl 1196 #charge
S(6) 0 #SO4-2
water .0095966 # kg of water in 10 ml brine
SOLUTION 2 # SSW
-units mmol/kgw #mass of solids = 33.38 g/kg water
pH 7.00
density 1.00273 #estimate
temp 39
Na 450
K 10
Mg 45
Ca 13
Cl 525 #charge
S(6) 24 #SO4-2
water .0099392 # kg of water in 10 ml brine
SOLUTION 3 # PDI
-units mmol/kgw
pH 6.85
density 1.00226 #meas using 100 ml brine at 25C
temp 39
Na 450
Mg 90
Ca 20
Cl 610 #charge
S(6) 30 #SO4-2
water .009673 # kg of water in 10 ml brine
SOLUTION 4 # PDI pH9
-units mmol/kgw #mass of solids = 60.00 g/kg water
pH 8.77
density 1.00226 #meas using 100 ml brine at 25C
temp 39
Na 450
Mg 90
Ca 20
Cl 610 #charge
S(6) 30 #SO4-2
water .009673 # kg of water in 10 ml brine

SOLUTION 5 # PDI pH9
-units mmol/kgw #mass of solids = 60.00 g/kg water
pH 2.77
density 1.00226 #meas using 100 ml brine at 25C
temp 39
Na 450
Mg 90
Ca 20
Cl 610 #charge
S(6) 30 #SO4-2
water .009673 # kg of water in 10 ml brine


SOLUTION 6 # PDI pH9
-units mmol/kgw #mass of solids = 60.00 g/kg water
pH 3.77
density 1.00226 #meas using 100 ml brine at 25C
temp 39
Na 450
Mg 90
Ca 20
Cl 610 #charge
S(6) 30 #SO4-2
water .009673 # kg of water in 10 ml brine

SOLUTION 7 # PDI pH9
-units mmol/kgw #mass of solids = 60.00 g/kg water
pH 4.77
density 1.00226 #meas using 100 ml brine at 25C
temp 39
Na 150
Mg 90
Ca 20
Cl 610 #charge
S(6) 30 #SO4-2
water .009673 # kg of water in 10 ml brine


GAS_PHASE 1
CO2(g) 0.000316
REACTION_TEMPERATURE 1
25.0
REACTION_TEMPERATURE 2
90.0
USE solution 1 #FW1
USE surface 1 #STO1
USE GAS_PHASE 1
USE reaction_temperature 1
SELECTED_OUTPUT
-file SCM.Gas1.sel
-reset false
-Simulation
-Solution
-pH
-temp
-molalities Surf_wCO3Ca+ Surf_sCaOH2+ #Carb pos sites
Oil_wCOO- #Oil neg sites
Surf_sCaO- Surf_sCaSO4- Surf_sCaCO3- Surf_wCO3- #Carb neg sites
Oil_wCOOCa+ Oil_sNH+ #Oil pos sites
-saturation_indices Anhydrite Aragonite Calcite Dolomite
Gypsum Halite Sulfur
END



GAS_PHASE 1
CO2(g) 0.000316
REACTION_TEMPERATURE 1
39.0
REACTION_TEMPERATURE 2
71.0


SELECTED_OUTPUT
        -file   SURF.sel
        -reset false
        -Simulation
        -Solution
        -pH
        -temp
             
USER_PUNCH 1

-headings cwa, density, rhoo,  GA,  H+, Na+, Cl-,  OH-,  HCO3-,  CO3-2,  CaCO3,  CaHCO3+,  CO2,  Ca+2,  CaOH+, NaCO3-, \
 NaHCO3, carb, hydr, oxyg, calc, natr, chlr, ominh, cooil, coco2,  Oil_sNH+, Oil_sN,\
                  Oil_wCOOH, Oil_wCOO-, Oil_wCOOCa+, Surf_sOH, Surf_wCO3H, Surf_sOH2+, Surf_wCO3-, Surf_wCO3-, Surf_wCO3Ca+
 
5         GA = 0.001 * (1000 +  MOL("H+") * GFW("H+") + MOL("Na+")*GFW("Na+")+ MOL("Cl-")*GFW("Cl-")+ MOL("OH-")* GFW("OH-")+ \
                MOL("HCO3-")*GFW("HCO3-")+ \
                MOL("CO3-2")* GFW("CO3-2")+ MOL("CaCO3") * GFW("CaCO3")+ \
                MOL("CaHCO3+") * GFW("CaHCO3+")+  MOL("CO2") * GFW("CO2")+ \
                MOL("Ca+2") * GFW("Ca+2")+ MOL("CaOH+")*GFW("CaOH+")+ \
                MOL("NaCO3-") * GFW("NaCO3-")+ MOL("NaHCO3") * GFW("NaHCO3")) / RHO
6 carb = MOL("HCO3-") + MOL("CO3-2") + MOL("CaCO3") + MOL("CaHCO3+") + MOL("CO2") + \
       MOL("NaCO3-") + MOL("NaHCO3")
7 hydr = MOL("H+")  + MOL("OH-") + MOL("HCO3-") + MOL("CaHCO3+") + \
         MOL("CaOH+") + MOL("NaHCO3")
8 oxyg = MOL("OH-") + 3.0 * MOL("HCO3-") + 3.0 * MOL("CO3-2") + 3.0 * MOL("CaCO3") + \
        3.0 * MOL("CaHCO3+") + 2.0 * MOL("CO2") + MOL("CaOH+") + \
        3.0 * MOL("NaCO3-")  + 3.0 * MOL("NaHCO3")
9 calc = MOL("CaCO3") + MOL("CaHCO3+") + MOL("Ca+2") + MOL("CaOH+")
10 natr = MOL("Na+") + MOL("NaCO3-") +  MOL("NaHCO3")
11 chlr = MOL("Cl-")
12 ominh = 2* oxyg - hydr
13 coco2 = 2.5 * MOL("CO2") / GA
14 if coco2 > 18 then coco2 = 18.0
15 cooil = (1.0 - coco2 / 18.44) * 4.9605 : rem corrected formula
16 rhoo = coco2 + cooil
25 cwa = 1.0 / GA / 0.018
36 PUNCH cwa, RHO, rhoo,  GA, log(MOL("H+") / GA) , log(MOL("Na+")/GA), log(MOL("Cl-")/GA), log(MOL("OH-")/ GA), \
                log(MOL("HCO3-")/GA), \
                log(MOL("CO3-2")/ GA), log(MOL("CaCO3") / GA), \
                log(MOL("CaHCO3+") / GA),  log(MOL("CO2") / GA), \
                log(MOL("Ca+2") / GA), log(MOL("CaOH+")/GA), \
                log(MOL("NaCO3-") / GA), log(MOL("NaHCO3") / GA), \
                log(carb / GA), log(hydr / GA), log(oxyg / GA), log(calc / GA), \
                log(natr / GA), log(chlr / GA), log(ominh /GA), log (cooil), log(coco2), log(MOL("Oil_sNH+") / GA), log( MOL("Oil_sN")/ GA),\
                log(MOL("Oil_wCOOH") / GA), log(MOL("Oil_wCOO-") / GA), log(MOL("Oil_wCOOCa+") / GA), \
                log(MOL("Surf_sCaOH") / GA), log(MOL("Surf_wCO3H") /GA), log(MOL("Surf_sCaOH2+")/GA), log(MOL("Surf_wCO3-")/GA), \
                log( MOL("Surf_wCO3-")/GA), log(MOL("Surf_wCO3Ca+")/GA)
END



USE solution 2 #SSW
USE surface 1 #STO1
USE GAS_PHASE 1
USE reaction_temperature 1
END
USE solution 3 #PDI
USE surface 1 #STO1
USE GAS_PHASE 1
USE reaction_temperature 1
END
USE solution 4 #PDI pH 9
USE surface 1 #STO1
USE GAS_PHASE 1
USE reaction_temperature 1
END
USE solution 1 #FW1
USE surface 1 #STO1
USE GAS_PHASE 1
USE reaction_temperature 2
END
USE solution 2 #SSW
USE surface 1 #STO1
USE GAS_PHASE 1
USE reaction_temperature 2
END
USE solution 3 #PDI
USE surface 1 #STO1
USE GAS_PHASE 1
USE reaction_temperature 2
END
USE solution 4 #PDI pH 9
USE surface 1 #STO1
USE GAS_PHASE 1
USE reaction_temperature 2
END
USE solution 5 #PDI pH 9
USE surface 1 #STO1
USE GAS_PHASE 1
USE reaction_temperature 2
END
USE solution 6 #PDI pH 9
USE surface 1 #STO1
USE GAS_PHASE 1
USE reaction_temperature 1
END
USE solution 7 #PDI pH 9
USE surface 1 #STO1
USE GAS_PHASE 1
USE reaction_temperature 1
END
USE solution 7 #PDI pH 9
USE surface 1 #STO1
USE GAS_PHASE 1
USE reaction_temperature 2
END

#################################################################

but  the code con spread is
Code: [Select]

TITLE Example
SURFACE_MASTER_SPECIES
# Oil
Oil_w Oil_wCOOH # Carboxylic acid group
Oil_s Oil_sNH+ # Amin base group
# Calcite
Surf_s Surf_sCaOH #Hydrated Calcium cation surface site
Surf_w Surf_wCO3H #Hydrated Carbonate anion surface site

SURFACE_SPECIES
Oil_sNH+ = Oil_sNH+
    log_k     0
Oil_wCOOH = Oil_wCOOH
    log_k     0
Oil_sNH+ = Oil_sN + H+
    log_k     -6.0
    delta_h 34 #KJ/mol
Oil_wCOOH = Oil_wCOO- + H+
    log_k     -5.0
    delta_h    0
Oil_wCOOH + Ca+2 = Oil_wCOOCa+ + H+
    log_k     -3.8
    delta_h 1.2

# Carbonate & Calcite
Surf_wCO3H = Surf_wCO3H
    log_k     0
Surf_wCO3H = Surf_wCO3- + H+
    log_k     -5.1
Surf_wCO3H + Ca+2 = Surf_wCO3Ca+ + H+
    log_k    -2.6
    delta_h 1.2

Surf_sCaOH = Surf_sCaOH
    log_k 0
Surf_sCaOH + H+ = Surf_sCaOH2+
    log_k 12.2
    delta_h -77.5
Surf_sCaOH = Surf_sCaO- + H+
    log_k -17.0
    delta_h 116.4
Surf_sCaOH + 2H+ + CO3-2 = Surf_sCaHCO3 + H2O
    log_k 24.2
    delta_h -90.7
Surf_sCaOH + H+ + CO3-2 = Surf_sCaCO3- + H2O #(NB Surf_cCaCO3 in ref)
    log_k 15.5
    delta_h -61.6
Surf_sCaOH + H+ + SO4-2 = Surf_sCaSO4- + H2O #(NB Surf_cCaSO4 in ref)
    log_k 13.9
    delta_h -72.0




GAS_PHASE 1
CO2(g) 0.000316
REACTION_TEMPERATURE 1
25.0
REACTION_TEMPERATURE 2
90.0

SELECTED_OUTPUT
-file SCM.Gas1.sel
-reset false
-Simulation
-Solution
-pH
-temp
-molalities Surf_wCO3Ca+ Surf_sCaOH2+ #Carb pos sites
Oil_wCOO- #Oil neg sites
Surf_sCaO- Surf_sCaSO4- Surf_sCaCO3- Surf_wCO3- #Carb neg sites
Oil_wCOOCa+ Oil_sNH+ #Oil pos sites
-saturation_indices Anhydrite Aragonite Calcite Dolomite
Gypsum Halite Sulfur


SOLUTION_SPREAD
                -units mmol/kgw
Number pH density temp Na Mg Ca Cl S(6) water
1 3.77 1.00226 25 450 90 20 610 30 0.0009673
2 2.77 1.00226 25 450 90 20 510 30 0.0009673
3 2.77 1.00226 25 350 80 20 310 20 0.0009673
4 4.77 1.00226 25 450 90 20 610 30 0.0009673
5 5.77 1.00226 39 450 90 20 510 30 0.0009673
6 2.77 1.00226 39 350 80 20 310 20 0.0009673
7 3.77 1.00226 25 450 90 20 610 30 0.0009673



GAS_PHASE 1
CO2(g) 0.000316
REACTION_TEMPERATURE 1
39.0
REACTION_TEMPERATURE 2
71.0


SELECTED_OUTPUT
        -file   SURF1.sel
        -reset false
        -Simulation
        -Solution
        -pH
        -temp
             
USER_PUNCH

-headings cwa, density, rhoo,  GA,  H+, Na+, Cl-,  OH-,  HCO3-,  CO3-2,  CaCO3,  CaHCO3+,  CO2,  Ca+2,  CaOH+, NaCO3-, \
 NaHCO3, carb, hydr, oxyg, calc, natr, chlr, ominh, cooil, coco2,  Oil_sNH+, Oil_sN,\
                  Oil_wCOOH, Oil_wCOO-, Oil_wCOOCa+, Surf_sOH, Surf_wCO3H, Surf_sOH2+, Surf_wCO3-, Surf_wCO3-, Surf_wCO3Ca+, EDL_oil, EDL_Ca 
 

75         GA = 0.001 * (1000 +  MOL("H+") * GFW("H+") + MOL("Na+")*GFW("Na+")+ MOL("Cl-")*GFW("Cl-")+ MOL("OH-")* GFW("OH-")+ \
                MOL("HCO3-")*GFW("HCO3-")+ \
                MOL("CO3-2")* GFW("CO3-2")+ MOL("CaCO3") * GFW("CaCO3")+ \
                MOL("CaHCO3+") * GFW("CaHCO3+")+  MOL("CO2") * GFW("CO2")+ \
                MOL("Ca+2") * GFW("Ca+2")+ MOL("CaOH+")*GFW("CaOH+")+ \
                MOL("NaCO3-") * GFW("NaCO3-")+ MOL("NaHCO3") * GFW("NaHCO3")) / RHO
76 carb = MOL("HCO3-") + MOL("CO3-2") + MOL("CaCO3") + MOL("CaHCO3+") + MOL("CO2") + \
       MOL("NaCO3-") + MOL("NaHCO3")
77 hydr = MOL("H+")  + MOL("OH-") + MOL("HCO3-") + MOL("CaHCO3+") + \
         MOL("CaOH+") + MOL("NaHCO3")
78 oxyg = MOL("OH-") + 3.0 * MOL("HCO3-") + 3.0 * MOL("CO3-2") + 3.0 * MOL("CaCO3") + \
        3.0 * MOL("CaHCO3+") + 2.0 * MOL("CO2") + MOL("CaOH+") + \
        3.0 * MOL("NaCO3-")  + 3.0 * MOL("NaHCO3")
79 calc = MOL("CaCO3") + MOL("CaHCO3+") + MOL("Ca+2") + MOL("CaOH+")
80 natr = MOL("Na+") + MOL("NaCO3-") +  MOL("NaHCO3")
81 chlr = MOL("Cl-")
82 ominh = 2* oxyg - hydr
83 coco2 = 2.5 * MOL("CO2") / GA
84 if coco2 > 18 then coco2 = 18.0
85 cooil = (1.0 - coco2 / 18.44) * 4.9605 : rem corrected formula
86 rhoo = coco2 + cooil
87 cwa = 1.0 / GA / 0.018

88 PUNCH cwa, RHO, rhoo,  GA, log(MOL("H+") / GA), log(MOL("Na+")/GA), log(MOL("Cl-")/GA), log(MOL("OH-")/ GA), \
                log(MOL("HCO3-")/GA), \
                log(MOL("CO3-2")/ GA), log(MOL("CaCO3") / GA), \
                log(MOL("CaHCO3+") / GA),  log(MOL("CO2") / GA), \
                log(MOL("Ca+2") / GA), log(MOL("CaOH+")/GA), \
                log(MOL("NaCO3-") / GA), log(MOL("NaHCO3") / GA), \
                log(carb / GA), log(hydr / GA), log(oxyg / GA), log(calc / GA), \
                log(natr / GA), log(chlr / GA), log(ominh /GA), log (cooil), log(coco2), log(MOL("Oil_sNH+") / GA), log( MOL("Oil_sN")/ GA),\
                log(MOL("Oil_wCOOH") / GA), log(MOL("Oil_wCOO-") / GA), log(MOL("Oil_wCOOCa+") / GA), \
                log(MOL("Surf_sCaOH") / GA), log(MOL("Surf_wCO3H") /GA), log(MOL("Surf_sCaOH2+")/GA), log(MOL("Surf_wCO3-")/GA), \
                log( MOL("Surf_wCO3-")/GA), log(MOL("Surf_wCO3Ca+")/GA),  EDL("Charge", "Oil"), EDL("Charge", "Ca")



END












Logged

dlparkhurst

  • Global Moderator
  • *****
  • Posts: 4034
Re: SOLUTION_SPREAD not functioning well in my example
« Reply #1 on: 30/08/22 15:36 »
PHREEQC does not work the way you are thinking. With SOLUTION_SPREAD, PHREEQC will generate a reaction using the first solution defined and whichever other reactants are defined between the last END and the next END. So, only one reaction will be calculated, not one reaction for every solution in SOLUTION_SPREAD.

The following is a way to generate a reaction for each solution in SOLUTION_SPREAD. You did not define a SURFACE, so I have simplified you script.

Code: [Select]
SOLUTION_SPREAD
                -units mmol/kgw
Number pH density temp Na Mg Ca Cl S(6) water
1 3.77 1.00226 25 450 90 20 610 30 0.0009673
2 2.77 1.00226 25 450 90 20 510 30 0.0009673
3 2.77 1.00226 25 350 80 20 310 20 0.0009673
4 4.77 1.00226 25 450 90 20 610 30 0.0009673
5 5.77 1.00226 39 450 90 20 510 30 0.0009673
6 2.77 1.00226 39 350 80 20 310 20 0.0009673
7 3.77 1.00226 25 450 90 20 610 30 0.0009673
END
GAS_PHASE 1-7
CO2(g) 0.000316
REACTION_TEMPERATURE 1-7
39.0
END
RUN_CELLS
-cells 1-7
END

Logged

amaury22

  • Frequent Contributor
  • Posts: 15
Re: SOLUTION_SPREAD not functioning well in my example
« Reply #2 on: 30/08/22 18:05 »
Thanks a lot, Now I understand.
I put in the code your recommendation. I put SURFACE also.

However, only the first solution of the complexes  Oil_sNH+,        Oil_sN,     Oil_wCOOH,     Oil_wCOO-,   Oil_wCOOCa+,      Surf_sOH,    Surf_wCO3H,    Surf_sOH2+,    Surf_wCO3-,    Surf_wCO3-,   Surf_wCO3Ca+, are correct.

From solution 2 to 7 the value has not sense.

Bellow, the current code

Code: [Select]
TITLE Example
SURFACE_MASTER_SPECIES
# Oil
Oil_w Oil_wCOOH # Carboxylic acid group
Oil_s Oil_sNH+ # Amin base group
# Calcite
Surf_s Surf_sCaOH #Hydrated Calcium cation surface site
Surf_w Surf_wCO3H #Hydrated Carbonate anion surface site

SURFACE_SPECIES
Oil_sNH+ = Oil_sNH+
    log_k     0
Oil_wCOOH = Oil_wCOOH
    log_k     0
Oil_sNH+ = Oil_sN + H+
    log_k     -6.0
    delta_h 34 #KJ/mol
Oil_wCOOH = Oil_wCOO- + H+
    log_k     -5.0
    delta_h    0
Oil_wCOOH + Ca+2 = Oil_wCOOCa+ + H+
    log_k     -3.8
    delta_h 1.2

# Carbonate & Calcite
Surf_wCO3H = Surf_wCO3H
    log_k     0
Surf_wCO3H = Surf_wCO3- + H+
    log_k     -5.1
Surf_wCO3H + Ca+2 = Surf_wCO3Ca+ + H+
    log_k    -2.6
    delta_h 1.2

Surf_sCaOH = Surf_sCaOH
    log_k 0
Surf_sCaOH + H+ = Surf_sCaOH2+
    log_k 12.2
    delta_h -77.5
Surf_sCaOH = Surf_sCaO- + H+
    log_k -17.0
    delta_h 116.4
Surf_sCaOH + 2H+ + CO3-2 = Surf_sCaHCO3 + H2O
    log_k 24.2
    delta_h -90.7
Surf_sCaOH + H+ + CO3-2 = Surf_sCaCO3- + H2O #(NB Surf_cCaCO3 in ref)
    log_k 15.5
    delta_h -61.6
Surf_sCaOH + H+ + SO4-2 = Surf_sCaSO4- + H2O #(NB Surf_cCaSO4 in ref)
    log_k 13.9
    delta_h -72.0


SURFACE 1 #STO
-sites_units density
Oil_wCOOH 22.0 0.2 2.59 # sites, area/gram, mass
Oil_sNH 75.1 # Use formula to compute site of Surf_aCOOH & Surf_bNH
#Carbonates
Surf_sCaOH 4.9 0.2 0.2
Surf_wCO3H 4.9
# -diffuse_layer

SOLUTION_SPREAD
                -units mmol/kgw
Number pH density temp Na Mg Ca Cl S(6) water
1 3.77 1.00226 25 450 90 20 610 30 0.0009673
2 2.77 1.00226 25 450 90 20 510 30 0.0009673
3 2.77 1.00226 25 350 80 20 310 20 0.0009673
4 4.77 1.00226 25 450 90 20 610 30 0.0009673
5 5.77 1.00226 39 450 90 20 510 30 0.0009673
6 2.77 1.00226 39 350 80 20 310 20 0.0009673
7 3.77 1.00226 25 450 90 20 610 30 0.0009673
END
GAS_PHASE 1-7
CO2(g) 0.000316
REACTION_TEMPERATURE 1-7
39.0
END
RUN_CELLS
-cells 1-7

SELECTED_OUTPUT
        -file   SURF1.sel
        -reset false
        -Simulation
        -Solution
        -pH
        -temp
             
USER_PUNCH

-headings cwa, density, rhoo,  GA,  H+, Na+, Cl-,  OH-,  HCO3-,  CO3-2,  CaCO3,  CaHCO3+,  CO2,  Ca+2,  CaOH+, NaCO3-, \
 NaHCO3, carb, hydr, oxyg, calc, natr, chlr, ominh, cooil, coco2,  Oil_sNH+, Oil_sN,\
                  Oil_wCOOH, Oil_wCOO-, Oil_wCOOCa+, Surf_sOH, Surf_wCO3H, Surf_sOH2+, Surf_wCO3-, Surf_wCO3-, Surf_wCO3Ca+, EDL_oil, EDL_Ca 
 

75         GA = 0.001 * (1000 +  MOL("H+") * GFW("H+") + MOL("Na+")*GFW("Na+")+ MOL("Cl-")*GFW("Cl-")+ MOL("OH-")* GFW("OH-")+ \
                MOL("HCO3-")*GFW("HCO3-")+ \
                MOL("CO3-2")* GFW("CO3-2")+ MOL("CaCO3") * GFW("CaCO3")+ \
                MOL("CaHCO3+") * GFW("CaHCO3+")+  MOL("CO2") * GFW("CO2")+ \
                MOL("Ca+2") * GFW("Ca+2")+ MOL("CaOH+")*GFW("CaOH+")+ \
                MOL("NaCO3-") * GFW("NaCO3-")+ MOL("NaHCO3") * GFW("NaHCO3")) / RHO
76 carb = MOL("HCO3-") + MOL("CO3-2") + MOL("CaCO3") + MOL("CaHCO3+") + MOL("CO2") + \
       MOL("NaCO3-") + MOL("NaHCO3")
77 hydr = MOL("H+")  + MOL("OH-") + MOL("HCO3-") + MOL("CaHCO3+") + \
         MOL("CaOH+") + MOL("NaHCO3")
78 oxyg = MOL("OH-") + 3.0 * MOL("HCO3-") + 3.0 * MOL("CO3-2") + 3.0 * MOL("CaCO3") + \
        3.0 * MOL("CaHCO3+") + 2.0 * MOL("CO2") + MOL("CaOH+") + \
        3.0 * MOL("NaCO3-")  + 3.0 * MOL("NaHCO3")
79 calc = MOL("CaCO3") + MOL("CaHCO3+") + MOL("Ca+2") + MOL("CaOH+")
80 natr = MOL("Na+") + MOL("NaCO3-") +  MOL("NaHCO3")
81 chlr = MOL("Cl-")
82 ominh = 2* oxyg - hydr
83 coco2 = 2.5 * MOL("CO2") / GA
84 if coco2 > 18 then coco2 = 18.0
85 cooil = (1.0 - coco2 / 18.44) * 4.9605 : rem corrected formula
86 rhoo = coco2 + cooil
87 cwa = 1.0 / GA / 0.018

88 PUNCH cwa, RHO, rhoo,  GA, log(MOL("H+") / GA), log(MOL("Na+")/GA), log(MOL("Cl-")/GA), log(MOL("OH-")/ GA), \
                log(MOL("HCO3-")/GA), \
                log(MOL("CO3-2")/ GA), log(MOL("CaCO3") / GA), \
                log(MOL("CaHCO3+") / GA),  log(MOL("CO2") / GA), \
                log(MOL("Ca+2") / GA), log(MOL("CaOH+")/GA), \
                log(MOL("NaCO3-") / GA), log(MOL("NaHCO3") / GA), \
                log(carb / GA), log(hydr / GA), log(oxyg / GA), log(calc / GA), \
                log(natr / GA), log(chlr / GA), log(ominh /GA), log (cooil), log(coco2), log(MOL("Oil_sNH+") / GA), log( MOL("Oil_sN")/ GA),\
                log(MOL("Oil_wCOOH") / GA), log(MOL("Oil_wCOO-") / GA), log(MOL("Oil_wCOOCa+") / GA), \
                log(MOL("Surf_sCaOH") / GA), log(MOL("Surf_wCO3H") /GA), log(MOL("Surf_sCaOH2+")/GA), log(MOL("Surf_wCO3-")/GA), \
                log( MOL("Surf_wCO3-")/GA), log(MOL("Surf_wCO3Ca+")/GA),  EDL("Charge", "Oil"), EDL("Charge", "Ca")



END




#################################################################


Logged

dlparkhurst

  • Global Moderator
  • *****
  • Posts: 4034
Re: SOLUTION_SPREAD not functioning well in my example
« Reply #3 on: 30/08/22 19:24 »
You did not understand completely. You need the following:

Code: [Select]
SURFACE 1-7

RUN_CELLS; -cells 1-7 causes a reaction calculation with solution and all reactants numbered 1; then a reaction calculation with solution and all reactants numbered 2; and so on up to 7. You only defined SURFACE 1, so for solutions 2 through 7, there is no SURFACE with these numbers defined, so, no surface reacts for these cells.
Logged

amaury22

  • Frequent Contributor
  • Posts: 15
Re: SOLUTION_SPREAD not functioning well in my example
« Reply #4 on: 30/08/22 23:27 »
Dear Delparkhurst

Now is functioning well, thank a lot. However, i can not control the pH,

because the out pH is not those that i put in Solution_spread,

i try to control the ph by change
GAS_PHASE 1-14
CO2(g) 10.0000000316

in this way i have some succed, however i want run pH from 2.7 to 5 , It possible to do that?

The code funtioning with aparently good outputs is

Code: [Select]
TITLE Example
SURFACE_MASTER_SPECIES
# Oil
Oil_w Oil_wCOOH # Carboxylic acid group
Oil_s Oil_sNH+ # Amin base group
# Calcite
Surf_s Surf_sCaOH #Hydrated Calcium cation surface site
Surf_w Surf_wCO3H #Hydrated Carbonate anion surface site

SURFACE_SPECIES
Oil_sNH+ = Oil_sNH+
    log_k     0
Oil_wCOOH = Oil_wCOOH
    log_k     0
Oil_sNH+ = Oil_sN + H+
    log_k     -6.0
    delta_h 34 #KJ/mol
Oil_wCOOH = Oil_wCOO- + H+
    log_k     -5.0
    delta_h    0
Oil_wCOOH + Ca+2 = Oil_wCOOCa+ + H+
    log_k     -3.8
    delta_h 1.2
# Carbonate & Calcite
Surf_wCO3H = Surf_wCO3H
    log_k     0
Surf_wCO3H = Surf_wCO3- + H+
    log_k     -5.1
Surf_wCO3H + Ca+2 = Surf_wCO3Ca+ + H+
    log_k    -2.6
    delta_h 1.2
Surf_sCaOH = Surf_sCaOH
    log_k 0
Surf_sCaOH + H+ = Surf_sCaOH2+
    log_k 12.2
    delta_h -77.5
Surf_sCaOH = Surf_sCaO- + H+
    log_k -17.0
    delta_h 116.4
Surf_sCaOH + 2H+ + CO3-2 = Surf_sCaHCO3 + H2O
    log_k 24.2
    delta_h -90.7
Surf_sCaOH + H+ + CO3-2 = Surf_sCaCO3- + H2O #(NB Surf_cCaCO3 in ref)
    log_k 15.5
    delta_h -61.6
Surf_sCaOH + H+ + SO4-2 = Surf_sCaSO4- + H2O #(NB Surf_cCaSO4 in ref)
    log_k 13.9
    delta_h -72.0

SURFACE 1-14 #STO
-sites_units density
Oil_wCOOH 22.0 0.2 2.59 # sites, area/gram, mass
Oil_sNH 75.1 # Use formula to compute site of Surf_aCOOH & Surf_bNH
#Carbonates
Surf_sCaOH 4.9 0.2 0.2
Surf_wCO3H 4.9

# -diffuse_layer

SOLUTION_SPREAD
pH density temp Na Mg Ca Cl S(6) water
3.77 1.00226 25 450 90 20 610 30 0.0009673
2.77 1.00226 25 450 90 20 510 30 0.0009673
2.77 1.00226 25 350 80 20 310 20 0.0009673
4.77 1.00226 25 450 90 20 610 30 0.0009673
5.77 1.00226 39 450 90 20 510 30 0.0009673
2.77 1.00226 39 350 80 20 310 20 0.0009673
3.77 1.00226 25 450 90 20 610 30 0.0009673
3.77 1.00226 25 450 90 20 610 30 0.0009673
2.77 1.00226 25 450 90 20 510 30 0.0009673
2.77 1.00226 25 350 80 20 310 20 0.0009673
4.77 1.00226 25 450 90 20 610 30 0.0009673
5.77 1.00226 39 450 90 20 510 30 0.0009673
2.77 1.00226 39 350 80 20 310 20 0.0009673
6.77 1.00226 25 450 90 20 610 30 0.0009673
END

GAS_PHASE 1-14
CO2(g) 10.0000000316

REACTION 1-14

RUN_CELLS
-cells 1-14

INCREMENTAL_REACTIONS true
SELECTED_OUTPUT
        -file   SURF3.sel
        -reset false
        -Simulation
        -Solution
        -pH
        -temp
             
USER_PUNCH

-headings cwa, density, rhoo,  GA,  H+, Na+, Cl-,  OH-,  HCO3-,  CO3-2,  CaCO3,  CaHCO3+,  CO2,  Ca+2,  CaOH+, NaCO3-, \
 NaHCO3, carb, hydr, oxyg, calc, natr, chlr, ominh, cooil, coco2,  Oil_sNH+, Oil_sN,\
                  Oil_wCOOH, Oil_wCOO-, Oil_wCOOCa+, Surf_sOH, Surf_wCO3H, Surf_sOH2+, Surf_wCO3-, Surf_wCO3-, Surf_wCO3Ca+, EDL_oil, EDL_Ca 
 

75         GA = 0.001 * (1000 +  MOL("H+") * GFW("H+") + MOL("Na+")*GFW("Na+")+ MOL("Cl-")*GFW("Cl-")+ MOL("OH-")* GFW("OH-")+ \
                MOL("HCO3-")*GFW("HCO3-")+ \
                MOL("CO3-2")* GFW("CO3-2")+ MOL("CaCO3") * GFW("CaCO3")+ \
                MOL("CaHCO3+") * GFW("CaHCO3+")+  MOL("CO2") * GFW("CO2")+ \
                MOL("Ca+2") * GFW("Ca+2")+ MOL("CaOH+")*GFW("CaOH+")+ \
                MOL("NaCO3-") * GFW("NaCO3-")+ MOL("NaHCO3") * GFW("NaHCO3")) / RHO
76 carb = MOL("HCO3-") + MOL("CO3-2") + MOL("CaCO3") + MOL("CaHCO3+") + MOL("CO2") + \
       MOL("NaCO3-") + MOL("NaHCO3")
77 hydr = MOL("H+")  + MOL("OH-") + MOL("HCO3-") + MOL("CaHCO3+") + \
         MOL("CaOH+") + MOL("NaHCO3")
78 oxyg = MOL("OH-") + 3.0 * MOL("HCO3-") + 3.0 * MOL("CO3-2") + 3.0 * MOL("CaCO3") + \
        3.0 * MOL("CaHCO3+") + 2.0 * MOL("CO2") + MOL("CaOH+") + \
        3.0 * MOL("NaCO3-")  + 3.0 * MOL("NaHCO3")
79 calc = MOL("CaCO3") + MOL("CaHCO3+") + MOL("Ca+2") + MOL("CaOH+")
80 natr = MOL("Na+") + MOL("NaCO3-") +  MOL("NaHCO3")
81 chlr = MOL("Cl-")
82 ominh = 2* oxyg - hydr
83 coco2 = 2.5 * MOL("CO2") / GA
84 if coco2 > 18 then coco2 = 18.0
85 cooil = (1.0 - coco2 / 18.44) * 4.9605 : rem corrected formula
86 rhoo = coco2 + cooil
87 cwa = 1.0 / GA / 0.018

88 PUNCH cwa, RHO, rhoo,  GA, log(MOL("H+") / GA), log(MOL("Na+")/GA), log(MOL("Cl-")/GA), log(MOL("OH-")/ GA), \
                log(MOL("HCO3-")/GA), \
                log(MOL("CO3-2")/ GA), log(MOL("CaCO3") / GA), \
                log(MOL("CaHCO3+") / GA),  log(MOL("CO2") / GA), \
                log(MOL("Ca+2") / GA), log(MOL("CaOH+")/GA), \
                log(MOL("NaCO3-") / GA), log(MOL("NaHCO3") / GA), \
                log(carb / GA), log(hydr / GA), log(oxyg / GA), log(calc / GA), \
                log(natr / GA), log(chlr / GA), log(ominh /GA), log (cooil), log(coco2), log(MOL("Oil_sNH+") / GA), log( MOL("Oil_sN")/ GA),\
                log(MOL("Oil_wCOOH") / GA), log(MOL("Oil_wCOO-") / GA), log(MOL("Oil_wCOOCa+") / GA), \
                log(MOL("Surf_sCaOH") / GA), log(MOL("Surf_wCO3H") /GA), log(MOL("Surf_sCaOH2+")/GA), log(MOL("Surf_wCO3-")/GA), \
                log( MOL("Surf_wCO3-")/GA), log(MOL("Surf_wCO3Ca+")/GA),  EDL("Charge", "Oil"), EDL("Charge", "Ca")



END





#################################################################







Logged

dlparkhurst

  • Global Moderator
  • *****
  • Posts: 4034
Re: SOLUTION_SPREAD not functioning well in my example
« Reply #5 on: 30/08/22 23:53 »
Unlike a SOLUTION definition, you cannot simply specify the pH for a reaction calculation. You must add acid or base to produce the pH that you want.

Example 8 describes a way to add either acid or base as needed to produce a given pH. In the script below, I added either HBr (as indicated by the amount of KBr that dissolves) or KOH (as indicated by the amount of KOH added for the Fix_H+ phase. The choice of K and Br was chosen arbitrarily to avoid affecting the other solution concentrations.

The script calculates a pH of 2.7 for each of the solutions, and then calculates a pH of 5.0 for each solution. Done in this way, you need to define a new set of EQUILIBRIUM_PHASES for each pH that you want. It is possible to use SELECTED_OUTPUT and USER_PUNCH to create the script that does a series of pH values as demonstrated in example 8, but for a few pH values it is easier to do it as I have demonstrated below.

Code: [Select]
TITLE Example
SURFACE_MASTER_SPECIES
# Oil
Oil_w Oil_wCOOH # Carboxylic acid group
Oil_s Oil_sNH+ # Amin base group
# Calcite
Surf_s Surf_sCaOH #Hydrated Calcium cation surface site
Surf_w Surf_wCO3H #Hydrated Carbonate anion surface site

SURFACE_SPECIES
Oil_sNH+ = Oil_sNH+
    log_k     0
Oil_wCOOH = Oil_wCOOH
    log_k     0
Oil_sNH+ = Oil_sN + H+
    log_k     -6.0
    delta_h 34 #KJ/mol
Oil_wCOOH = Oil_wCOO- + H+
    log_k     -5.0
    delta_h    0
Oil_wCOOH + Ca+2 = Oil_wCOOCa+ + H+
    log_k     -3.8
    delta_h 1.2
# Carbonate & Calcite
Surf_wCO3H = Surf_wCO3H
    log_k     0
Surf_wCO3H = Surf_wCO3- + H+
    log_k     -5.1
Surf_wCO3H + Ca+2 = Surf_wCO3Ca+ + H+
    log_k    -2.6
    delta_h 1.2
Surf_sCaOH = Surf_sCaOH
    log_k 0
Surf_sCaOH + H+ = Surf_sCaOH2+
    log_k 12.2
    delta_h -77.5
Surf_sCaOH = Surf_sCaO- + H+
    log_k -17.0
    delta_h 116.4
Surf_sCaOH + 2H+ + CO3-2 = Surf_sCaHCO3 + H2O
    log_k 24.2
    delta_h -90.7
Surf_sCaOH + H+ + CO3-2 = Surf_sCaCO3- + H2O #(NB Surf_cCaCO3 in ref)
    log_k 15.5
    delta_h -61.6
Surf_sCaOH + H+ + SO4-2 = Surf_sCaSO4- + H2O #(NB Surf_cCaSO4 in ref)
    log_k 13.9
    delta_h -72.0

PHASES
Fix_H+
H+ = H+
log_k 0

KBr
KBr = K+ + Br-
log_k -20

SOLUTION_SPREAD
pH density temp Na Mg Ca Cl S(6) water
3.77 1.00226 25 450 90 20 610 30 0.0009673
2.77 1.00226 25 450 90 20 510 30 0.0009673
2.77 1.00226 25 350 80 20 310 20 0.0009673
4.77 1.00226 25 450 90 20 610 30 0.0009673
5.77 1.00226 39 450 90 20 510 30 0.0009673
2.77 1.00226 39 350 80 20 310 20 0.0009673
3.77 1.00226 25 450 90 20 610 30 0.0009673
3.77 1.00226 25 450 90 20 610 30 0.0009673
2.77 1.00226 25 450 90 20 510 30 0.0009673
2.77 1.00226 25 350 80 20 310 20 0.0009673
4.77 1.00226 25 450 90 20 610 30 0.0009673
5.77 1.00226 39 450 90 20 510 30 0.0009673
2.77 1.00226 39 350 80 20 310 20 0.0009673
6.77 1.00226 25 450 90 20 610 30 0.0009673
END
SURFACE 1-14 #STO
-sites_units density
Oil_wCOOH 22.0 0.2 2.59 # sites, area/gram, mass
Oil_sNH 75.1 # Use formula to compute site of Surf_aCOOH & Surf_bNH
#Carbonates
Surf_sCaOH 4.9 0.2 0.2
Surf_wCO3H 4.9
# -diffuse_layer
END

EQUILIBRIUM_PHASES 1-14
Fix_H+ -2.7 KOH 10
KBr    0   10
RUN_CELLS
-cells 1-14
END

EQUILIBRIUM_PHASES 1-14
Fix_H+ -5 KOH 10
KBr    0   10
RUN_CELLS
-cells 1-14
END

Logged

amaury22

  • Frequent Contributor
  • Posts: 15
Re: SOLUTION_SPREAD not functioning well in my example
« Reply #6 on: 27/09/22 14:06 »
All is funtioning well now. Thanks a lot
Logged

  • Print
Pages: [1]   Go Up
« previous next »
  • PhreeqcUsers Discussion Forum »
  • Processes »
  • Surface Complexation »
  • SOLUTION_SPREAD not functioning well in my example
 

  • SMF 2.0.19 | SMF © 2021, Simple Machines | Terms and Policies
  • XHTML
  • RSS
  • WAP2