GBTOlib: library for evaluation of molecular integrals in mixed Gaussian / B-spline basis 111
Loading...
Searching...
No Matches
quadrature_module_gbl Module Reference

Functions/Subroutines

subroutine, public cfp_bfqad (f, t, bcoef, n, k, id, x1, x2, tol, quad, ierr, work)
subroutine, public cfp_bsqad (f, t, bcoef, n, k, id, x1, x2, tol, quad, ierr, work)
subroutine, public cfp_bfqro (f, t, bcoef, n, kk, id, x1, x2, tol, quad, ierr, work)

Detailed Description

Quadrature module

Contains routines for integration of a b-spline with an arbitrary user-defined function. The function is defined using the function_1d class. See function_integration module for details on how this is used.

Function/Subroutine Documentation

◆ cfp_bfqad()

subroutine, public quadrature_module_gbl::cfp_bfqad ( class(function_1d) f,
real(kind=cfp), dimension(:), intent(in) t,
real(kind=cfp), dimension(:), intent(in) bcoef,
integer n,
integer k,
integer id,
real(kind=cfp) x1,
real(kind=cfp) x2,
real(kind=cfp) tol,
real(kind=cfp) quad,
integer ierr,
real(kind=cfp), dimension(:) work )

Purpose:

!>         Compute the integral of a product of a function and a
!>         derivative of a K-th order B-spline:
!> 

\[ \int_{x_{1}}^{x_{2}} dr B(r)f(r) \]

!>AUTHOR  Amos, D. E., (SNLA)
!>DESCRIPTION
!>
!>     Abstract    **** a double precision routine ****
!>
!>         cfp_bfqad computes the integral on (X1,X2) of a product of a
!>         function F and the ID-th derivative of a K-th order B-spline,
!>         using the B-representation (T,BCOEF,N,K).  (X1,X2) must be a
!>         subinterval of T(K) .LE. X .LE. T(N+1).  An integration rou-
!>         tine, DBSGQ8 (a modification of GAUS8), integrates the product
!>         on subintervals of (X1,X2) formed by included (distinct) knots
!>
!>         The maximum number of significant digits obtainable in
!>         DBSQAD is the smaller of 18 and the number of digits
!>         carried in double precision arithmetic.
!>
!>     Description of Arguments
!>         Input      F,T,BCOEF,X1,X2,TOL are double precision
!> 
Parameters
[in]F
!>            Function of one argument for the integrand BF(X)=F(X)*BVALU(T,BCOEF,N,K,ID,X,INBV,WORK)
!> 
[in]T
!>            Knot array of length N+K
!> 
[in]BCOEF
!>            Coefficient array of length N
!> 
[in]N
!>            Length of coefficient array
!> 
[in]K
!>            Order of B-spline, K .GE. 1
!> 
[in]ID
!>            Order of the spline derivative, 0 .LE. ID .LE. K-1. ID=0 gives the spline function
!> 
[in]X1,X2
!>            End points of quadrature interval in  T(K) .LE. X .LE. T(N+1)
!> 

[in]TOL
!>            Desired accuracy for the quadrature, suggest 10.*DTOL .LT. TOL .LE. .1 where DTOL is the maximum  of 1.0D-18 and double precision unit roundoff for the machine = F1MACH(4)
!> 
[out]QUAD\( \int_{x_{1}}^{x_{2}} dr B(r)f(r) \)
!>             Integral of BF(X) on (X1,X2)
!> 
[out]IERR
!>             A status code
!>                    IERR=1  normal return
!>                         2  some quadrature on (X1,X2) does not meet the requested tolerance.
!> 
[in,out]WORK
!>             Work vector of length 3*K
!> 
!>
!>     Error Conditions
!>         Improper input is a fatal error
!>         Some quadrature fails to meet the requested tolerance
!>
!>***REFERENCES  D. E. Amos, Quadrature subroutines for splines and
!>                 B-splines, Report SAND79-1825, Sandia Laboratories,
!>                 December 1979.
!>***ROUTINES CALLED  F1MACH, DBSGQ8, INTRV, XERMSG
!> 
Here is the call graph for this function:

◆ cfp_bfqro()

