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

%*****************************************************************************80
%
%% all_poiseuille() evaluates the variables of the poiseuille flow.
%
%  Licensing:
%
%    This code is distributed under the MIT license.
%
%  Modified:
%
%    21 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.  Note that DPDXX and DPDYY are returned as
%    zero because life is short.
%
  x = reshape ( x, [], 1 );
  y = reshape ( y, [], 1 );

  u(1:n) = 1.0 - y(1:n) .^ 2;
  dudt(1:n) = 0.0;
  dudx(1:n) = 0.0;
  dudxx(1:n) = 0.0;
  dudy(1:n) = - 2.0 * y(1:n);
  dudyy(1:n) = -2.0;

  v(1:n) = 0.0;
  dvdt(1:n) = 0.0;
  dvdx(1:n) = 0.0;
  dvdxx(1:n) = 0.0;
  dvdy(1:n) = 0.0;
  dvdyy(1:n) = 0.0;

  p(1:n) = - 2.0 * rho * nu * x(1:n);
  dpdt(1:n) = 0.0;
  dpdx(1:n) = - 2.0 * rho * nu;
  dpdxx(1:n) = 0.0;
  dpdy(1:n) = 0.0;
  dpdyy(1:n) = 0.0;

  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
