pH of a raindrop as a function of time
Q1 from the class notes, fully solved: 5 ppb SO₂ being oxidised by H₂O₂ and O₃ inside a cloud drop, with HNO₃ and NH₃ around. Below: the method step by step, the real numbers at every minute, a simulator you can play with, and a ready-made Excel workbook that builds the pH profile with live formulas.
| t (min) | pH | S(VI) formed (µM) |
|---|---|---|
| 0 | 6.08 | 0 |
| 5 | 5.67 | 150 |
| 10 | 5.49 | 209 |
| 20 | 5.28 | 267 |
| 30 | 5.17 | 294 |
| 40 | 5.11 | 308 |
| 50 | 5.07 | 315 |
Reading the question
Q1. S(IV) in the presence of H₂O₂ (and O₃). Calculate the pH of the raindrop as a function of time.
| Given (from the notes) | Value | What it really means |
|---|---|---|
| Total S(IV) (as SO₂) | 5 ppb | gas-phase mixing ratio: 5 molecules of SO₂ per 10⁹ molecules of air, i.e. partial pressure $5\times10^{-9}$ atm |
| H₂O₂ | 1 ppb | oxidant 1, the fast one, but there is only a little of it |
| O₃ | 5 ppb | oxidant 2, barely soluble, but very fast with sulfite at high pH |
| HNO₃ | 1 ppb | strong acid, dissolves completely → NO₃⁻ |
| NH₃ | 5 ppb (cut off in the photo) | base; dissolves more the more acidic the drop is |
| Time | 0 → 40–50 min | we run 0 → 50 min in 1-minute steps |
What we have to assume (state these in your answer)
- Closed cloud parcel. The air and the drops inside it exchange gases with each other but not with outside air. So the 1 ppb of H₂O₂ is all the H₂O₂ there is, and it can run out.
- Liquid water content $L = 0.2\ \text{g/m}^3$ (a typical cloud). This is the one number the question does not give. It is the number that makes the initial pH come out at 6.08, which matches the "assume pH = 6 at t = 0" in the notes. Try other values in the simulator.
- T = 298 K, with Henry's law and acid–base equilibria established instantly. Chemistry is slow (minutes) compared with dissolving (seconds).
- Rate laws and constants from Seinfeld & Pandis, Ch. 7, which is the standard source for this problem. If your professor used different constants, change the yellow cells in the Excel file.
- CO₂ and HCO₃⁻ are ignored, as in the charge balance in the notes. At pH 5–6 they add under 6 µM, compared with ~300 µM for the other ions.
Step 1: ppb in air → mol per litre of drop water
Everything in the drop is in mol/L (M), but the question gives gas mixing ratios. The bridge between them is how much water there is per volume of air.
Most gases do not dissolve completely. Henry's law shares each one between gas and drop:
$$\frac{\text{moles in drop}}{\text{moles in gas}} = H^{*}RTL\qquad\Rightarrow\qquad \text{fraction in drop}=\frac{H^{*}RTL}{1+H^{*}RTL}$$where $H^*$ is the effective Henry's constant. It includes the ions the gas forms in water, so it depends on pH:
$$H^*_{\text{SO}_2}=H_{\text{SO}_2}\Big(1+\frac{K_{s1}}{[\text{H}^+]}+\frac{K_{s1}K_{s2}}{[\text{H}^+]^2}\Big)\qquad H^*_{\text{NH}_3}=H_{\text{NH}_3}\Big(1+\frac{K_{b}[\text{H}^+]}{K_w}\Big)$$| Gas | Henry's constant (M/atm) | total $c_{\text{tot}}$ at t=0 | fraction in drop at pH 6.08 |
|---|---|---|---|
| SO₂ | 1.23 | 1022 µM | 9.3 % |
| H₂O₂ | 7.45×10⁴ | 204.5 µM | 26.7 % |
| O₃ | 1.13×10⁻² | 1022 µM | 0.000006 % |
| HNO₃ | 2.1×10⁵ (×15.4/[H⁺]) | 204.5 µM | ≈100 % |
| NH₃ | 62 | 1022 µM | 29.9 % |
Step 2: How the dissolved S(IV) splits up
Inside the drop, S(IV) exists as three forms that convert between each other instantly:
$$\text{SO}_2\cdot\text{H}_2\text{O}\ \underset{K_{s1}=1.3\times10^{-2}}{\rightleftharpoons}\ \text{H}^+ + \text{HSO}_3^-\qquad \text{HSO}_3^-\ \underset{K_{s2}=6.6\times10^{-8}}{\rightleftharpoons}\ \text{H}^+ + \text{SO}_3^{2-}$$Combining the two equilibria with $[\text{S(IV)}]_{aq}=[\text{SO}_2\cdot\text{H}_2\text{O}]+[\text{HSO}_3^-]+[\text{SO}_3^{2-}]$, and writing $D=[\text{H}^+]^2+K_{s1}[\text{H}^+]+K_{s1}K_{s2}$, gives:
$$[\text{SO}_2\cdot\text{H}_2\text{O}]=\frac{[\text{H}^+]^2}{D}[\text{S(IV)}]_{aq}\quad [\text{HSO}_3^-]=\frac{K_{s1}[\text{H}^+]}{D}[\text{S(IV)}]_{aq}\quad [\text{SO}_3^{2-}]=\frac{K_{s1}K_{s2}}{D}[\text{S(IV)}]_{aq}$$These are the formulas in your notes, except that every one of them is multiplied by $[\text{S(IV)}]_{aq}$ (the notes forgot it on SO₃²⁻), and $[\text{S(IV)}]_{aq}$ is the dissolved part from step 1, not the 5 ppb total.
Step 3: The two oxidation rates
Your notes write $r = -\dfrac{d\,\text{S(IV)}}{dt} = \dfrac{d\,\text{S(VI)}}{dt} = r_{O_3}+r_{H_2O_2}$. To get numbers you need the rate laws, which are the standard ones (Seinfeld & Pandis, 298 K):
Because $[\text{HSO}_3^-]\propto 1/[\text{H}^+]$, the two cancel: this rate barely depends on pH. It only slows down as H₂O₂ gets used up.
The huge $k_2$ term (sulfite) dominates, and $[\text{SO}_3^{2-}]$ collapses as the pH drops, so this rate falls ~100× per pH unit.
The two lines cross at about pH 5.95. Our drop starts at 6.08, just above the crossing, so ozone is ahead for the first ~2 minutes. Once the pH falls below 5.95, H₂O₂ is ahead for the rest of the run. This crossover is the whole story of the curve's shape. Between pH 6 and 5 the ozone rate falls 90×, while the H₂O₂ rate changes by under 10%.
Step 4: Stepping through time (Euler method)
You can't integrate $dS/dt$ on paper because the rate depends on pH, which depends on S. So we march forward in small steps of $\Delta t$ (1 min = 60 s), assuming the rate stays constant within each step:
$$\begin{aligned} \text{S(IV)}_{i+1}&=\text{S(IV)}_i-(r_{H_2O_2}+r_{O_3})_i\,\Delta t\\ \text{S(VI)}_{i+1}&=\text{S(VI)}_i+(r_{H_2O_2}+r_{O_3})_i\,\Delta t\\ \text{H}_2\text{O}_2{}_{,i+1}&=\text{H}_2\text{O}_2{}_{,i}-r_{H_2O_2,i}\,\Delta t\qquad(\text{1 H}_2\text{O}_2\text{ per S oxidised})\\ \text{O}_3{}_{,i+1}&=\text{O}_3{}_{,i}-r_{O_3,i}\,\Delta t \end{aligned}$$These are the totals (gas + drop, in µM of water). HNO₃ and NH₃ totals don't change; only how much of the NH₃ sits in the drop changes, and that depends on pH.
- Know the totals at time $t_i$.
- Find the pH that satisfies the charge balance (section 6).
- With that pH, compute all species and the two rates.
- Use the rates to get the totals at $t_{i+1}$. Go back to 2.
Step 5: Charge balance → the new pH
A drop is electrically neutral, so positive charge equals negative charge. This is the equation in your notes:
$$[\text{H}^+]+[\text{NH}_4^+]=[\text{HSO}_3^-]+2[\text{SO}_3^{2-}]+[\text{NO}_3^-]+[\text{OH}^-]+2[\text{SO}_4^{2-}]+[\text{HSO}_4^-]$$Every term is a function of $[\text{H}^+]$, given the totals at that moment:
| Ion | Formula |
|---|---|
| HSO₃⁻, SO₃²⁻ | section 3, with $[\text{S(IV)}]_{aq}$ = S(IV)tot × fraction in drop (section 2) |
| HSO₄⁻, SO₄²⁻ | $[\text{HSO}_4^-]=\dfrac{[\text{H}^+]\,\text{S(VI)}}{[\text{H}^+]+K_{hs}}$, $[\text{SO}_4^{2-}]=\dfrac{K_{hs}\,\text{S(VI)}}{[\text{H}^+]+K_{hs}}$, $K_{hs}=1.02\times10^{-2}$; sulfate stays in the drop |
| NO₃⁻ | = HNO₃ total (204.5 µM), fully dissolved and dissociated |
| NH₄⁺ | $\text{NH}_3{}_{\,tot}\cdot\dfrac{H^*RTL}{1+H^*RTL}\cdot\dfrac{K_b[\text{H}^+]/K_w}{1+K_b[\text{H}^+]/K_w}$, $K_b=1.7\times10^{-5}$ |
| OH⁻ | $K_w/[\text{H}^+]$ |
Move everything to one side: $F(\text{pH}) = \text{cations} - \text{anions}$. The pH we want is where $F=0$. You can't rearrange this for pH by hand, so we search for it:
t = 0 and t = 1 min, by hand
t = 0 min
Totals: S(IV) = 1022.5 µM, S(VI) = 0, H₂O₂ = 204.5, O₃ = 1022, NO₃⁻ = 204.5, NH₃ = 1022 µM.
Charge balance solves to pH = 6.083, so $[\text{H}^+]$ = 0.827 µM. Check at that pH:
| quantity | value | how |
|---|---|---|
| $H^*_{SO_2}$ | 2.09×10⁴ M/atm | 1.23(1 + 1.3e-2/8.27e-7 + …) |
| fraction of S(IV) in drop | 0.0927 | $H^*RTL/(1+H^*RTL)$ = 0.1022/1.1022 |
| [S(IV)]aq | 94.8 µM | 1022.5 × 0.0927 |
| [HSO₃⁻] / [SO₃²⁻] / [SO₂·H₂O] | 87.75 / 7.00 / 0.006 µM | section 3 |
| fraction of NH₃ in drop → [NH₄⁺] | 0.299 → 305.4 µM | $H^*_{NH_3}$ = 8.72×10⁴ |
| [OH⁻] | 0.012 µM | $K_w$/[H⁺] |
| cations | 0.83 + 305.4 = 306.2 µM | |
| anions | 87.75 + 2(7.00) + 204.5 + 0.01 = 306.3 µM ✓ | |
| [H₂O₂(aq)] / [O₃(aq)] | 54.6 µM / 5.65×10⁻¹¹ M | fraction-in-drop × total |
| $r_{H_2O_2}$ | 2.95×10⁻⁷ M/s | 7.45e7 × 8.27e-7 × 5.46e-5 × 8.775e-5 / (1+13×8.27e-7) |
| $r_{O_3}$ | 5.96×10⁻⁷ M/s | (… + 3.7e5×8.775e-5 + 1.5e9×7.0e-6) × 5.65e-11 |
| S oxidised in the 1st minute | (2.95+5.96)e-7 × 60 = 53.4 µM | two thirds of it by O₃ |
t = 1 min
New totals: S(IV) = 1022.5 − 53.4 = 969.0 µM, S(VI) = 53.4 µM, H₂O₂ = 204.5 − 17.7 = 186.8 µM.
Charge balance now solves to pH = 5.942. Check: cations = 1.14 (H⁺) + 379.1 (NH₄⁺) = 380.2 µM; anions = 61.8 (HSO₃⁻) + 2×3.57 (SO₃²⁻) + 204.5 (NO₃⁻) + 2×53.43 (SO₄²⁻) + 0.006 (HSO₄⁻) = 380.3 µM ✓
Notice NH₄⁺ went up from 305 to 379 µM: the slightly more acidic drop pulled in more ammonia. That is the buffering that makes the curve flatten.
New rates: $r_{H_2O_2}$ = 2.63×10⁻⁷, $r_{O_3}$ = 2.93×10⁻⁷ M/s. The ozone rate has halved after one minute.
The full pH profile (0 → 50 min)
- 0–3 min: steepest drop. Both paths are running and O₃ leads.
- 3–20 min: O₃ has faded; H₂O₂ carries on and is used up (205 → 42 µM).
- 20–50 min: H₂O₂ is nearly gone (5 µM left), and the extra NH₃ dissolving cancels most of the new acid. The pH settles near 5.1.
- Over 50 min, 315 µM of S(VI) formed: 200 from H₂O₂ and 116 from O₃. S(IV) is not used up; 70% is still there. The oxidants are what limit the reaction.
Show the full minute-by-minute table
Play with it
This is the same model, running live in your browser. Change one thing at a time and predict what happens before you look.
- NH₃ → 0: no buffer at all. HNO₃ alone puts the drop at pH 3.7 from the start, and it ends near 3.2.
- H₂O₂ → 3 ppb: the pH falls off a cliff to ≈ 3.4. Once more acid has formed than the NH₃ can neutralise, the buffer breaks. How much H₂O₂ there is decides how far the pH goes.
- O₃ → 50 ppb (a polluted afternoon): pH 6.08 → 4.7 in the first minute. Then ozone shuts itself off (by 10 min it is 300× slower than H₂O₂), and H₂O₂ finishes the job.
- LWC 0.2 → 1.0: more water, so more of the H₂O₂ dissolves and reacts. The starting pH barely moves (6.18), but the 50-min pH drops to 4.6.
Doing it in MS Excel (the pH profile)
⬇ raindrop-pH-profile.xlsx already contains everything below with live formulas. Open it, see the chart, and change any yellow input. Read on to understand it, or to build it yourself from scratch.
| Sheet | What it is |
|---|---|
| Inputs | The given ppb values, LWC, T and every constant, each as a named cell (e.g. Ka_S1, RTL). Yellow cells are the ones you may edit. |
| Profile | One row per minute (0–50) with all 24 columns below, plus the pH-vs-time chart. Fully automatic. |
| pH_Solver | The automatic charge-balance solver: 36 bisection columns per row. You never touch it. |
| GoalSeek_Method | The same model, but you find each pH with Goal Seek, the way a lab class does it. |
| Optional_Macro | A 10-line VBA macro that runs Goal Seek on all 51 rows for you. |
Step 1: The Inputs sheet and named cells
Put each constant in a cell, then name it: click the cell, type the name in the Name Box (left of the formula bar) and press Enter. Named cells make formulas readable, e.g. =Ka_S1*G2/J2 instead of =Inputs!$B$27*G2/J2.
- Don't name a cell
Ks1,k1orK2. Excel reads those as cell addresses (column KS, row 1) and silently uses the wrong number. UseKa_S1,k_O3_b, etc. - Names ignore upper/lower case.
kP(rate constant) andKP(equilibrium constant) are the same name to Excel. Give them different names.
| Name | Value / formula | Name | Value |
|---|---|---|---|
| SO2_ppb, H2O2_ppb, O3_ppb, HNO3_ppb, NH3_ppb | 5, 1, 5, 1, 5 | H_SO2 | 1.23 |
| LWC | 0.2 (g/m³) | Ka_S1, Ka_S2 | 1.3E-2, 6.6E-8 |
| Temp, Rgas | 298, 0.08205 | H_H2O2, H_O3, H_NH3 | 7.45E4, 1.13E-2, 62 |
| L_vol | =LWC/1000000 | K_NH3, K_w, K_HSO4 | 1.7E-5, 1E-14, 1.02E-2 |
| RTL | =Rgas*Temp*L_vol | k_H2O2, Keq_H2O2 | 7.45E7, 13 |
| ppb_to_M | =1/(1000000000*RTL) | k_O3_a, k_O3_b, k_O3_c | 2.4E4, 3.7E5, 1.5E9 |
| S4_0, P_0, O_0, Ntot, Atot | =SO2_ppb*ppb_to_M etc. | dt_min | 1 |
Step 2: The Profile columns
Row 2 is t = 0. Every cell below is in mol/L.
| Col | Meaning | Row 2 (t = 0) | Row 3 onwards |
|---|---|---|---|
| A | t (min) | 0 | =A2+dt_min |
| B | S(IV) total | =S4_0 | =MAX(B2-X2*dt_min*60,0) |
| C | S(VI) | 0 | =C2+(B2-B3) |
| D | H₂O₂ total | =P_0 | =MAX(D2-V2*dt_min*60,0) |
| E | O₃ total | =O_0 | =MAX(E2-W2*dt_min*60,0) |
| F | pH | from the solver (=pH_Solver!AL2), or typed in and adjusted by Goal Seek | |
| G | [H⁺] | =10^(-F2) | |
| H | fraction of S(IV) in drop | =H_SO2*(1+Ka_S1/G2+Ka_S1*Ka_S2/G2^2)*RTL/(1+H_SO2*(1+Ka_S1/G2+Ka_S1*Ka_S2/G2^2)*RTL) | |
| I | [S(IV)]aq | =B2*H2 | |
| J | D | =G2^2+Ka_S1*G2+Ka_S1*Ka_S2 | |
| K | [SO₂·H₂O] | =I2*G2^2/J2 | |
| L | [HSO₃⁻] | =I2*Ka_S1*G2/J2 | |
| M | [SO₃²⁻] | =I2*Ka_S1*Ka_S2/J2 | |
| N | [HSO₄⁻] | =C2*G2/(G2+K_HSO4) | |
| O | [SO₄²⁻] | =C2*K_HSO4/(G2+K_HSO4) | |
| P | [NO₃⁻] | =Ntot | |
| Q | [NH₄⁺] | =Atot*H_NH3*(1+K_NH3*G2/K_w)*RTL/(1+H_NH3*(1+K_NH3*G2/K_w)*RTL)*(K_NH3*G2/K_w)/(1+K_NH3*G2/K_w) | |
| R | [OH⁻] | =K_w/G2 | |
| S | charge residual (want 0) | =G2+Q2-L2-2*M2-P2-R2-2*O2-N2 | |
| T | [H₂O₂(aq)] | =D2*H_H2O2*RTL/(1+H_H2O2*RTL) | |
| U | [O₃(aq)] | =E2*H_O3*RTL/(1+H_O3*RTL) | |
| V | rH₂O₂ (M/s) | =k_H2O2*G2*T2*L2/(1+Keq_H2O2*G2) | |
| W | rO₃ (M/s) | =(k_O3_a*K2+k_O3_b*L2+k_O3_c*M2)*U2 | |
| X | r total | =V2+W2 | |
Fill row 3 across, then select row 3 and drag the fill handle down to row 52 (t = 50).
Step 3: Getting the pH in each row. Pick one method.
- Type
6in F2 as a starting guess. - Data → What-If Analysis → Goal Seek.
- Set cell:
S2; To value:0; By changing cell:F2. OK. - Repeat for row 3, 4, … in order, because each row needs the row above it solved first.
=prev + IF(F(prev)>0, 1, -1) * 7/2^k
10^(-prev) in place of [H⁺], and k = 1, 2, … 36. The last column is the pH. This is the pH_Solver sheet. It is bisection done with formulas, so all 51 rows update instantly whenever you change an input.Optional: a macro that runs Goal Seek on every row
Sub SolveAllRows()
Dim r As Long
With Worksheets("GoalSeek_Method")
For r = 5 To 55
.Cells(r, "F").Value = 6
.Cells(r, "S").GoalSeek Goal:=0, ChangingCell:=.Cells(r, "F")
Next r
End With
End Sub
Alt+F11 → Insert → Module → paste → press F5. Save as .xlsm if you want to keep it.
Step 4: The chart
- Select A1:A52, then hold Ctrl and select F1:F52.
- Insert → Scatter → Scatter with Smooth Lines and Markers. Don't use a "Line" chart, because it treats time as text labels.
- Axis titles: Time (min) and pH. Set the y-axis to 4.8–6.2 so the shape is visible.
- Title: pH of raindrop vs time: S(IV) oxidation by H₂O₂ and O₃.
How to write it in the exam
- Assumptions: closed cloud parcel, LWC = 0.2 g/m³, T = 298 K, Henry's law and acid–base equilibria reached instantly, CO₂ neglected.
- Conversion: $c_{tot}=\xi\times10^{-9}/(RTL)$; 1 ppb = 204.5 µM. Share between gas and drop with $H^*RTL/(1+H^*RTL)$.
- Speciation: $[\text{HSO}_3^-]=\dfrac{K_{s1}[\text{H}^+]}{[\text{H}^+]^2+K_{s1}[\text{H}^+]+K_{s1}K_{s2}}[\text{S(IV)}]_{aq}$ (and the other two forms).
- Rates: $r_{H_2O_2}=k[\text{H}^+][\text{H}_2\text{O}_2][\text{HSO}_3^-]/(1+K[\text{H}^+])$; $r_{O_3}=(k_0[\text{SO}_2\cdot\text{H}_2\text{O}]+k_1[\text{HSO}_3^-]+k_2[\text{SO}_3^{2-}])[\text{O}_3]$.
- Mass balance (Euler, Δt = 1 min): $\text{S(IV)}_{i+1}=\text{S(IV)}_i-r\Delta t$, $\text{S(VI)}_{i+1}=\text{S(VI)}_i+r\Delta t$, H₂O₂ and O₃ consumed likewise.
- Charge balance solved for [H⁺] at each step (Goal Seek or bisection).
- Result: pH 6.08 (0) → 5.67 (5) → 5.49 (10) → 5.28 (20) → 5.17 (30) → 5.11 (40) → 5.07 (50 min). O₃ dominates for the first ~2 min, then H₂O₂ dominates until it is used up. NH₃ uptake buffers the drop. Draw the curve: a steep fall, then a flattening near 5.1.
Quick quiz
1. Why can't we just integrate dS(IV)/dt analytically?
2. Why does the ozone pathway die out so fast?
3. Why is the H₂O₂ rate almost independent of pH?
4. What limits the final pH: S(IV) or the oxidants?
5. If NH₃ were zero, would the final pH be higher or lower? Why?
6. Your Goal Seek "finds" pH = 6.000 for every row. What's wrong?
Fixes to the handwritten notes
- "5 ppb → 5 µg/L": wrong for this problem. These are gas-phase mixing ratios. Convert with Henry's law and $RTL$ (section 2).
- Page 2: "dS(IV)/dt = rO₃ + rH₂O₂" is missing a minus sign: $\dfrac{d\,\text{S(IV)}}{dt}=-(r_{O_3}+r_{H_2O_2})$. Page 1 has it right.
- [SO₃²⁻] formula: the numerator should be $K_{a1}K_{a2}\,[\text{S(IV)}]_{aq}$. The S(IV) term is missing.
- [S(IV)] in the speciation formulas is the dissolved amount, not the 5 ppb total. You have to do the gas/drop split first.
- "Assuming pH = 6 at t = 0": you don't have to assume it. The charge balance at t = 0 gives 6.08 (with LWC 0.2 g/m³), so state that as a check.
- [NH₄⁺] is not constant. It has to be recalculated at every step, because more NH₃ dissolves as the drop acidifies. This is what makes the curve flatten.
- "H₂SO₃(aq)" is really SO₂·H₂O. A H₂SO₃ molecule has never been found in solution. Writing it as a label is fine.
Constants: Seinfeld & Pandis, Atmospheric Chemistry and Physics, Ch. 7 (Tables 7.2–7.4 and the S(IV) oxidation rate expressions). Every number on this page was produced by the same model as the Excel file, and the two were checked against each other.