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

%*****************************************************************************80
%
%% all_exptrig() evaluates the variables of the exptrig flow.
%
%  Discussion:
%
%    The exptrig flow is time dependent, trigonometric in space, exponential 
%    growth in time, zero velocity boundary conditions on unit square; at t=1, 
%    this flow forms a spiral.  At later times, the exponential growth seems 
%    to make the solution physically absurd and computationally intractable.
%
%  Licensing:
%
%    This code is distributed under the MIT license.
%
%  Modified:
%
%    26 August 2020
%
%  Author:
%
%    John Burkardt
%
%  Reference:
%
%    Xiaoli Li, Jie Shen,
%    Error analysis of the SAC-MAC scheme for the Navier-Stokes equations,
%    arXiv:1909.05131v1 [math.NA] 8 Sep 2019
%
%  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 =                    exp ( t ) .* ( sin (       pi * x ) ).^2  .* sin ( 2.0 * pi * y );
  dudt =                 exp ( t ) .* ( sin (       pi * x ) ).^2  .* sin ( 2.0 * pi * y );
  dudx =          pi   * exp ( t ) .*   sin ( 2.0 * pi * x )       .* sin ( 2.0 * pi * y );
  dudxx =   2.0 * pi^2 * exp ( t ) .*   cos ( 2.0 * pi * x )       .* sin ( 2.0 * pi * y );
  dudy =    2.0 * pi   * exp ( t ) .* ( sin (       pi * x ) ).^2  .* cos ( 2.0 * pi * y );
  dudyy = - 4.0 * pi^2 * exp ( t ) .* ( sin (       pi * x ) ).^2  .* sin ( 2.0 * pi * y );

  v =                  - exp ( t ) .* sin ( 2.0 * pi * x ) .* ( sin (       pi * y ) ).^2;
  dvdt =               - exp ( t ) .* sin ( 2.0 * pi * x ) .* ( sin (       pi * y ) ).^2;
  dvdx =  - 2.0 * pi   * exp ( t ) .* cos ( 2.0 * pi * x ) .* ( sin (       pi * y ) ).^2;
  dvdxx =   4.0 * pi^2 * exp ( t ) .* sin ( 2.0 * pi * x ) .* ( sin (       pi * y ) ).^2;
  dvdy =        - pi   * exp ( t ) .* sin ( 2.0 * pi * x ) .*   sin ( 2.0 * pi * y );
  dvdyy = - 2.0 * pi^2 * exp ( t ) .* sin ( 2.0 * pi * x ) .*   cos ( 2.0 * pi * y );

  p =              rho * exp ( t ) .* ( sin ( pi * y ) - 2.0 / pi );
  dpdt =           rho * exp ( t ) .* ( sin ( pi * y ) - 2.0 / pi );
  dpdx =           zeros ( size ( x ) );
  dpdxx =          zeros ( size ( x ) );
  dpdy =    pi   * rho * exp ( t ) .*   cos ( pi * y );
  dpdyy = - pi^2 * rho * exp ( t ) .*   sin ( pi * 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
