PhreeqcUsers Discussion Forum
Click here to donate to keep PhreeqcUsers open

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
 

  • Forum Home
  • Login
  • Register

  • PhreeqcUsers Discussion Forum »
  • Conceptual Models »
  • Kinetics and rate controlling factors »
  • Salts kinetic dissolution
« previous next »
  • Print
Pages: [1]   Go Down

Author Topic: Salts kinetic dissolution  (Read 214 times)

larallange

  • Contributor
  • Posts: 4
Salts kinetic dissolution
« on: July 27, 2023, 03:35:15 PM »
Hello, my name is Lara Lange and I work with geochemical modeling in Brazil. We are on a challenging project, which couples phreeqc with flow modeling in FEFLOW by pichem interface; Our goal is to simulate a transport reative model in hypersaline lagoon.

This lagoon is composed of 4 main mineral phases, gypsum, glauberite, halite and bloedite.
One of the objectives is to estimate the amount of water needed to dissolve all of the bloedite and/or all of the glauberite without ending up with a diluted solution.

I know there is a way to saturate a solution by adding the required amount of mineral until equilibrium is met, like in Appelo's Fluorite example. But I wonder if here is a way to do it the other way around. Adding water to the mineral and reach equilibrium.

Code: [Select]
# Example 3. Equilibrate by changing an initial concentration
SOLUTION 3
     Ca 3.0 Calcite # adapt Ca to equilibrium with calcite
     Alkalinity 4.0
     S(6) 1.0
     F 0.1 Fluorite -1.0 # adapt F to SI = -1.0 for fluorite
END


I tried to create a H2O rate related to the SR of bloedite or glauberite and it is not working.
I am  simulatinf ~10 years in 30 days intervals, that why
Does anyone have any thoughts on that? Or another solution for my challenge?


Code: [Select]
SELECTED_OUTPUT
-reset false
-user_punch true
-charge_balance true
-pH true
-pe false
-water true
-totals Ca Mg Na S(6) Cl K
-equilibrium_phases Halite Gypsum Glauberite Bloedite
-saturation_indices Halite Gypsum Glauberite Bloedite

USER_PUNCH
Headings Ca(g/L) Cl(g/L) K(g/L) Mg(g/L) Na(g/L) S(6)(g/L) Density water_total

-start
60 Punch tot("Ca") * 40,078
70 Punch tot("Cl") * 35.453
80 Punch tot("k")* 39.0983
90 Punch tot("Mg") * 24,305
100 Punch tot("Na") * 22.9897
110 Punch tot("S(6)")* 96.06
120 Punch RHO
130 Punch TOT("water")


EQUILIBRIUM_PHASES 1
     Bloedite 0 3.99 dissolve_only
     Halite 0 0.62 dissolve_only
     Gypsum 0 17 precipitate_only
     Glauberite 0 7.3 dissolve_only

SOLUTION 1
units g/l
temp 22
pH 7
foot 4
redox pe
density 1.23
S(6) 167.29
Cl 51.56821635
Mg 6.53
at 97.63281722
K 4.905
Ca 0.56
water 0.92

RATES
add_water
10 SR_Bloedite =SR("Bloedite")
20 SR_Glauberite=SR("Glauberite")
30 if (SR_Glauberite=1 or SR_Bloedite=1) then goto 200
40 k = 1.5/86400# 1.5 per day
20 rate = k * (TOT("water") * 1000) / GFW("H2O")
30 moles = rate * TIME
200 SAVE moles


KINETICS 1
add_water
-formula H2O 1
-m 0
-tol 1e-10
-steps 3600 days in 120 steps
 
USER_GRAPH 1
     -headings frac Glauberite Gypsum Halite Bloedite
     -axis_titles "Concentration factor" "dissolved, log10(moles)" #"H2O add, moles"
     -axis_scale x_axis auto auto auto auto log
     -axis_scale sy_axis 53 56 auto auto
     -initial_solutions false
     -connect_simulations true
     -plot_concentration_vs x
   -start
 
  10 GRAPH_X 1 / TOT("water")
  30 GRAPH_Y LOG10( EQUI("Glauberite") )
  50 GRAPH_Y LOG10( EQUI("Gypsum") )
  60 GRAPH_Y LOG10( EQUI("Halite") )
  70 GRAPH_Y LOG10( EQUI("Bloedite") )
  80 GRAPH_SY KIN("add_water")
   -end
END

I also tried to use the moles of each mineral in equilibrium phase to calculate the rate of dissolution and is still not working.

