function [ ...
  u, dudt, dudx, dudxx, dudy, dudyy, us, ...
  v, dvdt, dvdx, dvdxx, dvdy, dvdyy, vs, ...
  p, dpdt, dpdx, dpdxx, dpdy, dpdyy, ps ] = all_spiral ( nu, rho, n, x, y, t )

%*****************************************************************************80
%
%% all_spiral evaluates the variables of the spiral flow.
%
%  Licensing:
%
%    This code is distributed under the MIT license.
%
%  Modified:
%
%    26 August 2020
%
%  Author:
%
%    John Burkardt
%
%  Input:
%
%    real NU, the kinematic viscosity.
%
%    real RHO, the fluid density.
%
%    integer N, the number of nodes.
%
%    real X(N), Y(N), the coordinates of nodes.
%
%    real T, the current time.
%
%  Output:
%
%    real U(N), DUDT(N), DUDX(N), DUDXX(N), DUDY(N), DUDYY(N), US(N),
%    the horizontal velocity values.
%
%    real V(N), DVDT(N), DVDX(N), DVDXX(N), DVDY(N), DVDYY(N), VS(N),
%    the vertical velocity values.
%
%    real P(N), DPDT(N), DPDX(N), DPDXX(N), DPDY(N), DPDYY(N), PS(N),
%    the pressure values.
%
  u =       2.0 * ( 1.0 + nu * t ) * (        x.^4 -  2.0 * x.^3 +       x.^2 ) .* (  2.0 * y.^3 - 3.0 * y.^2 + y   );
  dudt =    2.0 *         nu       * (        x.^4 -  2.0 * x.^3 +       x.^2 ) .* (  2.0 * y.^3 - 3.0 * y.^2 + y   );
  dudx =    2.0 * ( 1.0 + nu * t ) * (  4.0 * x.^3 -  6.0 * x.^2 + 2.0 * x    ) .* (  2.0 * y.^3 - 3.0 * y.^2 + y   );
  dudxx =   2.0 * ( 1.0 + nu * t ) * ( 12.0 * x.^2 - 12.0 * x    + 2.0        ) .* (  2.0 * y.^3 - 3.0 * y.^2 + y   );
  dudy =    2.0 * ( 1.0 + nu * t ) * (        x.^4 -  2.0 * x.^3 +       x.^2 ) .* (  6.0 * y.^2 - 6.0 * y    + 1.0 );
  dudyy =   2.0 * ( 1.0 + nu * t ) * (        x.^4 -  2.0 * x.^3 +       x.^2 ) .* ( 12.0 * y    - 6.0              );

  v =     - 2.0 * ( 1.0 + nu * t ) * (   2.0 * x.^3 - 3.0 * x.^2 + x   ) .* (        y.^4 -  2.0 * y.^3 +       y.^2 );
  dvdt =  - 2.0 *         nu       * (   2.0 * x.^3 - 3.0 * x.^2 + x   ) .* (        y.^4 -  2.0 * y.^3 +       y.^2 );
  dvdx =  - 2.0 * ( 1.0 + nu * t ) * (   6.0 * x.^2 - 6.0 * x    + 1.0 ) .* (        y.^4 -  2.0 * y.^3 +       y.^2 );
  dvdxx = - 2.0 * ( 1.0 + nu * t ) * (  12.0 * x    - 6.0              ) .* (        y.^4 -  2.0 * y.^3 +       y.^2 );
  dvdy =  - 2.0 * ( 1.0 + nu * t ) * (   2.0 * x.^3 - 3.0 * x.^2 + x   ) .* (  4.0 * y.^3 -  6.0 * y.^2 + 2.0 * y    );
  dvdyy = - 2.0 * ( 1.0 + nu * t ) * (   2.0 * x.^3 - 3.0 * x.^2 + x   ) .* ( 12.0 * y.^2 - 12.0 * y    + 2.0        );

  p = rho * y;
  dpdt =  zeros ( size ( x ) );
  dpdx =  zeros ( size ( x ) );
  dpdxx = zeros ( size ( x ) );
  dpdy =  rho;
  dpdyy = zeros ( size ( x ) );

  us = dudt + u .* dudx + v .* dudy + dpdx / rho - nu * ( dudxx + dudyy );
  vs = dvdt + u .* dvdx + v .* dvdy + dpdy / rho - nu * ( dvdxx + dvdyy );
  ps = dudx + dvdy;

  return
end