subroutine, public quadrature_module_gbl::cfp_bfqro ( class(function_1d) f,
real(kind=cfp), dimension(:), intent(in) t,
real(kind=cfp), dimension(:), intent(in) bcoef,
integer n,
integer kk,
integer id,
real(kind=cfp) x1,
real(kind=cfp) x2,
real(kind=cfp) tol,
real(kind=cfp) quad,
integer ierr,
real(kind=cfp), dimension(:), intent(inout) work )
Here is the call graph for this function:

◆ cfp_bsqad()

subroutine, public quadrature_module_gbl::cfp_bsqad ( class(function_1d) f,
real(kind=cfp), dimension(:), intent(in) t,
real(kind=cfp), dimension(:), intent(in) bcoef,
integer n,
integer k,
integer id,
real(kind=cfp) x1,
real(kind=cfp) x2,
real(kind=cfp) tol,
real(kind=cfp) quad,
integer ierr,
real(kind=cfp), dimension(:) work )

Purpose:

!>***BEGIN PROLOGUE  cfp_bsqad
!>***PURPOSE  Compute the integral of a product of a function and a square of the
!>            derivative of a K-th order B-spline.
!>***LIBRARY   SLATEC
!>***CATEGORY  H2A2A1, E3, K6
!>***TYPE      REAL(kind=cfp) (BFQAD-S, cfp_bsqad-D)
!>***KEYWORDS  INTEGRAL OF B-SPLINE, QUADRATURE
!>***AUTHOR  Amos, D. E., (SNLA)
!>***DESCRIPTION
!>
!>     Abstract    **** a double precision routine ****
!>
!>         cfp_bsqad computes the integral on (X1,X2) of a product of a
!>         function F and the ID-th derivative of a K-th order B-spline,
!>         using the B-representation (T,BCOEF,N,K).  (X1,X2) must be a
!>         subinterval of T(K) .LE. X .LE. T(N+1).  An integration rou-
!>         tine, DBSGQ8 (a modification of GAUS8), integrates the product
!>         on subintervals of (X1,X2) formed by included (distinct) knots
!>
!>         The maximum number of significant digits obtainable in
!>         DBSQAD is the smaller of 18 and the number of digits
!>         carried in double precision arithmetic.
!>
!>     Description of Arguments
!>         Input      F,T,BCOEF,X1,X2,TOL are double precision
!>           F      - function of one argument for the integrand BF(X)=F(X)*BVALU(T,BCOEF,N,K,ID,X,INBV,WORK)
!>           T      - knot array of length N+K
!>           BCOEF  - coefficient array of length N
!>           N      - length of coefficient array
!>           K      - order of B-spline, K .GE. 1
!>           ID     - order of the spline derivative, 0 .LE. ID .LE. K-1
!>                    ID=0 gives the spline function
!>           X1,X2  - end points of quadrature interval in
!>                    T(K) .LE. X .LE. T(N+1)
!>           TOL    - desired accuracy for the quadrature, suggest
!>                    10.*DTOL .LT. TOL .LE. .1 where DTOL is the maximum
!>                    of 1.0D-18 and double precision unit roundoff for
!>                    the machine = F1MACH(4)
!>
!>         Output     QUAD,WORK are double precision
!>           QUAD   - integral of BF(X) on (X1,X2)
!>           IERR   - a status code
!>                    IERR=1  normal return
!>                         2  some quadrature on (X1,X2) does not meet
!>                            the requested tolerance.
!>           WORK   - work vector of length 3*K
!>
!>     Error Conditions
!>         Improper input is a fatal error
!>         Some quadrature fails to meet the requested tolerance
!>
!>***REFERENCES  D. E. Amos, Quadrature subroutines for splines and
!>                 B-splines, Report SAND79-1825, Sandia Laboratories,
!>                 December 1979.
!>***ROUTINES CALLED  F1MACH, DBSGQ8, INTRV, XERMSG
!>***REVISION HISTORY  (YYMMDD)
!>   800901  DATE WRITTEN
!>   890531  Changed all specific intrinsics to generic.  (WRB)
!>   890531  REVISION DATE from Version 3.2
!>   891214  Prologue converted to Version 4.0 format.  (BAB)
!>   900315  CALLs to XERROR changed to CALLs to XERMSG.  (THJ)
!>   900326  Removed duplicate information from DESCRIPTION section.
!>           (WRB)
!>   920501  Reformatted the REFERENCES section.  (WRB)
!>***END PROLOGUE  cfp_bsqad
!>
!> 
Here is the call graph for this function: