Skip to content

Commit 2f617bc

Browse files
committed
test updates to avoid aliased arguments to ink routines
Fixes #89 also updated the linear test.
1 parent d087199 commit 2f617bc

File tree

5 files changed

+83
-81
lines changed

5 files changed

+83
-81
lines changed

test/bspline_extrap_test.f90

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ program bspline_extrap_test
2222
real(wp) :: x(nx)
2323
real(wp) :: xval(nxv),fval(nxv)
2424
real(wp) :: tx(nx+kx)
25-
real(wp) :: fcn_1d(nx)
25+
real(wp) :: fcn_1d(nx), bcoef(nx)
2626
real(wp) :: val,tru,err,errmax
2727
integer(ip) :: i,j,idx,iflag,inbvx,iloy
2828
logical :: extrap
@@ -47,7 +47,7 @@ program bspline_extrap_test
4747
iloy = 1
4848

4949
! initialize
50-
call db1ink(x,nx,fcn_1d,kx,iknot,tx,fcn_1d,iflag)
50+
call db1ink(x,nx,fcn_1d,kx,iknot,tx,bcoef,iflag)
5151

5252
if (iflag/=0) then
5353
write(*,*) 'Error initializing 1D spline: '//get_status_message(iflag)
@@ -67,7 +67,7 @@ program bspline_extrap_test
6767

6868
errmax = 0.0_wp
6969
do i=1,nxv
70-
call db1val(xval(i),idx,tx,nx,kx,fcn_1d,val,iflag,inbvx,w1_1d,extrap=extrap)
70+
call db1val(xval(i),idx,tx,nx,kx,bcoef,val,iflag,inbvx,w1_1d,extrap=extrap)
7171
fval(i) = val ! save it for plot
7272
tru = f1(xval(i))
7373
err = abs(tru-val)

test/bspline_linear_test.f90

Lines changed: 40 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -12,29 +12,20 @@ program bspline_linear_test
1212
implicit none
1313

1414
integer(ip),parameter :: nx = 10 !! number of points in x
15-
integer(ip),parameter :: nxv = 111 !100 !! number of points to evaluate interpolant
16-
17-
integer(ip),parameter :: kx = 2 !! order in x [linear]
18-
!integer(ip),parameter :: kx = bspline_order_cubic !! order in x [cubic]
19-
!integer(ip),parameter :: kx = bspline_order_quartic
15+
integer(ip),parameter :: nxv = 111 !! number of points to evaluate interpolant
2016
integer(ip),parameter :: iknot = 0 !! automatically select the knots
17+
integer,parameter :: idx = 0 !! compute value for the spline interpolation
2118

2219
real(wp) :: x(nx)
23-
real(wp) :: xval(nxv),fval(nxv),fval_linear(nxv)
24-
real(wp) :: tx(nx+kx)
20+
real(wp) :: xval(nxv),fval(nxv),fval_linear(nxv),fval3(nxv),fval4(nxv)
2521
real(wp) :: fcn_1d(nx)
26-
real(wp) :: val,tru,err,errmax
27-
integer(ip) :: i,idx,iflag,inbvx,iloy
28-
type(pyplot) :: plt
22+
real(wp) :: val,err,errmax
23+
integer(ip) :: i,iflag,inbvx,iloy
2924
integer :: istat !! pyplot-fortran status flag
30-
real(wp),dimension(3*kx) :: w1_1d !! work array
25+
type(pyplot) :: plt
26+
type(bspline_1d) :: b2, b3, b4
3127
type(linear_interp_1d) :: s1
3228

33-
idx = 0
34-
35-
x = huge(1.0_wp)
36-
xval = huge(1.0_wp)
37-
3829
do i=1,nx
3930
x(i) = real(i-1,wp) * 10.0_wp
4031
fcn_1d(i) = f1(x(i))
@@ -47,59 +38,69 @@ program bspline_linear_test
4738
inbvx = 1
4839
iloy = 1
4940