Code: [Select]
RATES
add_water
10 Bloedite=EQUI("Bloedite")
20 Glauberite=EQUI("Glauberite")
30 if (Glauberite=0 and Bloedite=0) then goto 200
40 k = 1.5/86400 # 1.5 per day
20 rate = k * (TOT("water") * 1000) / GFW("H2O")
30 moles = rate * TIME
200 SAVE moles
INCREMENTAL_REACTIONS

KINETICS 1
add_water
-formula H2O 1
-m 1
-tol 1e-10
-steps 3600 days in 120 steps

Thank you so much for your time!
« Last Edit: July 27, 2023, 03:51:43 PM by larallange »
Logged

dlparkhurst

  • Top Contributor
  • Posts: 3081
Re: Salts kinetic dissolution
« Reply #1 on: July 27, 2023, 05:41:46 PM »
First, I would use pitzer.dat or at least compare phreeqc.dat calculations with pitzer.dat.

You can use an "alternative formula" in equilibrium phases, where the defined phase is brought to equilibrium by addition or removal of a chemical formula that is not the formula of the phase. In short, you can use H2O as the alternative formula for a phase. Water would be added or removed until the phase is in equilibrium.

Here is an example in which Bloedite dissolves and 25 moles of water are added to reach equilibrium with glauberite. However, I am not sure it makes sense to have halite and gypsum undersaturated if they are present to react.

Code: [Select]
# Example 3. Equilibrate by changing an initial concentration
SOLUTION 3
     Ca 3.0 Calcite # adapt Ca to equilibrium with calcite
     Alkalinity 4.0
     S(6) 1.0
     F 0.1 Fluorite -1.0 # adapt F to SI = -1.0 for fluorite
END
USE solution 3
EQUILIBRIUM_PHASES 1
     Bloedite 0 3.99 dissolve_only
     Halite 0 0.62 dissolve_only
     Gypsum 0 17 precipitate_only
     Glauberite 0  H2O 100 #7.3 dissolve_only

If you suppress the precipitation of glauberite, the following dissolves gypsum, halite and bloedite, with all of the bloedite dissolving after adding about 40 moles of water.

Code: [Select]
# Example 3. Equilibrate by changing an initial concentration
SOLUTION 0
SOLUTION 1
     Ca 3.0 Calcite # adapt Ca to equilibrium with calcite
     Alkalinity 4.0
     S(6) 1.0
     F 0.1 Fluorite -1.0 # adapt F to SI = -1.0 for fluorite
END
USE solution 1
EQUILIBRIUM_PHASES 1
     Bloedite 0 3.99 dissolve_only
     Halite 0 0.62 dissolve_only
     Gypsum 0 17 #dissolve_only
     Glauberite 0  7.3 dissolve_only
REACTION
H2O 1
50 moles in 100
USER_GRAPH
    -headings               step Bloedite Halite Gypsum Glauberite
    -axis_titles            "Water added, moles" "Moles" ""
    -initial_solutions      false
    -connect_simulations    true
    -plot_concentration_vs  x
  -start
10 GRAPH_X RXN
20 GRAPH_Y EQUI("Bloedite"), EQUI("Halite"), EQUI("Gypsum"), EQUI("Glauberite")
  -end
Logged

larallange

  • Contributor
  • Posts: 4
Re: Salts kinetic dissolution
« Reply #2 on: July 27, 2023, 07:30:06 PM »
Hi !

Thank you so much for your prompt reply!
I am using ptizer database, thanks for your suggestion :)

