Multiple-output version of db2ink: interpolates nf functions
on the same grid, with the same knots. The last dimension of fcn
and bcoef is the output index. Evaluate them with db2val
(multiple-output version).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in), | dimension(:) | :: | x |
|
|
| integer(kind=ip), | intent(in) | :: | nx |
Number of abcissae |
||
| real(kind=wp), | intent(in), | dimension(:) | :: | y |
|
|
| integer(kind=ip), | intent(in) | :: | ny |
Number of abcissae |
||
| real(kind=wp), | intent(in), | dimension(:,:,:) | :: | fcn |
|
|
| integer(kind=ip), | intent(in) | :: | kx |
The order of spline pieces in |
||
| integer(kind=ip), | intent(in) | :: | ky |
The order of spline pieces in |
||
| integer(kind=ip), | intent(in) | :: | iknot |
knot sequence flag (see db2ink_default) |
||
| real(kind=wp), | intent(inout), | dimension(:) | :: | tx |
The |
|
| real(kind=wp), | intent(inout), | dimension(:) | :: | ty |
The |
|
| real(kind=wp), | intent(out), | dimension(:,:,:) | :: | bcoef |
|
|
| integer(kind=ip), | intent(out) | :: | iflag |
status flag (see db2ink_default),
or 6001 if |
pure subroutine db2ink_multi(x,nx,y,ny,fcn,kx,ky,iknot,tx,ty,bcoef,iflag) implicit none integer(ip),intent(in) :: nx !! Number of \(x\) abcissae integer(ip),intent(in) :: ny !! Number of \(y\) abcissae integer(ip),intent(in) :: kx !! The order of spline pieces in \(x\) integer(ip),intent(in) :: ky !! The order of spline pieces in \(y\) real(wp),dimension(:),intent(in) :: x !! `(nx)` array of \(x\) abcissae. Must be strictly increasing. real(wp),dimension(:),intent(in) :: y !! `(ny)` array of \(y\) abcissae. Must be strictly increasing. real(wp),dimension(:,:,:),intent(in) :: fcn !! `(nx,ny,nf)` array of function values to interpolate: !! `fcn(i1,i2,j)` is output `j` at grid point !! (`x(i1)`,`y(i2)`) integer(ip),intent(in) :: iknot !! knot sequence flag (see [[db2ink_default]]) real(wp),dimension(:),intent(inout) :: tx !! The `(nx+kx)` knots in the \(x\) direction real(wp),dimension(:),intent(inout) :: ty !! The `(ny+ky)` knots in the \(y\) direction real(wp),dimension(:,:,:),intent(out) :: bcoef !! `(nx,ny,nf)` array of b-spline coefficients integer(ip),intent(out) :: iflag !! status flag (see [[db2ink_default]]), !! or 6001 if `fcn` and `bcoef` do not have the !! same number of outputs (or it is zero) integer(ip) :: nf !! number of outputs integer(ip) :: j !! output index nf = size(fcn,3,kind=ip) if (nf<1_ip .or. size(bcoef,3,kind=ip)/=nf) then iflag = 6001_ip return end if ! the knots are computed (if iknot=0) for the first output, and then reused do j = 1_ip, nf call db2ink_default(x,nx,y,ny,fcn(:,:,j),kx,ky,merge(iknot,1_ip,j==1_ip),& tx,ty,bcoef(:,:,j),iflag) if (iflag/=0_ip) return end do end subroutine db2ink_multi