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 »
  • Is there a way to PUNCH donnan potential (psi_DL) or Boltzmann factor?
« previous next »
  • Print
Pages: [1]   Go Down

Author Topic: Is there a way to PUNCH donnan potential (psi_DL) or Boltzmann factor?  (Read 2311 times)

md.muniruzzaman

  • Frequent Contributor
  • Posts: 16
Is there a way to PUNCH donnan potential (psi_DL) or Boltzmann factor?
« on: 25/03/20 18:07 »
Hello everybody,

Hopefully everybody is safe during this COVID-19 pandemic!

I have been working with the diffuse layer option within SURFACE keyword a lot lately. I am wondering if there is a way to extract (punch) the Donnan potential (i.e., psi_DL in the phreeqc output file). To illustrate, I attach an screenshot below (Capture1.PNG). I know that it is possible to punch the surface potential (i.e., psi as edl("psi","Su"), marked red in the screenshot), but could not find a way to easily extract either Donnan potential or Boltzmann factor (marked blue in the screenshot).

So, does anybody know any tips or tricks on this issue?



Since I do not know how to extract this parameter, I did some post processing to calculate the Donnan potential with the following approach

c_DL = c*exp(-z*F*psi_DL/R/T)
therefore, psi_DL = (-R*T/F/z)*log(c_DL/c)

But it turns out that I get slightly different values for the different ions present in the system! Please see the attached figure (Capture2.PNG). This confuses me because the way I understand it, the Donnan potential should be the same for all species!

So, my question is, am I missing anything in this calculation? I have also attahced the input file in case you want to have a look on it.

Thanks and take care!

Code: [Select]
SOLUTION_MASTER_SPECIES
I I- 0 I 126.9
Cat Cat+2 0 Cat 40

SOLUTION_SPECIES
Cat+2 = Cat+2;
log_k 0;
-gamma 1e10 0;
-dw 0.73e-9

I- = I-;
log_k 0;
-gamma 1e10 0;
-dw 2.0e-9

SURFACE_MASTER_SPECIES
Su Su-
SURFACE_SPECIES
Su- = Su-;
log_k 0

SOLUTION 1-20
units mol/l
pH 7.00
Cat 1e-6;
I 2e-6
-water 1

SOLUTION 21-40 # Opalinus Clay porewater...
units mol/l
-water 1
END

SURFACE 21-40;
-equilibrate 21;
Su 3.2 1.592e+06 1
-donnan 10E-10
-only_counter_ions false
END

#PRINT; -reset false

TRANSPORT
-cells 40
-lengths 0.025
-flow_direction diffusion
-boundary_conditions closed closed
-shifts 60
-punch_frequency 60
-time 5e5
-multi_d true 2.24e-9 0.16 0.0 1.0


USER_GRAPH 1
-chart_title "Potential"
-axis_titles "Distance/m" "Volt"
-headings dist psi_Su psi_DL_Ca psi_DL_I psi_DL_H
-plot_concentration_vs x
-initial_solutions false
-start
31 graph_x dist
40 graph_y EDL("psi", "Su"), -8.314*298.13*log(EDL("Cat","Su")/mol("Cat+2"))/96485/2, 8.314*298.13*log(EDL("I","Su")/mol("I-"))/96485, -8.314*298.13*log(EDL("H","Su")/mol("H+"))/96485,
-end
END
« Last Edit: 25/03/20 18:09 by md.muniruzzaman »
Logged

dlparkhurst

  • Global Moderator
  • *****
  • Posts: 4034
Re: Is there a way to PUNCH donnan potential (psi_DL) or Boltzmann factor?
« Reply #1 on: 25/03/20 19:56 »
The formula is for concentrations of individual species, whereas, EDL returns the total moles of an element.

Unfortunately, it is a bit of work to get all the right information. I attach a USER_PRINT definition that calculates DL_psi for all of the charged species. It is first necessary to get a list of all the species in the diffuse layer (EDL_SPECIES), find the mass of water in the diffuse layer, then, for each species, the concentration in the diffuse layer is calculated and the charge on the species is found, and finally, the DL_psi is calculated and printed if the species is charged.

The calculation is redundant; you could calculate DL_psi with only H+, which is present in all solutions. You still need to go through almost as much work to determine the mass of water and the moles of H+ in the diffuse layer to apply the formula.

Code: [Select]
USER_PRINT
20 t = EDL_SPECIES("Su", count, name$, moles, area, thickness)
30 REM determine mass of water in diffuse layer
40 for i = 1 to count
50   if (name$(i) = "H2O") then mass_h2o = moles(i) * GFW("H2O") / 1000
60 next i
70 graph_y EDL("psi", "Su")
100 REM DL psi for each species
110 for i = 1 to count
120   z = 0
130   t$ = species_formula(name$(i), countz, elt$, coef)
140   for j = 1 to countz
150     if (elt$(j) = "charge") then z = coef(j)
160   next j
170   if z = 0 then goto 210
180   c = moles(i) / mass_h2o
190   dl_psi = -8.314*TK*log(c/mol(name$(i))) / 96485 / z
200   print pad(name$(i),10), dl_psi
210 next i
Logged

md.muniruzzaman

  • Frequent Contributor
  • Posts: 16
Re: Is there a way to PUNCH donnan potential (psi_DL) or Boltzmann factor?
« Reply #2 on: 26/03/20 16:24 »
Thanks a lot David, I really appreciate it! This is exactly what I was looking for. It seems this new EDL_SPECIES function is very useful :)
Logged

  • Print
Pages: [1]   Go Up
« previous next »
  • PhreeqcUsers Discussion Forum »
  • Processes »
  • Surface Complexation »
  • Is there a way to PUNCH donnan potential (psi_DL) or Boltzmann factor?
 

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