mirror of
https://git.gfz-potsdam.de/naaice/iphreeqc.git
synced 2025-12-15 16:18:22 +01:00
1777f2bc Merge branch 'mix_error' of github.com:dlparkhurst/phreeqc3-1 into mix_error da8a610a Fixed examples to have fewer warnings. Fixed headers of some database files. Changed some output from warnings to comments. git-subtree-dir: phreeqc3-examples git-subtree-split: 1777f2bc99bd9b655e838908e0fdfb81bfdd1e3f
116 lines
3.7 KiB
Plaintext
116 lines
3.7 KiB
Plaintext
TITLE Example 11.--Transport and cation exchange.
|
|
SOLUTION 0 CaCl2
|
|
units mmol/kgw
|
|
temp 25.0
|
|
pH 7.0 charge
|
|
pe 12.5 O2(g) -0.68
|
|
Ca 0.6
|
|
Cl 1.2
|
|
SOLUTION 1-40 Initial solution for column
|
|
units mmol/kgw
|
|
temp 25.0
|
|
pH 7.0 charge
|
|
pe 12.5 O2(g) -0.68
|
|
Na 1.0
|
|
K 0.2
|
|
N(5) 1.2
|
|
END
|
|
EXCHANGE 1-40
|
|
-equilibrate 1
|
|
X 0.0011
|
|
COPY cell 1 101
|
|
END
|
|
ADVECTION
|
|
-cells 40
|
|
-shifts 100
|
|
-punch_cells 40
|
|
-punch_frequency 1
|
|
-print_cells 40
|
|
-print_frequency 20
|
|
PRINT; -reset false; -status false
|
|
SELECTED_OUTPUT
|
|
-file ex11adv.sel
|
|
-reset false
|
|
-step
|
|
-totals Na Cl K Ca
|
|
USER_PUNCH
|
|
-heading Pore_vol
|
|
10 PUNCH (STEP_NO + .5) / 40.
|
|
USER_GRAPH 1 Example 11
|
|
-chart_title "Using ADVECTION Data Block"
|
|
-headings Cl Na K Ca
|
|
-axis_titles "Pore volumes" "Millimoles per kilogram water"
|
|
-axis_scale x_axis 0 2.5
|
|
-axis_scale y_axis 0 1.4
|
|
-plot_concentration_vs time
|
|
-start
|
|
10 x = (STEP_NO + 0.5) / cell_no
|
|
20 PLOT_XY x, TOT("Cl")*1000, symbol = None
|
|
30 PLOT_XY x, TOT("Na")*1000, symbol = None
|
|
40 PLOT_XY x, TOT("K")*1000, symbol = None
|
|
50 PLOT_XY x, TOT("Ca")*1000, symbol = None
|
|
60 PUT(1, 1)
|
|
-end
|
|
COPY cell 101 1-40
|
|
END
|
|
USER_GRAPH 1
|
|
-detach
|
|
END
|
|
TRANSPORT
|
|
-cells 40
|
|
-lengths 40*0.002
|
|
-shifts 100
|
|
-time_step 720.0
|
|
-flow_direction forward
|
|
-boundary_conditions flux flux
|
|
-diffusion_coefficient 0.0e-9
|
|
-dispersivities 40*0.002
|
|
-correct_disp true
|
|
-punch_cells 40
|
|
-punch_frequency 1
|
|
-print_cells 40
|
|
-print_frequency 20
|
|
SELECTED_OUTPUT
|
|
-file ex11trn.sel
|
|
-reset false
|
|
-step
|
|
-totals Na Cl K Ca
|
|
-high_precision true
|
|
USER_GRAPH 2 Example 11
|
|
-chart_title "Using TRANSPORT Data Block"
|
|
-headings Cl Na K Ca Cl_analytical
|
|
-axis_titles "Pore volumes" "Millimoles per kilogram water"
|
|
-axis_scale x_axis 0 2.5
|
|
-axis_scale y_axis 0 1.4
|
|
# -batch \temp\11.gif false # After saving, the chart on the monitor is closed.
|
|
-plot_concentration_vs time
|
|
10 x = (STEP_NO + 0.5) / cell_no
|
|
20 PLOT_XY x, TOT("Cl")*1000, symbol = Plus, symbol_size = 2
|
|
30 PLOT_XY x, TOT("Na")*1000, symbol = Plus, symbol_size = 2
|
|
40 PLOT_XY x, TOT("K") *1000, symbol = Plus, symbol_size = 2
|
|
50 PLOT_XY x, TOT("Ca")*1000, symbol = Plus, symbol_size = 2
|
|
# calculate Cl_analytical...
|
|
60 DATA 0.254829592, -0.284496736, 1.421413741, -1.453152027, 1.061405429, 0.3275911
|
|
70 READ a1, a2, a3, a4, a5, a6
|
|
80 Peclet = 0.08 / 0.002
|
|
90 z = (1 - x) / SQRT(4 * x / Peclet)
|
|
100 PA = 0
|
|
110 GOSUB 2000 # calculate e_erfc = exp(PA) * erfc(z)
|
|
120 e_erfc1 = e_erfc
|
|
130 z = (1 + x) / SQRT(4 * x / Peclet)
|
|
140 PA = Peclet
|
|
150 GOSUB 2000 # calculate exp(PA) * erfc(z)
|
|
160 y = 0.6 * (e_erfc1 + e_erfc)
|
|
170 PLOT_XY x, y, line_width = 0, symbol = Circle, color = Red
|
|
180 d = (y - TOT("Cl")*1000)^2
|
|
190 IF EXISTS(10) THEN PUT(d + GET(10), 10) ELSE PUT(d, 10)
|
|
200 IF STEP_NO = 2 * CELL_NO THEN print 'SSQD for Cl after 2 Pore Volumes: ', GET(10), '(mmol/L)^2'
|
|
210 END
|
|
2000 REM calculate e_erfc = exp(PA) * erfc(z)...
|
|
2010 sgz = SGN(z)
|
|
2020 z = ABS(z)
|
|
2050 b = 1 / (1 + a6 * z)
|
|
2060 e_erfc = b * (a1 + b * (a2 + b * (a3 + b * (a4 + b * a5)))) * EXP(PA - (z * z))
|
|
2070 IF sgz = -1 THEN e_erfc = 2 * EXP(PA) - e_erfc
|
|
2080 RETURN
|
|
END |