pure subroutine drain_update_tracer_y_budget(nx, ny, nz, iareaT, F, w, hTr, budget_adv)
!! Meridional analogue of `drain_update_tracer_x_budget`.
integer, intent(in) :: nx, ny, nz
real(wp), intent(in) :: iareaT(nx, ny)
real(wp), intent(in) :: F(nx, ny + 1, nz)
real(wp), intent(in) :: w
real(wp), intent(inout) :: hTr(nx, ny, nz)
real(wp), intent(inout) :: budget_adv(nx, ny, nz)
integer :: i, j, k
do concurrent(k=1:nz, j=1:ny, i=1:nx)
hTr(i, j, k) = hTr(i, j, k) - (F(i, j + 1, k) - F(i, j, k))*iareaT(i, j)
budget_adv(i, j, k) = budget_adv(i, j, k) &
- w*(F(i, j + 1, k) - F(i, j, k))*iareaT(i, j)
end do
end subroutine drain_update_tracer_y_budget