db1sqad Subroutine

public pure subroutine db1sqad(tx, bcoef, nx, kx, x1, x2, f, iflag, w0)

Computes the integral on (x1,x2) of a kx-th order b-spline. Orders kx as high as 20 are permitted by applying a 2, 6, or 10 point gauss formula on subintervals of (x1,x2) which are formed by included (distinct) knots.

See also

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in), dimension(nx+kx) :: tx

knot array

real(kind=wp), intent(in), dimension(nx) :: bcoef

b-spline coefficient array

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

length of coefficient array

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

order of b-spline, 1 <= k <= 20

real(kind=wp), intent(in) :: x1

left point of quadrature interval in t(kx) <= x <= t(nx+1)

real(kind=wp), intent(in) :: x2

right point of quadrature interval in t(kx) <= x <= t(nx+1)

real(kind=wp), intent(out) :: f

integral of the b-spline over (x1,x2)

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

status flag:

  • : no errors
  • : error
real(kind=wp), intent(inout), dimension(3*kx) :: w0

work array for dbsqad


Calls

proc~~db1sqad~~CallsGraph proc~db1sqad bspline_sub_module::db1sqad proc~dbsqad bspline_sub_module::dbsqad proc~db1sqad->proc~dbsqad proc~dbvalu bspline_sub_module::dbvalu proc~dbsqad->proc~dbvalu proc~dintrv bspline_sub_module::dintrv proc~dbsqad->proc~dintrv proc~dbvalu->proc~dintrv proc~get_temp_x_for_extrap bspline_sub_module::get_temp_x_for_extrap proc~dintrv->proc~get_temp_x_for_extrap

Called by

proc~~db1sqad~~CalledByGraph proc~db1sqad bspline_sub_module::db1sqad proc~integral_1d bspline_oo_module::bspline_1d%integral_1d proc~integral_1d->proc~db1sqad

Source Code

    pure subroutine db1sqad(tx,bcoef,nx,kx,x1,x2,f,iflag,w0)

    implicit none

    integer(ip),intent(in)               :: nx      !! length of coefficient array
    integer(ip),intent(in)               :: kx      !! order of b-spline, `1 <= k <= 20`
    real(wp),dimension(nx+kx),intent(in) :: tx      !! knot array
    real(wp),dimension(nx),intent(in)    :: bcoef   !! b-spline coefficient array
    real(wp),intent(in)                  :: x1      !! left point of quadrature interval in `t(kx) <= x <= t(nx+1)`
    real(wp),intent(in)                  :: x2      !! right point of quadrature interval in `t(kx) <= x <= t(nx+1)`
    real(wp),intent(out)                 :: f       !! integral of the b-spline over (`x1`,`x2`)
    integer(ip),intent(out)              :: iflag   !! status flag:
                                                    !!
                                                    !! * \( = 0 \)   : no errors
                                                    !! * \( \ne 0 \) : error
    real(wp),dimension(3*kx),intent(inout) :: w0    !! work array for [[dbsqad]]

    call dbsqad(tx,bcoef,nx,kx,x1,x2,f,w0,iflag)

    end subroutine db1sqad