TITLE Craig-Gordon river water evaporation - 28C, four humidity scenariosTITLE Starting water: d18O = -10 permil, dD = -80 permil (ocean vapour)TITLE Target river water: d18O = -0.47 permil, dD = +2.69 permilTITLE Scenarios: h = 0.85, 0.70, 0.55, 0.40TITLE Reference: Horita and Wessolowski (1994), Merlivat and Jouzel (1979)# ================================================================# EXPLANATION OF THE CORRECTED RATE FORMULATION# ================================================================# The previous version showed flat lines because removing HDO and# H2[18O] in proportion to R(D) and R(18O) does NOT change the# delta value -- it just scales with the bulk removal.## The key insight: isotopic ENRICHMENT of the residual liquid only# occurs because the vapour removes the HEAVY isotopologue at a# rate FASTER than the bulk ratio by the factor alpha_eff.## The Evap_H2O reaction already removes bulk water (and implicitly# carries away isotopes at the natural ratio). The Evap_HDO and# Evap_H2_18O reactions need to remove only the EXTRA amount# caused by fractionation -- the DEFICIT above bulk proportional# removal:## extra_HDO = rate_H2O * 2 * R(D) * (alpha_eff - 1) * TIME# extra_H2_18O = rate_H2O * R(18O) * (alpha_eff - 1) * TIME## This extra removal enriches the residual liquid in heavy isotopes,# producing the expected upward trend in delta values over time.## alpha_eff deficit values at 28 deg C verified:# h=0.85: D deficit=0.07760, 18O deficit=0.01125# h=0.70: D deficit=0.07961, 18O deficit=0.01340# h=0.55: D deficit=0.08163, 18O deficit=0.01555# h=0.40: D deficit=0.08365, 18O deficit=0.01770## Horita & Wessolowski (1994) give 1000*ln(alpha) -- DIVIDE BY 1000# before EXP() to get alpha.# TK is reserved in PHREEQC Basic -- use TEMP_K for your variable.# ================================================================RATES# ----------------------------------------------------------------# Evap_H2O: bulk water evaporation - reference rate# PARM(1) = evaporation rate mol/s# Removes bulk H2O and stores rate in slot 1 for isotope reactions# ----------------------------------------------------------------Evap_H2O-start10 rate = PARM(1)20 moles = rate * TIME30 SAVE -moles40 PUT(rate, 1)-end# ----------------------------------------------------------------# Evap_HDO: removes the EXTRA HDO above bulk proportional removal# This drives isotopic enrichment of the residual liquid in D# PARM(1) = relative humidity h## extra_HDO = rate_H2O * 2 * R(D) * (alpha_eff - 1) * TIME## Horita & Wessolowski (1994) for D:# 1000*ln(alpha_eq) = 1158.8*(T^3/1e9) - 1620.1*(T^2/1e6)# + 794.84*(T/1e3) - 161.04# + 2.9992*(1e9/T^3)# Merlivat & Jouzel (1979):# eps_k_D = 12.5*(1-h) permil# ----------------------------------------------------------------Evap_HDO-start10 h = PARM(1)20 TEMP_K = TK# Equilibrium fractionation - divide by 1000 before EXP30 tln_aeq_D = 1158.8*(TEMP_K^3/1e9) - 1620.1*(TEMP_K^2/1e6) + 794.84*(TEMP_K/1e3) - 161.04 + 2.9992*(1e9/TEMP_K^3)40 alpha_eq = EXP(tln_aeq_D / 1000)# Kinetic fractionation50 eps_k = 12.5e-3 * (1 - h)60 alpha_k = 1 + eps_k# Total effective fractionation70 alpha_eff = alpha_eq * alpha_k# Current D/H ratio of solution80 r_d_soln = CALC_VALUE("R(D)")# Remove only the EXTRA HDO above bulk proportional evaporation# This is what drives enrichment of the residual liquid90 rate_H2O = GET(1)100 moles = rate_H2O * 2 * r_d_soln * (alpha_eff - 1) * TIME110 SAVE -moles-end# ----------------------------------------------------------------# Evap_H2_18O: removes the EXTRA H2[18O] above bulk removal# This drives isotopic enrichment of the residual liquid in 18O# PARM(1) = relative humidity h## extra_H2_18O = rate_H2O * R(18O) * (alpha_eff - 1) * TIME## Horita & Wessolowski (1994) for 18O:# 1000*ln(alpha_eq) = -7.685 + 6.7123*(1e3/T)# - 1.6664*(1e6/T^2)# + 0.35041*(1e9/T^3)# Merlivat & Jouzel (1979):# eps_k_18O = 14.2*(1-h) permil# ----------------------------------------------------------------Evap_H2_18O-start10 h = PARM(1)20 TEMP_K = TK# Equilibrium fractionation - divide by 1000 before EXP30 tln_aeq_18O = -7.685 + 6.7123*(1e3/TEMP_K) - 1.6664*(1e6/TEMP_K^2) + 0.35041*(1e9/TEMP_K^3)40 alpha_eq = EXP(tln_aeq_18O / 1000)# Kinetic fractionation50 eps_k = 14.2e-3 * (1 - h)60 alpha_k = 1 + eps_k# Total effective fractionation70 alpha_eff = alpha_eq * alpha_k# Current 18O/16O ratio of solution80 r_18O_soln = CALC_VALUE("R(18O)")# Remove only the EXTRA H2[18O] above bulk proportional evaporation90 rate_H2O = GET(1)100 moles = rate_H2O * r_18O_soln * (alpha_eff - 1) * TIME110 SAVE -moles-end# ================================================================# STARTING SOLUTION# Ocean vapour condensate: d18O = -10 permil, dD = -80 permil# temp = 28 deg C# ================================================================SOLUTION 1 Ocean vapour condensate - starting water temp 28 pH 7.0 charge units mg/L [18O] -10.0 D -80.0 O(0) 1 O2(g) -0.7SAVE solution 1END# ================================================================# SCENARIO 1: h = 0.85 (wet season, high humidity)# alpha_eff_D deficit = 0.07760# alpha_eff_18O deficit = 0.01125# Slowest enrichment -- smallest kinetic fractionation# ================================================================TITLE Scenario 1 - h = 0.85 (wet season, slow evaporation)USE solution 1KINETICS 1 Evap_H2O -formula H2O 1 -m 0 -m0 0 -parms 1e-5 -tol 1e-10 Evap_HDO -formula HDO 1 -m 0 -m0 0 -parms 0.85 -tol 1e-10 Evap_H2_18O -formula H2[18O] 1 -m 0 -m0 0 -parms 0.85 -tol 1e-10 -cvode -steps 2592000 in 150 steps -bad_step_max 1000INCREMENTAL_REACTIONS trueSELECTED_OUTPUT 1 -file river_h085.csv -reset false -time trueUSER_PUNCH 1 -headings Day d18O_liquid dD_liquid d18O_vapour dD_vapour d_excess -start 10 PUNCH TOTAL_TIME / 86400 20 PUNCH CALC_VALUE("Delta_[18O]") 30 PUNCH CALC_VALUE("Delta_D") # Instantaneous vapour delta = liquid delta minus equilibrium epsilon at 28 C # epsilon_18O_eq = 9.1 permil, epsilon_D_eq = 73.0 permil 40 d18O_v = CALC_VALUE("Delta_[18O]") - 9.1 50 dD_v = CALC_VALUE("Delta_D") - 73.0 60 PUNCH d18O_v 70 PUNCH dD_v # d-excess = dD - 8 * d18O (deviation below GMWL) 80 PUNCH CALC_VALUE("Delta_D") - 8 * CALC_VALUE("Delta_[18O]") -endUSER_GRAPH 1 -headings Day d18O_liq_h085 dD_liq_h085 -axis_titles "Days" "Isotope delta (permil VSMOW)" "" -initial_solutions false -connect_simulations true -plot_concentration_vs x -start 10 GRAPH_X TOTAL_TIME / 86400 20 GRAPH_Y CALC_VALUE("Delta_[18O]") 30 GRAPH_SY CALC_VALUE("Delta_D") -endEND# ================================================================# SCENARIO 2: h = 0.70 (moderate humidity)# alpha_eff_D deficit = 0.07961# alpha_eff_18O deficit = 0.01340# Slightly faster enrichment than h=0.85# ================================================================TITLE Scenario 2 - h = 0.70 (moderate humidity)USE solution 1KINETICS 2 Evap_H2O -formula H2O 1 -m 0 -m0 0 -parms 1e-5 -tol 1e-10 Evap_HDO -formula HDO 1 -m 0 -m0 0 -parms 0.70 -tol 1e-10 Evap_H2_18O -formula H2[18O] 1 -m 0 -m0 0 -parms 0.70 -tol 1e-10 -cvode -steps 2592000 in 150 steps -bad_step_max 1000INCREMENTAL_REACTIONS trueSELECTED_OUTPUT 2 -file river_h070.csv -reset false -time trueUSER_PUNCH 2 -headings Day d18O_liquid dD_liquid d18O_vapour dD_vapour d_excess -start 10 PUNCH TOTAL_TIME / 86400 20 PUNCH CALC_VALUE("Delta_[18O]") 30 PUNCH CALC_VALUE("Delta_D") 40 d18O_v = CALC_VALUE("Delta_[18O]") - 9.1 50 dD_v = CALC_VALUE("Delta_D") - 73.0 60 PUNCH d18O_v 70 PUNCH dD_v 80 PUNCH CALC_VALUE("Delta_D") - 8 * CALC_VALUE("Delta_[18O]") -endUSER_GRAPH 2 -headings Day d18O_liq_h070 dD_liq_h070 -axis_titles "Days" "Isotope delta (permil VSMOW)" "" -initial_solutions false -connect_simulations true -plot_concentration_vs x -start 10 GRAPH_X TOTAL_TIME / 86400 20 GRAPH_Y CALC_VALUE("Delta_[18O]") 30 GRAPH_SY CALC_VALUE("Delta_D") -endEND# ================================================================# SCENARIO 3: h = 0.55 (dry season)# alpha_eff_D deficit = 0.08163# alpha_eff_18O deficit = 0.01555# Stronger enrichment -- larger kinetic fractionation# ================================================================TITLE Scenario 3 - h = 0.55 (dry season, faster evaporation)USE solution 1KINETICS 3 Evap_H2O -formula H2O 1 -m 0 -m0 0 -parms 1e-5 -tol 1e-10 Evap_HDO -formula HDO 1 -m 0 -m0 0 -parms 0.55 -tol 1e-10 Evap_H2_18O -formula H2[18O] 1 -m 0 -m0 0 -parms 0.55 -tol 1e-10 -cvode -steps 2592000 in 150 steps -bad_step_max 1000INCREMENTAL_REACTIONS trueSELECTED_OUTPUT 3 -file river_h055.csv -reset false -time trueUSER_PUNCH 3 -headings Day d18O_liquid dD_liquid d18O_vapour dD_vapour d_excess -start 10 PUNCH TOTAL_TIME / 86400 20 PUNCH CALC_VALUE("Delta_[18O]") 30 PUNCH CALC_VALUE("Delta_D") 40 d18O_v = CALC_VALUE("Delta_[18O]") - 9.1 50 dD_v = CALC_VALUE("Delta_D") - 73.0 60 PUNCH d18O_v 70 PUNCH dD_v 80 PUNCH CALC_VALUE("Delta_D") - 8 * CALC_VALUE("Delta_[18O]") -endUSER_GRAPH 3 -headings Day d18O_liq_h055 dD_liq_h055 -axis_titles "Days" "Isotope delta (permil VSMOW)" "" -initial_solutions false -connect_simulations true -plot_concentration_vs x -start 10 GRAPH_X TOTAL_TIME / 86400 20 GRAPH_Y CALC_VALUE("Delta_[18O]") 30 GRAPH_SY CALC_VALUE("Delta_D") -endEND# ================================================================# SCENARIO 4: h = 0.40 (very dry, maximum kinetic fractionation)# alpha_eff_D deficit = 0.08365# alpha_eff_18O deficit = 0.01770# Fastest enrichment -- strongest kinetic fractionation# ================================================================TITLE Scenario 4 - h = 0.40 (very dry, maximum kinetic fractionation)USE solution 1KINETICS 4 Evap_H2O -formula H2O 1 -m 0 -m0 0 -parms 1e-5 -tol 1e-10 Evap_HDO -formula HDO 1 -m 0 -m0 0 -parms 0.40 -tol 1e-10 Evap_H2_18O -formula H2[18O] 1 -m 0 -m0 0 -parms 0.40 -tol 1e-10 -cvode -steps 2592000 in 150 steps -bad_step_max 1000INCREMENTAL_REACTIONS trueSELECTED_OUTPUT 4 -file river_h040.csv -reset false -time trueUSER_PUNCH 4 -headings Day d18O_liquid dD_liquid d18O_vapour dD_vapour d_excess -start 10 PUNCH TOTAL_TIME / 86400 20 PUNCH CALC_VALUE("Delta_[18O]") 30 PUNCH CALC_VALUE("Delta_D") 40 d18O_v = CALC_VALUE("Delta_[18O]") - 9.1 50 dD_v = CALC_VALUE("Delta_D") - 73.0 60 PUNCH d18O_v 70 PUNCH dD_v 80 PUNCH CALC_VALUE("Delta_D") - 8 * CALC_VALUE("Delta_[18O]") -endUSER_GRAPH 4 -headings Day d18O_liq_h040 dD_liq_h040 -axis_titles "Days" "Isotope delta (permil VSMOW)" "" -initial_solutions false -connect_simulations true -plot_concentration_vs x -start 10 GRAPH_X TOTAL_TIME / 86400 20 GRAPH_Y CALC_VALUE("Delta_[18O]") 30 GRAPH_SY CALC_VALUE("Delta_D") -endEND
RATESH2O_evap-start10 k = 1/sqrt(GFW("H2O"))20 rate = k * MOL("H2O")*TOT("Water")30 moles = -rate*TIME40 SAVE moles-endHDO_evap-start10 k = 1/sqrt(GFW("HDO"))20 rate = k * MOL("HDO")*TOT("Water")30 moles = -rate*TIME40 SAVE moles-endD2O_evap-start10 k = 1/sqrt(GFW("D2O"))20 rate = k * MOL("D2O")*TOT("Water")30 moles = -rate*TIME40 SAVE moles-endENDSOLUTION 1 Ocean vapour condensate - starting water temp 28 pH 7.0 charge units mg/L D -80.0ENDKINETICSH2O_evap -formula H2O 1 -m 0HDO_evap -formula HDO 1 -m 0D2O_evap -formula D2O 1 -m 0-step 25 in 25-cvode-step_divide 10ENDUSER_GRAPH 1 -headings fraction D_permil H2O HDO D2O -axis_titles "Fraction of H2O removed" "D, permil" "Log moles" -initial_solutions false -connect_simulations true -plot_concentration_vs x -start10 GRAPH_X 1 - TOT("water")20 GRAPH_Y ISO("D")30 GRAPH_SY log10[MOL("H2O")*TOT("water")], log10[MOL("HDO")*TOT("water")], log10[MOL("D2O")*TOT("water")] -end -active trueENDINCREMENTAL_REACTIONSUSE solution 1USE kinetics 1END