l2knts Subroutine

subroutine l2knts(break, l, k, t, n)

************80

! L2KNTS converts breakpoints to knots.

Discussion:

The breakpoint sequence BREAK is converted into a corresponding
knot sequence T to allow the representation of a piecewise
polynomial function of order K with K-2 continuous derivatives
as a spline of order K with knot sequence T.

This means that T(1:N+K) = BREAK(1) K times, then BREAK(2:L),
then BREAK(L+1) K times.

Therefore, N = K - 1 + L.

Modified:

14 February 2007

Author:

Carl DeBoor

Reference:

Carl DeBoor,
A Practical Guide to Splines,
Springer, 2001,
ISBN: 0387953663,
LC: QA1.A647.v27.

Parameters:

Input, integer ( kind = 4 ) K, the order.

Input, integer ( kind = 4 ) L, the number of polynomial pieces.

Input, real ( kind = 8 ) BREAK(L+1), the breakpoint sequence.

Output, real ( kind = 8 ) T(N+K), the knot sequence.

Output, integer ( kind = 4 ) N, the dimension of the corresponding spline
space of order K.

Arguments

Type IntentOptional Attributes Name
real(kind=8) :: break(l+1)
integer(kind=4) :: l
integer(kind=4) :: k
real(kind=8) :: t(k-1+l+k)
integer(kind=4) :: n

Source Code

subroutine l2knts ( break, l, k, t, n )

  !*****************************************************************************80
  !
  !! L2KNTS converts breakpoints to knots.
  !
  !  Discussion:
  !
  !    The breakpoint sequence BREAK is converted into a corresponding 
  !    knot sequence T to allow the representation of a piecewise
  !    polynomial function of order K with K-2 continuous derivatives 
  !    as a spline of order K with knot sequence T. 
  !
  !    This means that T(1:N+K) = BREAK(1) K times, then BREAK(2:L), 
  !    then BREAK(L+1) K times.  
  !
  !    Therefore, N = K - 1 + L.
  !
  !  Modified:
  !
  !    14 February 2007
  !
  !  Author:
  !
  !    Carl DeBoor
  !
  !  Reference:
  !
  !    Carl DeBoor,
  !    A Practical Guide to Splines,
  !    Springer, 2001,
  !    ISBN: 0387953663,
  !    LC: QA1.A647.v27.
  !
  !  Parameters:
  !
  !    Input, integer ( kind = 4 ) K, the order.
  !
  !    Input, integer ( kind = 4 ) L, the number of polynomial pieces.
  !
  !    Input, real ( kind = 8 ) BREAK(L+1), the breakpoint sequence.
  !
  !    Output, real ( kind = 8 ) T(N+K), the knot sequence.
  !
  !    Output, integer ( kind = 4 ) N, the dimension of the corresponding spline 
  !    space of order K.
  !
  implicit none

  integer ( kind = 4 ) k
  integer ( kind = 4 ) l
  integer ( kind = 4 ) n

  real ( kind = 8 ) break(l+1)
  real ( kind = 8 ) t(k-1+l+k)

  n = k - 1 + l

  t(1:k-1) = break(1)
  t(k:n) = break(1:l) 
  t(n+1:n+k) = break(l+1)

  return
end subroutine l2knts