41+
! the low-level routines are given the wrong result? check this...
42+
5043
! initialize
51-
call db1ink(x,nx,fcn_1d,kx,iknot,tx,fcn_1d,iflag)
52-
if (iflag/=0) then
53-
write(*,*) 'Error initializing 1D spline: '//get_status_message(iflag)
54-
end if
44+
call b2%initialize(x,fcn_1d,2,iflag,extrap=.true.) ! linear
45+
if (iflag/=0) error stop 'Error initializing 1D linear spline: '//get_status_message(iflag)
46+
call b3%initialize(x,fcn_1d,3,iflag,extrap=.true.) ! quadratic
47+
if (iflag/=0) error stop 'Error initializing 1D quadratic spline: '//get_status_message(iflag)
48+
call b4%initialize(x,fcn_1d,4,iflag,extrap=.true.) ! cubic
49+
if (iflag/=0) error stop 'Error initializing 1D cubic spline: '//get_status_message(iflag)
5550
call s1%initialize(x,fcn_1d,iflag)
56-
if (iflag/=0) then
57-
write(*,*) 'Error initializing 1D linear interpolator: ', iflag
58-
end if
51+
if (iflag/=0) error stop 'Error initializing 1D linear interpolator'
5952

6053
!initialize the plot:
6154
call plt%initialize(grid=.true.,xlabel='x (deg)',ylabel='f(x)',&
62-
title='Linear Test',legend=.true.)
55+
title='Linear Test',legend=.true.,figsize=[10,5])
6356
call plt%add_plot(x,fcn_1d,&
6457
label='Function $f(x) = \sin(x)$',&
6558
linestyle='ko',markersize=5,linewidth=2,istat=istat)
6659

6760
errmax = 0.0_wp
6861
do i=1,nxv
69-
call db1val(xval(i),idx,tx,nx,kx,fcn_1d,val,iflag,inbvx,w1_1d,extrap=.true.)
62+
call b2%evaluate(xval(i),idx,val,iflag)
7063
fval(i) = val ! save it for plot
71-
if (iflag/=0) error stop 'error calling db1val: '//get_status_message(iflag)
72-
73-
tru = f1(xval(i))
74-
err = abs(tru-val)
75-
errmax = max(err,errmax)
76-
!write(*,*) xval(i), val, tru, err, iflag
64+
if (iflag/=0) error stop 'error evaluating linear spline: '//get_status_message(iflag)
7765

7866
! also compute linear interpolation:
7967
call s1%evaluate(xval(i),val)
8068
fval_linear(i) = val ! linear vector for plot
81-
write(*,*) "error : ", xval(i), fval(i) - fval_linear(i)
69+
70+
err = abs(fval(i) - fval_linear(i))
71+
errmax = max(err,errmax)
72+
73+
! also others:
74+
call b3%evaluate(xval(i),idx,fval3(i),iflag)
75+
if (iflag/=0) error stop 'error evaluating quadratic spline: '//get_status_message(iflag)
76+
call b4%evaluate(xval(i),idx,fval4(i),iflag)
77+
if (iflag/=0) error stop 'error evaluating cubic spline: '//get_status_message(iflag)
8278

8379
end do
8480

85-
! check max error against tolerance
8681
write(*,*) ''
87-
write(*,*) '1D: max error:', errmax
82+
write(*,*) 'Max difference (spline - linear):', errmax
8883
write(*,*) ''
8984

90-
call plt%add_plot(xval,fval,&
91-
label='k=2 Spline Interpolated',&
92-
linestyle='g.-',linewidth=1,istat=istat)
9385
call plt%add_plot(xval,fval_linear,&
9486
label='Linear Interpolated',&
95-
linestyle='r.-',linewidth=1,istat=istat)
87+
linestyle='r.',linewidth=1,istat=istat)
88+
call plt%add_plot(xval,fval,&
89+
label='Linear ($k=2$) Spline Interpolated',&
90+
linestyle='r-',linewidth=1,istat=istat)
91+
call plt%add_plot(xval,fval3,&
92+
label='Quadratic ($k=3$) Spline Interpolated',&
93+
linestyle='k.-',linewidth=1,istat=istat)
94+
call plt%add_plot(xval,fval4,&
95+
label='Cubic ($k=4$) Spline Interpolated',&
96+
linestyle='c.-',linewidth=1,istat=istat)
9697
call plt%savefig('bspline_linear_test.png',istat=istat)
9798

