Fluid flow in the vadose zone is governed by Richards equation; it is
parameterized by hydraulic conductivity, which is a nonlinear function of
pressure head. Investigations in the vadose zone typically require
characterizing distributed hydraulic properties. Saturation or pressure head
data may include direct measurements made from boreholes. Increasingly, proxy
measurements from hydrogeophysics are being used to supply more spatially and
temporally dense data sets. Inferring hydraulic parameters from such datasets
requires the ability to efficiently solve and deterministically optimize the
nonlinear time domain Richards equation. This is particularly important as the
number of parameters to be estimated in a vadose zone inversion continues to
grow. In this paper, we describe an efficient technique to invert for
distributed hydraulic properties in 1D, 2D, and 3D. Our algorithm does not
store the Jacobian, but rather computes the product with a vector, which allows
the size of the inversion problem to become much larger than methods such as
finite difference or automatic differentiation; which are constrained by
computation and memory, respectively. We show our algorithm in practice for a
3D inversion of saturated hydraulic conductivity using saturation data through
time. The code to run our examples is open source and the algorithm presented
allows this inversion process to run on modest computational resources