check_coefficients Subroutine

private pure subroutine check_coefficients(n, k, t, iflag)

Check the knots and coefficients for one direction in the initialize_from_coefficients methods.

Arguments

Type IntentOptional Attributes Name
integer(kind=ip), intent(in) :: n

number of b-spline coefficients

integer(kind=ip), intent(in) :: k

order of the b-spline

real(kind=wp), intent(in), dimension(:) :: t

knot vector

integer(kind=ip), intent(out) :: iflag

status flag (0 if everything is OK)


Called by

proc~~check_coefficients~~CalledByGraph proc~check_coefficients check_coefficients proc~initialize_from_coefficients_1d bspline_1d%initialize_from_coefficients_1d proc~initialize_from_coefficients_1d->proc~check_coefficients proc~initialize_from_coefficients_2d bspline_2d%initialize_from_coefficients_2d proc~initialize_from_coefficients_2d->proc~check_coefficients proc~initialize_from_coefficients_3d bspline_3d%initialize_from_coefficients_3d proc~initialize_from_coefficients_3d->proc~check_coefficients proc~initialize_from_coefficients_4d bspline_4d%initialize_from_coefficients_4d proc~initialize_from_coefficients_4d->proc~check_coefficients proc~initialize_from_coefficients_5d bspline_5d%initialize_from_coefficients_5d proc~initialize_from_coefficients_5d->proc~check_coefficients proc~initialize_from_coefficients_6d bspline_6d%initialize_from_coefficients_6d proc~initialize_from_coefficients_6d->proc~check_coefficients none~initialize_from_coefficients bspline_1d%initialize_from_coefficients none~initialize_from_coefficients->proc~initialize_from_coefficients_1d proc~initialize_from_coefficients_1d_multi bspline_1d%initialize_from_coefficients_1d_multi none~initialize_from_coefficients->proc~initialize_from_coefficients_1d_multi none~initialize_from_coefficients~2 bspline_2d%initialize_from_coefficients none~initialize_from_coefficients~2->proc~initialize_from_coefficients_2d proc~initialize_from_coefficients_2d_multi bspline_2d%initialize_from_coefficients_2d_multi none~initialize_from_coefficients~2->proc~initialize_from_coefficients_2d_multi none~initialize_from_coefficients~3 bspline_3d%initialize_from_coefficients none~initialize_from_coefficients~3->proc~initialize_from_coefficients_3d proc~initialize_from_coefficients_3d_multi bspline_3d%initialize_from_coefficients_3d_multi none~initialize_from_coefficients~3->proc~initialize_from_coefficients_3d_multi none~initialize_from_coefficients~4 bspline_4d%initialize_from_coefficients none~initialize_from_coefficients~4->proc~initialize_from_coefficients_4d proc~initialize_from_coefficients_4d_multi bspline_4d%initialize_from_coefficients_4d_multi none~initialize_from_coefficients~4->proc~initialize_from_coefficients_4d_multi none~initialize_from_coefficients~5 bspline_5d%initialize_from_coefficients none~initialize_from_coefficients~5->proc~initialize_from_coefficients_5d proc~initialize_from_coefficients_5d_multi bspline_5d%initialize_from_coefficients_5d_multi none~initialize_from_coefficients~5->proc~initialize_from_coefficients_5d_multi none~initialize_from_coefficients~6 bspline_6d%initialize_from_coefficients none~initialize_from_coefficients~6->proc~initialize_from_coefficients_6d proc~initialize_from_coefficients_6d_multi bspline_6d%initialize_from_coefficients_6d_multi none~initialize_from_coefficients~6->proc~initialize_from_coefficients_6d_multi proc~initialize_from_coefficients_1d_multi->none~initialize_from_coefficients proc~initialize_from_coefficients_2d_multi->none~initialize_from_coefficients~2 proc~initialize_from_coefficients_3d_multi->none~initialize_from_coefficients~3 proc~initialize_from_coefficients_4d_multi->none~initialize_from_coefficients~4 proc~initialize_from_coefficients_5d_multi->none~initialize_from_coefficients~5 proc~initialize_from_coefficients_6d_multi->none~initialize_from_coefficients~6

Source Code

    pure subroutine check_coefficients(n,k,t,iflag)

    implicit none

    integer(ip),intent(in)           :: n      !! number of b-spline coefficients
    integer(ip),intent(in)           :: k      !! order of the b-spline
    real(wp),dimension(:),intent(in) :: t      !! knot vector
    integer(ip),intent(out)          :: iflag  !! status flag (0 if everything is OK)

    integer(ip) :: nt  !! number of knots

    nt = size(t,kind=ip)
    if (k<1_ip) then
        iflag = 5001_ip
    else if (n<k) then
        iflag = 5002_ip
    else if (nt/=n+k) then
        iflag = 5003_ip
    else if (any(t(2_ip:nt)<t(1_ip:nt-1_ip))) then
        iflag = 5004_ip
    else if (t(k)>=t(n+1_ip)) then
        iflag = 5005_ip
    else
        iflag = 0_ip
    end if

    end subroutine check_coefficients