Skip to content

Commit 619c8a9

Browse files
Merge pull request #90 from jacobwilliams/88-linear-interp-test
Develop
2 parents 09acc8f + aa57b0c commit 619c8a9

File tree

8 files changed

+169
-42
lines changed

8 files changed

+169
-42
lines changed

README.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,15 @@ type(bspline_3d) :: s
7070
s = bspline_3d(x,y,z,fcn,kx,ky,kz,iflag,extrap)
7171
```
7272

73+
## Spline order
74+
75+
The various `k` inputs (i.e., `kx`, `ky`, etc.) specify the spline order for each dimension. The order is the polynomial degree + 1. For example:
76+
77+
* `k=2` : Linear
78+
* `k=3` : Quadratic
79+
* `k=4` : Cubic
80+
* etc.
81+
7382
## Extrapolation
7483

7584
The library optionally supports extrapolation for points outside the range of the coefficients. This is disabled by default (in which case an error code is returned for points outside the bounds). To enable extrapolation, use the optional `extrap` input to the various `db*val` subroutines or the `initialize` methods from the object-oriented interface.
@@ -180,3 +189,10 @@ The latest API documentation can be found [here](https://jacobwilliams.github.io
180189
## License
181190

182191
The bspline-fortran source code and related files and documentation are distributed under a permissive free software [license](https://github.com/jacobwilliams/bspline-fortran/blob/master/LICENSE) (BSD-style).
192+
193+
## See also
194+
195+
* [SPLPAK](https://github.com/jacobwilliams/splpak) Multidimensional least-squares cubic spline fitting
196+
* [FINTERP](https://github.com/jacobwilliams/finterp) Multidimensional Linear Interpolation with Modern Fortran
197+
* [PCHIP](https://github.com/jacobwilliams/PCHIP) Piecewise Cubic Hermite Interpolation.
198+
* [Regridpack](https://github.com/jacobwilliams/regridpack) Linear or cubic interpolation for 1D-4D grids.

fpm.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ auto-tests = true
1414

1515
[dev-dependencies]
1616
pyplot-fortran = { git = "https://github.com/jacobwilliams/pyplot-fortran", tag = "3.3.0" }
17+
finterp = { git = "https://github.com/jacobwilliams/finterp", tag = "1.3.0" }
1718

1819
[library]
1920
source-dir = "src"

src/bspline_sub_module.f90

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@ end function b1fqad_func
5858
end interface
5959
public :: b1fqad_func
6060

61+
integer(ip),parameter,public :: bspline_order_linear = 2_ip !! spline order `k` parameter
62+
!! (for input to the `db*ink` routines)
63+
!! [order = polynomial degree + 1]
6164
integer(ip),parameter,public :: bspline_order_quadratic = 3_ip !! spline order `k` parameter
6265
!! (for input to the `db*ink` routines)
6366
!! [order = polynomial degree + 1]

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: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
!*****************************************************************************************
2+
!>
3+
! Linear interpolation test
4+
5+
program bspline_linear_test
6+
7+
use bspline_module
8+
use bspline_kinds_module, only: wp, ip
9+
use pyplot_module
10+
use linear_interpolation_module
11+
12+
implicit none
13+
14+
integer(ip),parameter :: nx = 10 !! number of points in x
15+
integer(ip),parameter :: nxv = 111 !! number of points to evaluate interpolant
16+
integer(ip),parameter :: iknot = 0 !! automatically select the knots
17+
integer,parameter :: idx = 0 !! compute value for the spline interpolation
18+
19+
real(wp) :: x(nx)
20+
real(wp) :: xval(nxv),fval(nxv),fval_linear(nxv),fval3(nxv),fval4(nxv)
21+
real(wp) :: fcn_1d(nx)
22+
real(wp) :: val,err,errmax
23+
integer(ip) :: i,iflag,inbvx,iloy
24+
integer :: istat !! pyplot-fortran status flag
25+
type(pyplot) :: plt
26+
type(bspline_1d) :: b2, b3, b4
27+
type(linear_interp_1d) :: s1
28+
29+
do i=1,nx
30+
x(i) = real(i-1,wp) * 10.0_wp
31+
fcn_1d(i) = f1(x(i))
32+
end do
33+
do i=1,nxv
34+
xval(i) = real(i-1,wp) - 10
35+
end do
36+
37+
!have to set these before the first evaluate call:
38+
inbvx = 1
39+
iloy = 1
40+
41+
! initialize
42+
call b2%initialize(x,fcn_1d,bspline_order_linear,iflag,extrap=.true.) ! linear
43+
if (iflag/=0) error stop 'Error initializing 1D linear spline: '//get_status_message(iflag)
44+
call b3%initialize(x,fcn_1d,bspline_order_quadratic,iflag,extrap=.true.) ! quadratic
45+
if (iflag/=0) error stop 'Error initializing 1D quadratic spline: '//get_status_message(iflag)
46+
call b4%initialize(x,fcn_1d,bspline_order_cubic,iflag,extrap=.true.) ! cubic
47+
if (iflag/=0) error stop 'Error initializing 1D cubic spline: '//get_status_message(iflag)
48+
call s1%initialize(x,fcn_1d,iflag)
49+
if (iflag/=0) error stop 'Error initializing 1D linear interpolator'
50+
51+
!initialize the plot:
52+
call plt%initialize(grid=.true.,xlabel='x (deg)',ylabel='f(x)',&
53+
title='Linear Test',legend=.true.,figsize=[10,5])
54+
call plt%add_plot(x,fcn_1d,&
55+
label='Function $f(x) = \sin(x)$',&
56+
linestyle='ko',markersize=5,linewidth=2,istat=istat)
57+
58+
errmax = 0.0_wp
59+
do i=1,nxv
60+
call b2%evaluate(xval(i),idx,val,iflag)
61+
fval(i) = val ! save it for plot
62+
if (iflag/=0) error stop 'error evaluating linear spline: '//get_status_message(iflag)
63+
64+
! also compute linear interpolation:
65+
call s1%evaluate(xval(i),val)
66+
fval_linear(i) = val ! linear vector for plot
67+
68+
err = abs(fval(i) - fval_linear(i))
69+
errmax = max(err,errmax)
70+
71+
! also others:
72+
call b3%evaluate(xval(i),idx,fval3(i),iflag)
73+
if (iflag/=0) error stop 'error evaluating quadratic spline: '//get_status_message(iflag)
74+
call b4%evaluate(xval(i),idx,fval4(i),iflag)
75+
if (iflag/=0) error stop 'error evaluating cubic spline: '//get_status_message(iflag)
76+
77+
end do
78+
79+
write(*,*) ''
80+
write(*,*) 'Max difference (spline - linear):', errmax
81+
write(*,*) ''
82+
83+
call plt%add_plot(xval,fval_linear,&
84+
label='Linear Interpolated',&
85+
linestyle='r.',linewidth=1,istat=istat)
86+
call plt%add_plot(xval,fval,&
87+
label='Linear ($k=2$) Spline Interpolated',&
88+
linestyle='r-',linewidth=1,istat=istat)
89+
call plt%add_plot(xval,fval3,&
90+
label='Quadratic ($k=3$) Spline Interpolated',&
91+
linestyle='k.-',linewidth=1,istat=istat)
92+
call plt%add_plot(xval,fval4,&
93+
label='Cubic ($k=4$) Spline Interpolated',&
94+
linestyle='c.-',linewidth=1,istat=istat)
95+
call plt%savefig('bspline_linear_test.png',istat=istat)
96+
97+
contains
98+
99+
real(wp) function f1(x) !! 1d test function
100+
implicit none
101+
real(wp),intent(in) :: x
102+
real(wp),parameter :: a = acos(-1.0_wp)/18.0_wp
103+
f1 = sin(a*x)
104+
end function f1
105+
106+
end program bspline_linear_test

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))

0 commit comments

Comments
 (0)