9899
contains
99100

100101
real(wp) function f1(x) !! 1d test function
101102
implicit none
102-
real(wp) :: x
103+
real(wp),intent(in) :: x
103104
real(wp),parameter :: a = acos(-1.0_wp)/18.0_wp
104105
f1 = sin(a*x)
105106
end function f1

test/bspline_test.f90

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,12 @@ program bspline_test
2727

2828
real(wp) :: x(nx),y(ny),z(nz),q(nq),r(nr),s(ns)
2929
real(wp) :: tx(nx+kx),ty(ny+ky),tz(nz+kz),tq(nq+kq),tr(nr+kr),ts(ns+ks)
30-
real(wp) :: fcn_1d(nx)
31-
real(wp) :: fcn_2d(nx,ny)
32-
real(wp) :: fcn_3d(nx,ny,nz)
33-
real(wp) :: fcn_4d(nx,ny,nz,nq)
34-
real(wp) :: fcn_5d(nx,ny,nz,nq,nr)
35-
real(wp) :: fcn_6d(nx,ny,nz,nq,nr,ns)
30+
real(wp) :: fcn_1d(nx) , bcoef_1d(nx)
31+
real(wp) :: fcn_2d(nx,ny) , bcoef_2d(nx,ny)
32+
real(wp) :: fcn_3d(nx,ny,nz) , bcoef_3d(nx,ny,nz)
33+
real(wp) :: fcn_4d(nx,ny,nz,nq) , bcoef_4d(nx,ny,nz,nq)
34+
real(wp) :: fcn_5d(nx,ny,nz,nq,nr) , bcoef_5d(nx,ny,nz,nq,nr)
35+
real(wp) :: fcn_6d(nx,ny,nz,nq,nr,ns), bcoef_6d(nx,ny,nz,nq,nr,ns)
3636

3737
real(wp),dimension(3*kx) :: w1_1d
3838
real(wp),dimension(ky) :: w1_2d
@@ -229,12 +229,12 @@ program bspline_test
229229
ilos = 1
230230

231231
! initialize
232-
call db1ink(x,nx,fcn_1d,kx,iknot,tx,fcn_1d,iflag(1))
233-
call db2ink(x,nx,y,ny,fcn_2d,kx,ky,iknot,tx,ty,fcn_2d,iflag(2))
234-
call db3ink(x,nx,y,ny,z,nz,fcn_3d,kx,ky,kz,iknot,tx,ty,tz,fcn_3d,iflag(3))
235-
call db4ink(x,nx,y,ny,z,nz,q,nq,fcn_4d,kx,ky,kz,kq,iknot,tx,ty,tz,tq,fcn_4d,iflag(4))
236-
call db5ink(x,nx,y,ny,z,nz,q,nq,r,nr,fcn_5d,kx,ky,kz,kq,kr,iknot,tx,ty,tz,tq,tr,fcn_5d,iflag(5))
237-
call db6ink(x,nx,y,ny,z,nz,q,nq,r,nr,s,ns,fcn_6d,kx,ky,kz,kq,kr,ks,iknot,tx,ty,tz,tq,tr,ts,fcn_6d,iflag(6))
232+
call db1ink(x,nx,fcn_1d,kx,iknot,tx,bcoef_1d,iflag(1))
233+
call db2ink(x,nx,y,ny,fcn_2d,kx,ky,iknot,tx,ty,bcoef_2d,iflag(2))
234+
call db3ink(x,nx,y,ny,z,nz,fcn_3d,kx,ky,kz,iknot,tx,ty,tz,bcoef_3d,iflag(3))
235+
call db4ink(x,nx,y,ny,z,nz,q,nq,fcn_4d,kx,ky,kz,kq,iknot,tx,ty,tz,tq,bcoef_4d,iflag(4))
236+
call db5ink(x,nx,y,ny,z,nz,q,nq,r,nr,fcn_5d,kx,ky,kz,kq,kr,iknot,tx,ty,tz,tq,tr,bcoef_5d,iflag(5))
237+
call db6ink(x,nx,y,ny,z,nz,q,nq,r,nr,s,ns,fcn_6d,kx,ky,kz,kq,kr,ks,iknot,tx,ty,tz,tq,tr,ts,bcoef_6d,iflag(6))
238238

