TimML is a Python package for the modeling of steady-state multi-layer groundwater flow with analytic elements.

TimML may be applied to an arbitrary number of layers and an arbitrary sequence of aquifers and leaky layers. The head, flow, and leakage between aquifer layers may be computed analytically at any point in the aquifer system. The Dupuit approximation is applied to flow in aquifer layers (i.e., the resistance to flow in the vertical direction is neglected), while flow in leaky layers is approximated as vertical.


Tutorials for getting started with TimML.

How-to guides

How-to guides for more advanced modeling with TimML.


TimML basic concepts explained.


TimML example notebooks.

Code reference

TimML code reference.

Quick Example#

In this example a well is modelled near a river in a single aquifer.

# import python packages
import numpy as np
import timml

# create model
ml = timml.ModelMaq(kaq=10, z=[20, 0]) # single layer model

# add a river with a fixed water level
yls = np.arange(-100, 101, 20) # 20 points, so 19 segments
xls = 50 * np.ones_like(yls)
river = timml.HeadLineSinkString(ml, xy=list(zip(xls, yls)), hls=0.0)

# add a well
well = timml.Well(ml, 0, 0, rw=0.3, Qw=1000)

# solve model

# plot head contours
ml.contour(win=[-30, 55, -30, 30], ngr=40, labels=True, decimals=1)