\chapter{Deposition and interception}\label{ch:deposition}
\section{Surface targets}
\subsection*{Physics}
Dry deposition is the product of time-integrated air concentration and an
effective deposition velocity specific to the receiving surface
\cite{mueller1993}. Atmospheric transport is external to the model; the
event input specifies the integrated local exposure during cloud passage.

Plant deposition velocities are scaled by leaf-area index at the event date.
Non-plant targets use unscaled velocities. For iodine, the supplied fractions
of particulate, elemental and organic forms weight their respective
velocities; other elements use the particulate velocity.

Wet ground deposition is supplied independently of rainfall depth. Vegetation
intercepts a fraction determined by leaf-area index, water-film capacity and
rainfall, whereas the ground target receives the full wet input. Dry and
intercepted wet activities are added for each target (\cref{eq:dep,eq:wet}).
The pasture source supplies the root-zone calculation; the ground-plus-turf
source supplies external irradiation (\cref{eq:grounds}). These prescribed
pathway sources do not constitute a conserved partition of deposition.
\subsection*{Equations}
For target $i$, with $C_a$ in \si{\becquerel\second\per\cubic\metre},
$v_i$ in \si{\metre\per\second}, $A_w$ in
\si{\becquerel\per\square\metre}, and dimensionless $f_i$,
\begin{equation}\label{eq:dep}A_{d,i}=C_av_i,\quad A_{w,i}=A_w f_i,\quad A_i=A_{d,i}+A_{w,i}.
\end{equation}
For plant targets, $v_i=(L_i/L_{i,\max})\sum_{h}p_hv_{i,h}$
for iodine ($\sum_h p_h=1$), or $v_i=(L_i/L_{i,\max})v_{i,\mathrm{particle}}$
otherwise. Here $h$ indexes the particulate, elemental and organic iodine
forms, and $p_h$ is the dimensionless fraction in form $h$. For non-plant
targets the LAI factor is one. $L_i$ is dimensionless. For rainfall $R$ and
water film $S_i$, both in \si{\milli\metre}, the implemented interception is
\begin{equation}\label{eq:wet}
f_i=\operatorname{clip}_{[0,1]}\left[
\frac{L_i S_i}{R}\left(1-e^{-(\ln2)R/(3S_i)}\right)\right]
\quad(RS_i>0).
\end{equation}
It is zero if $R=0$ or $S_i=0$, and is overridden to one for non-plant
ground targets. The respective sources are
\begin{equation}\label{eq:grounds}A_{\rm past}=A_{\rm ground}+A_{d,\rm intensive\ grass},\qquad
A_{\rm shine}=A_{\rm ground}+A_{d,\rm turf}.
\end{equation}
The wet input enters each source through $A_{\rm ground}$, not through an
extra wet-grass term. The two dry additions can differ because intensive
grass and turf have different seasonal deposition parameters.
\subsection*{Parameters}
\begin{center}\footnotesize\begin{tabular}{@{}p{.10\linewidth}@{\hspace{3pt}}p{.14\linewidth}@{\hspace{3pt}}p{.35\linewidth}@{\hspace{3pt}}p{.35\linewidth}@{}}\toprule Symbol & Unit & SQLite table.column & Compiled field\\\midrule
$v_{i,h}$ & \si{\metre\per\second} & deposition\_velocity.m\_s & deposition\_velocities\_m\_s\\
$S_i$ & \si{\milli\metre} & water\_film.thickness\_mm & water\_films\_mm\\
$L_i,L_{i,\max}$ & 1 & plant\_lai.value; plant.max\_lai & lai\_values; max\_lai\\\bottomrule\end{tabular}\end{center}
These are loaded in \coderef{ecosys/data/loader.py}{345}{367} and
\coderef{ecosys/data/loader.py}{408}{477}, then compiled by
\coderef{ecosys/data/compile.py}{244}{475}.
\subsection*{Implementation}
\coderef{ecosys/kernels/deposition.py}{42}{61} interpolates LAI;
\coderef{ecosys/kernels/deposition.py}{64}{114} weights velocities;
\coderef{ecosys/kernels/deposition.py}{117}{146} evaluates \cref{eq:wet};
\coderef{ecosys/kernels/deposition.py}{149}{199} constructs \cref{eq:dep}.
The engine evaluates one date with batch+target axes and separately selects
the two sources in \coderef{ecosys/engine.py}{689}{711}.
\subsection*{Numerical treatment}
LAI is linearly interpolated on the 365-day seasonal curve; the zero-rain
branch avoids division by zero. \codefn{expm1} stabilises small exponents.
For Kr/Xe the engine bypasses terrestrial deposition with zero arrays
(\coderef{ecosys/engine.py}{581}{627}).
\relation{Deposition and interception follow Eqs.~(1)--(6) of
\cite{mueller1993}. Historical source mappings and the distinction between
pasture and ground-irradiation sources are documented in
Appendix~\ref{sec:history-deposition}.}
\evidence{\codefn{tests/kernels/test_deposition.py::test_equivalent_air_units_and_validity_mask},
\codefn{tests/kernels/test_wet_interception.py}, and
\codefn{tests/integration/test_event_deposition.py} check deposition;
\codefn{tests/integration/test_event_exposure.py} checks the shine route.}