239239
if (any(iflag/=0)) then
240240
do i=1,6
@@ -249,46 +249,46 @@ program bspline_test
249249
errmax = 0.0_wp
250250
do i=1,nx
251251
call db1val(x(i),idx,&
252-
tx,nx,kx,fcn_1d,val(1),iflag(1),inbvx,&
252+
tx,nx,kx,bcoef_1d,val(1),iflag(1),inbvx,&
253253
w1_1d)
254254
tru(1) = f1(x(i))
255255
err(1) = abs(tru(1)-val(1))
256256
errmax(1) = max(err(1),errmax(1))
257257
do j=1,ny
258258
call db2val(x(i),y(j),idx,idy,&
259-
tx,ty,nx,ny,kx,ky,fcn_2d,val(2),iflag(2),&
259+
tx,ty,nx,ny,kx,ky,bcoef_2d,val(2),iflag(2),&
260260
inbvx,inbvy,iloy,&
261261
w1_2d,w2_2d)
262262
tru(2) = f2(x(i),y(j))
263263
err(2) = abs(tru(2)-val(2))
264264
errmax(2) = max(err(2),errmax(2))
265265
do k=1,nz
266266
call db3val(x(i),y(j),z(k),idx,idy,idz,&
267-
tx,ty,tz,nx,ny,nz,kx,ky,kz,fcn_3d,val(3),iflag(3),&
267+
tx,ty,tz,nx,ny,nz,kx,ky,kz,bcoef_3d,val(3),iflag(3),&
268268
inbvx,inbvy,inbvz,iloy,iloz,&
269269
w1_3d,w2_3d,w3_3d)
270270
tru(3) = f3(x(i),y(j),z(k))
271271
err(3) = abs(tru(3)-val(3))
272272
errmax(3) = max(err(3),errmax(3))
273273
do l=1,nq
274274
call db4val(x(i),y(j),z(k),q(l),idx,idy,idz,idq,&
275-
tx,ty,tz,tq,nx,ny,nz,nq,kx,ky,kz,kq,fcn_4d,val(4),iflag(4),&
275+
tx,ty,tz,tq,nx,ny,nz,nq,kx,ky,kz,kq,bcoef_4d,val(4),iflag(4),&
276276
inbvx,inbvy,inbvz,inbvq,iloy,iloz,iloq,&
277277
w1_4d,w2_4d,w3_4d,w4_4d)
278278
tru(4) = f4(x(i),y(j),z(k),q(l))
279279
err(4) = abs(tru(4)-val(4))
280280
errmax(4) = max(err(4),errmax(4))
281281
do m=1,nr
282282
call db5val(x(i),y(j),z(k),q(l),r(m),idx,idy,idz,idq,idr,&
283-
tx,ty,tz,tq,tr,nx,ny,nz,nq,nr,kx,ky,kz,kq,kr,fcn_5d,val(5),iflag(5),&
283+
tx,ty,tz,tq,tr,nx,ny,nz,nq,nr,kx,ky,kz,kq,kr,bcoef_5d,val(5),iflag(5),&
284284
inbvx,inbvy,inbvz,inbvq,inbvr,iloy,iloz,iloq,ilor,&
285285
w1_5d,w2_5d,w3_5d,w4_5d,w5_5d)
286286
tru(5) = f5(x(i),y(j),z(k),q(l),r(m))
287287
err(5) = abs(tru(5)-val(5))
288288
errmax(5) = max(err(5),errmax(5))
289289
do n=1,ns
290290
call db6val(x(i),y(j),z(k),q(l),r(m),s(n),idx,idy,idz,idq,idr,ids,&
291-
tx,ty,tz,tq,tr,ts,nx,ny,nz,nq,nr,ns,kx,ky,kz,kq,kr,ks,fcn_6d,val(6),iflag(6),&
291+
tx,ty,tz,tq,tr,ts,nx,ny,nz,nq,nr,ns,kx,ky,kz,kq,kr,ks,bcoef_6d,val(6),iflag(6),&
292292
inbvx,inbvy,inbvz,inbvq,inbvr,inbvs,iloy,iloz,iloq,ilor,ilos,&
293293
w1_6d,w2_6d,w3_6d,w4_6d,w5_6d,w6_6d)
294294
tru(6) = f6(x(i),y(j),z(k),q(l),r(m),s(n))

