GBTOlib: library for evaluation of molecular integrals in mixed Gaussian / B-spline basis
111
|
Functions/Subroutines | |
subroutine, public | map_knots_to_grid (knots, order, last_bspline, r, bspline_start_end_r) |
Find the indices mapping the start and end of each B-spline to the (quadrature) points r. For a B-spline with index ind which doesn't overlap with the quadrature grid the values in bspline_start_end_r are: bspline_start_end_r(1,ind) = 0, bspline_start_end_r(2,ind) = -1. More... | |
subroutine | DINTRV (XT, LXT, X, ILO, ILEFT, MFLAG) |
real(kind=wp) function | DBVALU (T, A, N, K, IDERIV, X, INBV, WORK) |
real(kind=cfp) function | DPPVAL (LDC, C, XI, LXI, K, IDERIV, X, INPPV) |
subroutine | QINTRV (XT, LXT, X, ILO, ILEFT, MFLAG) |
real(kind=ep1) function | QBVALU (T, A, N, K, IDERIV, X, INBV, WORK) |
real(kind=wp) function bspline_base_gbl::DBVALU | ( | real(kind=wp), dimension(*) | T, |
real(kind=wp), dimension(*) | A, | ||
integer | N, | ||
integer | K, | ||
integer | IDERIV, | ||
real(kind=wp) | X, | ||
integer | INBV, | ||
real(kind=wp), dimension(*) | WORK | ||
) |
***PURPOSE Evaluate the B-representation of a B-spline at X for the function value or any of its derivatives. ***LIBRARY SLATEC ***CATEGORY E3, K6 ***TYPE real(kind=cfp) (BVALU-S, DBVALU-D) ***KEYWORDS DIFFERENTIATION OF B-SPLINE, EVALUATION OF B-SPLINE ***AUTHOR Amos, D. E., (SNLA) ***DESCRIPTION Written by Carl de Boor and modified by D. E. Amos Abstract **** a double precision routine **** DBVALU is the BVALUE function of the reference. DBVALU evaluates the B-representation (T,A,N,K) of a B-spline at X for the function value on IDERIV=0 or any of its derivatives on IDERIV=1,2,...,K-1. Right limiting values (right derivatives) are returned except at the right end point X=T(N+1) where left limiting values are computed. The spline is defined on T(K) .LE. X .LE. T(N+1). DBVALU returns a fatal error message when X is outside of this interval. To compute left derivatives or left limiting values at a knot T(I), replace N by I-1 and set X=T(I), I=K+1,N+1. DBVALU calls DINTRV Description of Arguments Input T,A,X are double precision T - knot vector of length N+K A - B-spline coefficient vector of length N N - number of B-spline coefficients N = sum of knot multiplicities-K K - order of the B-spline, K .GE. 1 IDERIV - order of the derivative, 0 .LE. IDERIV .LE. K-1 IDERIV = 0 returns the B-spline value X - argument, T(K) .LE. X .LE. T(N+1) INBV - an initialization parameter which must be set to 1 the first time DBVALU is called. Output WORK,DBVALU are double precision INBV - INBV contains information for efficient process- ing after the initial call and INBV must not be changed by the user. Distinct splines require distinct INBV parameters. WORK - work vector of length 3*K. DBVALU - value of the IDERIV-th derivative at X Error Conditions An improper input is a fatal error ***REFERENCES Carl de Boor, Package for calculating with B-splines, SIAM Journal on Numerical Analysis 14, 3 (June 1977), pp. 441-472. ***ROUTINES CALLED DINTRV, XERMSG ***REVISION HISTORY (YYMMDD) 800901 DATE WRITTEN 890831 Modified array declarations. (WRB) 890911 Removed unnecessary intrinsics. (WRB) 890911 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) 920501 Reformatted the REFERENCES section. (WRB)
subroutine bspline_base_gbl::DINTRV | ( | real(kind=wp), dimension(*) | XT, |
integer | LXT, | ||
real(kind=wp) | X, | ||
integer | ILO, | ||
integer | ILEFT, | ||
integer | MFLAG | ||
) |
***PURPOSE Compute the largest integer ILEFT in 1 .LE. ILEFT .LE. LXT such that XT(ILEFT) .LE. X where XT(*) is a subdivision of the X interval. ***LIBRARY SLATEC ***CATEGORY E3, K6 ***TYPE real(kind=wp) (INTRV-S, DINTRV-D) ***KEYWORDS B-SPLINE, DATA FITTING, INTERPOLATION, SPLINES ***AUTHOR Amos, D. E., (SNLA) ***DESCRIPTION Written by Carl de Boor and modified by D. E. Amos Abstract **** a double precision routine **** DINTRV is the INTERV routine of the reference. DINTRV computes the largest integer ILEFT in 1 .LE. ILEFT .LE. LXT such that XT(ILEFT) .LE. X where XT(*) is a subdivision of the X interval. Precisely, X .LT. XT(1) 1 -1 if XT(I) .LE. X .LT. XT(I+1) then ILEFT=I , MFLAG=0 XT(LXT) .LE. X LXT 1, That is, when multiplicities are present in the break point to the left of X, the largest index is taken for ILEFT. Description of Arguments Input XT,X are double precision XT - XT is a knot or break point vector of length LXT LXT - length of the XT vector X - argument ILO - an initialization parameter which must be set to 1 the first time the spline array XT is processed by DINTRV. Output ILO - ILO contains information for efficient process- ing after the initial call and ILO must not be changed by the user. Distinct splines require distinct ILO parameters. ILEFT - largest integer satisfying XT(ILEFT) .LE. X MFLAG - signals when X lies out of bounds Error Conditions None ***REFERENCES Carl de Boor, Package for calculating with B-splines, SIAM Journal on Numerical Analysis 14, 3 (June 1977), pp. 441-472. ***ROUTINES CALLED (NONE) ***REVISION HISTORY (YYMMDD) 800901 DATE WRITTEN 890831 Modified array declarations. (WRB) 890831 REVISION DATE from Version 3.2 891214 Prologue converted to Version 4.0 format. (BAB) 920501 Reformatted the REFERENCES section. (WRB)
real(kind=cfp) function bspline_base_gbl::DPPVAL | ( | integer | LDC, |
real(kind=wp), dimension(ldc,*) | C, | ||
real(kind=wp), dimension(*) | XI, | ||
integer | LXI, | ||
integer | K, | ||
integer | IDERIV, | ||
real(kind=wp) | X, | ||
integer | INPPV | ||
) |
***PURPOSE Calculate the value of the IDERIV-th derivative of the B-spline from the PP-representation. ***LIBRARY SLATEC ***CATEGORY E3, K6 ***TYPE real(kind=cfp) (PPVAL-S, DPPVAL-D) ***KEYWORDS B-SPLINE, DATA FITTING, INTERPOLATION, SPLINES ***AUTHOR Amos, D. E., (SNLA) ***DESCRIPTION Written by Carl de Boor and modified by D. E. Amos Abstract **** a double precision routine **** DPPVAL is the PPVALU function of the reference. DPPVAL calculates (at X) the value of the IDERIV-th derivative of the B-spline from the PP-representation (C,XI,LXI,K). The Taylor expansion about XI(J) for X in the interval XI(J) .LE. X .LT. XI(J+1) is evaluated, J=1,LXI. Right limiting values at X=XI(J) are obtained. DPPVAL will extrapolate beyond XI(1) and XI(LXI+1). To obtain left limiting values (left derivatives) at XI(J) replace LXI by J-1 and set X=XI(J),J=2,LXI+1. Description of Arguments Input C,XI,X are double precision LDC - leading dimension of C matrix, LDC .GE. K C - matrix of dimension at least (K,LXI) containing right derivatives at break points XI(*). XI - break point vector of length LXI+1 LXI - number of polynomial pieces K - order of B-spline, K .GE. 1 IDERIV - order of the derivative, 0 .LE. IDERIV .LE. K-1 IDERIV=0 gives the B-spline value X - argument, XI(1) .LE. X .LE. XI(LXI+1) INPPV - an initialization parameter which must be set to 1 the first time DPPVAL is called. Output DPPVAL is double precision INPPV - INPPV contains information for efficient process- ing after the initial call and INPPV must not be changed by the user. Distinct splines require distinct INPPV parameters. DPPVAL - value of the IDERIV-th derivative at X Error Conditions Improper input is a fatal error ***REFERENCES Carl de Boor, Package for calculating with B-splines, SIAM Journal on Numerical Analysis 14, 3 (June 1977), pp. 441-472. ***ROUTINES CALLED DINTRV, XERMSG ***REVISION HISTORY (YYMMDD) 800901 DATE WRITTEN 890831 Modified array declarations. (WRB) 890831 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) 920501 Reformatted the REFERENCES section. (WRB)
subroutine, public bspline_base_gbl::map_knots_to_grid | ( | real(kind=cfp), dimension(:), intent(in) | knots, |
integer, intent(in) | order, | ||
integer, intent(in) | last_bspline, | ||
real(kind=cfp), dimension(:), intent(in) | r, | ||
integer, dimension(:,:), allocatable | bspline_start_end_r | ||
) |
Find the indices mapping the start and end of each B-spline to the (quadrature) points r. For a B-spline with index ind which doesn't overlap with the quadrature grid the values in bspline_start_end_r are: bspline_start_end_r(1,ind) = 0, bspline_start_end_r(2,ind) = -1.
real(kind=ep1) function bspline_base_gbl::QBVALU | ( | real(kind=ep1), dimension(*) | T, |
real(kind=ep1), dimension(*) | A, | ||
integer | N, | ||
integer | K, | ||
integer | IDERIV, | ||
real(kind=ep1) | X, | ||
integer | INBV, | ||
real(kind=ep1), dimension(*) | WORK | ||
) |
***PURPOSE Evaluate the B-representation of a B-spline at X for the function value or any of its derivatives. ***LIBRARY SLATEC ***CATEGORY E3, K6 ***TYPE REAL(kind=ep1) (BVALU-S, QBVALU-D) ***KEYWORDS DIFFERENTIATION OF B-SPLINE, EVALUATION OF B-SPLINE ***AUTHOR Amos, D. E., (SNLA) ***DESCRIPTION Written by Carl de Boor and modified by D. E. Amos Abstract **** a double precision routine **** QBVALU is the BVALUE function of the reference. QBVALU evaluates the B-representation (T,A,N,K) of a B-spline at X for the function value on IDERIV=0 or any of its derivatives on IDERIV=1,2,...,K-1. Right limiting values (right derivatives) are returned except at the right end point X=T(N+1) where left limiting values are computed. The spline is defined on T(K) .LE. X .LE. T(N+1). QBVALU returns a fatal error message when X is outside of this interval. To compute left derivatives or left limiting values at a knot T(I), replace N by I-1 and set X=T(I), I=K+1,N+1. QBVALU calls QINTRV Description of Arguments Input T,A,X are double precision T - knot vector of length N+K A - B-spline coefficient vector of length N N - number of B-spline coefficients N = sum of knot multiplicities-K K - order of the B-spline, K .GE. 1 IDERIV - order of the derivative, 0 .LE. IDERIV .LE. K-1 IDERIV = 0 returns the B-spline value X - argument, T(K) .LE. X .LE. T(N+1) INBV - an initialization parameter which must be set to 1 the first time QBVALU is called. Output WORK,QBVALU are double precision INBV - INBV contains information for efficient process- ing after the initial call and INBV must not be changed by the user. Distinct splines require distinct INBV parameters. WORK - work vector of length 3*K. QBVALU - value of the IDERIV-th derivative at X Error Conditions An improper input is a fatal error ***REFERENCES Carl de Boor, Package for calculating with B-splines, SIAM Journal on Numerical Analysis 14, 3 (June 1977), pp. 441-472. ***ROUTINES CALLED QINTRV, XERMSG ***REVISION HISTORY (YYMMDD) 800901 DATE WRITTEN 890831 Modified array declarations. (WRB) 890911 Removed unnecessary intrinsics. (WRB) 890911 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) 920501 Reformatted the REFERENCES section. (WRB)
subroutine bspline_base_gbl::QINTRV | ( | real(kind=ep1), dimension(*) | XT, |
integer | LXT, | ||
real(kind=ep1) | X, | ||
integer | ILO, | ||
integer | ILEFT, | ||
integer | MFLAG | ||
) |
***PURPOSE Compute the largest integer ILEFT in 1 .LE. ILEFT .LE. LXT such that XT(ILEFT) .LE. X where XT(*) is a subdivision of the X interval. ***LIBRARY SLATEC ***CATEGORY E3, K6 ***TYPE real(kind=cfp) (INTRV-S, QINTRV-D) ***KEYWORDS B-SPLINE, DATA FITTING, INTERPOLATION, SPLINES ***AUTHOR Amos, D. E., (SNLA) ***DESCRIPTION Written by Carl de Boor and modified by D. E. Amos Abstract **** a double precision routine **** QINTRV is the INTERV routine of the reference. QINTRV computes the largest integer ILEFT in 1 .LE. ILEFT .LE. LXT such that XT(ILEFT) .LE. X where XT(*) is a subdivision of the X interval. Precisely, X .LT. XT(1) 1 -1 if XT(I) .LE. X .LT. XT(I+1) then ILEFT=I , MFLAG=0 XT(LXT) .LE. X LXT 1, That is, when multiplicities are present in the break point to the left of X, the largest index is taken for ILEFT. Description of Arguments Input XT,X are double precision XT - XT is a knot or break point vector of length LXT LXT - length of the XT vector X - argument ILO - an initialization parameter which must be set to 1 the first time the spline array XT is processed by QINTRV. Output ILO - ILO contains information for efficient process- ing after the initial call and ILO must not be changed by the user. Distinct splines require distinct ILO parameters. ILEFT - largest integer satisfying XT(ILEFT) .LE. X MFLAG - signals when X lies out of bounds Error Conditions None ***REFERENCES Carl de Boor, Package for calculating with B-splines, SIAM Journal on Numerical Analysis 14, 3 (June 1977), pp. 441-472. ***ROUTINES CALLED (NONE) ***REVISION HISTORY (YYMMDD) 800901 DATE WRITTEN 890831 Modified array declarations. (WRB) 890831 REVISION DATE from Version 3.2 891214 Prologue converted to Version 4.0 format. (BAB) 920501 Reformatted the REFERENCES section. (WRB)