code: def advection(scalar, wind, deltas):
      r
      # This allows passing in a list of wind components or an array.
      wind = _stack(wind)
  
      # If we have more than one component, we need to reverse the order along the first
      # dimension so that the wind components line up with the
      # order of the gradients from the ..., y, x ordered array.
      if wind.ndim > scalar.ndim:
          wind = wind[::-1]
  
      # Gradient returns a list of derivatives along each dimension. We convert
      # this to an array with dimension as the first index. Reverse the deltas to line up
      # with the order of the dimensions.
      grad = _stack(gradient(scalar, deltas=deltas[::-1]))
  
      # Make them be at least 2D (handling the 1D case) so that we can do the
      # multiply and sum below
      grad, wind = atleast_2d(grad, wind)
  
      return (-grad * wind).sum(axis=0)
docs: r"""Calculate the advection of a scalar field by the wind.
  
      The order of the dimensions of the arrays must match the order in which
      the wind components are given.  For example, if the winds are given [u, v],
      then the scalar and wind arrays must be indexed as x,y (which puts x as the
      rows, not columns).
  
      Parameters
      ----------
      scalar : N-dimensional array
          Array (with N-dimensions) with the quantity to be advected.
      wind : sequence of arrays
          Length M sequence of N-dimensional arrays.  Represents the flow,
          with a component of the wind in each dimension.  For example, for
          horizontal advection, this could be a list: [u, v], where u and v
          are each a 2-dimensional array.
      deltas : sequence of float or ndarray
          A (length M) sequence containing the grid spacing(s) in each dimension. If using
          arrays, in each array there should be one item less than the size of `scalar` along the
          applicable axis.
  
      Returns
      -------
      N-dimensional array
          An N-dimensional array containing the advection at all grid points.