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

%*****************************************************************************80
%
%% all_lukas() evaluates the variables of the lukas flow.
%
%  Discussion:
%
%    The flow has been modified by a sign change that makes it slightly
%    more plausible.
%
%  Licensing:
%
%    This code is distributed under the MIT license.
%
%  Modified:
%
%    20 September 2025
%
%  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.
%
  x = reshape ( x, [], 1 );
  y = reshape ( y, [], 1 );

  u = - cos ( pi * x ) / pi;
  dudt = zeros ( n, 1 );
  dudx = sin ( pi * x );
  dudxx = pi * cos ( pi * x );
  dudy = zeros ( n, 1 );
  dudyy = zeros ( n, 1 );

  v = - y .* sin ( pi * x );
  dvdt = zeros ( n, 1 );
  dvdx = - pi * y .* cos ( pi * x );
  dvdxx = + pi * pi * y .* sin ( pi * x );
  dvdy = - sin ( pi * x );
  dvdyy = zeros ( n, 1 );

  p = zeros ( n, 1 );
  dpdt = zeros ( n, 1 );
  dpdx = zeros ( n, 1 );
  dpdxx = zeros ( n, 1 );
  dpdy = zeros ( n, 1 );
  dpdyy = zeros ( n, 1 );
%
%  Evaluate the residuals.
%
  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