the first solution is insteresting, however I need to considered the initial concentration for those minerals, so  this not  resolve my puzzel.  :(

Maybe I was not  very clear in my doubt, So I will try to rephrase (sorry!).

In this hypotetical scenario I need to add water until bloedite and glauberite are completely dissolved.
Is like the oposite of an evaporation model.

What I want to know is how much water will be necessary to dissolve this specific quantity of salt and how long will take to completely consume these minerals.


I already correct some misstakes in my previous code, and now is "working", however minerals are not dissolving or not altering their concentration. (I tried to use pure water as solution 1, since was possible that the minerals were in equilibrium with the previous solution - but I did not have any luck nothing changed).

The update model is:

Code: [Select]
SELECTED_OUTPUT
-reset false
-user_punch true
-charge_balance true
-pH true
-pe false
-water true
-totals Ca Mg Na S(6) Cl K
-equilibrium_phases Halite Gypsum Glauberite Bloedite
-saturation_indices Halite Gypsum Glauberite Bloedite

USER_PUNCH
Headings Ca(g/L) Cl(g/L) K(g/L) Mg(g/L) Na(g/L) S(6)(g/L) Density water_total

-start
60 Punch tot("Ca") * 40.078
70 Punch tot("Cl") * 35.453
80 Punch tot("k")* 39.0983
90 Punch tot("Mg") * 24.305
100 Punch tot("Na") * 22.9897
110 Punch tot("S(6)")* 96.06
120 Punch RHO
130 Punch TOT("water")


SOLUTION 1
units g/l
temp 22
pH 7
pe 4
redox pe
density 1.23 calculate
S(6) 167.29
Cl 51.56821635
Mg 6.53
Na 97.63281722
K 4.905 charge
Ca 0.56
water 0.92

RATES
add_water
10 Bloedite=EQUI("Bloedite")
20 Glauberite=EQUI("Glauberite")
30 if (Glauberite=0 and Bloedite=0) then goto 200
40 k = 1.5/86400 # 1.5 per day
50 rate = k * (TOT("water") * 1000) / GFW("H2O")
60 moles = rate * TIME
200 SAVE moles
INCREMENTAL_REACTIONS

KINETICS
add_water
-formula H2O 1
-m0 0.92
-tol 1e-10
#-steps 100*0.25  days
-steps 3600 days in 120 steps


EQUILIBRIUM_PHASES 1
    Bloedite  0 3.99
    Halite    0 0.62
    Gypsum    0 17
    Glauberite 0 7.3

USER_GRAPH 1
    -headings               water  Glauberite Gypsum Halite  Bloedite add_water
    -axis_titles            "Water" "dissolved, log10(moles)" "H2O add, moles"
    #-axis_scale x_axis      auto auto auto auto log
    #-axis_scale sy_axis      auto auto auto auto
    -initial_solutions      false
    -connect_simulations    true
    -plot_concentration_vs  x
  -start
 
 10 GRAPH_X TOT("water")
 30 GRAPH_Y EQUI("Glauberite")
 50 GRAPH_Y EQUI("Gypsum")
 60 GRAPH_Y EQUI("Halite")
 70 GRAPH_Y EQUI("Bloedite")
 80 GRAPH_SY KIN("add_water")
  -end
END


Any new thoughts on that?

The approach below, at rates datablock, is correct?
"10 Bloedite=EQUI("Bloedite")
20 Glauberite=EQUI("Glauberite")
30 if (Glauberite=0 and Bloedite=0) then goto 200"

Once again thank you so much for your attention! (:
Logged

dlparkhurst

  • Top Contributor
  • Posts: 3081
Re: Salts kinetic dissolution
« Reply #3 on: July 27, 2023, 08:54:54 PM »
Why is this script not a suitable answer? It takes about 250 moles of water, about 5 liters per liter of initial solution and minerals.

Code: [Select]
# Example 3. Equilibrate by changing an initial concentration
SOLUTION 0
SOLUTION 1
     Ca 3.0 Calcite # adapt Ca to equilibrium with calcite
     Alkalinity 4.0
     S(6) 1.0
     F 0.1 Fluorite -1.0 # adapt F to SI = -1.0 for fluorite
END
USE solution 1
EQUILIBRIUM_PHASES 1
EQUILIBRIUM_PHASES 1
    Bloedite  0 3.99
    Halite    0 0.62
    Gypsum    0 17
    Glauberite 0 7.3
REACTION
H2O 1
300 moles in 100
USER_GRAPH
    -headings               step Bloedite Halite Gypsum Glauberite
    -axis_titles            "Water added, moles" "Moles" ""
    -initial_solutions      false
    -connect_simulations    true
    -plot_concentration_vs  x
  -start
10 GRAPH_X RXN
20 GRAPH_Y EQUI("Bloedite"), EQUI("Halite"), EQUI("Gypsum"), EQUI("Glauberite")
  -end
    -active                 true
Logged

larallange

  • Contributor
  • Posts: 4
Re: Salts kinetic dissolution
« Reply #4 on: July 28, 2023, 12:29:17 AM »
Hi again David!

Thank you once more for your attention! Yes, indeed, this solution is applicable to the current scenario and Equilibrium Phases.
However, we are simulating 78k PHREEQC models in the 3D reactive model (one for each FEFLOW node). Since the mineralogical composition of each model is different and changes over time, I have been attempting to use Kinetics and Rates to determine that the addition of water would stop when all glauberite is consumed (EQUI("glauberite") = 0).

Using the code below, water is introduced into the system. However, this addition is gradually reduced and stops at step 27 (810 days), and I don't understand why. As far as I can tell, it should only stop when EQUI("glauberite") = 0. I cound't find my error.

I am unable to correct this RATES so that it meets my two requirements:
It should be a gradual addition.
It should consume all glauberite.
I tried to modify it by using a fixed "k," but the model fails to converge.

Code: [Select]
SELECTED_OUTPUT
-reset false
-user_punch true
-charge_balance true
-step true
-time true
-pH true
-pe false
-water true
-totals Ca Mg Na S(6) Cl K
-equilibrium_phases Halite Gypsum Glauberite Bloedite
-saturation_indices Halite Gypsum Glauberite Bloedite

USER_PUNCH
Headings Ca(g/L) Cl(g/L) K(g/L) Mg(g/L) Na(g/L) S(6)(g/L) Density water_total Equi_glau Equi_bloe Kin_wat

-start
60 Punch tot("Ca") * 40.078
70 Punch tot("Cl") * 35.453
80 Punch tot("k")* 39.0983
90 Punch tot("Mg") * 24.305
100 Punch tot("Na") * 22.9897
110 Punch tot("S(6)")* 96.06
120 Punch RHO
130 Punch TOT("water")
140 Punch EQUI("Glauberite")
150 Punch EQUI("Bloedite")
160 Punch KIN("add_water")

SOLUTION 1
units g/l
temp 22
pH 7
pe 4
redox pe
density 1.23 calculate
S(6) 167.29
Cl 51.56821635
Mg 6.53
Na 97.63281722
K 4.905 charge
Ca 0.56
water 0.92


EQUILIBRIUM_PHASES 1
    Bloedite  0 3.99 diss
    Halite    0 0.62 diss
    Gypsum    0 17 pre
    Glauberite 0 7.3 diss

RATES
add_water
#10 Bloedite=EQUI("Bloedite")
20 Glauberite=EQUI("Glauberite")
30 if Glauberite=0.00 then goto 200
40 k = 1.5/86400 # 0.1 per day
50 rate = k  * (TOT("water") * 1000) / GFW("H2O")
60 moles = rate * TIME
200 SAVE moles
INCREMENTAL_REACTIONS

KINETICS
add_water
-formula H2O 1
-m0 0.92
-tol 1e-10
-steps 3600 days in 120 steps

any other suggestion ? :D
Logged

dlparkhurst

  • Top Contributor
  • Posts: 3081
Re: Salts kinetic dissolution
« Reply #5 on: July 28, 2023, 03:26:11 AM »
This should work. I think you did not define enough water with M0.

Code: [Select]
RATES
    add_water
-start
 10 Bloedite=EQUI("Bloedite")
 20 Glauberite=EQUI("Glauberite")
 40 k = 100/86400
 50 rate = k  * (Bloedite+Glauberite)
 60 moles = rate * TIME
200 SAVE moles
-end
END
SOLUTION 1
    temp      22
    pH        7
    pe        4
    units     g/l
    density   1.23 calculate
    Ca        0.56
    Cl        51.56821635
    K         4.905 charge
    Mg        6.53
    Na        97.63281722
    S(6)      167.29
    -water    0.92 # kg
END
EQUILIBRIUM_PHASES 1
    Bloedite  0 3.99 #diss
    Halite    0 0.62 #diss
    Gypsum    0 17 #pre
    Glauberite 0 7.3 # diss
END
KINETICS 1
add_water
    -formula  H2O  1
    -m        1000
    -m0       1000
    -tol      1e-08
-steps       345600 in 40 steps # seconds
-cvode true
END
INCREMENTAL_REACTIONS
USE solution 1
USE equilibrium_phases 1
USE kinetics 1
USER_GRAPH
    -headings               step Bloedite Halite Gypsum Glauberite Volume
    -axis_titles            "Days" "Moles" "Solution volume"
    -initial_solutions      false
    -connect_simulations    true
    -plot_concentration_vs  x
  -start
10 GRAPH_X TOTAL_TIME/86400
20 GRAPH_Y EQUI("Bloedite"), EQUI("Halite"), EQUI("Gypsum"), EQUI("Glauberite")
30 GRAPH_SY SOLN_VOL
  -end
Logged

larallange

  • Contributor
  • Posts: 4
Re: Salts kinetic dissolution
« Reply #6 on: July 28, 2023, 11:40:19 PM »
Hi!!

It is always something simple but we need another eye to see!

It makes much sense! Thank you so much for you time and attention!

Regards !
Logged

  • Print
Pages: [1]   Go Up
« previous next »
  • PhreeqcUsers Discussion Forum »
  • Conceptual Models »
  • Kinetics and rate controlling factors »
  • Salts kinetic dissolution
 

  • SMF 2.0.17 | SMF © 2019, Simple Machines | Terms and Policies
  • XHTML
  • RSS
  • WAP2