test/bspline_test_2.f90

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,12 @@ program bspline_test_2
3030
real(wp) :: x(nx),y(ny),z(nz),q(nq),r(nr),s(ns)
3131
real(wp) :: xval(nx+2),yval(ny+2),zval(nz+2),qval(nq+2),rval(nr+2),sval(ns+2)
3232
real(wp) :: tx(nx+kx),ty(ny+ky),tz(nz+kz),tq(nq+kq),tr(nr+kr),ts(ns+ks)
33-
real(wp) :: fcn_1d(nx)
34-
real(wp) :: fcn_2d(nx,ny)
35-
real(wp) :: fcn_3d(nx,ny,nz)
36-
real(wp) :: fcn_4d(nx,ny,nz,nq)
37-
real(wp) :: fcn_5d(nx,ny,nz,nq,nr)
38-
real(wp) :: fcn_6d(nx,ny,nz,nq,nr,ns)
33+
real(wp) :: fcn_1d(nx) , bcoef_1d(nx)
34+
real(wp) :: fcn_2d(nx,ny) , bcoef_2d(nx,ny)
35+
real(wp) :: fcn_3d(nx,ny,nz) , bcoef_3d(nx,ny,nz)
36+
real(wp) :: fcn_4d(nx,ny,nz,nq) , bcoef_4d(nx,ny,nz,nq)
37+
real(wp) :: fcn_5d(nx,ny,nz,nq,nr) , bcoef_5d(nx,ny,nz,nq,nr)
38+
real(wp) :: fcn_6d(nx,ny,nz,nq,nr,ns), bcoef_6d(nx,ny,nz,nq,nr,ns)
3939

4040
real(wp),dimension(3*kx) :: w1_1d
4141
real(wp),dimension(ky) :: w1_2d
@@ -146,12 +146,12 @@ program bspline_test_2
146146

