V3FIT
gridbicub.f
1  subroutine gridbicub(
2  > x_newgrid,nx_new,y_newgrid,ny_new,f_new,if1,
3  > nx,xpkg,ny,ypkg,fspl,inf3,iwarn,ier)
4 c
5 c regrid a spline function f defined vs. x,y as in xpkg,ypkg
6 c to a new grid, given by x_newgrid, y_newgrid
7 c
8 c set warning flag if the range x_newgrid, y_newgrid
9 c exceeds the range of the original xpkg,ypkg.
10 c
11 c (xpkg,ypkg -- axis data, see genxpkg subroutine)
12 c
13 c input:
14 c
15  real x_newgrid(nx_new) ! new x grid
16  real y_newgrid(ny_new) ! new y grid
17 c
18 c output:
19 c
20  integer if1 ! 1st dimension of f_new
21  real f_new(if1,ny_new) ! f evaluated on this grid
22 c
23 c input:
24 c
25  integer nx ! size of old grid
26  real xpkg(nx,4) ! old grid "package"
27  integer ny ! size of old grid
28  real ypkg(ny,4) ! old grid "package"
29 c
30  integer inf3 ! array dimension
31  real fspl(4,inf3,ny) ! compact spline coefficients of f
32 c
33 c output:
34 c condition codes, =0 for normal exit
35 c
36  integer iwarn ! =1 if new grid points out of range
37  integer ier ! =1 if there is an argument error
38 c
39 c--------------------------------------------
40 c local
41 c
42  real ytmp(nx_new)
43  integer ict(6)
44 c
45  data ict/1,0,0,0,0,0/
46 c
47 c--------------------------------------------
48 c
49  do iy=1,ny_new
50  ytmp=y_newgrid(iy)
51  call vecbicub(ict,nx_new,x_newgrid,ytmp,nx_new,f_new(1,iy),
52  > nx,xpkg,ny,ypkg,fspl,inf3,iwarn,ier)
53  enddo
54 c
55  return
56  end