Arte SheetsLearn. Try. Understand.

PFAS & VOC Drinking-Water Treatment, Bohart-Adams (1920) / Hutchins BDST Carbon Column

Bohart-Adams BDST Activated-Carbon Breakthrough Formula

Calculate Empty-Bed Contact Time EBCT (min), Critical Mass-Transfer Zone Bed Depth Z0 (m), Stoichiometric Saturation Time (h), and Bohart-Adams Breakthrough Service Time tb (h).

Pack an activated-carbon column shallower than Bohart-Adams critical depth Z0 and effluent breaks past Cb at t = 0—even with 100% virgin carbon!

**Granular Activated Carbon (`GAC`) Pressure Adsorbers** stripping VOCs, pesticides, or free chlorine do NOT exhaust top-to-bottom like a flat piston—an S-shaped **Mass-Transfer Zone (`MTZ`)** travels downward at finite film/intraparticle kinetics **`k_a`** (`L/(mg·h)`)! Solving the coupled solute wave across Dynamic Bed Adsorption Capacity `N_0` (`g/L bed` = `1,000 * N_0` mg/L), Packed Depth `Z` (`m`), Influent Concentration `C_0` (`mg/L`), Allowable Effluent Breakthrough `C_b` (`mg/L`), and Superficial Hydraulic Loading `v` (`m/h` -> **Empty-Bed Contact Time `EBCT = (Z / v) * 60`** min), **G.S. Bohart & E.Q. Adams (`1920`) and Roy A. Hutchins (`1973`)** formulated the linear **Bed-Depth-Service-Time (`BDST`) Equation `t_b = (((N_0 * 1,000) * Z) / (C_0 * v)) - (1 / (k_a * C_0)) * ln((C_0 / C_b) - 1)`** (`hours`)! Setting `t_b = 0` isolates **Critical Minimum Bed Depth `Z_0 = (v / (k_a * N_0 * 1,000)) * ln((C_0 / C_b) - 1)`** (`m`)—the bare thickness needed just to prevent instantaneous `t = 0` bleed-through!

Verify on a Municipal VOC `GAC` Lead Contactor—Dynamic_Capacity `N_0` = 42.0 g/L (B2), Carbon_Bed_Depth `Z` = 1.80 m (B3), Influent_Solute `C_0` = 18.5 mg/L (B4), Breakthrough_Limit `C_b` = 0.90 mg/L (B5), Linear_Loading_Velocity `v` = 7.50 m/h (B6), and Rate_Constant `k_a` = 0.016 L/(mg·h) (B7): Empty-Bed Contact Time `EBCT` equals `14.4` min (E2), Critical Mass-Transfer Depth `Z_0` equals `0.033` m (E3), Stoichiometric Zero-MTZ Time equals `544.9` h (E4), and Actual BDST Breakthrough Service Time equals **`534.8` hours** (`22.3` days before lead-lag carbon swap! E5)!

Bohart-Adams / Hutchins BDST GAC KPI (N0=42 g/L, Cb=0.90 mg/L)FormulaVerified Output
Empty-Bed Contact Time EBCT (min)(Carbon_Depth_Z_m / Velocity_v_m_hr) * 6014.4 min (1.9 min shallow fast bed!)
Critical Minimum Depth Z0 (m)(v / (ka * N0 * 1000)) * LN((C0 / Cb) - 1)0.033 m (0.165 m @ slow kinetics)
Stoichiometric Max Time (h)((N0_g_L * 1000) * Z_m) / (C0_mg_L * v_m_hr)544.9 h (28.1 h solvent spike)
BDST Service Time to Cb (h)Stoich_Time_hr - (1 / (ka * C0)) * LN((C0/Cb) - 1)534.8 h (17.8 h early breakthrough!)

Bohart-Adams (1920) & Hutchins (1973) Linear BDST Carbon Column Formula

Validate `Dynamic_Capacity N_0` in `[1, 350]` g/L, `Bed_Depth Z` in `[0.2, 12.0]` m, `Influent C_0` in `[0.5, 1,000]` mg/L, `Breakthrough C_b` in `(0, 0.50 * C_0)`, `Superficial_Velocity v` in `[0.5, 40.0]` m/h, and `Rate_Constant k_a` in `[0.0005, 2.0]` L/(mg·h)!

=LET(nz_g, B2, zb_m, B3, cz_m, B4, cb_m, B5, vs_h, B6, ka_r, B7, ln_t, LN((cz_m / cb_m) - 1), ts_h, ((nz_g * 1000) * zb_m) / (cz_m * vs_h), IF(OR(nz_g < 1, nz_g > 350, zb_m < 0.2, zb_m > 12, cz_m < 0.5, cz_m > 1000, cb_m <= 0, cb_m >= 0.5 * cz_m, vs_h < 0.5, vs_h > 40, ka_r < 0.0005, ka_r > 2), "Invalid BDST Input", ROUND(ts_h - (1 / (ka_r * cz_m)) * ln_t, 1)))

Shallow Cartridge (`Z = 0.45` m, `v = 14` m/h) + Spill Surge (`C_0 = 48` mg/L, `k_a = 0.008`) Check

Route a bulky, slower-diffusing industrial spill (`B4 = 48.0` mg/L, `B7 = 0.008` L/mg·h) at `B6 = 14.0` m/h through a shallow `B3 = 0.45` m skid canister: `EBCT` E2 plunges to **`1.9` min**, Critical Depth `Z_0` E3 expands `5x` to **`0.165` m** (`37%` of the entire canister!), and Breakthrough Time E5 collapses **`30-fold` to just `17.8` hours**!

=IF(ISTEXT(E5), E5, ROUND((B6 / (B7 * (B2 * 1000))) * LN((B4 / B5) - 1), 3))

Try the example

Use the original values or change them to test your understanding.

Further reading