147147
! initialize
148148
iflag = 0
149-
call db1ink(x,nx,fcn_1d,kx,iknot,tx,fcn_1d,iflag(1))
150-
call db2ink(x,nx,y,ny,fcn_2d,kx,ky,iknot,tx,ty,fcn_2d,iflag(2))
151-
call db3ink(x,nx,y,ny,z,nz,fcn_3d,kx,ky,kz,iknot,tx,ty,tz,fcn_3d,iflag(3))
152-
call db4ink(x,nx,y,ny,z,nz,q,nq,fcn_4d,kx,ky,kz,kq,iknot,tx,ty,tz,tq,fcn_4d,iflag(4))
153-
call db5ink(x,nx,y,ny,z,nz,q,nq,r,nr,fcn_5d,kx,ky,kz,kq,kr,iknot,tx,ty,tz,tq,tr,fcn_5d,iflag(5))
154-
call db6ink(x,nx,y,ny,z,nz,q,nq,r,nr,s,ns,fcn_6d,kx,ky,kz,kq,kr,ks,iknot,tx,ty,tz,tq,tr,ts,fcn_6d,iflag(6))
149+
call db1ink(x,nx,fcn_1d,kx,iknot,tx,bcoef_1d,iflag(1))
150+
call db2ink(x,nx,y,ny,fcn_2d,kx,ky,iknot,tx,ty,bcoef_2d,iflag(2))
151+
call db3ink(x,nx,y,ny,z,nz,fcn_3d,kx,ky,kz,iknot,tx,ty,tz,bcoef_3d,iflag(3))
152+
call db4ink(x,nx,y,ny,z,nz,q,nq,fcn_4d,kx,ky,kz,kq,iknot,tx,ty,tz,tq,bcoef_4d,iflag(4))
153+
call db5ink(x,nx,y,ny,z,nz,q,nq,r,nr,fcn_5d,kx,ky,kz,kq,kr,iknot,tx,ty,tz,tq,tr,bcoef_5d,iflag(5))
154+
call db6ink(x,nx,y,ny,z,nz,q,nq,r,nr,s,ns,fcn_6d,kx,ky,kz,kq,kr,ks,iknot,tx,ty,tz,tq,tr,ts,bcoef_6d,iflag(6))
155155

156156
if (any(iflag/=0)) then
157157
do i=1,6
@@ -168,30 +168,30 @@ program bspline_test_2
168168
err = -99999.9_wp
169169
do i=1,nx+2
170170
call db1val(xval(i),idx,&
171-
tx,nx,kx,fcn_1d,val(1),iflag(1),inbvx,w1_1d,extrap=.true.)
171+
tx,nx,kx,bcoef_1d,val(1),iflag(1),inbvx,w1_1d,extrap=.true.)
172172
tru(1) = f1(xval(i))
173173
err(1) = abs(tru(1)-val(1))
174174
errmax(1) = max(err(1),errmax(1))
175175
if (iflag(1)/=0) write(*,*) 'Error evaluating 1D spline: '//get_status_message(iflag(1))
176176
do j=1,ny+2
177177
call db2val(xval(i),yval(j),idx,idy,&
178-
tx,ty,nx,ny,kx,ky,fcn_2d,val(2),iflag(2),&
178+
tx,ty,nx,ny,kx,ky,bcoef_2d,val(2),iflag(2),&
179179
inbvx,inbvy,iloy,w1_2d,w2_2d,extrap=.true.)
180180
tru(2) = f2(xval(i),yval(j))
181181
err(2) = abs(tru(2)-val(2))
182182
errmax(2) = max(err(2),errmax(2))
183183
if (iflag(2)/=0) write(*,*) 'Error evaluating 2D spline: '//get_status_message(iflag(2))
184184
do k=1,nz+2
185185
call db3val(xval(i),yval(j),zval(k),idx,idy,idz,&
186-
tx,ty,tz,nx,ny,nz,kx,ky,kz,fcn_3d,val(3),iflag(3),&
186+
tx,ty,tz,nx,ny,nz,kx,ky,kz,bcoef_3d,val(3),iflag(3),&
187187
inbvx,inbvy,inbvz,iloy,iloz,w1_3d,w2_3d,w3_3d,extrap=.true.)
188188
tru(3) = f3(xval(i),yval(j),zval(k))
189189
err(3) = abs(tru(3)-val(3))
190190
errmax(3) = max(err(3),errmax(3))
191191
if (iflag(3)/=0) write(*,*) 'Error evaluating 3D spline: '//get_status_message(iflag(3))
192192
do l=1,nq+2
193193
call db4val(xval(i),yval(j),zval(k),qval(l),idx,idy,idz,idq,&
194-
tx,ty,tz,tq,nx,ny,nz,nq,kx,ky,kz,kq,fcn_4d,val(4),iflag(4),&
194+
tx,ty,tz,tq,nx,ny,nz,nq,kx,ky,kz,kq,bcoef_4d,val(4),iflag(4),&
195195
inbvx,inbvy,inbvz,inbvq,iloy,iloz,iloq,&
196196
w1_4d,w2_4d,w3_4d,w4_4d,extrap=.true.)
197197
tru(4) = f4(xval(i),yval(j),zval(k),qval(l))
@@ -200,7 +200,7 @@ program bspline_test_2
200200
if (iflag(4)/=0) write(*,*) 'Error evaluating 4D spline: '//get_status_message(iflag(4))
201201
do m=1,nr+2
202202
call db5val(xval(i),yval(j),zval(k),qval(l),rval(m),idx,idy,idz,idq,idr,&
203-
tx,ty,tz,tq,tr,nx,ny,nz,nq,nr,kx,ky,kz,kq,kr,fcn_5d,val(5),iflag(5),&
203+
tx,ty,tz,tq,tr,nx,ny,nz,nq,nr,kx,ky,kz,kq,kr,bcoef_5d,val(5),iflag(5),&
204204
inbvx,inbvy,inbvz,inbvq,inbvr,iloy,iloz,iloq,ilor,&
205205
w1_5d,w2_5d,w3_5d,w4_5d,w5_5d,extrap=.true.)
206206
tru(5) = f5(xval(i),yval(j),zval(k),qval(l),rval(m))
@@ -209,7 +209,7 @@ program bspline_test_2
209209
if (iflag(5)/=0) write(*,*) 'Error evaluating 5D spline: '//get_status_message(iflag(5))
210210
do n=1,ns+2
211211
call db6val(xval(i),yval(j),zval(k),qval(l),rval(m),sval(n),idx,idy,idz,idq,idr,ids,&
212-
tx,ty,tz,tq,tr,ts,nx,ny,nz,nq,nr,ns,kx,ky,kz,kq,kr,ks,fcn_6d,val(6),iflag(6),&
212+
tx,ty,tz,tq,tr,ts,nx,ny,nz,nq,nr,ns,kx,ky,kz,kq,kr,ks,bcoef_6d,val(6),iflag(6),&
213213
inbvx,inbvy,inbvz,inbvq,inbvr,inbvs,iloy,iloz,iloq,ilor,ilos,&
214214
w1_6d,w2_6d,w3_6d,w4_6d,w5_6d,w6_6d,extrap=.true.)
215215
tru(6) = f6(xval(i),yval(j),zval(k),qval(l),rval(m),sval(n))

