In numerical analysis of partial differential equations, MPDATA is a family of iterative finite-difference/finite-volume methods for numerical integration of hyperbolic differential equations modelling conservation laws of the form:
where ψ ( x , t ) {\displaystyle \psi ({\mathbf {x}},t)} is an advected scalar field (or advectee); v = G x ˙ {\displaystyle {\mathbf {v}}=G{\dot {\mathbf {x}}}} is the flow velocity vector field (or advector), G ( x ) {\displaystyle G({\mathbf {x}})} may either play the role of the fluid density, the Jacobian of coordinate transformation from Cartesian to curvilinear framework x {\displaystyle {\mathbf {x}}} , or their product; R ( x ) {\displaystyle R({\mathbf {x}})} combines all source terms. MPDATA stands for Multidimensional Positive Definite Advection Transport Algorithm. The algorithm was formulated by Piotr K. Smolarkiewicz (and is also referred to as Smolarkiewicz's method) at the US National Center for Atmospheric Research - NCAR (at the time, Smolarkiewicz was a fellow of the NCAR Advanced Study Program and a recent graduate from Krzysztof Haman's group at the University of Warsaw; the seminal 1983 and 1984 MPDATA publications mention both institutions). The crux of the method lies in iterative application of the upwind scheme. The first iteration employs the advective velocity v {\displaystyle {\mathbf {v}}} , while each subsequent iteration employs a so-called antidiffusive velocity which corrects solution from prior iteration reducing the numerical diffusion. The antidiffusive velocities can be derived through modified equation analysis of the upwind scheme and feature cross-dimensional dependencies (i.e., applying MPDATA in multiple dimensions is not equivalent to application of one-dimensional MPDATA in all dimensions), the scheme is thus not dimensionally split, hence "M" in the algorithm name. Since each iteration of the scheme constitutes a forward-in-time upwind pass, the scheme inherits characteristics of the upwind scheme: CFL stability criterion, conservativeness, embarrassingly parallel domain decomposition, and sign-preservation. For non-negative fields ψ {\displaystyle \psi } , sign-preservation translates to positive definiteness, hence the "PD" in the algorithm name. Application of the corrective iterations improves scheme convergence rate compared with first-order upwind. Depending on the MPDATA variant, convergence of up to third-order in time and space can be achieved. While the original formulation of MPDATA employed structured grids, the algorithm has been subsequently also formulated for unstructured grids. Despite being formulated for and named in reference to advection problems, as any other advection numerical scheme, MPDATA also applies to solutions of advection-diffusion as well as diffusion-only problems if Fickian diffusive terms are expressed as advective fluxes (approach referred to as the pseudo-velocity technique).
Description of the basic scheme in 1D MPDATA is inherently multi-dimensional, and primarily used in computational fluid dynamics where the advective volocities and problem geometries are variable in time. Still, the key idea underlying the MPDATA approach can be conveyed with a basic example of solenoidal stationary flow in one dimension (i.e., v = [ u ] {\displaystyle {\mathbf {v}}=[u]} constant in time and space), without coordinate transformation ( G = 1 {\displaystyle G=1} ), for the case of homogeneous advection ( R = 0 {\displaystyle R=0} ) of a nonnegative scalar field ( ψ ≥ 0 {\displaystyle \psi \geq 0} ), with the following flux form of the advection equation:
Upwind discretisation of the problem on a regular staggered grid with a time step Δ t {\displaystyle \Delta t} and a grid step Δ x {\displaystyle \Delta x} , with n = t / Δ t {\displaystyle n=t/\Delta t} , i = x / Δ x {\displaystyle i=x/\Delta x} , and the half-integer spatial indices corresponding to grid-cell walls:
can be formulated with:
with the flux function defined using positive and negative parts of u i ± 1 / 2 {\displaystyle u_{i\pm 1/2}} as:
Introducing the non-dimensional Courant number C = u Δ t / Δ x {\displaystyle C=u{\Delta t}/{\Delta x}} , the resultant explicit-in-time scheme (referred to as "upwind", "upstream" or "donor-cell"), for a constant C {\displaystyle C} reads:
… excerpt ends here. Continue reading the full article.


