function element_node = grid_ql_element ( nelemx, nelemy )

%*****************************************************************************80
%
%% grid_ql_element() produces a grid of 6 node quadratics/linears.
%
%  Example:
%
%    Input:
%
%      NELEMX = 3, NELEMY = 2
%
%    Output:
%
%      ELEMENT_NODE =
%         1,  2,  3,  8,  9, 10;
%         3,  4,  5, 10, 11, 12;
%         5,  6,  7, 12, 13, 14;
%         8,  9, 10, 15, 16, 17;
%        10, 11, 12, 17, 18, 19;
%        12, 13, 14, 19, 20, 21.
%
%  Grid:
%
%   15---16---17---18---19---20---21
%    |         |         |         |
%    |         |         |         |
%    |    4    |    5    |    6    |
%    |         |         |         |
%    |         |         |         |
%    8----9---10---11---12---13---14
%    |         |         |         |
%    |         |         |         |
%    |    1    |    2    |    3    |
%    |         |         |         |
%    |         |         |         |
%    1----2----3----4----5----6----7
%
%  Licensing:
%
%    This code is distributed under the MIT license.
%
%  Modified:
%
%    14 April 2005
%
%  Author:
%
%    John Burkardt
%
%  Input:
%
%    integer NELEMX, NELEMY, the number of elements along the
%    X and Y directions.  The number of elements generated will be
%    NELEMX * NELEMY.  X will the the "quadratic direction", and
%    Y will be the "linear direction".
%
%  Output:
%
%    integer ELEMENT_NODE(6,NELEMX*NELEMY), the nodes that form
%    each element.
%
  element = 0;

  for j = 1 : nelemy
    for i = 1 : nelemx

      base = ( j - 1 )  * ( 2 * nelemx + 1 ) + 2 * i - 1;

      element = element + 1;

      element_node(1,element) = base;
      element_node(2,element) = base + 1;
      element_node(3,element) = base + 2;
      element_node(4,element) = base + ( 2 * nelemx + 1 );
      element_node(5,element) = base + ( 2 * nelemx + 1 ) + 1;
      element_node(6,element) = base + ( 2 * nelemx + 1 ) + 2;

    end
  end

  return
end
