function order = level_to_order_closed ( dim_num, level ) %*****************************************************************************80 % %% LEVEL_TO_ORDER_CLOSED converts a level to an order for closed rules. % % Discussion: % % Sparse grids can naturally be nested. A natural scheme is to use % a series of one-dimensional rules arranged in a series of "levels" % whose order roughly doubles with each step. % % The arrangement described here works naturally for the Clenshaw Curtis % and Newton Cotes closed rules. % % The following table shows how the growth will occur: % % Level Order % % 0 1 % 1 3 = 2 + 1 % 2 5 = 4 + 1 % 3 9 = 8 + 1 % 4 17 = 16 + 1 % 5 33 = 32 + 1 % % For the Clenshaw Curtis and Newton Cotes Closed rules, the point growth % is nested. If we have ORDER points on a particular LEVEL, the next % level includes all these old points, plus ORDER-1 new points, formed % in the gaps between successive pairs of old points. % % Level Order = New + Old % % 0 1 = 1 + 0 % 1 3 = 2 + 1 % 2 5 = 2 + 3 % 3 9 = 4 + 5 % 4 17 = 8 + 9 % 5 33 = 16 + 17 % % In this routine, we assume that a vector of levels is given, % and the corresponding orders are desired. % % Licensing: % % This code is distributed under the GNU LGPL license. % % Modified: % % 11 November 2007 % % Author: % % John Burkardt % % Parameters: % % Input, integer DIM_NUM, the spatial dimension. % % Input, integer LEVEL(DIM_NUM), the nesting level. % % Output, integer ORDER(DIM_NUM), the order (number of points) of the rule. % for dim = 1 : dim_num if ( level(dim) < 0 ) order(dim) = -1; elseif ( level(dim) == 0 ) order(dim) = 1; else order(dim) = ( 2^level(dim) ) + 1; end end