Applications and Case Studies > Acid mine/rock drainage

Addition of NaOH to raise pH in acidic water

(1/2) > >>

rfraser:
Hello,

I have a solution based on a pit lake water and am investigating the addition of sodium hydroxide to increase the pH. I have used two methods in PHREEQC to estimate how much NaOH I need to increase a solution from pH 3.1 to pH 6.5. The first is the REACTION function:

SOLUTION 1 #Pit lake water 080316
temp      15
pH        3.1
pe        4
redox     pe
units     mg/l
density   1
Al        1.7
N(-3)     0.53 as NH4
Ba        0.078
B         1.1
Ca        45
Cl        530
Fe        14
Mg        89
Mn        0.41
K         9.7
Na        220
S(6)      470 as SO4
Alkalinity 2 as Ca.5(CO3).5
-water    1 # kg
REACTION 1
NaOH       1
1.5 moles in 50 steps
SAVE solution 2

SELECTED_OUTPUT 1 true
-file                 NaReact.sel
-reset                false
-step                 true
-pH                   true
-alkalinity           true
-totals               Na
-molalities           Na+
END

And the second method I used was titration of NaOH to achieve a fixed pH:

SOLUTION 1 #Pit lake water 080316
temp      15
pH        3.1
pe        4
redox     pe
units     mg/l
density   1
Al        1.7
N(-3)     0.53 as NH4
Ba        0.078
B         1.1
Ca        45
Cl        530
Fe        14
Mg        89
Mn        0.41
K         9.7
Na        220
S(6)      470 as SO4
Alkalinity 2 as Ca.5(CO3).5
-water    1 # kg
END
PHASES
Fix_pH
H+ = H+
log_k     0
END
USER_PRINT
10 PRINT "Moles of NaOH:",TOT("NaOH")
20 PRINT "mg of NaOH added:",TOT("NaOH")*GFW("NaOH")*1000.0
USE solution 1
EQUILIBRIUM_PHASES 1
Fix_pH    -6.5 NaOH      10
END

Both scenarios estimated around 1.4 moles of NaOH is required to increase the pH from 3.1 to 6.5. I am expecting some acidity buffering in the pit lake solution (due to other species) but this seems excessive.

Have I constructed the input files correctly?

Also, my USER_PRINT data block does not report the moles/mg of NaOH in the output file and I am not sure why.

Any advice would be greatly appreciated,

Many thanks, Rebecca

Abel:
Hi Rebecca,

If you look at the output file you'll see that with that specified alkalinity Phreeqc has to add an large amount of C(4) (almost 2 mol/kwg) in the form of CO2 in order to fix the pH at 3.1, which explains the excessive amount of NaOH necessary to raise the pH. This happens because you tell Phreeqc to add a certain amount of CO3-2 to the water, which is almost nonexistent at that pH, causing Phreeqc to add the aforementioned CO2 to fix the balance.

See this discussion http://wwwbrr.cr.usgs.gov/projects/GWC_coupled/phreeqc/mail/msg00410.html for an more in-depth explanation from Mr. Parkhurst.

Regarding your question about the output, take a look at the BASIC function description here: http://wwwbrr.cr.usgs.gov/projects/GWC_coupled/phreeqc/phreeqc3-html/phreeqc3-54.htm
The TOT() function reports the total moles of an element in a solution, try using EQUI_DELTA('Fix_pH') to get the result you want.

rfraser:
Hi Abel,

That's great, thanks for the info. I have modified my input file and it now reports more reasonable additions of NaOH and in mg:

SOLUTION 1 #Pit lake water 080316
temp      15
pH        3.1 CO2(g) -3.5
pe        4
redox     pe
units     mg/l
density   1
Al        1.7
Alkalinity 2 as Ca.5(CO3).5
B         1.1
Ba        0.078
Ca        45
Cl        530
Fe        14
K         9.7
Mg        89
Mn        0.41
N(-3)     0.53 as NH4
Na        220
S(6)      470 as SO4
-water    1 # kg
END
PHASES
Fix_pH
H+ = H+
log_k     0
END
USER_PRINT
-start
10 PRINT "Moles of NaOH:",EQUI_DELTA("Fix_pH")
20 PRINT "mg of NaOH:",EQUI_DELTA("Fix_pH")*39.9969*1000
-end
USE solution 1
EQUILIBRIUM_PHASES 1
Fix_pH    -6.5 NaOH      10
CO2(g)    -3.5 10
END

coreflooder:
Hello,

I'm attempting something similar: to find the moles of NaOH needed to adjust a brine's pH to a target value.

I wanted to better understand the situations in Rebecca's posted script; any clarification is much appreciated.

If I should closely study Example 8 in the guide to answer some of these questions, do let me know

1)
SOLUTION 1 #Pit lake water 080316
pH        3.1 CO2(g) -3.5
Alkalinity 2 as Ca.5(CO3).5

> In this section, has a target pH of 3.1 been set, to be achieved by an open source equilibrium of CO2(g), and alkalinity?

2)
PHASES
Fix_pH
H+ = H+
log_k     0
END

> Why is this definition necessary, since H+ is already a quantity?

3)
EQUILIBRIUM_PHASES 1
Fix_pH    -6.5 NaOH      10
CO2(g)    -3.5 10
END

> Here, is the target being set for -log10(H+) to be 6.5 (pH 6.5), and providing excess NaOH to "dissolve" to create the resulting brine? (all in the presence of closed source CO2 at log10PCO2=-3.5, and 10 moles?)

4)
When I run the script, I see that the user printed moles of NaOH differs from the molality listed under the final list of species distribution - what is the difference between these quantities?

Thanks,
Sam

dlparkhurst:
(1) You are asking for the pH to be adjusted to produce log P(CO2) of -3.5. Given the alkalinity, that pH is greater than 5.

(2) The PHASES definition has no effect by itself. If you add Fix_pH to EQUILIBRIUM_PHASES, then, if defined properly, you can fix the pH of the "reaction" solution, not the "initial" solution.

(3) The pH will be adjusted to 6.5 by adding or removing NaOH (with a maximum addition of 10 moles), and the log P(CO2) will be adjusted to -3.5 by adding or removing CO2 (with a maximum addition of 10 moles).

(4) The total molality of Na is the initial molality plus the amount of NaOH added to the solution. The amount of NaOH in EQUILIBRIUM_PHASES was initially 10 moles. If NaOH is added to solution, the remaining amount of NaOH in EQUILIBRIUM_PHASES is less than 10 and a negative amount for the delta indicates the amount added to solution.

If you are asking about NaOH in the distribution of species, that is an ion pair in very low concentration.