test/test_integrate.f90

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ program bspline_integrate_test
4141
real(wp) :: f_true !! the true integral of
4242
!! the analytic function
4343
real(wp),dimension(:),allocatable :: w1_1d !! work array
44+
real(wp),dimension(nx) :: bcoef !! spline coefficient array
4445

4546
do imeth = 1,2 ! the two methods
4647

@@ -69,17 +70,17 @@ program bspline_integrate_test
6970

7071
! initialize:
7172
! [note we are overwriting fcn here with the b coeffs]
72-
call db1ink(x,nx,fcn,kx,iknot,tx,fcn,iflag)
73+
call db1ink(x,nx,fcn,kx,iknot,tx,bcoef,iflag)
7374
if (iflag/=0) error stop 'error calling db1ink'
7475

7576
! integrate:
7677
if (imeth==1) then
7778
if (kx>20) cycle
7879
meth = 'db1sqad'
79-
call db1sqad(tx,fcn,nx,kx,x1,x2,f,iflag,w1_1d)
80+
call db1sqad(tx,bcoef,nx,kx,x1,x2,f,iflag,w1_1d)
8081
else
8182
meth = 'db1fqad'
82-
call db1fqad(test_function,tx,fcn,nx,kx,0_ip,x1,x2,tol,f,iflag,w1_1d)
83+
call db1fqad(test_function,tx,bcoef,nx,kx,0_ip,x1,x2,tol,f,iflag,w1_1d)
8384
end if
8485

8586
! display results:

0 commit comments

Comments
 (0)