V3FIT
r8evtricub.f
1  subroutine r8evtricub(xget,yget,zget,x,nx,y,ny,z,nz,
2  > ilinx,iliny,ilinz,
3  > f,inf2,inf3,ict,fval,ier)
4 C
5 C use mktricub to set up spline coefficients...
6 C
7 C evaluate a 3d cubic Spline interpolant on a rectilinear
8 C grid -- this is C2 in all directions.
9 C
10 C this subroutine calls two subroutines:
11 C herm3xyz -- find cell containing (xget,yget,zget)
12 C fvtricub -- evaluate the spline function (w/derivatives if req.)
13 C
14 C input arguments:
15 C ================
16 C
17 !============
18 ! idecl: explicitize implicit INTEGER declarations:
19  IMPLICIT NONE
20  INTEGER, PARAMETER :: R8=selected_real_kind(12,100)
21  INTEGER ny,nz,inf2,inf3,nx
22 !============
23  real*8 xget,yget,zget ! target of this interpolation
24  real*8 x(nx) ! ordered x grid
25  real*8 y(ny) ! ordered y grid
26  real*8 z(nz) ! ordered z grid
27  integer ilinx ! ilinx=1 => assume x evenly spaced
28  integer iliny ! iliny=1 => assume y evenly spaced
29  integer ilinz ! ilinz=1 => assume z evenly spaced
30 C
31  real*8 f(0:7,inf2,inf3,nz) ! function data
32 C
33 C f 2nd dimension inf2 must be .ge. nx; 3rd dim inf3 .ge. ny
34 C contents of f:
35 C
36 C f(0,i,j,k) = f @ x(i),y(j),z(k)
37 C f(1,i,j,k) = d2f/dx2 @ x(i),y(j),z(k)
38 C f(2,i,j,k) = d2f/dy2 @ x(i),y(j),z(k)
39 C f(3,i,j,k) = d2f/dz2 @ x(i),y(j),z(k)
40 C f(4,i,j,k) = d4f/dx2dy2 @ x(i),y(j),z(k)
41 C f(5,i,j,k) = d4f/dx2dz2 @ x(i),y(j),z(k)
42 C f(6,i,j,k) = d4f/dy2dz2 @ x(i),y(j),z(k)
43 C f(7,i,j,k) = d6f/dx2dy2dz2 @ x(i),y(j),z(k)
44 C
45  integer ict(10) ! code specifying output desired
46 C
47 C ict(1)=1 -- return f (0, don't)
48 C ict(2)=1 -- return df/dx (0, don't)
49 C ict(3)=1 -- return df/dy (0, don't)
50 C ict(4)=1 -- return df/dz (0, don't)
51 C ict(5)=1 -- return d2f/dx2 (0, don't)
52 C ict(6)=1 -- return d2f/dy2 (0, don't)
53 C ict(7)=1 -- return d2f/dz2 (0, don't)
54 C ict(8)=1 -- return d2f/dxdy (0, don't)
55 C ict(9)=1 -- return d2f/dxdz (0, don't)
56 C ict(10)=1-- return d2f/dydz (0, don't)
57 c
58 c (new dmc Dec 2005 -- higher derivatives available)
59 c ict(1)=3 --> 3rd derivative, .le.2 diff. in any coordinate
60 c ict(2:8) select: fxxy fxxz fxyy fxyz fxzz fyyz fyzz
61 c ->note ict(1)=3, ict(5)=1 gives fxyz = d3f/dxdydz
62 c ict(1)=-3 --> 3rd derivative, 3 in one coordinate
63 c ict(2:4) select: fxxx fyyy fzzz
64 c ict(1)=4 --> 3rd derivative, .le.2 diff. in any coordinate
65 c ict(2:7) select: fxxyy fxxyz fxxzz fxyyz fxyzz fyyzz
66 c ict(1)=-4 --> 3rd derivative, 3 in one coordinate
67 c ict(2:7) select: fxxxy fxxxz fxyyy fxzzz fyyyz fyzzz
68 c ict(1)=5 --> 3rd derivative, .le.2 diff. in any coordinate
69 c ict(2:4) select: fxxyyz fxxyzz fxyyzz
70 c ict(1)=-5 --> 3rd derivative, 3 in one coordinate
71 c ict(2:10) select: fxxxyy fxxxyz fxxxzz fxxyyy fxxzzz
72 c fxyyyz fxyzzz fyyyzz fzzzyy
73 c ict(1)=6 --> 3rd derivative, .le.2 diff. in any coordinate
74 c fxxyyzz
75 c ict(1)=-6 --> 3rd derivative, 3 in one coordinate
76 c ict(2:10) select: fxxxyyy fxxxyyz fxxxyzz fxxxyyz
77 c fxxyyyz fxxyzzz fxyyyzz fxyyzzz fyyyzzz
78 c ict(1)=-7 --> 7th derivative
79 c ict(2:7) select: fxxxyyyz fxxxyyzz fxxxyzzz
80 c fxxyyyzz fxxyyzzz fxyyyzzz
81 c ict(1)=-8 --> 8th derivative
82 c ict(2:4) select: fxxxyyyzz fxxxyyzzz fxxyyyzzz
83 c ict(1)=-9 --> 9th derivative: fxxxyyyzzz
84 c
85 C
86 C output arguments:
87 C =================
88 C
89  real*8 fval(*) ! output data
90  integer ier ! error code =0 ==> no error
91 C
92 C fval(1) receives the first output (depends on ict(...) spec)
93 C fval(2) receives the second output (depends on ict(...) spec)
94 C fval(3) receives the third output (depends on ict(...) spec)
95 C fval(4) receives the 4th output (depends on ict(...) spec)
96 C fval(5-10) receive 5th thru 10th outputs (if required by ict(...) spec)
97 C
98 C examples:
99 C on input ict = [1,1,1,1,0,0,0,0,0,0,0]
100 C on output fval= [f,df/dx,df/dy,df/dz]
101 C
102 C on input ict = [1,0,0,0,0,0,0,0,0,0,0]
103 C on output fval= [f] ... elements 2-10 never referenced
104 C
105 C on input ict = [0,1,1,0,0,0,0,0,0,0,0]
106 C on output fval= [df/dx,df/dy] ... elements 3-10 never referenced
107 C
108 C on input ict = [0,0,0,0,1,0,0,0,0,0,0]
109 C on output fval= [d2f/dx2] ... elements 2-10 never referenced.
110 C
111 C ier -- completion code: 0 means OK
112 C-------------------
113 C local:
114 C
115  integer i(1),j(1),k(1) ! cell indices
116 C
117 C normalized displacement from (x(i),y(j),z(k)) corner of cell.
118 C xparam=0 @x(i) xparam=1 @x(i+1)
119 C yparam=0 @y(j) yparam=1 @y(j+1)
120 C zparam=0 @z(k) zparam=1 @z(k+1)
121 C
122  real*8 xparam(1),yparam(1),zparam(1)
123 C
124 C cell dimensions and
125 C inverse cell dimensions hxi = 1/(x(i+1)-x(i)), hyi = 1/(y(j+1)-y(j))
126 C
127  real*8 hx(1),hy(1),hz(1)
128  real*8 hxi(1),hyi(1),hzi(1)
129 C
130 C 0 .le. xparam .le. 1
131 C 0 .le. yparam .le. 1
132 C 0 .le. zparam .le. 1
133 C
134 C---------------------------------------------------------------------
135 C use lookup routine as in Hermite interpolation
136 C
137  i(1)=0
138  j(1)=0
139  k(1)=0
140  call r8herm3xyz(xget,yget,zget,x,nx,y,ny,z,nz,ilinx,iliny,ilinz,
141  > i(1),j(1),k(1),xparam(1),yparam(1),zparam(1),
142  > hx(1),hxi(1),hy(1),hyi(1),hz(1),hzi(1),ier)
143  if(ier.ne.0) return
144 c
145  call r8fvtricub(ict,1,1,
146  > fval,i,j,k,xparam,yparam,zparam,
147  > hx,hxi,hy,hyi,hz,hzi,
148  > f,inf2,inf3,nz)
149 C
150  return
151  end
152 C---------------------------------------------------------------------
153 C evaluate C1 cubic Hermite function interpolation -- 3d fcn
154 C --vectorized-- dmc 10 Feb 1999
155 C
156  subroutine r8fvtricub(ict,ivec,ivecd,
157  > fval,ii,jj,kk,xparam,yparam,zparam,
158  > hx,hxi,hy,hyi,hz,hzi,
159  > fin,inf2,inf3,nz)
160 C
161 C use mktricub to set up spline coefficients...
162 C
163 !============
164 ! idecl: explicitize implicit INTEGER declarations:
165  IMPLICIT NONE
166  INTEGER, PARAMETER :: R8=selected_real_kind(12,100)
167  INTEGER inf3,nz,inf2,iadr,i,j,k
168 !============
169 ! idecl: explicitize implicit REAL declarations:
170  real*8 z36th,z216th,xp,xpi,xp2,xpi2,cx,cxi,hx2,yp,ypi,yp2
171  real*8 ypi2,cy,cyi,hy2,zp,zpi,zp2,zpi2,cz,czi,hz2,cxd,cxdi
172  real*8 cyd,cydi,czd,czdi
173 !============
174  integer ict(10) ! requested output control
175  integer ivec ! vector length
176  integer ivecd ! vector dimension (1st dim of fval)
177 C
178  integer ii(ivec),jj(ivec),kk(ivec) ! target cells (i,j,k)
179  real*8 xparam(ivec),yparam(ivec),zparam(ivec)
180  ! normalized displacements from (i,j,k) corners
181 C
182  real*8 hx(ivec),hy(ivec),hz(ivec) ! grid spacing, and
183  real*8 hxi(ivec),hyi(ivec),hzi(ivec) ! inverse grid spacing
184  ! 1/(x(i+1)-x(i)) & 1/(y(j+1)-y(j)) & 1/(z(k+1)-z(i))
185 C
186  real*8 fin(0:7,inf2,inf3,nz) ! interpolant data (cf "evtricub")
187 C
188  real*8 fval(ivecd,*) ! output returned
189 C
190 C for detailed description of fin, ict and fval see subroutine evtricub
191 C comments. Note ict is not vectorized; the same output
192 C is expected to be returned for all input vector data points.
193 C
194 C note that the index inputs ii,jj,kk and parameter inputs
195 C xparam,yparam,zparam,hx,hxi,hy,hyi,hz,hzi are vectorized, and the
196 C output array fval has a vector ** 1st dimension ** whose
197 C size must be given as a separate argument
198 C
199 C to use this routine in scalar mode, pass in ivec=ivecd=1
200 C
201 C---------------
202 C
203  integer v
204 C
205  REAL*8 sum
206  REAL*8, parameter :: sixth = 0.166666666666666667_r8
207 C
208 C---------------
209 C
210  z36th=sixth*sixth
211  z216th=sixth*sixth*sixth
212 C
213  iadr=0
214  if(abs(ict(1)).le.2) then
215 C
216 C 0, 1st, 2nd derivatives...
217 C
218 C get desired values:
219 C
220  if(ict(1).eq.1) then
221 C
222 C function value...
223 C
224  iadr=iadr+1
225  do v=1,ivec
226  i=ii(v)
227  j=jj(v)
228  k=kk(v)
229 C
230 C ...in x direction
231 C
232  xp=xparam(v)
233  xpi=1.0_r8-xp
234  xp2=xp*xp
235  xpi2=xpi*xpi
236 C
237  cx=xp*(xp2-1.0_r8)
238  cxi=xpi*(xpi2-1.0_r8)
239  hx2=hx(v)*hx(v)
240 C
241 C ...and in y direction
242 C
243  yp=yparam(v)
244  ypi=1.0_r8-yp
245  yp2=yp*yp
246  ypi2=ypi*ypi
247 C
248  cy=yp*(yp2-1.0_r8)
249  cyi=ypi*(ypi2-1.0_r8)
250  hy2=hy(v)*hy(v)
251 C
252 C ...and in z direction
253 C
254  zp=zparam(v)
255  zpi=1.0_r8-zp
256  zp2=zp*zp
257  zpi2=zpi*zpi
258 C
259  cz=zp*(zp2-1.0_r8)
260  czi=zpi*(zpi2-1.0_r8)
261  hz2=hz(v)*hz(v)
262 C
263  sum=(
264  > zpi*(
265  > xpi*(ypi*fin(0,i,j,k) +yp*fin(0,i,j+1,k))+
266  > xp*(ypi*fin(0,i+1,j,k)+yp*fin(0,i+1,j+1,k)))
267  > +zp*(
268  > xpi*(ypi*fin(0,i,j,k+1) +yp*fin(0,i,j+1,k+1))+
269  > xp*(ypi*fin(0,i+1,j,k+1)+yp*fin(0,i+1,j+1,k+1))))
270 C
271  sum=sum+sixth*hx2*(
272  > zpi*(
273  > cxi*(ypi*fin(1,i,j,k) +yp*fin(1,i,j+1,k))+
274  > cx*(ypi*fin(1,i+1,j,k)+yp*fin(1,i+1,j+1,k)))
275  > +zp*(
276  > cxi*(ypi*fin(1,i,j,k+1) +yp*fin(1,i,j+1,k+1))+
277  > cx*(ypi*fin(1,i+1,j,k+1)+yp*fin(1,i+1,j+1,k+1))))
278 C
279  sum=sum+sixth*hy2*(
280  > zpi*(
281  > xpi*(cyi*fin(2,i,j,k) +cy*fin(2,i,j+1,k))+
282  > xp*(cyi*fin(2,i+1,j,k)+cy*fin(2,i+1,j+1,k)))
283  > +zp*(
284  > xpi*(cyi*fin(2,i,j,k+1) +cy*fin(2,i,j+1,k+1))+
285  > xp*(cyi*fin(2,i+1,j,k+1)+cy*fin(2,i+1,j+1,k+1))))
286 C
287  sum=sum+sixth*hz2*(
288  > czi*(
289  > xpi*(ypi*fin(3,i,j,k) +yp*fin(3,i,j+1,k))+
290  > xp*(ypi*fin(3,i+1,j,k)+yp*fin(3,i+1,j+1,k)))
291  > +cz*(
292  > xpi*(ypi*fin(3,i,j,k+1) +yp*fin(3,i,j+1,k+1))+
293  > xp*(ypi*fin(3,i+1,j,k+1)+yp*fin(3,i+1,j+1,k+1))))
294 C
295  sum=sum+z36th*hx2*hy2*(
296  > zpi*(
297  > cxi*(cyi*fin(4,i,j,k) +cy*fin(4,i,j+1,k))+
298  > cx*(cyi*fin(4,i+1,j,k)+cy*fin(4,i+1,j+1,k)))
299  > +zp*(
300  > cxi*(cyi*fin(4,i,j,k+1) +cy*fin(4,i,j+1,k+1))+
301  > cx*(cyi*fin(4,i+1,j,k+1)+cy*fin(4,i+1,j+1,k+1))))
302 C
303  sum=sum+z36th*hx2*hz2*(
304  > czi*(
305  > cxi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
306  > cx*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
307  > +cz*(
308  > cxi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
309  > cx*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
310 C
311  sum=sum+z36th*hy2*hz2*(
312  > czi*(
313  > xpi*(cyi*fin(6,i,j,k) +cy*fin(6,i,j+1,k))+
314  > xp*(cyi*fin(6,i+1,j,k)+cy*fin(6,i+1,j+1,k)))
315  > +cz*(
316  > xpi*(cyi*fin(6,i,j,k+1) +cy*fin(6,i,j+1,k+1))+
317  > xp*(cyi*fin(6,i+1,j,k+1)+cy*fin(6,i+1,j+1,k+1))))
318 C
319  sum=sum+z216th*hx2*hy2*hz2*(
320  > czi*(
321  > cxi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
322  > cx*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
323  > +cz*(
324  > cxi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
325  > cx*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
326 C
327  fval(v,iadr)=sum
328  enddo
329  endif
330 C
331  if(ict(2).eq.1) then
332 C
333 C df/dx:
334 C
335  iadr=iadr+1
336  do v=1,ivec
337  i=ii(v)
338  j=jj(v)
339  k=kk(v)
340 C
341 C ...in x direction
342 C
343  xp=xparam(v)
344  xpi=1.0_r8-xp
345  xp2=xp*xp
346  xpi2=xpi*xpi
347 
348  cxd=3.0_r8*xp2-1.0_r8
349  cxdi=-3.0_r8*xpi2+1.0_r8
350 C
351 C ...and in y direction
352 C
353  yp=yparam(v)
354  ypi=1.0_r8-yp
355  yp2=yp*yp
356  ypi2=ypi*ypi
357 C
358  cy=yp*(yp2-1.0_r8)
359  cyi=ypi*(ypi2-1.0_r8)
360  hy2=hy(v)*hy(v)
361 C
362 C ...and in z direction
363 C
364  zp=zparam(v)
365  zpi=1.0_r8-zp
366  zp2=zp*zp
367  zpi2=zpi*zpi
368 C
369  cz=zp*(zp2-1.0_r8)
370  czi=zpi*(zpi2-1.0_r8)
371  hz2=hz(v)*hz(v)
372 C
373  sum=hxi(v)*(
374  > zpi*(
375  > -(ypi*fin(0,i,j,k) +yp*fin(0,i,j+1,k))
376  > +(ypi*fin(0,i+1,j,k)+yp*fin(0,i+1,j+1,k)))
377  > +zp*(
378  > -(ypi*fin(0,i,j,k+1) +yp*fin(0,i,j+1,k+1))
379  > +(ypi*fin(0,i+1,j,k+1)+yp*fin(0,i+1,j+1,k+1))))
380 C
381  sum=sum+sixth*hx(v)*(
382  > zpi*(
383  > cxdi*(ypi*fin(1,i,j,k) +yp*fin(1,i,j+1,k))+
384  > cxd*(ypi*fin(1,i+1,j,k)+yp*fin(1,i+1,j+1,k)))
385  > +zp*(
386  > cxdi*(ypi*fin(1,i,j,k+1) +yp*fin(1,i,j+1,k+1))+
387  > cxd*(ypi*fin(1,i+1,j,k+1)+yp*fin(1,i+1,j+1,k+1))))
388 C
389  sum=sum+sixth*hxi(v)*hy2*(
390  > zpi*(
391  > -(cyi*fin(2,i,j,k) +cy*fin(2,i,j+1,k))
392  > +(cyi*fin(2,i+1,j,k)+cy*fin(2,i+1,j+1,k)))
393  > +zp*(
394  > -(cyi*fin(2,i,j,k+1) +cy*fin(2,i,j+1,k+1))
395  > +(cyi*fin(2,i+1,j,k+1)+cy*fin(2,i+1,j+1,k+1))))
396 C
397  sum=sum+sixth*hxi(v)*hz2*(
398  > czi*(
399  > -(ypi*fin(3,i,j,k) +yp*fin(3,i,j+1,k))
400  > +(ypi*fin(3,i+1,j,k)+yp*fin(3,i+1,j+1,k)))
401  > +cz*(
402  > -(ypi*fin(3,i,j,k+1) +yp*fin(3,i,j+1,k+1))
403  > +(ypi*fin(3,i+1,j,k+1)+yp*fin(3,i+1,j+1,k+1))))
404 C
405  sum=sum+z36th*hx(v)*hy2*(
406  > zpi*(
407  > cxdi*(cyi*fin(4,i,j,k) +cy*fin(4,i,j+1,k))+
408  > cxd*(cyi*fin(4,i+1,j,k)+cy*fin(4,i+1,j+1,k)))
409  > +zp*(
410  > cxdi*(cyi*fin(4,i,j,k+1) +cy*fin(4,i,j+1,k+1))+
411  > cxd*(cyi*fin(4,i+1,j,k+1)+cy*fin(4,i+1,j+1,k+1))))
412 C
413  sum=sum+z36th*hx(v)*hz2*(
414  > czi*(
415  > cxdi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
416  > cxd*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
417  > +cz*(
418  > cxdi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
419  > cxd*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
420 C
421  sum=sum+z36th*hxi(v)*hy2*hz2*(
422  > czi*(
423  > -(cyi*fin(6,i,j,k) +cy*fin(6,i,j+1,k))
424  > +(cyi*fin(6,i+1,j,k)+cy*fin(6,i+1,j+1,k)))
425  > +cz*(
426  > -(cyi*fin(6,i,j,k+1) +cy*fin(6,i,j+1,k+1))
427  > +(cyi*fin(6,i+1,j,k+1)+cy*fin(6,i+1,j+1,k+1))))
428 C
429  sum=sum+z216th*hx(v)*hy2*hz2*(
430  > czi*(
431  > cxdi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
432  > cxd*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
433  > +cz*(
434  > cxdi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
435  > cxd*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
436 C
437  fval(v,iadr)=sum
438  enddo
439  endif
440 C
441  if(ict(3).eq.1) then
442 C
443 C df/dy:
444 C
445  iadr=iadr+1
446  do v=1,ivec
447  i=ii(v)
448  j=jj(v)
449  k=kk(v)
450 C
451 C ...in x direction
452 C
453  xp=xparam(v)
454  xpi=1.0_r8-xp
455  xp2=xp*xp
456  xpi2=xpi*xpi
457 C
458  cx=xp*(xp2-1.0_r8)
459  cxi=xpi*(xpi2-1.0_r8)
460  hx2=hx(v)*hx(v)
461 C
462 C ...and in y direction
463 C
464  yp=yparam(v)
465  ypi=1.0_r8-yp
466  yp2=yp*yp
467  ypi2=ypi*ypi
468 
469  cyd=3.0_r8*yp2-1.0_r8
470  cydi=-3.0_r8*ypi2+1.0_r8
471 C
472 C ...and in z direction
473 C
474  zp=zparam(v)
475  zpi=1.0_r8-zp
476  zp2=zp*zp
477  zpi2=zpi*zpi
478 C
479  cz=zp*(zp2-1.0_r8)
480  czi=zpi*(zpi2-1.0_r8)
481  hz2=hz(v)*hz(v)
482 C
483  sum=hyi(v)*(
484  > zpi*(
485  > xpi*(-fin(0,i,j,k) +fin(0,i,j+1,k))+
486  > xp*(-fin(0,i+1,j,k)+fin(0,i+1,j+1,k)))
487  > +zp*(
488  > xpi*(-fin(0,i,j,k+1) +fin(0,i,j+1,k+1))+
489  > xp*(-fin(0,i+1,j,k+1)+fin(0,i+1,j+1,k+1))))
490 C
491  sum=sum+sixth*hyi(v)*hx2*(
492  > zpi*(
493  > cxi*(-fin(1,i,j,k) +fin(1,i,j+1,k))+
494  > cx*(-fin(1,i+1,j,k)+fin(1,i+1,j+1,k)))
495  > +zp*(
496  > cxi*(-fin(1,i,j,k+1) +fin(1,i,j+1,k+1))+
497  > cx*(-fin(1,i+1,j,k+1)+fin(1,i+1,j+1,k+1))))
498 C
499  sum=sum+sixth*hy(v)*(
500  > zpi*(
501  > xpi*(cydi*fin(2,i,j,k) +cyd*fin(2,i,j+1,k))+
502  > xp*(cydi*fin(2,i+1,j,k)+cyd*fin(2,i+1,j+1,k)))
503  > +zp*(
504  > xpi*(cydi*fin(2,i,j,k+1) +cyd*fin(2,i,j+1,k+1))+
505  > xp*(cydi*fin(2,i+1,j,k+1)+cyd*fin(2,i+1,j+1,k+1))))
506 C
507  sum=sum+sixth*hyi(v)*hz2*(
508  > czi*(
509  > xpi*(-fin(3,i,j,k) +fin(3,i,j+1,k))+
510  > xp*(-fin(3,i+1,j,k)+fin(3,i+1,j+1,k)))
511  > +cz*(
512  > xpi*(-fin(3,i,j,k+1) +fin(3,i,j+1,k+1))+
513  > xp*(-fin(3,i+1,j,k+1)+fin(3,i+1,j+1,k+1))))
514 C
515  sum=sum+z36th*hx2*hy(v)*(
516  > zpi*(
517  > cxi*(cydi*fin(4,i,j,k) +cyd*fin(4,i,j+1,k))+
518  > cx*(cydi*fin(4,i+1,j,k)+cyd*fin(4,i+1,j+1,k)))
519  > +zp*(
520  > cxi*(cydi*fin(4,i,j,k+1) +cyd*fin(4,i,j+1,k+1))+
521  > cx*(cydi*fin(4,i+1,j,k+1)+cyd*fin(4,i+1,j+1,k+1))))
522 C
523  sum=sum+z36th*hyi(v)*hx2*hz2*(
524  > czi*(
525  > cxi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
526  > cx*(-fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
527  > +cz*(
528  > cxi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
529  > cx*(-fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
530 C
531  sum=sum+z36th*hy(v)*hz2*(
532  > czi*(
533  > xpi*(cydi*fin(6,i,j,k) +cyd*fin(6,i,j+1,k))+
534  > xp*(cydi*fin(6,i+1,j,k)+cyd*fin(6,i+1,j+1,k)))
535  > +cz*(
536  > xpi*(cydi*fin(6,i,j,k+1) +cyd*fin(6,i,j+1,k+1))+
537  > xp*(cydi*fin(6,i+1,j,k+1)+cyd*fin(6,i+1,j+1,k+1))))
538 C
539  sum=sum+z216th*hx2*hy(v)*hz2*(
540  > czi*(
541  > cxi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
542  > cx*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
543  > +cz*(
544  > cxi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
545  > cx*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
546 C
547  fval(v,iadr)=sum
548  enddo
549  endif
550 C
551  if(ict(4).eq.1) then
552 C
553 C df/dz:
554 C
555  iadr=iadr+1
556  do v=1,ivec
557  i=ii(v)
558  j=jj(v)
559  k=kk(v)
560 C
561 C ...in x direction
562 C
563  xp=xparam(v)
564  xpi=1.0_r8-xp
565  xp2=xp*xp
566  xpi2=xpi*xpi
567 C
568  cx=xp*(xp2-1.0_r8)
569  cxi=xpi*(xpi2-1.0_r8)
570  hx2=hx(v)*hx(v)
571 C
572 C ...and in y direction
573 C
574  yp=yparam(v)
575  ypi=1.0_r8-yp
576  yp2=yp*yp
577  ypi2=ypi*ypi
578 C
579  cy=yp*(yp2-1.0_r8)
580  cyi=ypi*(ypi2-1.0_r8)
581  hy2=hy(v)*hy(v)
582 C
583 C ...and in z direction
584 C
585  zp=zparam(v)
586  zpi=1.0_r8-zp
587  zp2=zp*zp
588  zpi2=zpi*zpi
589 
590  czd=3.0_r8*zp2-1.0_r8
591  czdi=-3.0_r8*zpi2+1.0_r8
592 C
593  sum=hzi(v)*(
594  > -(
595  > xpi*(ypi*fin(0,i,j,k) +yp*fin(0,i,j+1,k))+
596  > xp*(ypi*fin(0,i+1,j,k)+yp*fin(0,i+1,j+1,k)))
597  > +(
598  > xpi*(ypi*fin(0,i,j,k+1) +yp*fin(0,i,j+1,k+1))+
599  > xp*(ypi*fin(0,i+1,j,k+1)+yp*fin(0,i+1,j+1,k+1))))
600 C
601  sum=sum+sixth*hx2*hzi(v)*(
602  > -(
603  > cxi*(ypi*fin(1,i,j,k) +yp*fin(1,i,j+1,k))+
604  > cx*(ypi*fin(1,i+1,j,k)+yp*fin(1,i+1,j+1,k)))
605  > +(
606  > cxi*(ypi*fin(1,i,j,k+1) +yp*fin(1,i,j+1,k+1))+
607  > cx*(ypi*fin(1,i+1,j,k+1)+yp*fin(1,i+1,j+1,k+1))))
608 C
609  sum=sum+sixth*hy2*hzi(v)*(
610  > -(
611  > xpi*(cyi*fin(2,i,j,k) +cy*fin(2,i,j+1,k))+
612  > xp*(cyi*fin(2,i+1,j,k)+cy*fin(2,i+1,j+1,k)))
613  > +(
614  > xpi*(cyi*fin(2,i,j,k+1) +cy*fin(2,i,j+1,k+1))+
615  > xp*(cyi*fin(2,i+1,j,k+1)+cy*fin(2,i+1,j+1,k+1))))
616 C
617  sum=sum+sixth*hz(v)*(
618  > czdi*(
619  > xpi*(ypi*fin(3,i,j,k) +yp*fin(3,i,j+1,k))+
620  > xp*(ypi*fin(3,i+1,j,k)+yp*fin(3,i+1,j+1,k)))
621  > +czd*(
622  > xpi*(ypi*fin(3,i,j,k+1) +yp*fin(3,i,j+1,k+1))+
623  > xp*(ypi*fin(3,i+1,j,k+1)+yp*fin(3,i+1,j+1,k+1))))
624 C
625  sum=sum+z36th*hx2*hy2*hzi(v)*(
626  > -(
627  > cxi*(cyi*fin(4,i,j,k) +cy*fin(4,i,j+1,k))+
628  > cx*(cyi*fin(4,i+1,j,k)+cy*fin(4,i+1,j+1,k)))
629  > +(
630  > cxi*(cyi*fin(4,i,j,k+1) +cy*fin(4,i,j+1,k+1))+
631  > cx*(cyi*fin(4,i+1,j,k+1)+cy*fin(4,i+1,j+1,k+1))))
632 C
633  sum=sum+z36th*hx2*hz(v)*(
634  > czdi*(
635  > cxi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
636  > cx*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
637  > +czd*(
638  > cxi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
639  > cx*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
640 C
641  sum=sum+z36th*hy2*hz(v)*(
642  > czdi*(
643  > xpi*(cyi*fin(6,i,j,k) +cy*fin(6,i,j+1,k))+
644  > xp*(cyi*fin(6,i+1,j,k)+cy*fin(6,i+1,j+1,k)))
645  > +czd*(
646  > xpi*(cyi*fin(6,i,j,k+1) +cy*fin(6,i,j+1,k+1))+
647  > xp*(cyi*fin(6,i+1,j,k+1)+cy*fin(6,i+1,j+1,k+1))))
648 C
649  sum=sum+z216th*hx2*hy2*hz(v)*(
650  > czdi*(
651  > cxi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
652  > cx*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
653  > +czd*(
654  > cxi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
655  > cx*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
656 C
657  fval(v,iadr)=sum
658  enddo
659  endif
660 C
661  if(ict(5).eq.1) then
662 C
663 C d2f/dx2:
664 C
665  iadr=iadr+1
666  do v=1,ivec
667  i=ii(v)
668  j=jj(v)
669  k=kk(v)
670 C
671 C ...in x direction
672 C
673  xp=xparam(v)
674  xpi=1.0_r8-xp
675 C
676 C ...and in y direction
677 C
678  yp=yparam(v)
679  ypi=1.0_r8-yp
680  yp2=yp*yp
681  ypi2=ypi*ypi
682 C
683  cy=yp*(yp2-1.0_r8)
684  cyi=ypi*(ypi2-1.0_r8)
685  hy2=hy(v)*hy(v)
686 C
687 C ...and in z direction
688 C
689  zp=zparam(v)
690  zpi=1.0_r8-zp
691  zp2=zp*zp
692  zpi2=zpi*zpi
693 C
694  cz=zp*(zp2-1.0_r8)
695  czi=zpi*(zpi2-1.0_r8)
696  hz2=hz(v)*hz(v)
697 C
698  sum=(
699  > zpi*(
700  > xpi*(ypi*fin(1,i,j,k) +yp*fin(1,i,j+1,k))+
701  > xp*(ypi*fin(1,i+1,j,k)+yp*fin(1,i+1,j+1,k)))
702  > +zp*(
703  > xpi*(ypi*fin(1,i,j,k+1) +yp*fin(1,i,j+1,k+1))+
704  > xp*(ypi*fin(1,i+1,j,k+1)+yp*fin(1,i+1,j+1,k+1))))
705 C
706  sum=sum+sixth*hy2*(
707  > zpi*(
708  > xpi*(cyi*fin(4,i,j,k) +cy*fin(4,i,j+1,k))+
709  > xp*(cyi*fin(4,i+1,j,k)+cy*fin(4,i+1,j+1,k)))
710  > +zp*(
711  > xpi*(cyi*fin(4,i,j,k+1) +cy*fin(4,i,j+1,k+1))+
712  > xp*(cyi*fin(4,i+1,j,k+1)+cy*fin(4,i+1,j+1,k+1))))
713 C
714  sum=sum+sixth*hz2*(
715  > czi*(
716  > xpi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
717  > xp*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
718  > +cz*(
719  > xpi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
720  > xp*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
721 C
722  sum=sum+z36th*hy2*hz2*(
723  > czi*(
724  > xpi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
725  > xp*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
726  > +cz*(
727  > xpi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
728  > xp*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
729 C
730  fval(v,iadr)=sum
731  enddo
732  endif
733 C
734  if(ict(6).eq.1) then
735 C
736 C d2f/dy2:
737 C
738  iadr=iadr+1
739  do v=1,ivec
740  i=ii(v)
741  j=jj(v)
742  k=kk(v)
743 C
744 C ...in x direction
745 C
746  xp=xparam(v)
747  xpi=1.0_r8-xp
748  xp2=xp*xp
749  xpi2=xpi*xpi
750 C
751  cx=xp*(xp2-1.0_r8)
752  cxi=xpi*(xpi2-1.0_r8)
753  hx2=hx(v)*hx(v)
754 C
755 C ...and in y direction
756 C
757  yp=yparam(v)
758  ypi=1.0_r8-yp
759 C
760 C ...and in z direction
761 C
762  zp=zparam(v)
763  zpi=1.0_r8-zp
764  zp2=zp*zp
765  zpi2=zpi*zpi
766 C
767  cz=zp*(zp2-1.0_r8)
768  czi=zpi*(zpi2-1.0_r8)
769  hz2=hz(v)*hz(v)
770 C
771  sum=(
772  > zpi*(
773  > xpi*(ypi*fin(2,i,j,k) +yp*fin(2,i,j+1,k))+
774  > xp*(ypi*fin(2,i+1,j,k)+yp*fin(2,i+1,j+1,k)))
775  > +zp*(
776  > xpi*(ypi*fin(2,i,j,k+1) +yp*fin(2,i,j+1,k+1))+
777  > xp*(ypi*fin(2,i+1,j,k+1)+yp*fin(2,i+1,j+1,k+1))))
778 C
779  sum=sum+sixth*hx2*(
780  > zpi*(
781  > cxi*(ypi*fin(4,i,j,k) +yp*fin(4,i,j+1,k))+
782  > cx*(ypi*fin(4,i+1,j,k)+yp*fin(4,i+1,j+1,k)))
783  > +zp*(
784  > cxi*(ypi*fin(4,i,j,k+1) +yp*fin(4,i,j+1,k+1))+
785  > cx*(ypi*fin(4,i+1,j,k+1)+yp*fin(4,i+1,j+1,k+1))))
786 C
787  sum=sum+sixth*hz2*(
788  > czi*(
789  > xpi*(ypi*fin(6,i,j,k) +yp*fin(6,i,j+1,k))+
790  > xp*(ypi*fin(6,i+1,j,k)+yp*fin(6,i+1,j+1,k)))
791  > +cz*(
792  > xpi*(ypi*fin(6,i,j,k+1) +yp*fin(6,i,j+1,k+1))+
793  > xp*(ypi*fin(6,i+1,j,k+1)+yp*fin(6,i+1,j+1,k+1))))
794 C
795  sum=sum+z36th*hx2*hz2*(
796  > czi*(
797  > cxi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
798  > cx*(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
799  > +cz*(
800  > cxi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
801  > cx*(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
802 C
803  fval(v,iadr)=sum
804  enddo
805  endif
806 C
807  if(ict(7).eq.1) then
808 C
809 C d2f/dz2:
810 C
811  iadr=iadr+1
812  do v=1,ivec
813  i=ii(v)
814  j=jj(v)
815  k=kk(v)
816 C
817 C ...in x direction
818 C
819  xp=xparam(v)
820  xpi=1.0_r8-xp
821  xp2=xp*xp
822  xpi2=xpi*xpi
823 C
824  cx=xp*(xp2-1.0_r8)
825  cxi=xpi*(xpi2-1.0_r8)
826  hx2=hx(v)*hx(v)
827 C
828 C ...and in y direction
829 C
830  yp=yparam(v)
831  ypi=1.0_r8-yp
832  yp2=yp*yp
833  ypi2=ypi*ypi
834 C
835  cy=yp*(yp2-1.0_r8)
836  cyi=ypi*(ypi2-1.0_r8)
837  hy2=hy(v)*hy(v)
838 C
839 C ...and in z direction
840 C
841  zp=zparam(v)
842  zpi=1.0_r8-zp
843 C
844  sum=(
845  > zpi*(
846  > xpi*(ypi*fin(3,i,j,k) +yp*fin(3,i,j+1,k))+
847  > xp*(ypi*fin(3,i+1,j,k)+yp*fin(3,i+1,j+1,k)))
848  > +zp*(
849  > xpi*(ypi*fin(3,i,j,k+1) +yp*fin(3,i,j+1,k+1))+
850  > xp*(ypi*fin(3,i+1,j,k+1)+yp*fin(3,i+1,j+1,k+1))))
851 C
852  sum=sum+sixth*hx2*(
853  > zpi*(
854  > cxi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
855  > cx*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
856  > +zp*(
857  > cxi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
858  > cx*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
859 C
860  sum=sum+sixth*hy2*(
861  > zpi*(
862  > xpi*(cyi*fin(6,i,j,k) +cy*fin(6,i,j+1,k))+
863  > xp*(cyi*fin(6,i+1,j,k)+cy*fin(6,i+1,j+1,k)))
864  > +zp*(
865  > xpi*(cyi*fin(6,i,j,k+1) +cy*fin(6,i,j+1,k+1))+
866  > xp*(cyi*fin(6,i+1,j,k+1)+cy*fin(6,i+1,j+1,k+1))))
867 C
868  sum=sum+z36th*hx2*hy2*(
869  > zpi*(
870  > cxi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
871  > cx*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
872  > +zp*(
873  > cxi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
874  > cx*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
875 C
876  fval(v,iadr)=sum
877  enddo
878  endif
879 C
880  if(ict(8).eq.1) then
881 C
882 C d2f/dxdy:
883 C
884  iadr=iadr+1
885  do v=1,ivec
886  i=ii(v)
887  j=jj(v)
888  k=kk(v)
889 C
890 C ...in x direction
891 C
892  xp=xparam(v)
893  xpi=1.0_r8-xp
894  xp2=xp*xp
895  xpi2=xpi*xpi
896 
897  cxd=3.0_r8*xp2-1.0_r8
898  cxdi=-3.0_r8*xpi2+1.0_r8
899 C
900 C ...and in y direction
901 C
902  yp=yparam(v)
903  ypi=1.0_r8-yp
904  yp2=yp*yp
905  ypi2=ypi*ypi
906 
907  cyd=3.0_r8*yp2-1.0_r8
908  cydi=-3.0_r8*ypi2+1.0_r8
909 C
910 C ...and in z direction
911 C
912  zp=zparam(v)
913  zpi=1.0_r8-zp
914  zp2=zp*zp
915  zpi2=zpi*zpi
916 C
917  cz=zp*(zp2-1.0_r8)
918  czi=zpi*(zpi2-1.0_r8)
919  hz2=hz(v)*hz(v)
920 C
921  sum=hxi(v)*hyi(v)*(
922  > zpi*(
923  > (fin(0,i,j,k) -fin(0,i,j+1,k))-
924  > (fin(0,i+1,j,k)-fin(0,i+1,j+1,k)))
925  > +zp*(
926  > (fin(0,i,j,k+1) -fin(0,i,j+1,k+1))-
927  > (fin(0,i+1,j,k+1)-fin(0,i+1,j+1,k+1))))
928 C
929  sum=sum+sixth*hyi(v)*hx(v)*(
930  > zpi*(
931  > cxdi*(-fin(1,i,j,k) +fin(1,i,j+1,k))+
932  > cxd*(-fin(1,i+1,j,k)+fin(1,i+1,j+1,k)))
933  > +zp*(
934  > cxdi*(-fin(1,i,j,k+1) +fin(1,i,j+1,k+1))+
935  > cxd*(-fin(1,i+1,j,k+1)+fin(1,i+1,j+1,k+1))))
936 C
937  sum=sum+sixth*hxi(v)*hy(v)*(
938  > zpi*(
939  > -(cydi*fin(2,i,j,k) +cyd*fin(2,i,j+1,k))
940  > +(cydi*fin(2,i+1,j,k)+cyd*fin(2,i+1,j+1,k)))
941  > +zp*(
942  > -(cydi*fin(2,i,j,k+1) +cyd*fin(2,i,j+1,k+1))
943  > +(cydi*fin(2,i+1,j,k+1)+cyd*fin(2,i+1,j+1,k+1))))
944 C
945  sum=sum+sixth*hxi(v)*hyi(v)*hz2*(
946  > czi*(
947  > (fin(3,i,j,k) -fin(3,i,j+1,k))-
948  > (fin(3,i+1,j,k)-fin(3,i+1,j+1,k)))
949  > +cz*(
950  > (fin(3,i,j,k+1) -fin(3,i,j+1,k+1))-
951  > (fin(3,i+1,j,k+1)-fin(3,i+1,j+1,k+1))))
952 C
953  sum=sum+z36th*hx(v)*hy(v)*(
954  > zpi*(
955  > cxdi*(cydi*fin(4,i,j,k) +cyd*fin(4,i,j+1,k))+
956  > cxd*(cydi*fin(4,i+1,j,k)+cyd*fin(4,i+1,j+1,k)))
957  > +zp*(
958  > cxdi*(cydi*fin(4,i,j,k+1) +cyd*fin(4,i,j+1,k+1))+
959  > cxd*(cydi*fin(4,i+1,j,k+1)+cyd*fin(4,i+1,j+1,k+1))))
960 C
961  sum=sum+z36th*hyi(v)*hx(v)*hz2*(
962  > czi*(
963  > cxdi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
964  > cxd*(-fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
965  > +cz*(
966  > cxdi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
967  > cxd*(-fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
968 C
969  sum=sum+z36th*hxi(v)*hy(v)*hz2*(
970  > czi*(
971  > -(cydi*fin(6,i,j,k) +cyd*fin(6,i,j+1,k))
972  > +(cydi*fin(6,i+1,j,k)+cyd*fin(6,i+1,j+1,k)))
973  > +cz*(
974  > -(cydi*fin(6,i,j,k+1) +cyd*fin(6,i,j+1,k+1))
975  > +(cydi*fin(6,i+1,j,k+1)+cyd*fin(6,i+1,j+1,k+1))))
976 C
977  sum=sum+z216th*hx(v)*hy(v)*hz2*(
978  > czi*(
979  > cxdi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
980  > cxd*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
981  > +cz*(
982  > cxdi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
983  > cxd*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
984 C
985  fval(v,iadr)=sum
986  enddo
987  endif
988 C
989  if(ict(9).eq.1) then
990 C
991 C d2f/dxdz:
992 C
993  iadr=iadr+1
994  do v=1,ivec
995  i=ii(v)
996  j=jj(v)
997  k=kk(v)
998 C
999 C ...in x direction
1000 C
1001  xp=xparam(v)
1002  xpi=1.0_r8-xp
1003  xp2=xp*xp
1004  xpi2=xpi*xpi
1005 
1006  cxd=3.0_r8*xp2-1.0_r8
1007  cxdi=-3.0_r8*xpi2+1.0_r8
1008 C
1009 C ...and in y direction
1010 C
1011  yp=yparam(v)
1012  ypi=1.0_r8-yp
1013  yp2=yp*yp
1014  ypi2=ypi*ypi
1015 C
1016  cy=yp*(yp2-1.0_r8)
1017  cyi=ypi*(ypi2-1.0_r8)
1018  hy2=hy(v)*hy(v)
1019 C
1020 C ...and in z direction
1021 C
1022  zp=zparam(v)
1023  zpi=1.0_r8-zp
1024  zp2=zp*zp
1025  zpi2=zpi*zpi
1026 
1027  czd=3.0_r8*zp2-1.0_r8
1028  czdi=-3.0_r8*zpi2+1.0_r8
1029 C
1030  sum=hxi(v)*hzi(v)*(
1031  > (
1032  > (ypi*fin(0,i,j,k) +yp*fin(0,i,j+1,k)) -
1033  > (ypi*fin(0,i+1,j,k)+yp*fin(0,i+1,j+1,k)))
1034  > -(
1035  > (ypi*fin(0,i,j,k+1) +yp*fin(0,i,j+1,k+1)) -
1036  > (ypi*fin(0,i+1,j,k+1)+yp*fin(0,i+1,j+1,k+1))))
1037 C
1038  sum=sum+sixth*hx(v)*hzi(v)*(
1039  > -(
1040  > cxdi*(ypi*fin(1,i,j,k) +yp*fin(1,i,j+1,k))+
1041  > cxd*(ypi*fin(1,i+1,j,k)+yp*fin(1,i+1,j+1,k)))
1042  > +(
1043  > cxdi*(ypi*fin(1,i,j,k+1) +yp*fin(1,i,j+1,k+1))+
1044  > cxd*(ypi*fin(1,i+1,j,k+1)+yp*fin(1,i+1,j+1,k+1))))
1045 C
1046  sum=sum+sixth*hxi(v)*hy2*hzi(v)*(
1047  > (
1048  > (cyi*fin(2,i,j,k) +cy*fin(2,i,j+1,k)) -
1049  > (cyi*fin(2,i+1,j,k)+cy*fin(2,i+1,j+1,k)))
1050  > -(
1051  > (cyi*fin(2,i,j,k+1) +cy*fin(2,i,j+1,k+1)) -
1052  > (cyi*fin(2,i+1,j,k+1)+cy*fin(2,i+1,j+1,k+1))))
1053 C
1054  sum=sum+sixth*hxi(v)*hz(v)*(
1055  > czdi*(
1056  > -(ypi*fin(3,i,j,k) +yp*fin(3,i,j+1,k))
1057  > +(ypi*fin(3,i+1,j,k)+yp*fin(3,i+1,j+1,k)))
1058  > +czd*(
1059  > -(ypi*fin(3,i,j,k+1) +yp*fin(3,i,j+1,k+1))
1060  > +(ypi*fin(3,i+1,j,k+1)+yp*fin(3,i+1,j+1,k+1))))
1061 C
1062  sum=sum+z36th*hx(v)*hy2*hzi(v)*(
1063  > -(
1064  > cxdi*(cyi*fin(4,i,j,k) +cy*fin(4,i,j+1,k))+
1065  > cxd*(cyi*fin(4,i+1,j,k)+cy*fin(4,i+1,j+1,k)))
1066  > +(
1067  > cxdi*(cyi*fin(4,i,j,k+1) +cy*fin(4,i,j+1,k+1))+
1068  > cxd*(cyi*fin(4,i+1,j,k+1)+cy*fin(4,i+1,j+1,k+1))))
1069 C
1070  sum=sum+z36th*hx(v)*hz(v)*(
1071  > czdi*(
1072  > cxdi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
1073  > cxd*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
1074  > +czd*(
1075  > cxdi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
1076  > cxd*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
1077 C
1078  sum=sum+z36th*hxi(v)*hy2*hz(v)*(
1079  > czdi*(
1080  > -(cyi*fin(6,i,j,k) +cy*fin(6,i,j+1,k))
1081  > +(cyi*fin(6,i+1,j,k)+cy*fin(6,i+1,j+1,k)))
1082  > +czd*(
1083  > -(cyi*fin(6,i,j,k+1) +cy*fin(6,i,j+1,k+1))
1084  > +(cyi*fin(6,i+1,j,k+1)+cy*fin(6,i+1,j+1,k+1))))
1085 C
1086  sum=sum+z216th*hx(v)*hy2*hz(v)*(
1087  > czdi*(
1088  > cxdi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
1089  > cxd*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
1090  > +czd*(
1091  > cxdi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
1092  > cxd*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
1093 C
1094  fval(v,iadr)=sum
1095  enddo
1096  endif
1097 C
1098  if(ict(10).eq.1) then
1099 C
1100 C d2f/dydz:
1101 C
1102  iadr=iadr+1
1103  do v=1,ivec
1104  i=ii(v)
1105  j=jj(v)
1106  k=kk(v)
1107 C
1108 C ...in x direction
1109 C
1110  xp=xparam(v)
1111  xpi=1.0_r8-xp
1112  xp2=xp*xp
1113  xpi2=xpi*xpi
1114 C
1115  cx=xp*(xp2-1.0_r8)
1116  cxi=xpi*(xpi2-1.0_r8)
1117  hx2=hx(v)*hx(v)
1118 C
1119 C ...and in y direction
1120 C
1121  yp=yparam(v)
1122  ypi=1.0_r8-yp
1123  yp2=yp*yp
1124  ypi2=ypi*ypi
1125 
1126  cyd=3.0_r8*yp2-1.0_r8
1127  cydi=-3.0_r8*ypi2+1.0_r8
1128 C
1129 C ...and in z direction
1130 C
1131  zp=zparam(v)
1132  zpi=1.0_r8-zp
1133  zp2=zp*zp
1134  zpi2=zpi*zpi
1135 
1136  czd=3.0_r8*zp2-1.0_r8
1137  czdi=-3.0_r8*zpi2+1.0_r8
1138 C
1139  sum=hyi(v)*hzi(v)*(
1140  > (
1141  > xpi*(fin(0,i,j,k) -fin(0,i,j+1,k))+
1142  > xp*(fin(0,i+1,j,k)-fin(0,i+1,j+1,k)))
1143  > -(
1144  > xpi*(fin(0,i,j,k+1) -fin(0,i,j+1,k+1))+
1145  > xp*(fin(0,i+1,j,k+1)-fin(0,i+1,j+1,k+1))))
1146 C
1147  sum=sum+sixth*hyi(v)*hx2*hzi(v)*(
1148  > (
1149  > cxi*(fin(1,i,j,k) -fin(1,i,j+1,k))+
1150  > cx*(fin(1,i+1,j,k)-fin(1,i+1,j+1,k)))
1151  > -(
1152  > cxi*(fin(1,i,j,k+1) -fin(1,i,j+1,k+1))+
1153  > cx*(fin(1,i+1,j,k+1)-fin(1,i+1,j+1,k+1))))
1154 C
1155  sum=sum+sixth*hy(v)*hzi(v)*(
1156  > -(
1157  > xpi*(cydi*fin(2,i,j,k) +cyd*fin(2,i,j+1,k))+
1158  > xp*(cydi*fin(2,i+1,j,k)+cyd*fin(2,i+1,j+1,k)))
1159  > +(
1160  > xpi*(cydi*fin(2,i,j,k+1) +cyd*fin(2,i,j+1,k+1))+
1161  > xp*(cydi*fin(2,i+1,j,k+1)+cyd*fin(2,i+1,j+1,k+1))))
1162 C
1163  sum=sum+sixth*hyi(v)*hz(v)*(
1164  > czdi*(
1165  > xpi*(-fin(3,i,j,k) +fin(3,i,j+1,k))+
1166  > xp*(-fin(3,i+1,j,k)+fin(3,i+1,j+1,k)))
1167  > +czd*(
1168  > xpi*(-fin(3,i,j,k+1) +fin(3,i,j+1,k+1))+
1169  > xp*(-fin(3,i+1,j,k+1)+fin(3,i+1,j+1,k+1))))
1170 C
1171  sum=sum+z36th*hx2*hy(v)*hzi(v)*(
1172  > -(
1173  > cxi*(cydi*fin(4,i,j,k) +cyd*fin(4,i,j+1,k))+
1174  > cx*(cydi*fin(4,i+1,j,k)+cyd*fin(4,i+1,j+1,k)))
1175  > +(
1176  > cxi*(cydi*fin(4,i,j,k+1) +cyd*fin(4,i,j+1,k+1))+
1177  > cx*(cydi*fin(4,i+1,j,k+1)+cyd*fin(4,i+1,j+1,k+1))))
1178 C
1179  sum=sum+z36th*hyi(v)*hx2*hz(v)*(
1180  > czdi*(
1181  > cxi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
1182  > cx*(-fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
1183  > +czd*(
1184  > cxi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
1185  > cx*(-fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
1186 C
1187  sum=sum+z36th*hy(v)*hz(v)*(
1188  > czdi*(
1189  > xpi*(cydi*fin(6,i,j,k) +cyd*fin(6,i,j+1,k))+
1190  > xp*(cydi*fin(6,i+1,j,k)+cyd*fin(6,i+1,j+1,k)))
1191  > +czd*(
1192  > xpi*(cydi*fin(6,i,j,k+1) +cyd*fin(6,i,j+1,k+1))+
1193  > xp*(cydi*fin(6,i+1,j,k+1)+cyd*fin(6,i+1,j+1,k+1))))
1194 C
1195  sum=sum+z216th*hx2*hy(v)*hz(v)*(
1196  > czdi*(
1197  > cxi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
1198  > cx*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
1199  > +czd*(
1200  > cxi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
1201  > cx*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
1202 C
1203  fval(v,iadr)=sum
1204  enddo
1205  endif
1206 C
1207 C----------------------------------
1208 C 3rd derivatives (.le.2 in each coordinate)
1209 C
1210  else if(ict(1).eq.3) then
1211  if(ict(2).eq.1) then
1212 C ! fxxy
1213  iadr=iadr+1
1214  do v=1,ivec
1215  i=ii(v)
1216  j=jj(v)
1217  k=kk(v)
1218 C
1219 C ...in x direction
1220 C
1221  xp=xparam(v)
1222  xpi=1.0_r8-xp
1223 C
1224 C ...and in y direction
1225 C
1226  yp=yparam(v)
1227  ypi=1.0_r8-yp
1228  yp2=yp*yp
1229  ypi2=ypi*ypi
1230 C
1231  cyd=3.0_r8*yp2-1.0_r8
1232  cydi=-3.0_r8*ypi2+1.0_r8
1233 C
1234 C ...and in z direction
1235 C
1236  zp=zparam(v)
1237  zpi=1.0_r8-zp
1238  zp2=zp*zp
1239  zpi2=zpi*zpi
1240 C
1241  cz=zp*(zp2-1.0_r8)
1242  czi=zpi*(zpi2-1.0_r8)
1243  hz2=hz(v)*hz(v)
1244 C
1245  sum=hyi(v)*(
1246  > zpi*(
1247  > xpi*(-fin(1,i,j,k) +fin(1,i,j+1,k))+
1248  > xp*( -fin(1,i+1,j,k)+fin(1,i+1,j+1,k)))
1249  > +zp*(
1250  > xpi*(-fin(1,i,j,k+1) +fin(1,i,j+1,k+1))+
1251  > xp*( -fin(1,i+1,j,k+1)+fin(1,i+1,j+1,k+1))))
1252 C
1253  sum=sum+sixth*hy(v)*(
1254  > zpi*(
1255  > xpi*(cydi*fin(4,i,j,k) +cyd*fin(4,i,j+1,k))+
1256  > xp*(cydi*fin(4,i+1,j,k)+cyd*fin(4,i+1,j+1,k)))
1257  > +zp*(
1258  > xpi*(cydi*fin(4,i,j,k+1) +cyd*fin(4,i,j+1,k+1))+
1259  > xp*(cydi*fin(4,i+1,j,k+1)+cyd*fin(4,i+1,j+1,k+1))))
1260 C
1261  sum=sum+sixth*hz2*hyi(v)*(
1262  > czi*(
1263  > xpi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
1264  > xp*( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
1265  > +cz*(
1266  > xpi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
1267  > xp*( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
1268 C
1269  sum=sum+z36th*hy(v)*hz2*(
1270  > czi*(
1271  > xpi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
1272  > xp*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
1273  > +cz*(
1274  > xpi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
1275  > xp*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
1276 C
1277  fval(v,iadr)=sum
1278  enddo
1279  endif
1280 C
1281  if(ict(3).eq.1) then
1282 C ! fxxz
1283  iadr=iadr+1
1284  do v=1,ivec
1285  i=ii(v)
1286  j=jj(v)
1287  k=kk(v)
1288 C
1289 C ...in x direction
1290 C
1291  xp=xparam(v)
1292  xpi=1.0_r8-xp
1293 C
1294 C ...and in y direction
1295 C
1296  yp=yparam(v)
1297  ypi=1.0_r8-yp
1298  yp2=yp*yp
1299  ypi2=ypi*ypi
1300 C
1301  cy=yp*(yp2-1.0_r8)
1302  cyi=ypi*(ypi2-1.0_r8)
1303  hy2=hy(v)*hy(v)
1304 C
1305 C ...and in z direction
1306 C
1307  zp=zparam(v)
1308  zpi=1.0_r8-zp
1309  zp2=zp*zp
1310  zpi2=zpi*zpi
1311 C
1312  czd=3.0_r8*zp2-1.0_r8
1313  czdi=-3.0_r8*zpi2+1.0_r8
1314 C
1315  sum=hzi(v)*(
1316  > -(
1317  > xpi*(ypi*fin(1,i,j,k) +yp*fin(1,i,j+1,k))+
1318  > xp*(ypi*fin(1,i+1,j,k)+yp*fin(1,i+1,j+1,k)))
1319  > +(
1320  > xpi*(ypi*fin(1,i,j,k+1) +yp*fin(1,i,j+1,k+1))+
1321  > xp*(ypi*fin(1,i+1,j,k+1)+yp*fin(1,i+1,j+1,k+1))))
1322 C
1323  sum=sum+sixth*hy2*hzi(v)*(
1324  > -(
1325  > xpi*(cyi*fin(4,i,j,k) +cy*fin(4,i,j+1,k))+
1326  > xp*(cyi*fin(4,i+1,j,k)+cy*fin(4,i+1,j+1,k)))
1327  > +(
1328  > xpi*(cyi*fin(4,i,j,k+1) +cy*fin(4,i,j+1,k+1))+
1329  > xp*(cyi*fin(4,i+1,j,k+1)+cy*fin(4,i+1,j+1,k+1))))
1330 C
1331  sum=sum+sixth*hz(v)*(
1332  > czdi*(
1333  > xpi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
1334  > xp*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
1335  > +czd*(
1336  > xpi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
1337  > xp*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
1338 C
1339  sum=sum+z36th*hy2*hz(v)*(
1340  > czdi*(
1341  > xpi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
1342  > xp*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
1343  > +czd*(
1344  > xpi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
1345  > xp*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
1346 C
1347  fval(v,iadr)=sum
1348  enddo
1349  endif
1350 C
1351  if(ict(4).eq.1) then
1352 C ! fxyy
1353  iadr=iadr+1
1354  do v=1,ivec
1355  i=ii(v)
1356  j=jj(v)
1357  k=kk(v)
1358 C
1359 C ...in x direction
1360 C
1361  xp=xparam(v)
1362  xpi=1.0_r8-xp
1363  xp2=xp*xp
1364  xpi2=xpi*xpi
1365 C
1366  cxd=3.0_r8*xp2-1.0_r8
1367  cxdi=-3.0_r8*xpi2+1.0_r8
1368 C
1369 C ...and in y direction
1370 C
1371  yp=yparam(v)
1372  ypi=1.0_r8-yp
1373 C
1374 C ...and in z direction
1375 C
1376  zp=zparam(v)
1377  zpi=1.0_r8-zp
1378  zp2=zp*zp
1379  zpi2=zpi*zpi
1380 C
1381  cz=zp*(zp2-1.0_r8)
1382  czi=zpi*(zpi2-1.0_r8)
1383  hz2=hz(v)*hz(v)
1384 C
1385  sum=hxi(v)*(
1386  > zpi*(
1387  > -(ypi*fin(2,i,j,k) +yp*fin(2,i,j+1,k))
1388  > +(ypi*fin(2,i+1,j,k)+yp*fin(2,i+1,j+1,k)))
1389  > +zp*(
1390  > -(ypi*fin(2,i,j,k+1) +yp*fin(2,i,j+1,k+1))
1391  > +(ypi*fin(2,i+1,j,k+1)+yp*fin(2,i+1,j+1,k+1))))
1392 C
1393  sum=sum+sixth*hx(v)*(
1394  > zpi*(
1395  > cxdi*(ypi*fin(4,i,j,k) +yp*fin(4,i,j+1,k))+
1396  > cxd*(ypi*fin(4,i+1,j,k)+yp*fin(4,i+1,j+1,k)))
1397  > +zp*(
1398  > cxdi*(ypi*fin(4,i,j,k+1) +yp*fin(4,i,j+1,k+1))+
1399  > cxd*(ypi*fin(4,i+1,j,k+1)+yp*fin(4,i+1,j+1,k+1))))
1400 C
1401  sum=sum+sixth*hz2*hxi(v)*(
1402  > czi*(
1403  > -(ypi*fin(6,i,j,k) +yp*fin(6,i,j+1,k))
1404  > +(ypi*fin(6,i+1,j,k)+yp*fin(6,i+1,j+1,k)))
1405  > +cz*(
1406  > -(ypi*fin(6,i,j,k+1) +yp*fin(6,i,j+1,k+1))
1407  > +(ypi*fin(6,i+1,j,k+1)+yp*fin(6,i+1,j+1,k+1))))
1408 C
1409  sum=sum+z36th*hx(v)*hz2*(
1410  > czi*(
1411  > cxdi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
1412  > cxd*(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
1413  > +cz*(
1414  > cxdi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
1415  > cxd*(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
1416 C
1417  fval(v,iadr)=sum
1418  enddo
1419  endif
1420 C
1421  if(ict(5).eq.1) then
1422 C ! fxyz
1423  iadr=iadr+1
1424  do v=1,ivec
1425  i=ii(v)
1426  j=jj(v)
1427  k=kk(v)
1428 C
1429 C ...in x direction
1430 C
1431  xp=xparam(v)
1432  xpi=1.0_r8-xp
1433  xp2=xp*xp
1434  xpi2=xpi*xpi
1435 C
1436  cxd=3.0_r8*xp2-1.0_r8
1437  cxdi=-3.0_r8*xpi2+1.0_r8
1438 C
1439 C ...and in y direction
1440 C
1441  yp=yparam(v)
1442  ypi=1.0_r8-yp
1443  yp2=yp*yp
1444  ypi2=ypi*ypi
1445 C
1446  cyd=3.0_r8*yp2-1.0_r8
1447  cydi=-3.0_r8*ypi2+1.0_r8
1448 C
1449 C ...and in z direction
1450 C
1451  zp=zparam(v)
1452  zpi=1.0_r8-zp
1453  zp2=zp*zp
1454  zpi2=zpi*zpi
1455 C
1456  czd=3.0_r8*zp2-1.0_r8
1457  czdi=-3.0_r8*zpi2+1.0_r8
1458 C
1459  sum=hxi(v)*hyi(v)*hzi(v)*(
1460  > -(
1461  > (fin(0,i,j,k) -fin(0,i,j+1,k))-
1462  > (fin(0,i+1,j,k)-fin(0,i+1,j+1,k)))
1463  > +(
1464  > (fin(0,i,j,k+1) -fin(0,i,j+1,k+1))-
1465  > (fin(0,i+1,j,k+1)-fin(0,i+1,j+1,k+1))))
1466 C
1467  sum=sum+sixth*hyi(v)*hx(v)*hzi(v)*(
1468  > -(
1469  > cxdi*(-fin(1,i,j,k) +fin(1,i,j+1,k))+
1470  > cxd*(-fin(1,i+1,j,k)+fin(1,i+1,j+1,k)))
1471  > +(
1472  > cxdi*(-fin(1,i,j,k+1) +fin(1,i,j+1,k+1))+
1473  > cxd*(-fin(1,i+1,j,k+1)+fin(1,i+1,j+1,k+1))))
1474 C
1475  sum=sum+sixth*hxi(v)*hy(v)*hzi(v)*(
1476  > -(
1477  > -(cydi*fin(2,i,j,k) +cyd*fin(2,i,j+1,k))
1478  > +(cydi*fin(2,i+1,j,k)+cyd*fin(2,i+1,j+1,k)))
1479  > +(
1480  > -(cydi*fin(2,i,j,k+1) +cyd*fin(2,i,j+1,k+1))
1481  > +(cydi*fin(2,i+1,j,k+1)+cyd*fin(2,i+1,j+1,k+1))))
1482 C
1483  sum=sum+sixth*hxi(v)*hyi(v)*hz(v)*(
1484  > czdi*(
1485  > (fin(3,i,j,k) -fin(3,i,j+1,k))-
1486  > (fin(3,i+1,j,k)-fin(3,i+1,j+1,k)))
1487  > +czd*(
1488  > (fin(3,i,j,k+1) -fin(3,i,j+1,k+1))-
1489  > (fin(3,i+1,j,k+1)-fin(3,i+1,j+1,k+1))))
1490 C
1491  sum=sum+z36th*hx(v)*hy(v)*hzi(v)*(
1492  > -(
1493  > cxdi*(cydi*fin(4,i,j,k) +cyd*fin(4,i,j+1,k))+
1494  > cxd*(cydi*fin(4,i+1,j,k)+cyd*fin(4,i+1,j+1,k)))
1495  > +(
1496  > cxdi*(cydi*fin(4,i,j,k+1) +cyd*fin(4,i,j+1,k+1))+
1497  > cxd*(cydi*fin(4,i+1,j,k+1)+cyd*fin(4,i+1,j+1,k+1))))
1498 C
1499  sum=sum+z36th*hyi(v)*hx(v)*hz(v)*(
1500  > czdi*(
1501  > cxdi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
1502  > cxd*(-fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
1503  > +czd*(
1504  > cxdi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
1505  > cxd*(-fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
1506 C
1507  sum=sum+z36th*hxi(v)*hy(v)*hz(v)*(
1508  > czdi*(
1509  > -(cydi*fin(6,i,j,k) +cyd*fin(6,i,j+1,k))
1510  > +(cydi*fin(6,i+1,j,k)+cyd*fin(6,i+1,j+1,k)))
1511  > +czd*(
1512  > -(cydi*fin(6,i,j,k+1) +cyd*fin(6,i,j+1,k+1))
1513  > +(cydi*fin(6,i+1,j,k+1)+cyd*fin(6,i+1,j+1,k+1))))
1514 C
1515  sum=sum+z216th*hx(v)*hy(v)*hz(v)*(
1516  > czdi*(
1517  > cxdi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
1518  > cxd*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
1519  > +czd*(
1520  > cxdi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
1521  > cxd*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
1522 C
1523  fval(v,iadr)=sum
1524  enddo
1525  endif
1526 C
1527  if(ict(6).eq.1) then
1528 C ! fxzz
1529  iadr=iadr+1
1530  do v=1,ivec
1531  i=ii(v)
1532  j=jj(v)
1533  k=kk(v)
1534 C
1535 C ...in x direction
1536 C
1537  xp=xparam(v)
1538  xpi=1.0_r8-xp
1539  xp2=xp*xp
1540  xpi2=xpi*xpi
1541 C
1542  cxd=3.0_r8*xp2-1.0_r8
1543  cxdi=-3.0_r8*xpi2+1.0_r8
1544 C
1545 C ...and in y direction
1546 C
1547  yp=yparam(v)
1548  ypi=1.0_r8-yp
1549  yp2=yp*yp
1550  ypi2=ypi*ypi
1551 C
1552  cy=yp*(yp2-1.0_r8)
1553  cyi=ypi*(ypi2-1.0_r8)
1554  hy2=hy(v)*hy(v)
1555 
1556 C
1557 C ...and in z direction
1558 C
1559  zp=zparam(v)
1560  zpi=1.0_r8-zp
1561 C
1562  sum=hxi(v)*(
1563  > zpi*(
1564  > -(ypi*fin(3,i,j,k) +yp*fin(3,i,j+1,k))
1565  > +(ypi*fin(3,i+1,j,k)+yp*fin(3,i+1,j+1,k)))
1566  > +zp*(
1567  > -(ypi*fin(3,i,j,k+1) +yp*fin(3,i,j+1,k+1))
1568  > +(ypi*fin(3,i+1,j,k+1)+yp*fin(3,i+1,j+1,k+1))))
1569 C
1570  sum=sum+sixth*hx(v)*(
1571  > zpi*(
1572  > cxdi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
1573  > cxd*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
1574  > +zp*(
1575  > cxdi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
1576  > cxd*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
1577 C
1578  sum=sum+sixth*hy2*hxi(v)*(
1579  > zpi*(
1580  > -(cyi*fin(6,i,j,k) +cy*fin(6,i,j+1,k))
1581  > +(cyi*fin(6,i+1,j,k)+cy*fin(6,i+1,j+1,k)))
1582  > +zp*(
1583  > -(cyi*fin(6,i,j,k+1) +cy*fin(6,i,j+1,k+1))
1584  > +(cyi*fin(6,i+1,j,k+1)+cy*fin(6,i+1,j+1,k+1))))
1585 C
1586  sum=sum+z36th*hx(v)*hy2*(
1587  > zpi*(
1588  > cxdi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
1589  > cxd*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
1590  > +zp*(
1591  > cxdi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
1592  > cxd*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
1593 C
1594  fval(v,iadr)=sum
1595  enddo
1596  endif
1597 C
1598  if(ict(7).eq.1) then
1599 C ! fyyz
1600  iadr=iadr+1
1601  do v=1,ivec
1602  i=ii(v)
1603  j=jj(v)
1604  k=kk(v)
1605 C
1606 C ...in x direction
1607 C
1608  xp=xparam(v)
1609  xpi=1.0_r8-xp
1610  xp2=xp*xp
1611  xpi2=xpi*xpi
1612 C
1613  cx=xp*(xp2-1.0_r8)
1614  cxi=xpi*(xpi2-1.0_r8)
1615  hx2=hx(v)*hx(v)
1616 C
1617 C ...and in y direction
1618 C
1619  yp=yparam(v)
1620  ypi=1.0_r8-yp
1621 C
1622 C ...and in z direction
1623 C
1624  zp=zparam(v)
1625  zpi=1.0_r8-zp
1626  zp2=zp*zp
1627  zpi2=zpi*zpi
1628 C
1629  czd=3.0_r8*zp2-1.0_r8
1630  czdi=-3.0_r8*zpi2+1.0_r8
1631 C
1632  sum=hzi(v)*(
1633  > -(
1634  > xpi*(ypi*fin(2,i,j,k) +yp*fin(2,i,j+1,k))+
1635  > xp*(ypi*fin(2,i+1,j,k)+yp*fin(2,i+1,j+1,k)))
1636  > +(
1637  > xpi*(ypi*fin(2,i,j,k+1) +yp*fin(2,i,j+1,k+1))+
1638  > xp*(ypi*fin(2,i+1,j,k+1)+yp*fin(2,i+1,j+1,k+1))))
1639 C
1640  sum=sum+sixth*hx2*hzi(v)*(
1641  > -(
1642  > cxi*(ypi*fin(4,i,j,k) +yp*fin(4,i,j+1,k))+
1643  > cx*(ypi*fin(4,i+1,j,k)+yp*fin(4,i+1,j+1,k)))
1644  > +(
1645  > cxi*(ypi*fin(4,i,j,k+1) +yp*fin(4,i,j+1,k+1))+
1646  > cx*(ypi*fin(4,i+1,j,k+1)+yp*fin(4,i+1,j+1,k+1))))
1647 C
1648  sum=sum+sixth*hz(v)*(
1649  > czdi*(
1650  > xpi*(ypi*fin(6,i,j,k) +yp*fin(6,i,j+1,k))+
1651  > xp*(ypi*fin(6,i+1,j,k)+yp*fin(6,i+1,j+1,k)))
1652  > +czd*(
1653  > xpi*(ypi*fin(6,i,j,k+1) +yp*fin(6,i,j+1,k+1))+
1654  > xp*(ypi*fin(6,i+1,j,k+1)+yp*fin(6,i+1,j+1,k+1))))
1655 C
1656  sum=sum+z36th*hx2*hz(v)*(
1657  > czdi*(
1658  > cxi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
1659  > cx*(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
1660  > +czd*(
1661  > cxi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
1662  > cx*(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
1663 C
1664  fval(v,iadr)=sum
1665  enddo
1666  endif
1667 C
1668  if(ict(8).eq.1) then
1669 C ! fyzz
1670  iadr=iadr+1
1671  do v=1,ivec
1672  i=ii(v)
1673  j=jj(v)
1674  k=kk(v)
1675 C
1676 C ...in x direction
1677 C
1678  xp=xparam(v)
1679  xpi=1.0_r8-xp
1680  xp2=xp*xp
1681  xpi2=xpi*xpi
1682 C
1683  cx=xp*(xp2-1.0_r8)
1684  cxi=xpi*(xpi2-1.0_r8)
1685  hx2=hx(v)*hx(v)
1686 C
1687 C ...and in y direction
1688 C
1689  yp=yparam(v)
1690  ypi=1.0_r8-yp
1691  yp2=yp*yp
1692  ypi2=ypi*ypi
1693 C
1694  cyd=3.0_r8*yp2-1.0_r8
1695  cydi=-3.0_r8*ypi2+1.0_r8
1696 C
1697 C ...and in z direction
1698 C
1699  zp=zparam(v)
1700  zpi=1.0_r8-zp
1701 C
1702  sum=hyi(v)*(
1703  > zpi*(
1704  > xpi*(-fin(3,i,j,k) +fin(3,i,j+1,k))+
1705  > xp*( -fin(3,i+1,j,k)+fin(3,i+1,j+1,k)))
1706  > +zp*(
1707  > xpi*(-fin(3,i,j,k+1) +fin(3,i,j+1,k+1))+
1708  > xp*( -fin(3,i+1,j,k+1)+fin(3,i+1,j+1,k+1))))
1709 C
1710  sum=sum+sixth*hx2*hyi(v)*(
1711  > zpi*(
1712  > cxi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
1713  > cx*( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
1714  > +zp*(
1715  > cxi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
1716  > cx*( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
1717 C
1718  sum=sum+sixth*hy(v)*(
1719  > zpi*(
1720  > xpi*(cydi*fin(6,i,j,k) +cyd*fin(6,i,j+1,k))+
1721  > xp*(cydi*fin(6,i+1,j,k)+cyd*fin(6,i+1,j+1,k)))
1722  > +zp*(
1723  > xpi*(cydi*fin(6,i,j,k+1) +cyd*fin(6,i,j+1,k+1))+
1724  > xp*(cydi*fin(6,i+1,j,k+1)+cyd*fin(6,i+1,j+1,k+1))))
1725 C
1726  sum=sum+z36th*hx2*hy(v)*(
1727  > zpi*(
1728  > cxi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
1729  > cx*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
1730  > +zp*(
1731  > cxi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
1732  > cx*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
1733  fval(v,iadr)=sum
1734  enddo
1735  endif
1736 C
1737 C----------------------------------
1738 C 3rd derivatives (3 in each coordinate)
1739 C
1740  else if(ict(1).eq.-3) then
1741  if(ict(2).eq.1) then
1742 C ! fxxx
1743  iadr=iadr+1
1744  do v=1,ivec
1745  i=ii(v)
1746  j=jj(v)
1747  k=kk(v)
1748 C
1749 C ...and in y direction
1750 C
1751  yp=yparam(v)
1752  ypi=1.0_r8-yp
1753  yp2=yp*yp
1754  ypi2=ypi*ypi
1755 C
1756  cy=yp*(yp2-1.0_r8)
1757  cyi=ypi*(ypi2-1.0_r8)
1758  hy2=hy(v)*hy(v)
1759 C
1760 C ...and in z direction
1761 C
1762  zp=zparam(v)
1763  zpi=1.0_r8-zp
1764  zp2=zp*zp
1765  zpi2=zpi*zpi
1766 C
1767  cz=zp*(zp2-1.0_r8)
1768  czi=zpi*(zpi2-1.0_r8)
1769  hz2=hz(v)*hz(v)
1770 C
1771  sum=hxi(v)*(
1772  > zpi*(
1773  > -(ypi*fin(1,i,j,k) +yp*fin(1,i,j+1,k))
1774  > +(ypi*fin(1,i+1,j,k)+yp*fin(1,i+1,j+1,k)))
1775  > +zp*(
1776  > -(ypi*fin(1,i,j,k+1) +yp*fin(1,i,j+1,k+1))
1777  > +(ypi*fin(1,i+1,j,k+1)+yp*fin(1,i+1,j+1,k+1))))
1778 C
1779  sum=sum+sixth*hy2*hxi(v)*(
1780  > zpi*(
1781  > -(cyi*fin(4,i,j,k) +cy*fin(4,i,j+1,k))
1782  > +(cyi*fin(4,i+1,j,k)+cy*fin(4,i+1,j+1,k)))
1783  > +zp*(
1784  > -(cyi*fin(4,i,j,k+1) +cy*fin(4,i,j+1,k+1))
1785  > +(cyi*fin(4,i+1,j,k+1)+cy*fin(4,i+1,j+1,k+1))))
1786 C
1787  sum=sum+sixth*hz2*hxi(v)*(
1788  > czi*(
1789  > -(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))
1790  > +(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
1791  > +cz*(
1792  > -(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))
1793  > +(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
1794 C
1795  sum=sum+z36th*hy2*hz2*hxi(v)*(
1796  > czi*(
1797  > -(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))
1798  > +(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
1799  > +cz*(
1800  > -(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))
1801  > +(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
1802 C
1803  fval(v,iadr)=sum
1804  enddo
1805  endif
1806 C
1807  if(ict(3).eq.1) then
1808 C ! fyyy
1809  iadr=iadr+1
1810  do v=1,ivec
1811  i=ii(v)
1812  j=jj(v)
1813  k=kk(v)
1814 C
1815 C ...in x direction
1816 C
1817  xp=xparam(v)
1818  xpi=1.0_r8-xp
1819  xp2=xp*xp
1820  xpi2=xpi*xpi
1821 C
1822  cx=xp*(xp2-1.0_r8)
1823  cxi=xpi*(xpi2-1.0_r8)
1824  hx2=hx(v)*hx(v)
1825 C
1826 C ...and in z direction
1827 C
1828  zp=zparam(v)
1829  zpi=1.0_r8-zp
1830  zp2=zp*zp
1831  zpi2=zpi*zpi
1832 C
1833  cz=zp*(zp2-1.0_r8)
1834  czi=zpi*(zpi2-1.0_r8)
1835  hz2=hz(v)*hz(v)
1836 C
1837  sum=hyi(v)*(
1838  > zpi*(
1839  > xpi*(-fin(2,i,j,k) +fin(2,i,j+1,k))+
1840  > xp*( -fin(2,i+1,j,k)+fin(2,i+1,j+1,k)))
1841  > +zp*(
1842  > xpi*(-fin(2,i,j,k+1) +fin(2,i,j+1,k+1))+
1843  > xp*( -fin(2,i+1,j,k+1)+fin(2,i+1,j+1,k+1))))
1844 C
1845  sum=sum+sixth*hx2*hyi(v)*(
1846  > zpi*(
1847  > cxi*(-fin(4,i,j,k) +fin(4,i,j+1,k))+
1848  > cx*( -fin(4,i+1,j,k)+fin(4,i+1,j+1,k)))
1849  > +zp*(
1850  > cxi*(-fin(4,i,j,k+1) +fin(4,i,j+1,k+1))+
1851  > cx*( -fin(4,i+1,j,k+1)+fin(4,i+1,j+1,k+1))))
1852 C
1853  sum=sum+sixth*hz2*hyi(v)*(
1854  > czi*(
1855  > xpi*(-fin(6,i,j,k) +fin(6,i,j+1,k))+
1856  > xp*( -fin(6,i+1,j,k)+fin(6,i+1,j+1,k)))
1857  > +cz*(
1858  > xpi*(-fin(6,i,j,k+1) +fin(6,i,j+1,k+1))+
1859  > xp*( -fin(6,i+1,j,k+1)+fin(6,i+1,j+1,k+1))))
1860 C
1861  sum=sum+z36th*hx2*hz2*hyi(v)*(
1862  > czi*(
1863  > cxi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
1864  > cx*( -fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
1865  > +cz*(
1866  > cxi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
1867  > cx*( -fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
1868 C
1869  fval(v,iadr)=sum
1870  enddo
1871  endif
1872 C
1873  if(ict(4).eq.1) then
1874 C ! fzzz
1875  iadr=iadr+1
1876  do v=1,ivec
1877  i=ii(v)
1878  j=jj(v)
1879  k=kk(v)
1880 C
1881 C ...in x direction
1882 C
1883  xp=xparam(v)
1884  xpi=1.0_r8-xp
1885  xp2=xp*xp
1886  xpi2=xpi*xpi
1887 C
1888  cx=xp*(xp2-1.0_r8)
1889  cxi=xpi*(xpi2-1.0_r8)
1890  hx2=hx(v)*hx(v)
1891 C
1892 C ...and in y direction
1893 C
1894  yp=yparam(v)
1895  ypi=1.0_r8-yp
1896  yp2=yp*yp
1897  ypi2=ypi*ypi
1898 C
1899  cy=yp*(yp2-1.0_r8)
1900  cyi=ypi*(ypi2-1.0_r8)
1901  hy2=hy(v)*hy(v)
1902 C
1903  sum=hzi(v)*(
1904  > -(
1905  > xpi*(ypi*fin(3,i,j,k) +yp*fin(3,i,j+1,k))+
1906  > xp*(ypi*fin(3,i+1,j,k)+yp*fin(3,i+1,j+1,k)))
1907  > +(
1908  > xpi*(ypi*fin(3,i,j,k+1) +yp*fin(3,i,j+1,k+1))+
1909  > xp*(ypi*fin(3,i+1,j,k+1)+yp*fin(3,i+1,j+1,k+1))))
1910 C
1911  sum=sum+sixth*hx2*hzi(v)*(
1912  > -(
1913  > cxi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
1914  > cx*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
1915  > +(
1916  > cxi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
1917  > cx*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
1918 C
1919  sum=sum+sixth*hy2*hzi(v)*(
1920  > -(
1921  > xpi*(cyi*fin(6,i,j,k) +cy*fin(6,i,j+1,k))+
1922  > xp*(cyi*fin(6,i+1,j,k)+cy*fin(6,i+1,j+1,k)))
1923  > +(
1924  > xpi*(cyi*fin(6,i,j,k+1) +cy*fin(6,i,j+1,k+1))+
1925  > xp*(cyi*fin(6,i+1,j,k+1)+cy*fin(6,i+1,j+1,k+1))))
1926 C
1927  sum=sum+z36th*hx2*hy2*hzi(v)*(
1928  > -(
1929  > cxi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
1930  > cx*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
1931  > +(
1932  > cxi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
1933  > cx*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
1934 C
1935  fval(v,iadr)=sum
1936  enddo
1937  endif
1938 C
1939 C----------------------------------
1940 C 4th derivatives (.le.2 in each coordinate)
1941 C
1942  else if(ict(1).eq.4) then
1943  if(ict(2).eq.1) then
1944 C ! fxxyy
1945  iadr=iadr+1
1946  do v=1,ivec
1947  i=ii(v)
1948  j=jj(v)
1949  k=kk(v)
1950 C
1951 C ...in x direction
1952 C
1953  xp=xparam(v)
1954  xpi=1.0_r8-xp
1955 C
1956 C ...and in y direction
1957 C
1958  yp=yparam(v)
1959  ypi=1.0_r8-yp
1960 C
1961 C ...and in z direction
1962 C
1963  zp=zparam(v)
1964  zpi=1.0_r8-zp
1965  zp2=zp*zp
1966  zpi2=zpi*zpi
1967 C
1968  cz=zp*(zp2-1.0_r8)
1969  czi=zpi*(zpi2-1.0_r8)
1970  hz2=hz(v)*hz(v)
1971 C
1972  sum=(
1973  > zpi*(
1974  > xpi*(ypi*fin(4,i,j,k) +yp*fin(4,i,j+1,k))+
1975  > xp*( ypi*fin(4,i+1,j,k)+yp*fin(4,i+1,j+1,k)))
1976  > +zp*(
1977  > xpi*(ypi*fin(4,i,j,k+1) +yp*fin(4,i,j+1,k+1))+
1978  > xp*(ypi*fin(4,i+1,j,k+1)+yp*fin(4,i+1,j+1,k+1))))
1979 C
1980  sum=sum+sixth*hz2*(
1981  > czi*(
1982  > xpi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
1983  > xp*(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
1984  > +cz*(
1985  > xpi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
1986  > xp*(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
1987 C
1988  fval(v,iadr)=sum
1989  enddo
1990  endif
1991 C
1992  if(ict(3).eq.1) then
1993 C ! fxxyz
1994  iadr=iadr+1
1995  do v=1,ivec
1996  i=ii(v)
1997  j=jj(v)
1998  k=kk(v)
1999 C
2000 C ...in x direction
2001 C
2002  xp=xparam(v)
2003  xpi=1.0_r8-xp
2004 C
2005 C ...and in y direction
2006 C
2007  yp=yparam(v)
2008  ypi=1.0_r8-yp
2009  yp2=yp*yp
2010  ypi2=ypi*ypi
2011 C
2012  cyd=3.0_r8*yp2-1.0_r8
2013  cydi=-3.0_r8*ypi2+1.0_r8
2014 C
2015 C ...and in z direction
2016 C
2017  zp=zparam(v)
2018  zpi=1.0_r8-zp
2019  zp2=zp*zp
2020  zpi2=zpi*zpi
2021 C
2022  czd=3.0_r8*zp2-1.0_r8
2023  czdi=-3.0_r8*zpi2+1.0_r8
2024 C
2025  sum=hyi(v)*hzi(v)*(
2026  > -(
2027  > xpi*(-fin(1,i,j,k) +fin(1,i,j+1,k))+
2028  > xp*( -fin(1,i+1,j,k)+fin(1,i+1,j+1,k)))
2029  > +(
2030  > xpi*(-fin(1,i,j,k+1) +fin(1,i,j+1,k+1))+
2031  > xp*( -fin(1,i+1,j,k+1)+fin(1,i+1,j+1,k+1))))
2032 C
2033  sum=sum+sixth*hy(v)*hzi(v)*(
2034  > -(
2035  > xpi*(cydi*fin(4,i,j,k) +cyd*fin(4,i,j+1,k))+
2036  > xp*(cydi*fin(4,i+1,j,k)+cyd*fin(4,i+1,j+1,k)))
2037  > +(
2038  > xpi*(cydi*fin(4,i,j,k+1) +cyd*fin(4,i,j+1,k+1))+
2039  > xp*(cydi*fin(4,i+1,j,k+1)+cyd*fin(4,i+1,j+1,k+1))))
2040 C
2041  sum=sum+sixth*hz(v)*hyi(v)*(
2042  > czdi*(
2043  > xpi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
2044  > xp*( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
2045  > +czd*(
2046  > xpi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
2047  > xp*( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
2048 C
2049  sum=sum+z36th*hy(v)*hz(v)*(
2050  > czdi*(
2051  > xpi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
2052  > xp*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
2053  > +czd*(
2054  > xpi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
2055  > xp*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
2056 C
2057  fval(v,iadr)=sum
2058  enddo
2059  endif
2060 C
2061  if(ict(4).eq.1) then
2062 C ! fxxzz
2063  iadr=iadr+1
2064  do v=1,ivec
2065  i=ii(v)
2066  j=jj(v)
2067  k=kk(v)
2068 C
2069 C ...in x direction
2070 C
2071  xp=xparam(v)
2072  xpi=1.0_r8-xp
2073 C
2074 C ...and in y direction
2075 C
2076  yp=yparam(v)
2077  ypi=1.0_r8-yp
2078  yp2=yp*yp
2079  ypi2=ypi*ypi
2080 C
2081  cy=yp*(yp2-1.0_r8)
2082  cyi=ypi*(ypi2-1.0_r8)
2083  hy2=hy(v)*hy(v)
2084 C
2085 C ...and in z direction
2086 C
2087  zp=zparam(v)
2088  zpi=1.0_r8-zp
2089 C
2090  sum=(
2091  > zpi*(
2092  > xpi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
2093  > xp*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
2094  > +zp*(
2095  > xpi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
2096  > xp*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
2097 C
2098  sum=sum+sixth*hy2*(
2099  > zpi*(
2100  > xpi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
2101  > xp*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
2102  > +zp*(
2103  > xpi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
2104  > xp*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
2105 C
2106  fval(v,iadr)=sum
2107  enddo
2108  endif
2109 C
2110  if(ict(5).eq.1) then
2111 C ! fxyyz
2112  iadr=iadr+1
2113  do v=1,ivec
2114  i=ii(v)
2115  j=jj(v)
2116  k=kk(v)
2117 C
2118 C ...in x direction
2119 C
2120  xp=xparam(v)
2121  xpi=1.0_r8-xp
2122  xp2=xp*xp
2123  xpi2=xpi*xpi
2124 C
2125  cxd=3.0_r8*xp2-1.0_r8
2126  cxdi=-3.0_r8*xpi2+1.0_r8
2127 C
2128 C ...and in y direction
2129 C
2130  yp=yparam(v)
2131  ypi=1.0_r8-yp
2132 C
2133 C ...and in z direction
2134 C
2135  zp=zparam(v)
2136  zpi=1.0_r8-zp
2137  zp2=zp*zp
2138  zpi2=zpi*zpi
2139 
2140  czd=3.0_r8*zp2-1.0_r8
2141  czdi=-3.0_r8*zpi2+1.0_r8
2142 C
2143  sum=hxi(v)*hzi(v)*(
2144  > -(
2145  > -(ypi*fin(2,i,j,k) +yp*fin(2,i,j+1,k))
2146  > +(ypi*fin(2,i+1,j,k)+yp*fin(2,i+1,j+1,k)))
2147  > +(
2148  > -(ypi*fin(2,i,j,k+1) +yp*fin(2,i,j+1,k+1))
2149  > +(ypi*fin(2,i+1,j,k+1)+yp*fin(2,i+1,j+1,k+1))))
2150 C
2151  sum=sum+sixth*hx(v)*hzi(v)*(
2152  > -(
2153  > cxdi*(ypi*fin(4,i,j,k) +yp*fin(4,i,j+1,k))+
2154  > cxd*(ypi*fin(4,i+1,j,k)+yp*fin(4,i+1,j+1,k)))
2155  > +(
2156  > cxdi*(ypi*fin(4,i,j,k+1) +yp*fin(4,i,j+1,k+1))+
2157  > cxd*(ypi*fin(4,i+1,j,k+1)+yp*fin(4,i+1,j+1,k+1))))
2158 C
2159  sum=sum+sixth*hz(v)*hxi(v)*(
2160  > czdi*(
2161  > -(ypi*fin(6,i,j,k) +yp*fin(6,i,j+1,k))
2162  > +(ypi*fin(6,i+1,j,k)+yp*fin(6,i+1,j+1,k)))
2163  > +czd*(
2164  > -(ypi*fin(6,i,j,k+1) +yp*fin(6,i,j+1,k+1))
2165  > +(ypi*fin(6,i+1,j,k+1)+yp*fin(6,i+1,j+1,k+1))))
2166 C
2167  sum=sum+z36th*hx(v)*hz(v)*(
2168  > czdi*(
2169  > cxdi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
2170  > cxd*(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
2171  > +czd*(
2172  > cxdi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
2173  > cxd*(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
2174 C
2175  fval(v,iadr)=sum
2176  enddo
2177  endif
2178 C
2179  if(ict(6).eq.1) then
2180 C ! fxyzz
2181  iadr=iadr+1
2182  do v=1,ivec
2183  i=ii(v)
2184  j=jj(v)
2185  k=kk(v)
2186 C
2187 C ...in x direction
2188 C
2189  xp=xparam(v)
2190  xpi=1.0_r8-xp
2191  xp2=xp*xp
2192  xpi2=xpi*xpi
2193 
2194  cxd=3.0_r8*xp2-1.0_r8
2195  cxdi=-3.0_r8*xpi2+1.0_r8
2196 C
2197 C ...and in y direction
2198 C
2199  yp=yparam(v)
2200  ypi=1.0_r8-yp
2201  yp2=yp*yp
2202  ypi2=ypi*ypi
2203 
2204  cyd=3.0_r8*yp2-1.0_r8
2205  cydi=-3.0_r8*ypi2+1.0_r8
2206 C
2207 C ...and in z direction
2208 C
2209  zp=zparam(v)
2210  zpi=1.0_r8-zp
2211 C
2212  sum=hyi(v)*hxi(v)*(
2213  > zpi*(
2214  > ( +fin(3,i,j,k) -fin(3,i,j+1,k))
2215  > +( -fin(3,i+1,j,k)+fin(3,i+1,j+1,k)))
2216  > +zp*(
2217  > ( +fin(3,i,j,k+1) -fin(3,i,j+1,k+1))
2218  > +( -fin(3,i+1,j,k+1)+fin(3,i+1,j+1,k+1))))
2219 C
2220  sum=sum+sixth*hx(v)*hyi(v)*(
2221  > zpi*(
2222  > cxdi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
2223  > cxd*( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
2224  > +zp*(
2225  > cxdi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
2226  > cxd*( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
2227 C
2228  sum=sum+sixth*hy(v)*hxi(v)*(
2229  > zpi*(
2230  > -(cydi*fin(6,i,j,k) +cyd*fin(6,i,j+1,k))
2231  > +(cydi*fin(6,i+1,j,k)+cyd*fin(6,i+1,j+1,k)))
2232  > +zp*(
2233  > -(cydi*fin(6,i,j,k+1) +cyd*fin(6,i,j+1,k+1))
2234  > +(cydi*fin(6,i+1,j,k+1)+cyd*fin(6,i+1,j+1,k+1))))
2235 C
2236  sum=sum+z36th*hx(v)*hy(v)*(
2237  > zpi*(
2238  > cxdi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
2239  > cxd*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
2240  > +zp*(
2241  > cxdi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
2242  > cxd*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
2243 C
2244  fval(v,iadr)=sum
2245  enddo
2246  endif
2247 C
2248  if(ict(7).eq.1) then
2249 C ! fyyzz
2250  iadr=iadr+1
2251  do v=1,ivec
2252  i=ii(v)
2253  j=jj(v)
2254  k=kk(v)
2255 C
2256 C ...in x direction
2257 C
2258  xp=xparam(v)
2259  xpi=1.0_r8-xp
2260  xp2=xp*xp
2261  xpi2=xpi*xpi
2262 C
2263  cx=xp*(xp2-1.0_r8)
2264  cxi=xpi*(xpi2-1.0_r8)
2265  hx2=hx(v)*hx(v)
2266 C
2267 C ...and in y direction
2268 C
2269  yp=yparam(v)
2270  ypi=1.0_r8-yp
2271 C
2272 C ...and in z direction
2273 C
2274  zp=zparam(v)
2275  zpi=1.0_r8-zp
2276 C
2277  sum=(
2278  > zpi*(
2279  > xpi*(ypi*fin(6,i,j,k) +yp*fin(6,i,j+1,k))+
2280  > xp*( ypi*fin(6,i+1,j,k)+yp*fin(6,i+1,j+1,k)))
2281  > +zp*(
2282  > xpi*(ypi*fin(6,i,j,k+1) +yp*fin(6,i,j+1,k+1))+
2283  > xp*(ypi*fin(6,i+1,j,k+1)+yp*fin(6,i+1,j+1,k+1))))
2284 C
2285  sum=sum+sixth*hx2*(
2286  > zpi*(
2287  > cxi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
2288  > cx*( ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
2289  > +zp*(
2290  > cxi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
2291  > cx*( ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
2292 C
2293  fval(v,iadr)=sum
2294  enddo
2295  endif
2296 C
2297 C----------------------------------
2298 C 4th derivatives (3 in a coordinate)
2299 C
2300  else if(ict(1).eq.-4) then
2301  if(ict(2).eq.1) then
2302 C ! fxxxy
2303  iadr=iadr+1
2304  do v=1,ivec
2305  i=ii(v)
2306  j=jj(v)
2307  k=kk(v)
2308 C
2309 C ...and in y direction
2310 C
2311  yp=yparam(v)
2312  ypi=1.0_r8-yp
2313  yp2=yp*yp
2314  ypi2=ypi*ypi
2315 
2316  cyd=3.0_r8*yp2-1.0_r8
2317  cydi=-3.0_r8*ypi2+1.0_r8
2318 C
2319 C ...and in z direction
2320 C
2321  zp=zparam(v)
2322  zpi=1.0_r8-zp
2323  zp2=zp*zp
2324  zpi2=zpi*zpi
2325 C
2326  cz=zp*(zp2-1.0_r8)
2327  czi=zpi*(zpi2-1.0_r8)
2328  hz2=hz(v)*hz(v)
2329 C
2330  sum=hyi(v)*hxi(v)*(
2331  > zpi*(
2332  > ( fin(1,i,j,k) -fin(1,i,j+1,k))+
2333  > ( -fin(1,i+1,j,k)+fin(1,i+1,j+1,k)))
2334  > +zp*(
2335  > ( fin(1,i,j,k+1) -fin(1,i,j+1,k+1))+
2336  > ( -fin(1,i+1,j,k+1)+fin(1,i+1,j+1,k+1))))
2337 C
2338  sum=sum+sixth*hy(v)*hxi(v)*(
2339  > zpi*(
2340  > -(cydi*fin(4,i,j,k) +cyd*fin(4,i,j+1,k))+
2341  > (cydi*fin(4,i+1,j,k)+cyd*fin(4,i+1,j+1,k)))
2342  > +zp*(
2343  > -(cydi*fin(4,i,j,k+1) +cyd*fin(4,i,j+1,k+1))+
2344  > (cydi*fin(4,i+1,j,k+1)+cyd*fin(4,i+1,j+1,k+1))))
2345 C
2346  sum=sum+sixth*hz2*hyi(v)*hxi(v)*(
2347  > czi*(
2348  > ( fin(5,i,j,k) -fin(5,i,j+1,k))+
2349  > ( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
2350  > +cz*(
2351  > ( fin(5,i,j,k+1) -fin(5,i,j+1,k+1))+
2352  > ( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
2353 C
2354  sum=sum+z36th*hy(v)*hz2*hxi(v)*(
2355  > czi*(
2356  > -(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
2357  > (cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
2358  > +cz*(
2359  > -(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
2360  > (cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
2361 C
2362  fval(v,iadr)=sum
2363  enddo
2364  endif
2365 C
2366  if(ict(3).eq.1) then
2367 C ! fxxxz
2368  iadr=iadr+1
2369  do v=1,ivec
2370  i=ii(v)
2371  j=jj(v)
2372  k=kk(v)
2373 C
2374 C ...and in y direction
2375 C
2376  yp=yparam(v)
2377  ypi=1.0_r8-yp
2378  yp2=yp*yp
2379  ypi2=ypi*ypi
2380 C
2381  cy=yp*(yp2-1.0_r8)
2382  cyi=ypi*(ypi2-1.0_r8)
2383  hy2=hy(v)*hy(v)
2384 C
2385 C ...and in z direction
2386 C
2387  zp=zparam(v)
2388  zpi=1.0_r8-zp
2389  zp2=zp*zp
2390  zpi2=zpi*zpi
2391 
2392  czd=3.0_r8*zp2-1.0_r8
2393  czdi=-3.0_r8*zpi2+1.0_r8
2394 C
2395  sum=hzi(v)*hxi(v)*(
2396  > (
2397  > +(ypi*fin(1,i,j,k) +yp*fin(1,i,j+1,k))
2398  > -(ypi*fin(1,i+1,j,k)+yp*fin(1,i+1,j+1,k)))
2399  > +(
2400  > -(ypi*fin(1,i,j,k+1) +yp*fin(1,i,j+1,k+1))
2401  > +(ypi*fin(1,i+1,j,k+1)+yp*fin(1,i+1,j+1,k+1))))
2402 C
2403  sum=sum+sixth*hy2*hzi(v)*hxi(v)*(
2404  > (
2405  > +(cyi*fin(4,i,j,k) +cy*fin(4,i,j+1,k))
2406  > -(cyi*fin(4,i+1,j,k)+cy*fin(4,i+1,j+1,k)))
2407  > +(
2408  > -(cyi*fin(4,i,j,k+1) +cy*fin(4,i,j+1,k+1))
2409  > +(cyi*fin(4,i+1,j,k+1)+cy*fin(4,i+1,j+1,k+1))))
2410 C
2411  sum=sum+sixth*hz(v)*hxi(v)*(
2412  > czdi*(
2413  > -(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))
2414  > +(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
2415  > +czd*(
2416  > -(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))
2417  > +(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
2418 C
2419  sum=sum+z36th*hy2*hz(v)*hxi(v)*(
2420  > czdi*(
2421  > -(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))
2422  > +(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
2423  > +czd*(
2424  > -(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))
2425  > +(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
2426 C
2427  fval(v,iadr)=sum
2428  enddo
2429  endif
2430 C
2431  if(ict(4).eq.1) then
2432 C ! fxyyy
2433  iadr=iadr+1
2434  do v=1,ivec
2435  i=ii(v)
2436  j=jj(v)
2437  k=kk(v)
2438 C
2439 C ...in x direction
2440 C
2441  xp=xparam(v)
2442  xpi=1.0_r8-xp
2443  xp2=xp*xp
2444  xpi2=xpi*xpi
2445 
2446  cxd=3.0_r8*xp2-1.0_r8
2447  cxdi=-3.0_r8*xpi2+1.0_r8
2448 C
2449 C ...and in z direction
2450 C
2451  zp=zparam(v)
2452  zpi=1.0_r8-zp
2453  zp2=zp*zp
2454  zpi2=zpi*zpi
2455 C
2456  cz=zp*(zp2-1.0_r8)
2457  czi=zpi*(zpi2-1.0_r8)
2458  hz2=hz(v)*hz(v)
2459 C
2460  sum=hxi(v)*hyi(v)*(
2461  > zpi*(
2462  > ( fin(2,i,j,k) -fin(2,i,j+1,k))
2463  > +(-fin(2,i+1,j,k)+fin(2,i+1,j+1,k)))
2464  > +zp*(
2465  > ( fin(2,i,j,k+1) -fin(2,i,j+1,k+1))
2466  > +(-fin(2,i+1,j,k+1)+fin(2,i+1,j+1,k+1))))
2467 C
2468  sum=sum+sixth*hx(v)*hyi(v)*(
2469  > zpi*(
2470  > cxdi*(-fin(4,i,j,k) +fin(4,i,j+1,k))+
2471  > cxd*( -fin(4,i+1,j,k)+fin(4,i+1,j+1,k)))
2472  > +zp*(
2473  > cxdi*(-fin(4,i,j,k+1) +fin(4,i,j+1,k+1))+
2474  > cxd*( -fin(4,i+1,j,k+1)+fin(4,i+1,j+1,k+1))))
2475 C
2476  sum=sum+sixth*hz2*hxi(v)*hyi(v)*(
2477  > czi*(
2478  > ( fin(6,i,j,k) -fin(6,i,j+1,k))
2479  > +(-fin(6,i+1,j,k)+fin(6,i+1,j+1,k)))
2480  > +cz*(
2481  > ( fin(6,i,j,k+1) -fin(6,i,j+1,k+1))
2482  > +(-fin(6,i+1,j,k+1)+fin(6,i+1,j+1,k+1))))
2483 C
2484  sum=sum+z36th*hx(v)*hz2*hyi(v)*(
2485  > czi*(
2486  > cxdi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
2487  > cxd*( -fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
2488  > +cz*(
2489  > cxdi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
2490  > cxd*( -fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
2491 C
2492  fval(v,iadr)=sum
2493  enddo
2494  endif
2495 C
2496  if(ict(5).eq.1) then
2497 C ! fxzzz
2498  iadr=iadr+1
2499  do v=1,ivec
2500  i=ii(v)
2501  j=jj(v)
2502  k=kk(v)
2503 C
2504 C ...in x direction
2505 C
2506  xp=xparam(v)
2507  xpi=1.0_r8-xp
2508  xp2=xp*xp
2509  xpi2=xpi*xpi
2510 
2511  cxd=3.0_r8*xp2-1.0_r8
2512  cxdi=-3.0_r8*xpi2+1.0_r8
2513 C
2514 C ...and in y direction
2515 C
2516  yp=yparam(v)
2517  ypi=1.0_r8-yp
2518  yp2=yp*yp
2519  ypi2=ypi*ypi
2520 C
2521  cy=yp*(yp2-1.0_r8)
2522  cyi=ypi*(ypi2-1.0_r8)
2523  hy2=hy(v)*hy(v)
2524 C
2525  sum=hxi(v)*hzi(v)*(
2526  > -(
2527  > -(ypi*fin(3,i,j,k) +yp*fin(3,i,j+1,k))
2528  > +(ypi*fin(3,i+1,j,k)+yp*fin(3,i+1,j+1,k)))
2529  > +(
2530  > -(ypi*fin(3,i,j,k+1) +yp*fin(3,i,j+1,k+1))
2531  > +(ypi*fin(3,i+1,j,k+1)+yp*fin(3,i+1,j+1,k+1))))
2532 C
2533  sum=sum+sixth*hx(v)*hzi(v)*(
2534  > -(
2535  > cxdi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
2536  > cxd*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
2537  > +(
2538  > cxdi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
2539  > cxd*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
2540 C
2541  sum=sum+sixth*hy2*hxi(v)*hzi(v)*(
2542  > -(
2543  > -(cyi*fin(6,i,j,k) +cy*fin(6,i,j+1,k))
2544  > +(cyi*fin(6,i+1,j,k)+cy*fin(6,i+1,j+1,k)))
2545  > +(
2546  > -(cyi*fin(6,i,j,k+1) +cy*fin(6,i,j+1,k+1))
2547  > +(cyi*fin(6,i+1,j,k+1)+cy*fin(6,i+1,j+1,k+1))))
2548 C
2549  sum=sum+z36th*hx(v)*hy2*hzi(v)*(
2550  > -(
2551  > cxdi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
2552  > cxd*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
2553  > +(
2554  > cxdi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
2555  > cxd*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
2556 C
2557  fval(v,iadr)=sum
2558  enddo
2559  endif
2560 C
2561  if(ict(6).eq.1) then
2562 C ! fyyyz
2563  iadr=iadr+1
2564  do v=1,ivec
2565  i=ii(v)
2566  j=jj(v)
2567  k=kk(v)
2568 C
2569 C ...in x direction
2570 C
2571  xp=xparam(v)
2572  xpi=1.0_r8-xp
2573  xp2=xp*xp
2574  xpi2=xpi*xpi
2575 C
2576  cx=xp*(xp2-1.0_r8)
2577  cxi=xpi*(xpi2-1.0_r8)
2578  hx2=hx(v)*hx(v)
2579 C
2580 C ...and in z direction
2581 C
2582  zp=zparam(v)
2583  zpi=1.0_r8-zp
2584  zp2=zp*zp
2585  zpi2=zpi*zpi
2586 
2587  czd=3.0_r8*zp2-1.0_r8
2588  czdi=-3.0_r8*zpi2+1.0_r8
2589 C
2590  sum=hyi(v)*hzi(v)*(
2591  > -(
2592  > xpi*(-fin(2,i,j,k) +fin(2,i,j+1,k))+
2593  > xp*( -fin(2,i+1,j,k)+fin(2,i+1,j+1,k)))
2594  > +(
2595  > xpi*(-fin(2,i,j,k+1) +fin(2,i,j+1,k+1))+
2596  > xp*( -fin(2,i+1,j,k+1)+fin(2,i+1,j+1,k+1))))
2597 C
2598  sum=sum+sixth*hx2*hyi(v)*hzi(v)*(
2599  > -(
2600  > cxi*(-fin(4,i,j,k) +fin(4,i,j+1,k))+
2601  > cx*( -fin(4,i+1,j,k)+fin(4,i+1,j+1,k)))
2602  > +(
2603  > cxi*(-fin(4,i,j,k+1) +fin(4,i,j+1,k+1))+
2604  > cx*( -fin(4,i+1,j,k+1)+fin(4,i+1,j+1,k+1))))
2605 C
2606  sum=sum+sixth*hz(v)*hyi(v)*(
2607  > czdi*(
2608  > xpi*(-fin(6,i,j,k) +fin(6,i,j+1,k))+
2609  > xp*( -fin(6,i+1,j,k)+fin(6,i+1,j+1,k)))
2610  > +czd*(
2611  > xpi*(-fin(6,i,j,k+1) +fin(6,i,j+1,k+1))+
2612  > xp*( -fin(6,i+1,j,k+1)+fin(6,i+1,j+1,k+1))))
2613 C
2614  sum=sum+z36th*hx2*hz(v)*hyi(v)*(
2615  > czdi*(
2616  > cxi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
2617  > cx*( -fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
2618  > +czd*(
2619  > cxi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
2620  > cx*( -fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
2621 C
2622  fval(v,iadr)=sum
2623  enddo
2624  endif
2625 C
2626  if(ict(7).eq.1) then
2627 C ! fyzzz
2628  iadr=iadr+1
2629  do v=1,ivec
2630  i=ii(v)
2631  j=jj(v)
2632  k=kk(v)
2633 C
2634 C ...in x direction
2635 C
2636  xp=xparam(v)
2637  xpi=1.0_r8-xp
2638  xp2=xp*xp
2639  xpi2=xpi*xpi
2640 C
2641  cx=xp*(xp2-1.0_r8)
2642  cxi=xpi*(xpi2-1.0_r8)
2643  hx2=hx(v)*hx(v)
2644 C
2645 C ...and in y direction
2646 C
2647  yp=yparam(v)
2648  ypi=1.0_r8-yp
2649  yp2=yp*yp
2650  ypi2=ypi*ypi
2651 
2652  cyd=3.0_r8*yp2-1.0_r8
2653  cydi=-3.0_r8*ypi2+1.0_r8
2654 C
2655  sum=hyi(v)*hzi(v)*(
2656  > -(
2657  > xpi*(-fin(3,i,j,k) +fin(3,i,j+1,k))+
2658  > xp*( -fin(3,i+1,j,k)+fin(3,i+1,j+1,k)))
2659  > +(
2660  > xpi*(-fin(3,i,j,k+1) +fin(3,i,j+1,k+1))+
2661  > xp*( -fin(3,i+1,j,k+1)+fin(3,i+1,j+1,k+1))))
2662 C
2663  sum=sum+sixth*hx2*hyi(v)*hzi(v)*(
2664  > -(
2665  > cxi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
2666  > cx*( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
2667  > +(
2668  > cxi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
2669  > cx*( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
2670 C
2671  sum=sum+sixth*hy(v)*hzi(v)*(
2672  > -(
2673  > xpi*(cydi*fin(6,i,j,k) +cyd*fin(6,i,j+1,k))+
2674  > xp*(cydi*fin(6,i+1,j,k)+cyd*fin(6,i+1,j+1,k)))
2675  > +(
2676  > xpi*(cydi*fin(6,i,j,k+1) +cyd*fin(6,i,j+1,k+1))+
2677  > xp*(cydi*fin(6,i+1,j,k+1)+cyd*fin(6,i+1,j+1,k+1))))
2678 C
2679  sum=sum+z36th*hx2*hy(v)*hzi(v)*(
2680  > -(
2681  > cxi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
2682  > cx*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
2683  > +(
2684  > cxi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
2685  > cx*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
2686 C
2687  fval(v,iadr)=sum
2688  enddo
2689  endif
2690 C
2691 C----------------------------------
2692 C 5th derivatives (.le.2 in each coordinate)
2693 C
2694  else if(ict(1).eq.5) then
2695  if(ict(2).eq.1) then
2696 C ! fxxyyz
2697  iadr=iadr+1
2698  do v=1,ivec
2699  i=ii(v)
2700  j=jj(v)
2701  k=kk(v)
2702 C
2703 C ...in x direction
2704 C
2705  xp=xparam(v)
2706  xpi=1.0_r8-xp
2707 C
2708 C ...and in y direction
2709 C
2710  yp=yparam(v)
2711  ypi=1.0_r8-yp
2712 C
2713 C ...and in z direction
2714 C
2715  zp=zparam(v)
2716  zpi=1.0_r8-zp
2717  zp2=zp*zp
2718  zpi2=zpi*zpi
2719 
2720  czd=3.0_r8*zp2-1.0_r8
2721  czdi=-3.0_r8*zpi2+1.0_r8
2722 C
2723  sum=hzi(v)*(
2724  > -(
2725  > xpi*(ypi*fin(4,i,j,k) +yp*fin(4,i,j+1,k))+
2726  > xp*( ypi*fin(4,i+1,j,k)+yp*fin(4,i+1,j+1,k)))
2727  > +(
2728  > xpi*(ypi*fin(4,i,j,k+1) +yp*fin(4,i,j+1,k+1))+
2729  > xp*(ypi*fin(4,i+1,j,k+1)+yp*fin(4,i+1,j+1,k+1))))
2730 C
2731  sum=sum+sixth*hz(v)*(
2732  > czdi*(
2733  > xpi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
2734  > xp*(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
2735  > +czd*(
2736  > xpi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
2737  > xp*(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
2738 C
2739  fval(v,iadr)=sum
2740  enddo
2741  endif
2742 C
2743  if(ict(3).eq.1) then
2744 C ! fxxyzz
2745  iadr=iadr+1
2746  do v=1,ivec
2747  i=ii(v)
2748  j=jj(v)
2749  k=kk(v)
2750 C
2751 C ...in x direction
2752 C
2753  xp=xparam(v)
2754  xpi=1.0_r8-xp
2755 C
2756 C ...and in y direction
2757 C
2758  yp=yparam(v)
2759  ypi=1.0_r8-yp
2760  yp2=yp*yp
2761  ypi2=ypi*ypi
2762 
2763  cyd=3.0_r8*yp2-1.0_r8
2764  cydi=-3.0_r8*ypi2+1.0_r8
2765 C
2766 C ...and in z direction
2767 C
2768  zp=zparam(v)
2769  zpi=1.0_r8-zp
2770 C
2771  sum=hyi(v)*(
2772  > zpi*(
2773  > xpi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
2774  > xp*( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
2775  > +zp*(
2776  > xpi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
2777  > xp*( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
2778 C
2779  sum=sum+sixth*hy(v)*(
2780  > zpi*(
2781  > xpi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
2782  > xp*( cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
2783  > +zp*(
2784  > xpi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
2785  > xp*( cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
2786 C
2787  fval(v,iadr)=sum
2788  enddo
2789  endif
2790 C
2791  if(ict(4).eq.1) then
2792 C ! fxyyzz
2793  iadr=iadr+1
2794  do v=1,ivec
2795  i=ii(v)
2796  j=jj(v)
2797  k=kk(v)
2798 C
2799 C ...in x direction
2800 C
2801  xp=xparam(v)
2802  xpi=1.0_r8-xp
2803  xp2=xp*xp
2804  xpi2=xpi*xpi
2805 
2806  cxd=3.0_r8*xp2-1.0_r8
2807  cxdi=-3.0_r8*xpi2+1.0_r8
2808 C
2809 C ...and in y direction
2810 C
2811  yp=yparam(v)
2812  ypi=1.0_r8-yp
2813 C
2814 C ...and in z direction
2815 C
2816  zp=zparam(v)
2817  zpi=1.0_r8-zp
2818 C
2819  sum=hxi(v)*(
2820  > zpi*(
2821  > -(ypi*fin(6,i,j,k) +yp*fin(6,i,j+1,k))
2822  > +(ypi*fin(6,i+1,j,k)+yp*fin(6,i+1,j+1,k)))
2823  > +zp*(
2824  > -(ypi*fin(6,i,j,k+1) +yp*fin(6,i,j+1,k+1))
2825  > +(ypi*fin(6,i+1,j,k+1)+yp*fin(6,i+1,j+1,k+1))))
2826 C
2827  sum=sum+sixth*hx(v)*(
2828  > zpi*(
2829  > cxdi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
2830  > cxd*(ypi*fin(7,i+1,j,k) +yp*fin(7,i+1,j+1,k)))
2831  > +zp*(
2832  > cxdi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
2833  > cxd*( ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
2834 C
2835  fval(v,iadr)=sum
2836  enddo
2837  endif
2838 C
2839 C----------------------------------
2840 C 5th derivatives (3 in a coordinate)
2841 C
2842  else if(ict(1).eq.-5) then
2843  if(ict(2).eq.1) then
2844 C ! fxxxyy
2845  iadr=iadr+1
2846  do v=1,ivec
2847  i=ii(v)
2848  j=jj(v)
2849  k=kk(v)
2850 C
2851 C ...and in y direction
2852 C
2853  yp=yparam(v)
2854  ypi=1.0_r8-yp
2855 C
2856 C ...and in z direction
2857 C
2858  zp=zparam(v)
2859  zpi=1.0_r8-zp
2860  zp2=zp*zp
2861  zpi2=zpi*zpi
2862 C
2863  cz=zp*(zp2-1.0_r8)
2864  czi=zpi*(zpi2-1.0_r8)
2865  hz2=hz(v)*hz(v)
2866 C
2867  sum=hxi(v)*(
2868  > zpi*(
2869  > -(ypi*fin(4,i,j,k) +yp*fin(4,i,j+1,k))
2870  > +( ypi*fin(4,i+1,j,k)+yp*fin(4,i+1,j+1,k)))
2871  > +zp*(
2872  > -(ypi*fin(4,i,j,k+1) +yp*fin(4,i,j+1,k+1))
2873  > +(ypi*fin(4,i+1,j,k+1)+yp*fin(4,i+1,j+1,k+1))))
2874 C
2875  sum=sum+sixth*hz2*hxi(v)*(
2876  > czi*(
2877  > -(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))
2878  > +(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
2879  > +cz*(
2880  > -(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))
2881  > +(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
2882 C
2883  fval(v,iadr)=sum
2884  enddo
2885  endif
2886 C
2887  if(ict(3).eq.1) then
2888 C ! fxxxyz
2889  iadr=iadr+1
2890  do v=1,ivec
2891  i=ii(v)
2892  j=jj(v)
2893  k=kk(v)
2894 C
2895 C ...and in y direction
2896 C
2897  yp=yparam(v)
2898  ypi=1.0_r8-yp
2899  yp2=yp*yp
2900  ypi2=ypi*ypi
2901 
2902  cyd=3.0_r8*yp2-1.0_r8
2903  cydi=-3.0_r8*ypi2+1.0_r8
2904 C
2905 C ...and in z direction
2906 C
2907  zp=zparam(v)
2908  zpi=1.0_r8-zp
2909  zp2=zp*zp
2910  zpi2=zpi*zpi
2911 
2912  czd=3.0_r8*zp2-1.0_r8
2913  czdi=-3.0_r8*zpi2+1.0_r8
2914 C
2915  sum=hyi(v)*hzi(v)*hxi(v)*(
2916  > -(
2917  > -(-fin(1,i,j,k) +fin(1,i,j+1,k))
2918  > +( -fin(1,i+1,j,k)+fin(1,i+1,j+1,k)))
2919  > +(
2920  > -(-fin(1,i,j,k+1) +fin(1,i,j+1,k+1))
2921  > +( -fin(1,i+1,j,k+1)+fin(1,i+1,j+1,k+1))))
2922 C
2923  sum=sum+sixth*hy(v)*hzi(v)*hxi(v)*(
2924  > -(
2925  > -(cydi*fin(4,i,j,k) +cyd*fin(4,i,j+1,k))
2926  > +(cydi*fin(4,i+1,j,k)+cyd*fin(4,i+1,j+1,k)))
2927  > +(
2928  > -(cydi*fin(4,i,j,k+1) +cyd*fin(4,i,j+1,k+1))
2929  > +(cydi*fin(4,i+1,j,k+1)+cyd*fin(4,i+1,j+1,k+1))))
2930 C
2931  sum=sum+sixth*hz(v)*hyi(v)*hxi(v)*(
2932  > czdi*(
2933  > -(-fin(5,i,j,k) +fin(5,i,j+1,k))
2934  > +( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
2935  > +czd*(
2936  > -(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))
2937  > +( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
2938 C
2939  sum=sum+z36th*hy(v)*hz(v)*hxi(v)*(
2940  > czdi*(
2941  > -(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))
2942  > +(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
2943  > +czd*(
2944  > -(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))
2945  > +(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
2946 C
2947  fval(v,iadr)=sum
2948  enddo
2949  endif
2950 C
2951  if(ict(4).eq.1) then
2952 C ! fxxxzz
2953  iadr=iadr+1
2954  do v=1,ivec
2955  i=ii(v)
2956  j=jj(v)
2957  k=kk(v)
2958 C
2959 C ...and in y direction
2960 C
2961  yp=yparam(v)
2962  ypi=1.0_r8-yp
2963  yp2=yp*yp
2964  ypi2=ypi*ypi
2965 C
2966  cy=yp*(yp2-1.0_r8)
2967  cyi=ypi*(ypi2-1.0_r8)
2968  hy2=hy(v)*hy(v)
2969 C
2970 C ...and in z direction
2971 C
2972  zp=zparam(v)
2973  zpi=1.0_r8-zp
2974 C
2975  sum=hxi(v)*(
2976  > zpi*(
2977  > -(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))
2978  > +(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
2979  > +zp*(
2980  > -(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))
2981  > +(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
2982 C
2983  sum=sum+sixth*hy2*hxi(v)*(
2984  > zpi*(
2985  > -(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))
2986  > +(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
2987  > +zp*(
2988  > -(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))
2989  > +(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
2990 C
2991  fval(v,iadr)=sum
2992  enddo
2993  endif
2994 C
2995  if(ict(5).eq.1) then
2996 C ! fxxyyy
2997  iadr=iadr+1
2998  do v=1,ivec
2999  i=ii(v)
3000  j=jj(v)
3001  k=kk(v)
3002 C
3003 C ...in x direction
3004 C
3005  xp=xparam(v)
3006  xpi=1.0_r8-xp
3007 C
3008 C ...and in z direction
3009 C
3010  zp=zparam(v)
3011  zpi=1.0_r8-zp
3012  zp2=zp*zp
3013  zpi2=zpi*zpi
3014 C
3015  cz=zp*(zp2-1.0_r8)
3016  czi=zpi*(zpi2-1.0_r8)
3017  hz2=hz(v)*hz(v)
3018 
3019 C
3020  sum=hyi(v)*(
3021  > zpi*(
3022  > xpi*(-fin(4,i,j,k) +fin(4,i,j+1,k))+
3023  > xp*( -fin(4,i+1,j,k)+fin(4,i+1,j+1,k)))
3024  > +zp*(
3025  > xpi*(-fin(4,i,j,k+1) +fin(4,i,j+1,k+1))+
3026  > xp*( -fin(4,i+1,j,k+1)+fin(4,i+1,j+1,k+1))))
3027 C
3028  sum=sum+sixth*hz2*hyi(v)*(
3029  > czi*(
3030  > xpi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
3031  > xp*( -fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
3032  > +cz*(
3033  > xpi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
3034  > xp*( -fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
3035 C
3036  fval(v,iadr)=sum
3037  enddo
3038  endif
3039 C
3040  if(ict(6).eq.1) then
3041 C ! fxxzzz
3042  iadr=iadr+1
3043  do v=1,ivec
3044  i=ii(v)
3045  j=jj(v)
3046  k=kk(v)
3047 C
3048 C ...in x direction
3049 C
3050  xp=xparam(v)
3051  xpi=1.0_r8-xp
3052 C
3053 C ...and in y direction
3054 C
3055  yp=yparam(v)
3056  ypi=1.0_r8-yp
3057  yp2=yp*yp
3058  ypi2=ypi*ypi
3059 C
3060  cy=yp*(yp2-1.0_r8)
3061  cyi=ypi*(ypi2-1.0_r8)
3062  hy2=hy(v)*hy(v)
3063 C
3064  sum=hzi(v)*(
3065  > -(
3066  > xpi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
3067  > xp*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
3068  > +(
3069  > xpi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
3070  > xp*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
3071 C
3072  sum=sum+sixth*hy2*hzi(v)*(
3073  > -(
3074  > xpi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
3075  > xp*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
3076  > +(
3077  > xpi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
3078  > xp*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
3079 C
3080  fval(v,iadr)=sum
3081  enddo
3082  endif
3083 C
3084  if(ict(7).eq.1) then
3085 C ! fxyyyz
3086  iadr=iadr+1
3087  do v=1,ivec
3088  i=ii(v)
3089  j=jj(v)
3090  k=kk(v)
3091 C
3092 C ...in x direction
3093 C
3094  xp=xparam(v)
3095  xpi=1.0_r8-xp
3096  xp2=xp*xp
3097  xpi2=xpi*xpi
3098 
3099  cxd=3.0_r8*xp2-1.0_r8
3100  cxdi=-3.0_r8*xpi2+1.0_r8
3101 C
3102 C ...and in z direction
3103 C
3104  zp=zparam(v)
3105  zpi=1.0_r8-zp
3106  zp2=zp*zp
3107  zpi2=zpi*zpi
3108 
3109  czd=3.0_r8*zp2-1.0_r8
3110  czdi=-3.0_r8*zpi2+1.0_r8
3111 C
3112  sum=hxi(v)*hzi(v)*hyi(v)*(
3113  > -(
3114  > ( fin(2,i,j,k) -fin(2,i,j+1,k))
3115  > +(-fin(2,i+1,j,k)+fin(2,i+1,j+1,k)))
3116  > +(
3117  > ( fin(2,i,j,k+1) -fin(2,i,j+1,k+1))
3118  > +(-fin(2,i+1,j,k+1)+fin(2,i+1,j+1,k+1))))
3119 C
3120  sum=sum+sixth*hx(v)*hzi(v)*hyi(v)*(
3121  > -(
3122  > cxdi*(-fin(4,i,j,k) +fin(4,i,j+1,k))+
3123  > cxd*(-fin(4,i+1,j,k) +fin(4,i+1,j+1,k)))
3124  > +(
3125  > cxdi*(-fin(4,i,j,k+1) +fin(4,i,j+1,k+1))+
3126  > cxd*(-fin(4,i+1,j,k+1) +fin(4,i+1,j+1,k+1))))
3127 C
3128  sum=sum+sixth*hz(v)*hxi(v)*hyi(v)*(
3129  > czdi*(
3130  > ( fin(6,i,j,k) -fin(6,i,j+1,k))
3131  > +(-fin(6,i+1,j,k)+fin(6,i+1,j+1,k)))
3132  > +czd*(
3133  > ( fin(6,i,j,k+1) -fin(6,i,j+1,k+1))
3134  > +(-fin(6,i+1,j,k+1)+fin(6,i+1,j+1,k+1))))
3135 C
3136  sum=sum+z36th*hx(v)*hz(v)*hyi(v)*(
3137  > czdi*(
3138  > cxdi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
3139  > cxd*(-fin(7,i+1,j,k) +fin(7,i+1,j+1,k)))
3140  > +czd*(
3141  > cxdi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
3142  > cxd*(-fin(7,i+1,j,k+1) +fin(7,i+1,j+1,k+1))))
3143 C
3144  fval(v,iadr)=sum
3145  enddo
3146  endif
3147 C
3148  if(ict(8).eq.1) then
3149 C ! fxyzzz
3150  iadr=iadr+1
3151  do v=1,ivec
3152  i=ii(v)
3153  j=jj(v)
3154  k=kk(v)
3155 C
3156 C ...in x direction
3157 C
3158  xp=xparam(v)
3159  xpi=1.0_r8-xp
3160  xp2=xp*xp
3161  xpi2=xpi*xpi
3162 
3163  cxd=3.0_r8*xp2-1.0_r8
3164  cxdi=-3.0_r8*xpi2+1.0_r8
3165 C
3166 C ...and in y direction
3167 C
3168  yp=yparam(v)
3169  ypi=1.0_r8-yp
3170  yp2=yp*yp
3171  ypi2=ypi*ypi
3172 
3173  cyd=3.0_r8*yp2-1.0_r8
3174  cydi=-3.0_r8*ypi2+1.0_r8
3175 C
3176  sum=hyi(v)*hxi(v)*hzi(v)*(
3177  > -(
3178  > ( +fin(3,i,j,k) -fin(3,i,j+1,k))
3179  > +( -fin(3,i+1,j,k)+fin(3,i+1,j+1,k)))
3180  > +(
3181  > ( +fin(3,i,j,k+1) -fin(3,i,j+1,k+1))
3182  > +( -fin(3,i+1,j,k+1)+fin(3,i+1,j+1,k+1))))
3183 C
3184  sum=sum+sixth*hx(v)*hyi(v)*hzi(v)*(
3185  > -(
3186  > cxdi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
3187  > cxd*( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
3188  > +(
3189  > cxdi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
3190  > cxd*( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
3191 C
3192  sum=sum+sixth*hy(v)*hxi(v)*hzi(v)*(
3193  > -(
3194  > -(cydi*fin(6,i,j,k) +cyd*fin(6,i,j+1,k))
3195  > +(cydi*fin(6,i+1,j,k)+cyd*fin(6,i+1,j+1,k)))
3196  > +(
3197  > -(cydi*fin(6,i,j,k+1) +cyd*fin(6,i,j+1,k+1))
3198  > +(cydi*fin(6,i+1,j,k+1)+cyd*fin(6,i+1,j+1,k+1))))
3199 C
3200  sum=sum+z36th*hx(v)*hy(v)*hzi(v)*(
3201  > -(
3202  > cxdi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
3203  > cxd*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
3204  > +(
3205  > cxdi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
3206  > cxd*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
3207 C
3208  fval(v,iadr)=sum
3209  enddo
3210  endif
3211 C
3212  if(ict(9).eq.1) then
3213 C ! fyyyzz
3214  iadr=iadr+1
3215  do v=1,ivec
3216  i=ii(v)
3217  j=jj(v)
3218  k=kk(v)
3219 C
3220 C ...in x direction
3221 C
3222  xp=xparam(v)
3223  xpi=1.0_r8-xp
3224  xp2=xp*xp
3225  xpi2=xpi*xpi
3226 C
3227  cx=xp*(xp2-1.0_r8)
3228  cxi=xpi*(xpi2-1.0_r8)
3229  hx2=hx(v)*hx(v)
3230 C
3231 C ...and in z direction
3232 C
3233  zp=zparam(v)
3234  zpi=1.0_r8-zp
3235 C
3236  sum=hyi(v)*(
3237  > zpi*(
3238  > xpi*(-fin(6,i,j,k) +fin(6,i,j+1,k))+
3239  > xp*( -fin(6,i+1,j,k)+fin(6,i+1,j+1,k)))
3240  > +zp*(
3241  > xpi*(-fin(6,i,j,k+1) +fin(6,i,j+1,k+1))+
3242  > xp*( -fin(6,i+1,j,k+1)+fin(6,i+1,j+1,k+1))))
3243 C
3244  sum=sum+sixth*hx2*hyi(v)*(
3245  > zpi*(
3246  > cxi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
3247  > cx*( -fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
3248  > +zp*(
3249  > cxi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
3250  > cx*( -fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
3251 C
3252  fval(v,iadr)=sum
3253  enddo
3254  endif
3255 C
3256  if(ict(10).eq.1) then
3257 C ! fyyzzz
3258  iadr=iadr+1
3259  do v=1,ivec
3260  i=ii(v)
3261  j=jj(v)
3262  k=kk(v)
3263 C
3264 C ...in x direction
3265 C
3266  xp=xparam(v)
3267  xpi=1.0_r8-xp
3268  xp2=xp*xp
3269  xpi2=xpi*xpi
3270 C
3271  cx=xp*(xp2-1.0_r8)
3272  cxi=xpi*(xpi2-1.0_r8)
3273  hx2=hx(v)*hx(v)
3274 C
3275 C ...and in y direction
3276 C
3277  yp=yparam(v)
3278  ypi=1.0_r8-yp
3279 C
3280  sum=hzi(v)*(
3281  > -(
3282  > xpi*(ypi*fin(6,i,j,k) +yp*fin(6,i,j+1,k))+
3283  > xp*( ypi*fin(6,i+1,j,k)+yp*fin(6,i+1,j+1,k)))
3284  > +(
3285  > xpi*(ypi*fin(6,i,j,k+1) +yp*fin(6,i,j+1,k+1))+
3286  > xp*(ypi*fin(6,i+1,j,k+1)+yp*fin(6,i+1,j+1,k+1))))
3287 C
3288  sum=sum+sixth*hx2*hzi(v)*(
3289  > -(
3290  > cxi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
3291  > cx*( ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
3292  > +(
3293  > cxi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
3294  > cx*( ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
3295 C
3296  fval(v,iadr)=sum
3297  enddo
3298  endif
3299 C
3300 C----------------------------------
3301 C 6th derivatives (2 in each coordinate)
3302 C
3303  else if(ict(1).eq.6) then
3304 C ! fxxyyzz
3305  iadr=iadr+1
3306  do v=1,ivec
3307  i=ii(v)
3308  j=jj(v)
3309  k=kk(v)
3310 C
3311 C ...in x direction
3312 C
3313  xp=xparam(v)
3314  xpi=1.0_r8-xp
3315 C
3316 C ...and in y direction
3317 C
3318  yp=yparam(v)
3319  ypi=1.0_r8-yp
3320 C
3321 C ...and in z direction
3322 C
3323  zp=zparam(v)
3324  zpi=1.0_r8-zp
3325 C
3326  sum=(
3327  > zpi*(
3328  > xpi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
3329  > xp*(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
3330  > +zp*(
3331  > xpi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
3332  > xp*(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
3333 C
3334  fval(v,iadr)=sum
3335  enddo
3336  endif
3337 C
3338 C----------------------------------
3339 C 6th derivatives (3 in a coordinate)
3340 C
3341  if(ict(1).eq.-6) then
3342  if(ict(2).eq.1) then
3343 C ! fxxxyyy
3344  iadr=iadr+1
3345  do v=1,ivec
3346  i=ii(v)
3347  j=jj(v)
3348  k=kk(v)
3349 C
3350 C ...and in z direction
3351 C
3352  zp=zparam(v)
3353  zpi=1.0_r8-zp
3354  zp2=zp*zp
3355  zpi2=zpi*zpi
3356 C
3357  cz=zp*(zp2-1.0_r8)
3358  czi=zpi*(zpi2-1.0_r8)
3359  hz2=hz(v)*hz(v)
3360 C
3361  sum=hyi(v)*hxi(v)*(
3362  > zpi*(
3363  > ( fin(4,i,j,k) -fin(4,i,j+1,k))
3364  > +(-fin(4,i+1,j,k)+fin(4,i+1,j+1,k)))
3365  > +zp*(
3366  > ( fin(4,i,j,k+1) -fin(4,i,j+1,k+1))
3367  > +(-fin(4,i+1,j,k+1)+fin(4,i+1,j+1,k+1))))
3368 C
3369  sum=sum+sixth*hz2*hyi(v)*hxi(v)*(
3370  > czi*(
3371  > ( fin(7,i,j,k) -fin(7,i,j+1,k))
3372  > +(-fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
3373  > +cz*(
3374  > ( fin(7,i,j,k+1) -fin(7,i,j+1,k+1))
3375  > +(-fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
3376 C
3377  fval(v,iadr)=sum
3378  enddo
3379  endif
3380 C
3381  if(ict(3).eq.1) then
3382 C ! fxxxyyz
3383  iadr=iadr+1
3384  do v=1,ivec
3385  i=ii(v)
3386  j=jj(v)
3387  k=kk(v)
3388 C
3389 C ...and in y direction
3390 C
3391  yp=yparam(v)
3392  ypi=1.0_r8-yp
3393 C
3394 C ...and in z direction
3395 C
3396  zp=zparam(v)
3397  zpi=1.0_r8-zp
3398  zp2=zp*zp
3399  zpi2=zpi*zpi
3400 
3401  czd=3.0_r8*zp2-1.0_r8
3402  czdi=-3.0_r8*zpi2+1.0_r8
3403 C
3404  sum=hxi(v)*hzi(v)*(
3405  > -(
3406  > -(ypi*fin(4,i,j,k) +yp*fin(4,i,j+1,k))
3407  > +( ypi*fin(4,i+1,j,k)+yp*fin(4,i+1,j+1,k)))
3408  > +(
3409  > -(ypi*fin(4,i,j,k+1) +yp*fin(4,i,j+1,k+1))
3410  > +(ypi*fin(4,i+1,j,k+1)+yp*fin(4,i+1,j+1,k+1))))
3411 C
3412  sum=sum+sixth*hz(v)*hxi(v)*(
3413  > czdi*(
3414  > -(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))
3415  > +(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
3416  > +czd*(
3417  > -(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))
3418  > +(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
3419 C
3420  fval(v,iadr)=sum
3421  enddo
3422  endif
3423 C
3424  if(ict(4).eq.1) then
3425 C ! fxxxyzz
3426  iadr=iadr+1
3427  do v=1,ivec
3428  i=ii(v)
3429  j=jj(v)
3430  k=kk(v)
3431 C
3432 C ...and in y direction
3433 C
3434  yp=yparam(v)
3435  ypi=1.0_r8-yp
3436  yp2=yp*yp
3437  ypi2=ypi*ypi
3438 
3439  cyd=3.0_r8*yp2-1.0_r8
3440  cydi=-3.0_r8*ypi2+1.0_r8
3441 C
3442 C ...and in z direction
3443 C
3444  zp=zparam(v)
3445  zpi=1.0_r8-zp
3446 C
3447  sum=hxi(v)*hyi(v)*(
3448  > zpi*(
3449  > ( fin(5,i,j,k) -fin(5,i,j+1,k))
3450  > +(-fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
3451  > +zp*(
3452  > ( fin(5,i,j,k+1) -fin(5,i,j+1,k+1))
3453  > +(-fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
3454 C
3455  sum=sum+sixth*hy(v)*hxi(v)*(
3456  > zpi*(
3457  > -(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))
3458  > +(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
3459  > +zp*(
3460  > -(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))
3461  > +(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
3462 C
3463  fval(v,iadr)=sum
3464  enddo
3465  endif
3466 C
3467  if(ict(5).eq.1) then
3468 C ! fxxxzzz
3469  iadr=iadr+1
3470  do v=1,ivec
3471  i=ii(v)
3472  j=jj(v)
3473  k=kk(v)
3474 C
3475 C ...and in y direction
3476 C
3477  yp=yparam(v)
3478  ypi=1.0_r8-yp
3479  yp2=yp*yp
3480  ypi2=ypi*ypi
3481 C
3482  cy=yp*(yp2-1.0_r8)
3483  cyi=ypi*(ypi2-1.0_r8)
3484  hy2=hy(v)*hy(v)
3485 C
3486  sum=hxi(v)*hzi(v)*(
3487  > -(
3488  > -(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))
3489  > +(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
3490  > +(
3491  > -(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))
3492  > +(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
3493 C
3494  sum=sum+sixth*hy2*hxi(v)*hzi(v)*(
3495  > -(
3496  > -(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))
3497  > +(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
3498  > +(
3499  > -(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))
3500  > +(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
3501 C
3502  fval(v,iadr)=sum
3503  enddo
3504  endif
3505 C
3506  if(ict(6).eq.1) then
3507 C ! fxxyyyz
3508  iadr=iadr+1
3509  do v=1,ivec
3510  i=ii(v)
3511  j=jj(v)
3512  k=kk(v)
3513 C
3514 C ...in x direction
3515 C
3516  xp=xparam(v)
3517  xpi=1.0_r8-xp
3518 C
3519 C ...and in z direction
3520 C
3521  zp=zparam(v)
3522  zpi=1.0_r8-zp
3523  zp2=zp*zp
3524  zpi2=zpi*zpi
3525 
3526  czd=3.0_r8*zp2-1.0_r8
3527  czdi=-3.0_r8*zpi2+1.0_r8
3528 C
3529  sum=hzi(v)*hyi(v)*(
3530  > -(
3531  > xpi*(-fin(4,i,j,k) +fin(4,i,j+1,k))+
3532  > xp*(-fin(4,i+1,j,k) +fin(4,i+1,j+1,k)))
3533  > +(
3534  > xpi*(-fin(4,i,j,k+1) +fin(4,i,j+1,k+1))+
3535  > xp*(-fin(4,i+1,j,k+1) +fin(4,i+1,j+1,k+1))))
3536 C
3537  sum=sum+sixth*hz(v)*hyi(v)*(
3538  > czdi*(
3539  > xpi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
3540  > xp*(-fin(7,i+1,j,k) +fin(7,i+1,j+1,k)))
3541  > +czd*(
3542  > xpi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
3543  > xp*(-fin(7,i+1,j,k+1) +fin(7,i+1,j+1,k+1))))
3544 C
3545  fval(v,iadr)=sum
3546  enddo
3547  endif
3548 C
3549  if(ict(7).eq.1) then
3550 C ! fxxyzzz
3551  iadr=iadr+1
3552  do v=1,ivec
3553  i=ii(v)
3554  j=jj(v)
3555  k=kk(v)
3556 C
3557 C ...in x direction
3558 C
3559  xp=xparam(v)
3560  xpi=1.0_r8-xp
3561 C
3562 C ...and in y direction
3563 C
3564  yp=yparam(v)
3565  ypi=1.0_r8-yp
3566  yp2=yp*yp
3567  ypi2=ypi*ypi
3568 
3569  cyd=3.0_r8*yp2-1.0_r8
3570  cydi=-3.0_r8*ypi2+1.0_r8
3571 C
3572  sum=hyi(v)*hzi(v)*(
3573  > -(
3574  > xpi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
3575  > xp*( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
3576  > +(
3577  > xpi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
3578  > xp*( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
3579 C
3580  sum=sum+sixth*hy(v)*hzi(v)*(
3581  > -(
3582  > xpi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
3583  > xp*( cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
3584  > +(
3585  > xpi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
3586  > xp*( cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
3587 C
3588  fval(v,iadr)=sum
3589  enddo
3590  endif
3591 C
3592  if(ict(8).eq.1) then
3593 C ! fxyyyzz
3594  iadr=iadr+1
3595  do v=1,ivec
3596  i=ii(v)
3597  j=jj(v)
3598  k=kk(v)
3599 C
3600 C ...in x direction
3601 C
3602  xp=xparam(v)
3603  xpi=1.0_r8-xp
3604  xp2=xp*xp
3605  xpi2=xpi*xpi
3606 
3607  cxd=3.0_r8*xp2-1.0_r8
3608  cxdi=-3.0_r8*xpi2+1.0_r8
3609 C
3610 C ...and in z direction
3611 C
3612  zp=zparam(v)
3613  zpi=1.0_r8-zp
3614 C
3615  sum=hxi(v)*hyi(v)*(
3616  > zpi*(
3617  > ( fin(6,i,j,k) -fin(6,i,j+1,k))
3618  > +(-fin(6,i+1,j,k)+fin(6,i+1,j+1,k)))
3619  > +zp*(
3620  > ( fin(6,i,j,k+1) -fin(6,i,j+1,k+1))
3621  > +(-fin(6,i+1,j,k+1)+fin(6,i+1,j+1,k+1))))
3622 C
3623  sum=sum+sixth*hx(v)*hyi(v)*(
3624  > zpi*(
3625  > cxdi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
3626  > cxd*(-fin(7,i+1,j,k) +fin(7,i+1,j+1,k)))
3627  > +zp*(
3628  > cxdi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
3629  > cxd*(-fin(7,i+1,j,k+1) +fin(7,i+1,j+1,k+1))))
3630 C
3631  fval(v,iadr)=sum
3632  enddo
3633  endif
3634 C
3635  if(ict(9).eq.1) then
3636 C ! fxyyzzz
3637  iadr=iadr+1
3638  do v=1,ivec
3639  i=ii(v)
3640  j=jj(v)
3641  k=kk(v)
3642 C
3643 C ...in x direction
3644 C
3645  xp=xparam(v)
3646  xpi=1.0_r8-xp
3647  xp2=xp*xp
3648  xpi2=xpi*xpi
3649 
3650  cxd=3.0_r8*xp2-1.0_r8
3651  cxdi=-3.0_r8*xpi2+1.0_r8
3652 C
3653 C ...and in y direction
3654 C
3655  yp=yparam(v)
3656  ypi=1.0_r8-yp
3657 C
3658  sum=hxi(v)*hzi(v)*(
3659  > -(
3660  > -(ypi*fin(6,i,j,k) +yp*fin(6,i,j+1,k))
3661  > +(ypi*fin(6,i+1,j,k)+yp*fin(6,i+1,j+1,k)))
3662  > +(
3663  > -(ypi*fin(6,i,j,k+1) +yp*fin(6,i,j+1,k+1))
3664  > +(ypi*fin(6,i+1,j,k+1)+yp*fin(6,i+1,j+1,k+1))))
3665 C
3666  sum=sum+sixth*hx(v)*hzi(v)*(
3667  > -(
3668  > cxdi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
3669  > cxd*(ypi*fin(7,i+1,j,k) +yp*fin(7,i+1,j+1,k)))
3670  > +(
3671  > cxdi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
3672  > cxd*( ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
3673 C
3674  fval(v,iadr)=sum
3675  enddo
3676  endif
3677 C
3678  if(ict(10).eq.1) then
3679 C ! fyyyzzz
3680  iadr=iadr+1
3681  do v=1,ivec
3682  i=ii(v)
3683  j=jj(v)
3684  k=kk(v)
3685 C
3686 C ...in x direction
3687 C
3688  xp=xparam(v)
3689  xpi=1.0_r8-xp
3690  xp2=xp*xp
3691  xpi2=xpi*xpi
3692 C
3693  cx=xp*(xp2-1.0_r8)
3694  cxi=xpi*(xpi2-1.0_r8)
3695  hx2=hx(v)*hx(v)
3696 C
3697  sum=hyi(v)*hzi(v)*(
3698  > -(
3699  > xpi*(-fin(6,i,j,k) +fin(6,i,j+1,k))+
3700  > xp*( -fin(6,i+1,j,k)+fin(6,i+1,j+1,k)))
3701  > +(
3702  > xpi*(-fin(6,i,j,k+1) +fin(6,i,j+1,k+1))+
3703  > xp*( -fin(6,i+1,j,k+1)+fin(6,i+1,j+1,k+1))))
3704 C
3705  sum=sum+sixth*hx2*hyi(v)*hzi(v)*(
3706  > -(
3707  > cxi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
3708  > cx*( -fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
3709  > +(
3710  > cxi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
3711  > cx*( -fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
3712 C
3713  fval(v,iadr)=sum
3714  enddo
3715  endif
3716 C
3717 C----------------------------------
3718 C 7th derivatives
3719 C
3720  else if(abs(ict(1)).eq.7) then
3721  if(ict(2).eq.1) then
3722 C ! fxxxyyyz
3723  iadr=iadr+1
3724  do v=1,ivec
3725  i=ii(v)
3726  j=jj(v)
3727  k=kk(v)
3728 C
3729 C ...and in z direction
3730 C
3731  zp=zparam(v)
3732  zpi=1.0_r8-zp
3733  zp2=zp*zp
3734  zpi2=zpi*zpi
3735 
3736  czd=3.0_r8*zp2-1.0_r8
3737  czdi=-3.0_r8*zpi2+1.0_r8
3738 C
3739  sum=hyi(v)*hxi(v)*hzi(v)*(
3740  > -(
3741  > ( fin(4,i,j,k) -fin(4,i,j+1,k))
3742  > +(-fin(4,i+1,j,k)+fin(4,i+1,j+1,k)))
3743  > +(
3744  > ( fin(4,i,j,k+1) -fin(4,i,j+1,k+1))
3745  > +(-fin(4,i+1,j,k+1)+fin(4,i+1,j+1,k+1))))
3746 C
3747  sum=sum+sixth*hz(v)*hyi(v)*hxi(v)*(
3748  > czdi*(
3749  > ( fin(7,i,j,k) -fin(7,i,j+1,k))
3750  > +(-fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
3751  > +czd*(
3752  > ( fin(7,i,j,k+1) -fin(7,i,j+1,k+1))
3753  > +(-fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
3754 C
3755  fval(v,iadr)=sum
3756  enddo
3757  endif
3758 C
3759  if(ict(3).eq.1) then
3760 C ! fxxxyyzz
3761  iadr=iadr+1
3762  do v=1,ivec
3763  i=ii(v)
3764  j=jj(v)
3765  k=kk(v)
3766 C
3767 C ...and in y direction
3768 C
3769  yp=yparam(v)
3770  ypi=1.0_r8-yp
3771 C
3772 C ...and in z direction
3773 C
3774  zp=zparam(v)
3775  zpi=1.0_r8-zp
3776 C
3777  sum=hxi(v)*(
3778  > zpi*(
3779  > -(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))
3780  > +(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
3781  > +zp*(
3782  > -(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))
3783  > +(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
3784 C
3785  fval(v,iadr)=sum
3786  enddo
3787  endif
3788 C
3789  if(ict(4).eq.1) then
3790 C ! fxxxyzzz
3791  iadr=iadr+1
3792  do v=1,ivec
3793  i=ii(v)
3794  j=jj(v)
3795  k=kk(v)
3796 C
3797 C ...and in y direction
3798 C
3799  yp=yparam(v)
3800  ypi=1.0_r8-yp
3801  yp2=yp*yp
3802  ypi2=ypi*ypi
3803 
3804  cyd=3.0_r8*yp2-1.0_r8
3805  cydi=-3.0_r8*ypi2+1.0_r8
3806 C
3807  sum=hxi(v)*hyi(v)*hzi(v)*(
3808  > -(
3809  > ( fin(5,i,j,k) -fin(5,i,j+1,k))
3810  > +(-fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
3811  > +(
3812  > ( fin(5,i,j,k+1) -fin(5,i,j+1,k+1))
3813  > +(-fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
3814 C
3815  sum=sum+sixth*hy(v)*hxi(v)*hzi(v)*(
3816  > -(
3817  > -(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))
3818  > +(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
3819  > +(
3820  > -(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))
3821  > +(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
3822 C
3823  fval(v,iadr)=sum
3824  enddo
3825  endif
3826 C
3827  if(ict(5).eq.1) then
3828 C ! fxxyyyzz
3829  iadr=iadr+1
3830  do v=1,ivec
3831  i=ii(v)
3832  j=jj(v)
3833  k=kk(v)
3834 C
3835 C ...in x direction
3836 C
3837  xp=xparam(v)
3838  xpi=1.0_r8-xp
3839 C
3840 C ...and in z direction
3841 C
3842  zp=zparam(v)
3843  zpi=1.0_r8-zp
3844 C
3845  sum=hyi(v)*(
3846  > zpi*(
3847  > xpi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
3848  > xp*( -fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
3849  > +zp*(
3850  > xpi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
3851  > xp*( -fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
3852 C
3853  fval(v,iadr)=sum
3854  enddo
3855  endif
3856 C
3857  if(ict(6).eq.1) then
3858 C ! fxxyyzzz
3859  iadr=iadr+1
3860  do v=1,ivec
3861  i=ii(v)
3862  j=jj(v)
3863  k=kk(v)
3864 C
3865 C ...in x direction
3866 C
3867  xp=xparam(v)
3868  xpi=1.0_r8-xp
3869 C
3870 C ...and in y direction
3871 C
3872  yp=yparam(v)
3873  ypi=1.0_r8-yp
3874 C
3875  sum=hzi(v)*(
3876  > -(
3877  > xpi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
3878  > xp*(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
3879  > +(
3880  > xpi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
3881  > xp*(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
3882 C
3883  fval(v,iadr)=sum
3884  enddo
3885  endif
3886 C
3887  if(ict(7).eq.1) then
3888 C ! fxyyyzzz
3889  iadr=iadr+1
3890  do v=1,ivec
3891  i=ii(v)
3892  j=jj(v)
3893  k=kk(v)
3894 C
3895 C ...in x direction
3896 C
3897  xp=xparam(v)
3898  xpi=1.0_r8-xp
3899  xp2=xp*xp
3900  xpi2=xpi*xpi
3901 
3902  cxd=3.0_r8*xp2-1.0_r8
3903  cxdi=-3.0_r8*xpi2+1.0_r8
3904 C
3905  sum=hxi(v)*hyi(v)*hzi(v)*(
3906  > -(
3907  > ( fin(6,i,j,k) -fin(6,i,j+1,k))
3908  > +(-fin(6,i+1,j,k)+fin(6,i+1,j+1,k)))
3909  > +(
3910  > ( fin(6,i,j,k+1) -fin(6,i,j+1,k+1))
3911  > +(-fin(6,i+1,j,k+1)+fin(6,i+1,j+1,k+1))))
3912 C
3913  sum=sum+sixth*hx(v)*hyi(v)*hzi(v)*(
3914  > -(
3915  > cxdi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
3916  > cxd*(-fin(7,i+1,j,k) +fin(7,i+1,j+1,k)))
3917  > +(
3918  > cxdi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
3919  > cxd*(-fin(7,i+1,j,k+1) +fin(7,i+1,j+1,k+1))))
3920 C
3921  fval(v,iadr)=sum
3922  enddo
3923  endif
3924 C
3925 C----------------------------------
3926 C 8th derivatives
3927 C
3928  else if(abs(ict(1)).eq.8) then
3929  if(ict(2).eq.1) then
3930 C ! fxxxyyyzz
3931  iadr=iadr+1
3932  do v=1,ivec
3933  i=ii(v)
3934  j=jj(v)
3935  k=kk(v)
3936 C
3937 C ...and in z direction
3938 C
3939  zp=zparam(v)
3940  zpi=1.0_r8-zp
3941 C
3942  sum=hyi(v)*hxi(v)*(
3943  > zpi*(
3944  > ( fin(7,i,j,k) -fin(7,i,j+1,k))
3945  > +(-fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
3946  > +zp*(
3947  > ( fin(7,i,j,k+1) -fin(7,i,j+1,k+1))
3948  > +(-fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
3949 C
3950  fval(v,iadr)=sum
3951  enddo
3952  endif
3953 C
3954  if(ict(3).eq.1) then
3955 C ! fxxxyyzzz
3956  iadr=iadr+1
3957  do v=1,ivec
3958  i=ii(v)
3959  j=jj(v)
3960  k=kk(v)
3961 C
3962 C ...and in y direction
3963 C
3964  yp=yparam(v)
3965  ypi=1.0_r8-yp
3966 C
3967  sum=hxi(v)*hzi(v)*(
3968  > -(
3969  > -(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))
3970  > +(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
3971  > +(
3972  > -(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))
3973  > +(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
3974 C
3975  fval(v,iadr)=sum
3976  enddo
3977  endif
3978 C
3979  if(ict(4).eq.1) then
3980 C ! fxxyyyzzz
3981  iadr=iadr+1
3982  do v=1,ivec
3983  i=ii(v)
3984  j=jj(v)
3985  k=kk(v)
3986 C
3987 C ...in x direction
3988 C
3989  xp=xparam(v)
3990  xpi=1.0_r8-xp
3991 C
3992  sum=hyi(v)*hzi(v)*(
3993  > -(
3994  > xpi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
3995  > xp*( -fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
3996  > +(
3997  > xpi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
3998  > xp*( -fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
3999  fval(v,iadr)=sum
4000 C
4001  enddo
4002  endif
4003 C
4004 C----------------------------------
4005 C 9th derivative
4006 C
4007  else if(abs(ict(1)).eq.9) then
4008 C ! fxxxyyyzzz
4009  iadr=iadr+1
4010  do v=1,ivec
4011  i=ii(v)
4012  j=jj(v)
4013  k=kk(v)
4014 C
4015  sum=hyi(v)*hxi(v)*hzi(v)*(
4016  > -(
4017  > ( fin(7,i,j,k) -fin(7,i,j+1,k))
4018  > +(-fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
4019  > +(
4020  > ( fin(7,i,j,k+1) -fin(7,i,j+1,k+1))
4021  > +(-fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
4022 C
4023  fval(v,iadr)=sum
4024  enddo
4025  endif
4026 C
4027  return
4028  end
4029 C---------------------------------------------------------------------
4030 C evaluate C1 cubic Hermite function interpolation -- 3d fcn
4031 C --vectorized-- dmc 10 Feb 1999
4032 C --optimized for VARIATION along x axis ONLY--
4033 C
4034  subroutine r8fvtricubx(ict,ivec,ivecd,
4035  > fval,ii,jj,kk,xparam,yparam,zparam,
4036  > hx,hxi,hy,hyi,hz,hzi,
4037  > fin,inf2,inf3,nz)
4038 C
4039 C use mktricub to set up spline coefficients...
4040 C
4041 !============
4042 ! idecl: explicitize implicit INTEGER declarations:
4043  IMPLICIT NONE
4044  INTEGER, PARAMETER :: R8=selected_real_kind(12,100)
4045  INTEGER inf3,nz,inf2,iadr,j,k,i
4046 !============
4047 ! idecl: explicitize implicit REAL declarations:
4048  REAL*8 z36th,z216th,yp,ypi,yp2,ypi2,cy,cyi,hy2,zp,zpi,zp2
4049  REAL*8 zpi2,cz,czi,hz2,xp,xpi,xp2,xpi2,cx,cxi,hx2,cxd,cxdi
4050  REAL*8 cyd,cydi,czd,czdi
4051 !============
4052  integer ict(10) ! requested output control
4053  integer ivec ! vector length
4054  integer ivecd ! vector dimension (1st dim of fval)
4055 C
4056  integer ii(ivec),jj,kk ! target cells (i,j,k)
4057  real*8 xparam(ivec),yparam,zparam
4058  ! normalized displacements from (i,j,k) corners
4059 C
4060  real*8 hx(ivec),hy,hz ! grid spacing, and
4061  real*8 hxi(ivec),hyi,hzi ! inverse grid spacing
4062  ! 1/(x(i+1)-x(i)) & 1/(y(j+1)-y(j)) & 1/(z(k+1)-z(i))
4063 C
4064  real*8 fin(0:7,inf2,inf3,nz) ! interpolant data (cf "evtricub")
4065 C
4066  real*8 fval(ivecd,*) ! output returned
4067 C
4068 C for detailed description of fin, ict and fval see subroutine evtricub
4069 C comments. Note ict is not vectorized; the same output
4070 C is expected to be returned for all input vector data points.
4071 C
4072 C note that the index inputs ii,jj,kk and parameter inputs
4073 C xparam,yparam,zparam,hx,hxi,hy,hyi,hz,hzi are vectorized, and the
4074 C output array fval has a vector ** 1st dimension ** whose
4075 C size must be given as a separate argument
4076 C
4077 C to use this routine in scalar mode, pass in ivec=ivecd=1
4078 C
4079 C---------------
4080 C
4081  integer v
4082 C
4083  REAL*8 sum
4084  REAL*8, parameter :: sixth = 0.166666666666666667_r8
4085 C
4086 C---------------
4087 C
4088  z36th=sixth*sixth
4089  z216th=sixth*sixth*sixth
4090 C
4091  iadr=0
4092  if(abs(ict(1)).le.2) then
4093 C
4094 C 0, 1st, 2nd derivatives...
4095 C
4096 C get desired values:
4097 C
4098  if(ict(1).eq.1) then
4099 C
4100 C function value...
4101 C
4102  j=jj
4103  k=kk
4104 C
4105 C ...and in y direction
4106 C
4107  yp=yparam
4108  ypi=1.0_r8-yp
4109  yp2=yp*yp
4110  ypi2=ypi*ypi
4111 C
4112  cy=yp*(yp2-1.0_r8)
4113  cyi=ypi*(ypi2-1.0_r8)
4114  hy2=hy*hy
4115 C
4116 C ...and in z direction
4117 C
4118  zp=zparam
4119  zpi=1.0_r8-zp
4120  zp2=zp*zp
4121  zpi2=zpi*zpi
4122 C
4123  cz=zp*(zp2-1.0_r8)
4124  czi=zpi*(zpi2-1.0_r8)
4125  hz2=hz*hz
4126 
4127  iadr=iadr+1
4128  do v=1,ivec
4129  i=ii(v)
4130 C
4131 C ...in x direction
4132 C
4133  xp=xparam(v)
4134  xpi=1.0_r8-xp
4135  xp2=xp*xp
4136  xpi2=xpi*xpi
4137 C
4138  cx=xp*(xp2-1.0_r8)
4139  cxi=xpi*(xpi2-1.0_r8)
4140  hx2=hx(v)*hx(v)
4141 C
4142  sum=(
4143  > zpi*(
4144  > xpi*(ypi*fin(0,i,j,k) +yp*fin(0,i,j+1,k))+
4145  > xp*(ypi*fin(0,i+1,j,k)+yp*fin(0,i+1,j+1,k)))
4146  > +zp*(
4147  > xpi*(ypi*fin(0,i,j,k+1) +yp*fin(0,i,j+1,k+1))+
4148  > xp*(ypi*fin(0,i+1,j,k+1)+yp*fin(0,i+1,j+1,k+1))))
4149 C
4150  sum=sum+sixth*hx2*(
4151  > zpi*(
4152  > cxi*(ypi*fin(1,i,j,k) +yp*fin(1,i,j+1,k))+
4153  > cx*(ypi*fin(1,i+1,j,k)+yp*fin(1,i+1,j+1,k)))
4154  > +zp*(
4155  > cxi*(ypi*fin(1,i,j,k+1) +yp*fin(1,i,j+1,k+1))+
4156  > cx*(ypi*fin(1,i+1,j,k+1)+yp*fin(1,i+1,j+1,k+1))))
4157 C
4158  sum=sum+sixth*hy2*(
4159  > zpi*(
4160  > xpi*(cyi*fin(2,i,j,k) +cy*fin(2,i,j+1,k))+
4161  > xp*(cyi*fin(2,i+1,j,k)+cy*fin(2,i+1,j+1,k)))
4162  > +zp*(
4163  > xpi*(cyi*fin(2,i,j,k+1) +cy*fin(2,i,j+1,k+1))+
4164  > xp*(cyi*fin(2,i+1,j,k+1)+cy*fin(2,i+1,j+1,k+1))))
4165 C
4166  sum=sum+sixth*hz2*(
4167  > czi*(
4168  > xpi*(ypi*fin(3,i,j,k) +yp*fin(3,i,j+1,k))+
4169  > xp*(ypi*fin(3,i+1,j,k)+yp*fin(3,i+1,j+1,k)))
4170  > +cz*(
4171  > xpi*(ypi*fin(3,i,j,k+1) +yp*fin(3,i,j+1,k+1))+
4172  > xp*(ypi*fin(3,i+1,j,k+1)+yp*fin(3,i+1,j+1,k+1))))
4173 C
4174  sum=sum+z36th*hx2*hy2*(
4175  > zpi*(
4176  > cxi*(cyi*fin(4,i,j,k) +cy*fin(4,i,j+1,k))+
4177  > cx*(cyi*fin(4,i+1,j,k)+cy*fin(4,i+1,j+1,k)))
4178  > +zp*(
4179  > cxi*(cyi*fin(4,i,j,k+1) +cy*fin(4,i,j+1,k+1))+
4180  > cx*(cyi*fin(4,i+1,j,k+1)+cy*fin(4,i+1,j+1,k+1))))
4181 C
4182  sum=sum+z36th*hx2*hz2*(
4183  > czi*(
4184  > cxi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
4185  > cx*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
4186  > +cz*(
4187  > cxi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
4188  > cx*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
4189 C
4190  sum=sum+z36th*hy2*hz2*(
4191  > czi*(
4192  > xpi*(cyi*fin(6,i,j,k) +cy*fin(6,i,j+1,k))+
4193  > xp*(cyi*fin(6,i+1,j,k)+cy*fin(6,i+1,j+1,k)))
4194  > +cz*(
4195  > xpi*(cyi*fin(6,i,j,k+1) +cy*fin(6,i,j+1,k+1))+
4196  > xp*(cyi*fin(6,i+1,j,k+1)+cy*fin(6,i+1,j+1,k+1))))
4197 C
4198  sum=sum+z216th*hx2*hy2*hz2*(
4199  > czi*(
4200  > cxi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
4201  > cx*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
4202  > +cz*(
4203  > cxi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
4204  > cx*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
4205 C
4206  fval(v,iadr)=sum
4207  enddo
4208  endif
4209 C
4210  if(ict(2).eq.1) then
4211 C
4212 C df/dx:
4213 C
4214  j=jj
4215  k=kk
4216 C
4217 C ...and in y direction
4218 C
4219  yp=yparam
4220  ypi=1.0_r8-yp
4221  yp2=yp*yp
4222  ypi2=ypi*ypi
4223 C
4224  cy=yp*(yp2-1.0_r8)
4225  cyi=ypi*(ypi2-1.0_r8)
4226  hy2=hy*hy
4227 C
4228 C ...and in z direction
4229 C
4230  zp=zparam
4231  zpi=1.0_r8-zp
4232  zp2=zp*zp
4233  zpi2=zpi*zpi
4234 C
4235  cz=zp*(zp2-1.0_r8)
4236  czi=zpi*(zpi2-1.0_r8)
4237  hz2=hz*hz
4238 
4239  iadr=iadr+1
4240  do v=1,ivec
4241  i=ii(v)
4242 C
4243 C ...in x direction
4244 C
4245  xp=xparam(v)
4246  xpi=1.0_r8-xp
4247  xp2=xp*xp
4248  xpi2=xpi*xpi
4249 
4250  cxd=3.0_r8*xp2-1.0_r8
4251  cxdi=-3.0_r8*xpi2+1.0_r8
4252 C
4253  sum=hxi(v)*(
4254  > zpi*(
4255  > -(ypi*fin(0,i,j,k) +yp*fin(0,i,j+1,k))
4256  > +(ypi*fin(0,i+1,j,k)+yp*fin(0,i+1,j+1,k)))
4257  > +zp*(
4258  > -(ypi*fin(0,i,j,k+1) +yp*fin(0,i,j+1,k+1))
4259  > +(ypi*fin(0,i+1,j,k+1)+yp*fin(0,i+1,j+1,k+1))))
4260 C
4261  sum=sum+sixth*hx(v)*(
4262  > zpi*(
4263  > cxdi*(ypi*fin(1,i,j,k) +yp*fin(1,i,j+1,k))+
4264  > cxd*(ypi*fin(1,i+1,j,k)+yp*fin(1,i+1,j+1,k)))
4265  > +zp*(
4266  > cxdi*(ypi*fin(1,i,j,k+1) +yp*fin(1,i,j+1,k+1))+
4267  > cxd*(ypi*fin(1,i+1,j,k+1)+yp*fin(1,i+1,j+1,k+1))))
4268 C
4269  sum=sum+sixth*hxi(v)*hy2*(
4270  > zpi*(
4271  > -(cyi*fin(2,i,j,k) +cy*fin(2,i,j+1,k))
4272  > +(cyi*fin(2,i+1,j,k)+cy*fin(2,i+1,j+1,k)))
4273  > +zp*(
4274  > -(cyi*fin(2,i,j,k+1) +cy*fin(2,i,j+1,k+1))
4275  > +(cyi*fin(2,i+1,j,k+1)+cy*fin(2,i+1,j+1,k+1))))
4276 C
4277  sum=sum+sixth*hxi(v)*hz2*(
4278  > czi*(
4279  > -(ypi*fin(3,i,j,k) +yp*fin(3,i,j+1,k))
4280  > +(ypi*fin(3,i+1,j,k)+yp*fin(3,i+1,j+1,k)))
4281  > +cz*(
4282  > -(ypi*fin(3,i,j,k+1) +yp*fin(3,i,j+1,k+1))
4283  > +(ypi*fin(3,i+1,j,k+1)+yp*fin(3,i+1,j+1,k+1))))
4284 C
4285  sum=sum+z36th*hx(v)*hy2*(
4286  > zpi*(
4287  > cxdi*(cyi*fin(4,i,j,k) +cy*fin(4,i,j+1,k))+
4288  > cxd*(cyi*fin(4,i+1,j,k)+cy*fin(4,i+1,j+1,k)))
4289  > +zp*(
4290  > cxdi*(cyi*fin(4,i,j,k+1) +cy*fin(4,i,j+1,k+1))+
4291  > cxd*(cyi*fin(4,i+1,j,k+1)+cy*fin(4,i+1,j+1,k+1))))
4292 C
4293  sum=sum+z36th*hx(v)*hz2*(
4294  > czi*(
4295  > cxdi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
4296  > cxd*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
4297  > +cz*(
4298  > cxdi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
4299  > cxd*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
4300 C
4301  sum=sum+z36th*hxi(v)*hy2*hz2*(
4302  > czi*(
4303  > -(cyi*fin(6,i,j,k) +cy*fin(6,i,j+1,k))
4304  > +(cyi*fin(6,i+1,j,k)+cy*fin(6,i+1,j+1,k)))
4305  > +cz*(
4306  > -(cyi*fin(6,i,j,k+1) +cy*fin(6,i,j+1,k+1))
4307  > +(cyi*fin(6,i+1,j,k+1)+cy*fin(6,i+1,j+1,k+1))))
4308 C
4309  sum=sum+z216th*hx(v)*hy2*hz2*(
4310  > czi*(
4311  > cxdi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
4312  > cxd*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
4313  > +cz*(
4314  > cxdi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
4315  > cxd*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
4316 C
4317  fval(v,iadr)=sum
4318  enddo
4319  endif
4320 C
4321  if(ict(3).eq.1) then
4322 C
4323 C df/dy:
4324 C
4325  j=jj
4326  k=kk
4327 C
4328 C ...and in y direction
4329 C
4330  yp=yparam
4331  ypi=1.0_r8-yp
4332  yp2=yp*yp
4333  ypi2=ypi*ypi
4334 
4335  cyd=3.0_r8*yp2-1.0_r8
4336  cydi=-3.0_r8*ypi2+1.0_r8
4337 C
4338 C ...and in z direction
4339 C
4340  zp=zparam
4341  zpi=1.0_r8-zp
4342  zp2=zp*zp
4343  zpi2=zpi*zpi
4344 C
4345  cz=zp*(zp2-1.0_r8)
4346  czi=zpi*(zpi2-1.0_r8)
4347  hz2=hz*hz
4348 C
4349  iadr=iadr+1
4350  do v=1,ivec
4351  i=ii(v)
4352 C
4353 C ...in x direction
4354 C
4355  xp=xparam(v)
4356  xpi=1.0_r8-xp
4357  xp2=xp*xp
4358  xpi2=xpi*xpi
4359 C
4360  cx=xp*(xp2-1.0_r8)
4361  cxi=xpi*(xpi2-1.0_r8)
4362  hx2=hx(v)*hx(v)
4363 C
4364  sum=hyi*(
4365  > zpi*(
4366  > xpi*(-fin(0,i,j,k) +fin(0,i,j+1,k))+
4367  > xp*(-fin(0,i+1,j,k)+fin(0,i+1,j+1,k)))
4368  > +zp*(
4369  > xpi*(-fin(0,i,j,k+1) +fin(0,i,j+1,k+1))+
4370  > xp*(-fin(0,i+1,j,k+1)+fin(0,i+1,j+1,k+1))))
4371 C
4372  sum=sum+sixth*hyi*hx2*(
4373  > zpi*(
4374  > cxi*(-fin(1,i,j,k) +fin(1,i,j+1,k))+
4375  > cx*(-fin(1,i+1,j,k)+fin(1,i+1,j+1,k)))
4376  > +zp*(
4377  > cxi*(-fin(1,i,j,k+1) +fin(1,i,j+1,k+1))+
4378  > cx*(-fin(1,i+1,j,k+1)+fin(1,i+1,j+1,k+1))))
4379 C
4380  sum=sum+sixth*hy*(
4381  > zpi*(
4382  > xpi*(cydi*fin(2,i,j,k) +cyd*fin(2,i,j+1,k))+
4383  > xp*(cydi*fin(2,i+1,j,k)+cyd*fin(2,i+1,j+1,k)))
4384  > +zp*(
4385  > xpi*(cydi*fin(2,i,j,k+1) +cyd*fin(2,i,j+1,k+1))+
4386  > xp*(cydi*fin(2,i+1,j,k+1)+cyd*fin(2,i+1,j+1,k+1))))
4387 C
4388  sum=sum+sixth*hyi*hz2*(
4389  > czi*(
4390  > xpi*(-fin(3,i,j,k) +fin(3,i,j+1,k))+
4391  > xp*(-fin(3,i+1,j,k)+fin(3,i+1,j+1,k)))
4392  > +cz*(
4393  > xpi*(-fin(3,i,j,k+1) +fin(3,i,j+1,k+1))+
4394  > xp*(-fin(3,i+1,j,k+1)+fin(3,i+1,j+1,k+1))))
4395 C
4396  sum=sum+z36th*hx2*hy*(
4397  > zpi*(
4398  > cxi*(cydi*fin(4,i,j,k) +cyd*fin(4,i,j+1,k))+
4399  > cx*(cydi*fin(4,i+1,j,k)+cyd*fin(4,i+1,j+1,k)))
4400  > +zp*(
4401  > cxi*(cydi*fin(4,i,j,k+1) +cyd*fin(4,i,j+1,k+1))+
4402  > cx*(cydi*fin(4,i+1,j,k+1)+cyd*fin(4,i+1,j+1,k+1))))
4403 C
4404  sum=sum+z36th*hyi*hx2*hz2*(
4405  > czi*(
4406  > cxi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
4407  > cx*(-fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
4408  > +cz*(
4409  > cxi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
4410  > cx*(-fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
4411 C
4412  sum=sum+z36th*hy*hz2*(
4413  > czi*(
4414  > xpi*(cydi*fin(6,i,j,k) +cyd*fin(6,i,j+1,k))+
4415  > xp*(cydi*fin(6,i+1,j,k)+cyd*fin(6,i+1,j+1,k)))
4416  > +cz*(
4417  > xpi*(cydi*fin(6,i,j,k+1) +cyd*fin(6,i,j+1,k+1))+
4418  > xp*(cydi*fin(6,i+1,j,k+1)+cyd*fin(6,i+1,j+1,k+1))))
4419 C
4420  sum=sum+z216th*hx2*hy*hz2*(
4421  > czi*(
4422  > cxi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
4423  > cx*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
4424  > +cz*(
4425  > cxi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
4426  > cx*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
4427 C
4428  fval(v,iadr)=sum
4429  enddo
4430  endif
4431 C
4432  if(ict(4).eq.1) then
4433 C
4434 C df/dz:
4435 C
4436  j=jj
4437  k=kk
4438 C
4439 C ...and in y direction
4440 C
4441  yp=yparam
4442  ypi=1.0_r8-yp
4443  yp2=yp*yp
4444  ypi2=ypi*ypi
4445 C
4446  cy=yp*(yp2-1.0_r8)
4447  cyi=ypi*(ypi2-1.0_r8)
4448  hy2=hy*hy
4449 C
4450 C ...and in z direction
4451 C
4452  zp=zparam
4453  zpi=1.0_r8-zp
4454  zp2=zp*zp
4455  zpi2=zpi*zpi
4456 
4457  czd=3.0_r8*zp2-1.0_r8
4458  czdi=-3.0_r8*zpi2+1.0_r8
4459 C
4460  iadr=iadr+1
4461  do v=1,ivec
4462  i=ii(v)
4463 C
4464 C ...in x direction
4465 C
4466  xp=xparam(v)
4467  xpi=1.0_r8-xp
4468  xp2=xp*xp
4469  xpi2=xpi*xpi
4470 C
4471  cx=xp*(xp2-1.0_r8)
4472  cxi=xpi*(xpi2-1.0_r8)
4473  hx2=hx(v)*hx(v)
4474 C
4475  sum=hzi*(
4476  > -(
4477  > xpi*(ypi*fin(0,i,j,k) +yp*fin(0,i,j+1,k))+
4478  > xp*(ypi*fin(0,i+1,j,k)+yp*fin(0,i+1,j+1,k)))
4479  > +(
4480  > xpi*(ypi*fin(0,i,j,k+1) +yp*fin(0,i,j+1,k+1))+
4481  > xp*(ypi*fin(0,i+1,j,k+1)+yp*fin(0,i+1,j+1,k+1))))
4482 C
4483  sum=sum+sixth*hx2*hzi*(
4484  > -(
4485  > cxi*(ypi*fin(1,i,j,k) +yp*fin(1,i,j+1,k))+
4486  > cx*(ypi*fin(1,i+1,j,k)+yp*fin(1,i+1,j+1,k)))
4487  > +(
4488  > cxi*(ypi*fin(1,i,j,k+1) +yp*fin(1,i,j+1,k+1))+
4489  > cx*(ypi*fin(1,i+1,j,k+1)+yp*fin(1,i+1,j+1,k+1))))
4490 C
4491  sum=sum+sixth*hy2*hzi*(
4492  > -(
4493  > xpi*(cyi*fin(2,i,j,k) +cy*fin(2,i,j+1,k))+
4494  > xp*(cyi*fin(2,i+1,j,k)+cy*fin(2,i+1,j+1,k)))
4495  > +(
4496  > xpi*(cyi*fin(2,i,j,k+1) +cy*fin(2,i,j+1,k+1))+
4497  > xp*(cyi*fin(2,i+1,j,k+1)+cy*fin(2,i+1,j+1,k+1))))
4498 C
4499  sum=sum+sixth*hz*(
4500  > czdi*(
4501  > xpi*(ypi*fin(3,i,j,k) +yp*fin(3,i,j+1,k))+
4502  > xp*(ypi*fin(3,i+1,j,k)+yp*fin(3,i+1,j+1,k)))
4503  > +czd*(
4504  > xpi*(ypi*fin(3,i,j,k+1) +yp*fin(3,i,j+1,k+1))+
4505  > xp*(ypi*fin(3,i+1,j,k+1)+yp*fin(3,i+1,j+1,k+1))))
4506 C
4507  sum=sum+z36th*hx2*hy2*hzi*(
4508  > -(
4509  > cxi*(cyi*fin(4,i,j,k) +cy*fin(4,i,j+1,k))+
4510  > cx*(cyi*fin(4,i+1,j,k)+cy*fin(4,i+1,j+1,k)))
4511  > +(
4512  > cxi*(cyi*fin(4,i,j,k+1) +cy*fin(4,i,j+1,k+1))+
4513  > cx*(cyi*fin(4,i+1,j,k+1)+cy*fin(4,i+1,j+1,k+1))))
4514 C
4515  sum=sum+z36th*hx2*hz*(
4516  > czdi*(
4517  > cxi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
4518  > cx*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
4519  > +czd*(
4520  > cxi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
4521  > cx*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
4522 C
4523  sum=sum+z36th*hy2*hz*(
4524  > czdi*(
4525  > xpi*(cyi*fin(6,i,j,k) +cy*fin(6,i,j+1,k))+
4526  > xp*(cyi*fin(6,i+1,j,k)+cy*fin(6,i+1,j+1,k)))
4527  > +czd*(
4528  > xpi*(cyi*fin(6,i,j,k+1) +cy*fin(6,i,j+1,k+1))+
4529  > xp*(cyi*fin(6,i+1,j,k+1)+cy*fin(6,i+1,j+1,k+1))))
4530 C
4531  sum=sum+z216th*hx2*hy2*hz*(
4532  > czdi*(
4533  > cxi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
4534  > cx*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
4535  > +czd*(
4536  > cxi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
4537  > cx*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
4538 C
4539  fval(v,iadr)=sum
4540  enddo
4541  endif
4542 C
4543  if(ict(5).eq.1) then
4544 C
4545 C d2f/dx2:
4546 C
4547  j=jj
4548  k=kk
4549 C
4550 C ...and in y direction
4551 C
4552  yp=yparam
4553  ypi=1.0_r8-yp
4554  yp2=yp*yp
4555  ypi2=ypi*ypi
4556 C
4557  cy=yp*(yp2-1.0_r8)
4558  cyi=ypi*(ypi2-1.0_r8)
4559  hy2=hy*hy
4560 C
4561 C ...and in z direction
4562 C
4563  zp=zparam
4564  zpi=1.0_r8-zp
4565  zp2=zp*zp
4566  zpi2=zpi*zpi
4567 C
4568  cz=zp*(zp2-1.0_r8)
4569  czi=zpi*(zpi2-1.0_r8)
4570  hz2=hz*hz
4571 C
4572  iadr=iadr+1
4573  do v=1,ivec
4574  i=ii(v)
4575 C
4576 C ...in x direction
4577 C
4578  xp=xparam(v)
4579  xpi=1.0_r8-xp
4580 C
4581  sum=(
4582  > zpi*(
4583  > xpi*(ypi*fin(1,i,j,k) +yp*fin(1,i,j+1,k))+
4584  > xp*(ypi*fin(1,i+1,j,k)+yp*fin(1,i+1,j+1,k)))
4585  > +zp*(
4586  > xpi*(ypi*fin(1,i,j,k+1) +yp*fin(1,i,j+1,k+1))+
4587  > xp*(ypi*fin(1,i+1,j,k+1)+yp*fin(1,i+1,j+1,k+1))))
4588 C
4589  sum=sum+sixth*hy2*(
4590  > zpi*(
4591  > xpi*(cyi*fin(4,i,j,k) +cy*fin(4,i,j+1,k))+
4592  > xp*(cyi*fin(4,i+1,j,k)+cy*fin(4,i+1,j+1,k)))
4593  > +zp*(
4594  > xpi*(cyi*fin(4,i,j,k+1) +cy*fin(4,i,j+1,k+1))+
4595  > xp*(cyi*fin(4,i+1,j,k+1)+cy*fin(4,i+1,j+1,k+1))))
4596 C
4597  sum=sum+sixth*hz2*(
4598  > czi*(
4599  > xpi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
4600  > xp*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
4601  > +cz*(
4602  > xpi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
4603  > xp*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
4604 C
4605  sum=sum+z36th*hy2*hz2*(
4606  > czi*(
4607  > xpi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
4608  > xp*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
4609  > +cz*(
4610  > xpi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
4611  > xp*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
4612 C
4613  fval(v,iadr)=sum
4614  enddo
4615  endif
4616 C
4617  if(ict(6).eq.1) then
4618 C
4619 C d2f/dy2:
4620 C
4621  j=jj
4622  k=kk
4623 C
4624 C ...and in y direction
4625 C
4626  yp=yparam
4627  ypi=1.0_r8-yp
4628 C
4629 C ...and in z direction
4630 C
4631  zp=zparam
4632  zpi=1.0_r8-zp
4633  zp2=zp*zp
4634  zpi2=zpi*zpi
4635 C
4636  cz=zp*(zp2-1.0_r8)
4637  czi=zpi*(zpi2-1.0_r8)
4638  hz2=hz*hz
4639 C
4640  iadr=iadr+1
4641  do v=1,ivec
4642  i=ii(v)
4643 C
4644 C ...in x direction
4645 C
4646  xp=xparam(v)
4647  xpi=1.0_r8-xp
4648  xp2=xp*xp
4649  xpi2=xpi*xpi
4650 C
4651  cx=xp*(xp2-1.0_r8)
4652  cxi=xpi*(xpi2-1.0_r8)
4653  hx2=hx(v)*hx(v)
4654 C
4655  sum=(
4656  > zpi*(
4657  > xpi*(ypi*fin(2,i,j,k) +yp*fin(2,i,j+1,k))+
4658  > xp*(ypi*fin(2,i+1,j,k)+yp*fin(2,i+1,j+1,k)))
4659  > +zp*(
4660  > xpi*(ypi*fin(2,i,j,k+1) +yp*fin(2,i,j+1,k+1))+
4661  > xp*(ypi*fin(2,i+1,j,k+1)+yp*fin(2,i+1,j+1,k+1))))
4662 C
4663  sum=sum+sixth*hx2*(
4664  > zpi*(
4665  > cxi*(ypi*fin(4,i,j,k) +yp*fin(4,i,j+1,k))+
4666  > cx*(ypi*fin(4,i+1,j,k)+yp*fin(4,i+1,j+1,k)))
4667  > +zp*(
4668  > cxi*(ypi*fin(4,i,j,k+1) +yp*fin(4,i,j+1,k+1))+
4669  > cx*(ypi*fin(4,i+1,j,k+1)+yp*fin(4,i+1,j+1,k+1))))
4670 C
4671  sum=sum+sixth*hz2*(
4672  > czi*(
4673  > xpi*(ypi*fin(6,i,j,k) +yp*fin(6,i,j+1,k))+
4674  > xp*(ypi*fin(6,i+1,j,k)+yp*fin(6,i+1,j+1,k)))
4675  > +cz*(
4676  > xpi*(ypi*fin(6,i,j,k+1) +yp*fin(6,i,j+1,k+1))+
4677  > xp*(ypi*fin(6,i+1,j,k+1)+yp*fin(6,i+1,j+1,k+1))))
4678 C
4679  sum=sum+z36th*hx2*hz2*(
4680  > czi*(
4681  > cxi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
4682  > cx*(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
4683  > +cz*(
4684  > cxi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
4685  > cx*(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
4686 C
4687  fval(v,iadr)=sum
4688  enddo
4689  endif
4690 C
4691  if(ict(7).eq.1) then
4692 C
4693 C d2f/dz2:
4694 C
4695  j=jj
4696  k=kk
4697 C
4698 C ...and in y direction
4699 C
4700  yp=yparam
4701  ypi=1.0_r8-yp
4702  yp2=yp*yp
4703  ypi2=ypi*ypi
4704 C
4705  cy=yp*(yp2-1.0_r8)
4706  cyi=ypi*(ypi2-1.0_r8)
4707  hy2=hy*hy
4708 C
4709 C ...and in z direction
4710 C
4711  zp=zparam
4712  zpi=1.0_r8-zp
4713 
4714  iadr=iadr+1
4715  do v=1,ivec
4716  i=ii(v)
4717 C
4718 C ...in x direction
4719 C
4720  xp=xparam(v)
4721  xpi=1.0_r8-xp
4722  xp2=xp*xp
4723  xpi2=xpi*xpi
4724 C
4725  cx=xp*(xp2-1.0_r8)
4726  cxi=xpi*(xpi2-1.0_r8)
4727  hx2=hx(v)*hx(v)
4728 C
4729  sum=(
4730  > zpi*(
4731  > xpi*(ypi*fin(3,i,j,k) +yp*fin(3,i,j+1,k))+
4732  > xp*(ypi*fin(3,i+1,j,k)+yp*fin(3,i+1,j+1,k)))
4733  > +zp*(
4734  > xpi*(ypi*fin(3,i,j,k+1) +yp*fin(3,i,j+1,k+1))+
4735  > xp*(ypi*fin(3,i+1,j,k+1)+yp*fin(3,i+1,j+1,k+1))))
4736 C
4737  sum=sum+sixth*hx2*(
4738  > zpi*(
4739  > cxi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
4740  > cx*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
4741  > +zp*(
4742  > cxi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
4743  > cx*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
4744 C
4745  sum=sum+sixth*hy2*(
4746  > zpi*(
4747  > xpi*(cyi*fin(6,i,j,k) +cy*fin(6,i,j+1,k))+
4748  > xp*(cyi*fin(6,i+1,j,k)+cy*fin(6,i+1,j+1,k)))
4749  > +zp*(
4750  > xpi*(cyi*fin(6,i,j,k+1) +cy*fin(6,i,j+1,k+1))+
4751  > xp*(cyi*fin(6,i+1,j,k+1)+cy*fin(6,i+1,j+1,k+1))))
4752 C
4753  sum=sum+z36th*hx2*hy2*(
4754  > zpi*(
4755  > cxi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
4756  > cx*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
4757  > +zp*(
4758  > cxi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
4759  > cx*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
4760 C
4761  fval(v,iadr)=sum
4762  enddo
4763  endif
4764 C
4765  if(ict(8).eq.1) then
4766 C
4767 C d2f/dxdy:
4768 C
4769  j=jj
4770  k=kk
4771 C
4772 C ...and in y direction
4773 C
4774  yp=yparam
4775  ypi=1.0_r8-yp
4776  yp2=yp*yp
4777  ypi2=ypi*ypi
4778 
4779  cyd=3.0_r8*yp2-1.0_r8
4780  cydi=-3.0_r8*ypi2+1.0_r8
4781 C
4782 C ...and in z direction
4783 C
4784  zp=zparam
4785  zpi=1.0_r8-zp
4786  zp2=zp*zp
4787  zpi2=zpi*zpi
4788 C
4789  cz=zp*(zp2-1.0_r8)
4790  czi=zpi*(zpi2-1.0_r8)
4791  hz2=hz*hz
4792 C
4793  iadr=iadr+1
4794  do v=1,ivec
4795  i=ii(v)
4796 C
4797 C ...in x direction
4798 C
4799  xp=xparam(v)
4800  xpi=1.0_r8-xp
4801  xp2=xp*xp
4802  xpi2=xpi*xpi
4803 
4804  cxd=3.0_r8*xp2-1.0_r8
4805  cxdi=-3.0_r8*xpi2+1.0_r8
4806 C
4807  sum=hxi(v)*hyi*(
4808  > zpi*(
4809  > (fin(0,i,j,k) -fin(0,i,j+1,k))-
4810  > (fin(0,i+1,j,k)-fin(0,i+1,j+1,k)))
4811  > +zp*(
4812  > (fin(0,i,j,k+1) -fin(0,i,j+1,k+1))-
4813  > (fin(0,i+1,j,k+1)-fin(0,i+1,j+1,k+1))))
4814 C
4815  sum=sum+sixth*hyi*hx(v)*(
4816  > zpi*(
4817  > cxdi*(-fin(1,i,j,k) +fin(1,i,j+1,k))+
4818  > cxd*(-fin(1,i+1,j,k)+fin(1,i+1,j+1,k)))
4819  > +zp*(
4820  > cxdi*(-fin(1,i,j,k+1) +fin(1,i,j+1,k+1))+
4821  > cxd*(-fin(1,i+1,j,k+1)+fin(1,i+1,j+1,k+1))))
4822 C
4823  sum=sum+sixth*hxi(v)*hy*(
4824  > zpi*(
4825  > -(cydi*fin(2,i,j,k) +cyd*fin(2,i,j+1,k))
4826  > +(cydi*fin(2,i+1,j,k)+cyd*fin(2,i+1,j+1,k)))
4827  > +zp*(
4828  > -(cydi*fin(2,i,j,k+1) +cyd*fin(2,i,j+1,k+1))
4829  > +(cydi*fin(2,i+1,j,k+1)+cyd*fin(2,i+1,j+1,k+1))))
4830 C
4831  sum=sum+sixth*hxi(v)*hyi*hz2*(
4832  > czi*(
4833  > (fin(3,i,j,k) -fin(3,i,j+1,k))-
4834  > (fin(3,i+1,j,k)-fin(3,i+1,j+1,k)))
4835  > +cz*(
4836  > (fin(3,i,j,k+1) -fin(3,i,j+1,k+1))-
4837  > (fin(3,i+1,j,k+1)-fin(3,i+1,j+1,k+1))))
4838 C
4839  sum=sum+z36th*hx(v)*hy*(
4840  > zpi*(
4841  > cxdi*(cydi*fin(4,i,j,k) +cyd*fin(4,i,j+1,k))+
4842  > cxd*(cydi*fin(4,i+1,j,k)+cyd*fin(4,i+1,j+1,k)))
4843  > +zp*(
4844  > cxdi*(cydi*fin(4,i,j,k+1) +cyd*fin(4,i,j+1,k+1))+
4845  > cxd*(cydi*fin(4,i+1,j,k+1)+cyd*fin(4,i+1,j+1,k+1))))
4846 C
4847  sum=sum+z36th*hyi*hx(v)*hz2*(
4848  > czi*(
4849  > cxdi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
4850  > cxd*(-fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
4851  > +cz*(
4852  > cxdi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
4853  > cxd*(-fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
4854 C
4855  sum=sum+z36th*hxi(v)*hy*hz2*(
4856  > czi*(
4857  > -(cydi*fin(6,i,j,k) +cyd*fin(6,i,j+1,k))
4858  > +(cydi*fin(6,i+1,j,k)+cyd*fin(6,i+1,j+1,k)))
4859  > +cz*(
4860  > -(cydi*fin(6,i,j,k+1) +cyd*fin(6,i,j+1,k+1))
4861  > +(cydi*fin(6,i+1,j,k+1)+cyd*fin(6,i+1,j+1,k+1))))
4862 C
4863  sum=sum+z216th*hx(v)*hy*hz2*(
4864  > czi*(
4865  > cxdi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
4866  > cxd*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
4867  > +cz*(
4868  > cxdi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
4869  > cxd*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
4870 C
4871  fval(v,iadr)=sum
4872  enddo
4873  endif
4874 C
4875  if(ict(9).eq.1) then
4876 C
4877 C d2f/dxdz:
4878 C
4879  j=jj
4880  k=kk
4881 C
4882 C ...and in y direction
4883 C
4884  yp=yparam
4885  ypi=1.0_r8-yp
4886  yp2=yp*yp
4887  ypi2=ypi*ypi
4888 C
4889  cy=yp*(yp2-1.0_r8)
4890  cyi=ypi*(ypi2-1.0_r8)
4891  hy2=hy*hy
4892 C
4893 C ...and in z direction
4894 C
4895  zp=zparam
4896  zpi=1.0_r8-zp
4897  zp2=zp*zp
4898  zpi2=zpi*zpi
4899 
4900  czd=3.0_r8*zp2-1.0_r8
4901  czdi=-3.0_r8*zpi2+1.0_r8
4902 C
4903  iadr=iadr+1
4904  do v=1,ivec
4905  i=ii(v)
4906 C
4907 C ...in x direction
4908 C
4909  xp=xparam(v)
4910  xpi=1.0_r8-xp
4911  xp2=xp*xp
4912  xpi2=xpi*xpi
4913 
4914  cxd=3.0_r8*xp2-1.0_r8
4915  cxdi=-3.0_r8*xpi2+1.0_r8
4916 C
4917  sum=hxi(v)*hzi*(
4918  > (
4919  > (ypi*fin(0,i,j,k) +yp*fin(0,i,j+1,k)) -
4920  > (ypi*fin(0,i+1,j,k)+yp*fin(0,i+1,j+1,k)))
4921  > -(
4922  > (ypi*fin(0,i,j,k+1) +yp*fin(0,i,j+1,k+1)) -
4923  > (ypi*fin(0,i+1,j,k+1)+yp*fin(0,i+1,j+1,k+1))))
4924 C
4925  sum=sum+sixth*hx(v)*hzi*(
4926  > -(
4927  > cxdi*(ypi*fin(1,i,j,k) +yp*fin(1,i,j+1,k))+
4928  > cxd*(ypi*fin(1,i+1,j,k)+yp*fin(1,i+1,j+1,k)))
4929  > +(
4930  > cxdi*(ypi*fin(1,i,j,k+1) +yp*fin(1,i,j+1,k+1))+
4931  > cxd*(ypi*fin(1,i+1,j,k+1)+yp*fin(1,i+1,j+1,k+1))))
4932 C
4933  sum=sum+sixth*hxi(v)*hy2*hzi*(
4934  > (
4935  > (cyi*fin(2,i,j,k) +cy*fin(2,i,j+1,k)) -
4936  > (cyi*fin(2,i+1,j,k)+cy*fin(2,i+1,j+1,k)))
4937  > -(
4938  > (cyi*fin(2,i,j,k+1) +cy*fin(2,i,j+1,k+1)) -
4939  > (cyi*fin(2,i+1,j,k+1)+cy*fin(2,i+1,j+1,k+1))))
4940 C
4941  sum=sum+sixth*hxi(v)*hz*(
4942  > czdi*(
4943  > -(ypi*fin(3,i,j,k) +yp*fin(3,i,j+1,k))
4944  > +(ypi*fin(3,i+1,j,k)+yp*fin(3,i+1,j+1,k)))
4945  > +czd*(
4946  > -(ypi*fin(3,i,j,k+1) +yp*fin(3,i,j+1,k+1))
4947  > +(ypi*fin(3,i+1,j,k+1)+yp*fin(3,i+1,j+1,k+1))))
4948 C
4949  sum=sum+z36th*hx(v)*hy2*hzi*(
4950  > -(
4951  > cxdi*(cyi*fin(4,i,j,k) +cy*fin(4,i,j+1,k))+
4952  > cxd*(cyi*fin(4,i+1,j,k)+cy*fin(4,i+1,j+1,k)))
4953  > +(
4954  > cxdi*(cyi*fin(4,i,j,k+1) +cy*fin(4,i,j+1,k+1))+
4955  > cxd*(cyi*fin(4,i+1,j,k+1)+cy*fin(4,i+1,j+1,k+1))))
4956 C
4957  sum=sum+z36th*hx(v)*hz*(
4958  > czdi*(
4959  > cxdi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
4960  > cxd*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
4961  > +czd*(
4962  > cxdi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
4963  > cxd*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
4964 C
4965  sum=sum+z36th*hxi(v)*hy2*hz*(
4966  > czdi*(
4967  > -(cyi*fin(6,i,j,k) +cy*fin(6,i,j+1,k))
4968  > +(cyi*fin(6,i+1,j,k)+cy*fin(6,i+1,j+1,k)))
4969  > +czd*(
4970  > -(cyi*fin(6,i,j,k+1) +cy*fin(6,i,j+1,k+1))
4971  > +(cyi*fin(6,i+1,j,k+1)+cy*fin(6,i+1,j+1,k+1))))
4972 C
4973  sum=sum+z216th*hx(v)*hy2*hz*(
4974  > czdi*(
4975  > cxdi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
4976  > cxd*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
4977  > +czd*(
4978  > cxdi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
4979  > cxd*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
4980 C
4981  fval(v,iadr)=sum
4982  enddo
4983  endif
4984 C
4985  if(ict(10).eq.1) then
4986 C
4987 C d2f/dydz:
4988 C
4989  j=jj
4990  k=kk
4991 C
4992 C ...and in y direction
4993 C
4994  yp=yparam
4995  ypi=1.0_r8-yp
4996  yp2=yp*yp
4997  ypi2=ypi*ypi
4998 
4999  cyd=3.0_r8*yp2-1.0_r8
5000  cydi=-3.0_r8*ypi2+1.0_r8
5001 C
5002 C ...and in z direction
5003 C
5004  zp=zparam
5005  zpi=1.0_r8-zp
5006  zp2=zp*zp
5007  zpi2=zpi*zpi
5008 
5009  czd=3.0_r8*zp2-1.0_r8
5010  czdi=-3.0_r8*zpi2+1.0_r8
5011 C
5012  iadr=iadr+1
5013  do v=1,ivec
5014  i=ii(v)
5015 C
5016 C ...in x direction
5017 C
5018  xp=xparam(v)
5019  xpi=1.0_r8-xp
5020  xp2=xp*xp
5021  xpi2=xpi*xpi
5022 C
5023  cx=xp*(xp2-1.0_r8)
5024  cxi=xpi*(xpi2-1.0_r8)
5025  hx2=hx(v)*hx(v)
5026 C
5027  sum=hyi*hzi*(
5028  > (
5029  > xpi*(fin(0,i,j,k) -fin(0,i,j+1,k))+
5030  > xp*(fin(0,i+1,j,k)-fin(0,i+1,j+1,k)))
5031  > -(
5032  > xpi*(fin(0,i,j,k+1) -fin(0,i,j+1,k+1))+
5033  > xp*(fin(0,i+1,j,k+1)-fin(0,i+1,j+1,k+1))))
5034 C
5035  sum=sum+sixth*hyi*hx2*hzi*(
5036  > (
5037  > cxi*(fin(1,i,j,k) -fin(1,i,j+1,k))+
5038  > cx*(fin(1,i+1,j,k)-fin(1,i+1,j+1,k)))
5039  > -(
5040  > cxi*(fin(1,i,j,k+1) -fin(1,i,j+1,k+1))+
5041  > cx*(fin(1,i+1,j,k+1)-fin(1,i+1,j+1,k+1))))
5042 C
5043  sum=sum+sixth*hy*hzi*(
5044  > -(
5045  > xpi*(cydi*fin(2,i,j,k) +cyd*fin(2,i,j+1,k))+
5046  > xp*(cydi*fin(2,i+1,j,k)+cyd*fin(2,i+1,j+1,k)))
5047  > +(
5048  > xpi*(cydi*fin(2,i,j,k+1) +cyd*fin(2,i,j+1,k+1))+
5049  > xp*(cydi*fin(2,i+1,j,k+1)+cyd*fin(2,i+1,j+1,k+1))))
5050 C
5051  sum=sum+sixth*hyi*hz*(
5052  > czdi*(
5053  > xpi*(-fin(3,i,j,k) +fin(3,i,j+1,k))+
5054  > xp*(-fin(3,i+1,j,k)+fin(3,i+1,j+1,k)))
5055  > +czd*(
5056  > xpi*(-fin(3,i,j,k+1) +fin(3,i,j+1,k+1))+
5057  > xp*(-fin(3,i+1,j,k+1)+fin(3,i+1,j+1,k+1))))
5058 C
5059  sum=sum+z36th*hx2*hy*hzi*(
5060  > -(
5061  > cxi*(cydi*fin(4,i,j,k) +cyd*fin(4,i,j+1,k))+
5062  > cx*(cydi*fin(4,i+1,j,k)+cyd*fin(4,i+1,j+1,k)))
5063  > +(
5064  > cxi*(cydi*fin(4,i,j,k+1) +cyd*fin(4,i,j+1,k+1))+
5065  > cx*(cydi*fin(4,i+1,j,k+1)+cyd*fin(4,i+1,j+1,k+1))))
5066 C
5067  sum=sum+z36th*hyi*hx2*hz*(
5068  > czdi*(
5069  > cxi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
5070  > cx*(-fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
5071  > +czd*(
5072  > cxi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
5073  > cx*(-fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
5074 C
5075  sum=sum+z36th*hy*hz*(
5076  > czdi*(
5077  > xpi*(cydi*fin(6,i,j,k) +cyd*fin(6,i,j+1,k))+
5078  > xp*(cydi*fin(6,i+1,j,k)+cyd*fin(6,i+1,j+1,k)))
5079  > +czd*(
5080  > xpi*(cydi*fin(6,i,j,k+1) +cyd*fin(6,i,j+1,k+1))+
5081  > xp*(cydi*fin(6,i+1,j,k+1)+cyd*fin(6,i+1,j+1,k+1))))
5082 C
5083  sum=sum+z216th*hx2*hy*hz*(
5084  > czdi*(
5085  > cxi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
5086  > cx*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
5087  > +czd*(
5088  > cxi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
5089  > cx*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
5090 C
5091  fval(v,iadr)=sum
5092  enddo
5093  endif
5094 C
5095 C----------------------------------
5096 C 3rd derivatives (.le.2 in each coordinate)
5097 C
5098  else if(ict(1).eq.3) then
5099  if(ict(2).eq.1) then
5100 C ! fxxy
5101  j=jj
5102  k=kk
5103 C
5104 C ...and in y direction
5105 C
5106  yp=yparam
5107  ypi=1.0_r8-yp
5108  yp2=yp*yp
5109  ypi2=ypi*ypi
5110 C
5111  cyd=3.0_r8*yp2-1.0_r8
5112  cydi=-3.0_r8*ypi2+1.0_r8
5113 C
5114 C ...and in z direction
5115 C
5116  zp=zparam
5117  zpi=1.0_r8-zp
5118  zp2=zp*zp
5119  zpi2=zpi*zpi
5120 C
5121  cz=zp*(zp2-1.0_r8)
5122  czi=zpi*(zpi2-1.0_r8)
5123  hz2=hz*hz
5124 C
5125  iadr=iadr+1
5126  do v=1,ivec
5127  i=ii(v)
5128 C
5129 C ...in x direction
5130 C
5131  xp=xparam(v)
5132  xpi=1.0_r8-xp
5133 C
5134  sum=hyi*(
5135  > zpi*(
5136  > xpi*(-fin(1,i,j,k) +fin(1,i,j+1,k))+
5137  > xp*( -fin(1,i+1,j,k)+fin(1,i+1,j+1,k)))
5138  > +zp*(
5139  > xpi*(-fin(1,i,j,k+1) +fin(1,i,j+1,k+1))+
5140  > xp*( -fin(1,i+1,j,k+1)+fin(1,i+1,j+1,k+1))))
5141 C
5142  sum=sum+sixth*hy*(
5143  > zpi*(
5144  > xpi*(cydi*fin(4,i,j,k) +cyd*fin(4,i,j+1,k))+
5145  > xp*(cydi*fin(4,i+1,j,k)+cyd*fin(4,i+1,j+1,k)))
5146  > +zp*(
5147  > xpi*(cydi*fin(4,i,j,k+1) +cyd*fin(4,i,j+1,k+1))+
5148  > xp*(cydi*fin(4,i+1,j,k+1)+cyd*fin(4,i+1,j+1,k+1))))
5149 C
5150  sum=sum+sixth*hz2*hyi*(
5151  > czi*(
5152  > xpi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
5153  > xp*( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
5154  > +cz*(
5155  > xpi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
5156  > xp*( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
5157 C
5158  sum=sum+z36th*hy*hz2*(
5159  > czi*(
5160  > xpi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
5161  > xp*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
5162  > +cz*(
5163  > xpi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
5164  > xp*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
5165 C
5166  fval(v,iadr)=sum
5167  enddo
5168  endif
5169 C
5170  if(ict(3).eq.1) then
5171 C ! fxxz
5172  j=jj
5173  k=kk
5174 C
5175 C ...and in y direction
5176 C
5177  yp=yparam
5178  ypi=1.0_r8-yp
5179  yp2=yp*yp
5180  ypi2=ypi*ypi
5181 C
5182  cy=yp*(yp2-1.0_r8)
5183  cyi=ypi*(ypi2-1.0_r8)
5184  hy2=hy*hy
5185 C
5186 C ...and in z direction
5187 C
5188  zp=zparam
5189  zpi=1.0_r8-zp
5190  zp2=zp*zp
5191  zpi2=zpi*zpi
5192 C
5193  czd=3.0_r8*zp2-1.0_r8
5194  czdi=-3.0_r8*zpi2+1.0_r8
5195 C
5196  iadr=iadr+1
5197  do v=1,ivec
5198  i=ii(v)
5199 C
5200 C ...in x direction
5201 C
5202  xp=xparam(v)
5203  xpi=1.0_r8-xp
5204 C
5205  sum=hzi*(
5206  > -(
5207  > xpi*(ypi*fin(1,i,j,k) +yp*fin(1,i,j+1,k))+
5208  > xp*(ypi*fin(1,i+1,j,k)+yp*fin(1,i+1,j+1,k)))
5209  > +(
5210  > xpi*(ypi*fin(1,i,j,k+1) +yp*fin(1,i,j+1,k+1))+
5211  > xp*(ypi*fin(1,i+1,j,k+1)+yp*fin(1,i+1,j+1,k+1))))
5212 C
5213  sum=sum+sixth*hy2*hzi*(
5214  > -(
5215  > xpi*(cyi*fin(4,i,j,k) +cy*fin(4,i,j+1,k))+
5216  > xp*(cyi*fin(4,i+1,j,k)+cy*fin(4,i+1,j+1,k)))
5217  > +(
5218  > xpi*(cyi*fin(4,i,j,k+1) +cy*fin(4,i,j+1,k+1))+
5219  > xp*(cyi*fin(4,i+1,j,k+1)+cy*fin(4,i+1,j+1,k+1))))
5220 C
5221  sum=sum+sixth*hz*(
5222  > czdi*(
5223  > xpi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
5224  > xp*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
5225  > +czd*(
5226  > xpi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
5227  > xp*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
5228 C
5229  sum=sum+z36th*hy2*hz*(
5230  > czdi*(
5231  > xpi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
5232  > xp*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
5233  > +czd*(
5234  > xpi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
5235  > xp*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
5236 C
5237  fval(v,iadr)=sum
5238  enddo
5239  endif
5240 C
5241  if(ict(4).eq.1) then
5242 C ! fxyy
5243  j=jj
5244  k=kk
5245 C
5246 C ...and in y direction
5247 C
5248  yp=yparam
5249  ypi=1.0_r8-yp
5250 C
5251 C ...and in z direction
5252 C
5253  zp=zparam
5254  zpi=1.0_r8-zp
5255  zp2=zp*zp
5256  zpi2=zpi*zpi
5257 C
5258  cz=zp*(zp2-1.0_r8)
5259  czi=zpi*(zpi2-1.0_r8)
5260  hz2=hz*hz
5261 C
5262  iadr=iadr+1
5263  do v=1,ivec
5264  i=ii(v)
5265 C
5266 C ...in x direction
5267 C
5268  xp=xparam(v)
5269  xpi=1.0_r8-xp
5270  xp2=xp*xp
5271  xpi2=xpi*xpi
5272 C
5273  cxd=3.0_r8*xp2-1.0_r8
5274  cxdi=-3.0_r8*xpi2+1.0_r8
5275 C
5276  sum=hxi(v)*(
5277  > zpi*(
5278  > -(ypi*fin(2,i,j,k) +yp*fin(2,i,j+1,k))
5279  > +(ypi*fin(2,i+1,j,k)+yp*fin(2,i+1,j+1,k)))
5280  > +zp*(
5281  > -(ypi*fin(2,i,j,k+1) +yp*fin(2,i,j+1,k+1))
5282  > +(ypi*fin(2,i+1,j,k+1)+yp*fin(2,i+1,j+1,k+1))))
5283 C
5284  sum=sum+sixth*hx(v)*(
5285  > zpi*(
5286  > cxdi*(ypi*fin(4,i,j,k) +yp*fin(4,i,j+1,k))+
5287  > cxd*(ypi*fin(4,i+1,j,k)+yp*fin(4,i+1,j+1,k)))
5288  > +zp*(
5289  > cxdi*(ypi*fin(4,i,j,k+1) +yp*fin(4,i,j+1,k+1))+
5290  > cxd*(ypi*fin(4,i+1,j,k+1)+yp*fin(4,i+1,j+1,k+1))))
5291 C
5292  sum=sum+sixth*hz2*hxi(v)*(
5293  > czi*(
5294  > -(ypi*fin(6,i,j,k) +yp*fin(6,i,j+1,k))
5295  > +(ypi*fin(6,i+1,j,k)+yp*fin(6,i+1,j+1,k)))
5296  > +cz*(
5297  > -(ypi*fin(6,i,j,k+1) +yp*fin(6,i,j+1,k+1))
5298  > +(ypi*fin(6,i+1,j,k+1)+yp*fin(6,i+1,j+1,k+1))))
5299 C
5300  sum=sum+z36th*hx(v)*hz2*(
5301  > czi*(
5302  > cxdi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
5303  > cxd*(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
5304  > +cz*(
5305  > cxdi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
5306  > cxd*(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
5307 C
5308  fval(v,iadr)=sum
5309  enddo
5310  endif
5311 C
5312  if(ict(5).eq.1) then
5313 C ! fxyz
5314  j=jj
5315  k=kk
5316 C
5317 C ...and in y direction
5318 C
5319  yp=yparam
5320  ypi=1.0_r8-yp
5321  yp2=yp*yp
5322  ypi2=ypi*ypi
5323 C
5324  cyd=3.0_r8*yp2-1.0_r8
5325  cydi=-3.0_r8*ypi2+1.0_r8
5326 C
5327 C ...and in z direction
5328 C
5329  zp=zparam
5330  zpi=1.0_r8-zp
5331  zp2=zp*zp
5332  zpi2=zpi*zpi
5333 C
5334  czd=3.0_r8*zp2-1.0_r8
5335  czdi=-3.0_r8*zpi2+1.0_r8
5336 C
5337  iadr=iadr+1
5338  do v=1,ivec
5339  i=ii(v)
5340 C
5341 C ...in x direction
5342 C
5343  xp=xparam(v)
5344  xpi=1.0_r8-xp
5345  xp2=xp*xp
5346  xpi2=xpi*xpi
5347 C
5348  cxd=3.0_r8*xp2-1.0_r8
5349  cxdi=-3.0_r8*xpi2+1.0_r8
5350 C
5351  sum=hxi(v)*hyi*hzi*(
5352  > -(
5353  > (fin(0,i,j,k) -fin(0,i,j+1,k))-
5354  > (fin(0,i+1,j,k)-fin(0,i+1,j+1,k)))
5355  > +(
5356  > (fin(0,i,j,k+1) -fin(0,i,j+1,k+1))-
5357  > (fin(0,i+1,j,k+1)-fin(0,i+1,j+1,k+1))))
5358 C
5359  sum=sum+sixth*hyi*hx(v)*hzi*(
5360  > -(
5361  > cxdi*(-fin(1,i,j,k) +fin(1,i,j+1,k))+
5362  > cxd*(-fin(1,i+1,j,k)+fin(1,i+1,j+1,k)))
5363  > +(
5364  > cxdi*(-fin(1,i,j,k+1) +fin(1,i,j+1,k+1))+
5365  > cxd*(-fin(1,i+1,j,k+1)+fin(1,i+1,j+1,k+1))))
5366 C
5367  sum=sum+sixth*hxi(v)*hy*hzi*(
5368  > -(
5369  > -(cydi*fin(2,i,j,k) +cyd*fin(2,i,j+1,k))
5370  > +(cydi*fin(2,i+1,j,k)+cyd*fin(2,i+1,j+1,k)))
5371  > +(
5372  > -(cydi*fin(2,i,j,k+1) +cyd*fin(2,i,j+1,k+1))
5373  > +(cydi*fin(2,i+1,j,k+1)+cyd*fin(2,i+1,j+1,k+1))))
5374 C
5375  sum=sum+sixth*hxi(v)*hyi*hz*(
5376  > czdi*(
5377  > (fin(3,i,j,k) -fin(3,i,j+1,k))-
5378  > (fin(3,i+1,j,k)-fin(3,i+1,j+1,k)))
5379  > +czd*(
5380  > (fin(3,i,j,k+1) -fin(3,i,j+1,k+1))-
5381  > (fin(3,i+1,j,k+1)-fin(3,i+1,j+1,k+1))))
5382 C
5383  sum=sum+z36th*hx(v)*hy*hzi*(
5384  > -(
5385  > cxdi*(cydi*fin(4,i,j,k) +cyd*fin(4,i,j+1,k))+
5386  > cxd*(cydi*fin(4,i+1,j,k)+cyd*fin(4,i+1,j+1,k)))
5387  > +(
5388  > cxdi*(cydi*fin(4,i,j,k+1) +cyd*fin(4,i,j+1,k+1))+
5389  > cxd*(cydi*fin(4,i+1,j,k+1)+cyd*fin(4,i+1,j+1,k+1))))
5390 C
5391  sum=sum+z36th*hyi*hx(v)*hz*(
5392  > czdi*(
5393  > cxdi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
5394  > cxd*(-fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
5395  > +czd*(
5396  > cxdi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
5397  > cxd*(-fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
5398 C
5399  sum=sum+z36th*hxi(v)*hy*hz*(
5400  > czdi*(
5401  > -(cydi*fin(6,i,j,k) +cyd*fin(6,i,j+1,k))
5402  > +(cydi*fin(6,i+1,j,k)+cyd*fin(6,i+1,j+1,k)))
5403  > +czd*(
5404  > -(cydi*fin(6,i,j,k+1) +cyd*fin(6,i,j+1,k+1))
5405  > +(cydi*fin(6,i+1,j,k+1)+cyd*fin(6,i+1,j+1,k+1))))
5406 C
5407  sum=sum+z216th*hx(v)*hy*hz*(
5408  > czdi*(
5409  > cxdi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
5410  > cxd*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
5411  > +czd*(
5412  > cxdi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
5413  > cxd*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
5414 C
5415  fval(v,iadr)=sum
5416  enddo
5417  endif
5418 C
5419  if(ict(6).eq.1) then
5420 C ! fxzz
5421  j=jj
5422  k=kk
5423 C
5424 C ...and in y direction
5425 C
5426  yp=yparam
5427  ypi=1.0_r8-yp
5428  yp2=yp*yp
5429  ypi2=ypi*ypi
5430 C
5431  cy=yp*(yp2-1.0_r8)
5432  cyi=ypi*(ypi2-1.0_r8)
5433  hy2=hy*hy
5434 
5435 C
5436 C ...and in z direction
5437 C
5438  zp=zparam
5439  zpi=1.0_r8-zp
5440 C
5441  iadr=iadr+1
5442  do v=1,ivec
5443  i=ii(v)
5444 C
5445 C ...in x direction
5446 C
5447  xp=xparam(v)
5448  xpi=1.0_r8-xp
5449  xp2=xp*xp
5450  xpi2=xpi*xpi
5451 C
5452  cxd=3.0_r8*xp2-1.0_r8
5453  cxdi=-3.0_r8*xpi2+1.0_r8
5454 C
5455  sum=hxi(v)*(
5456  > zpi*(
5457  > -(ypi*fin(3,i,j,k) +yp*fin(3,i,j+1,k))
5458  > +(ypi*fin(3,i+1,j,k)+yp*fin(3,i+1,j+1,k)))
5459  > +zp*(
5460  > -(ypi*fin(3,i,j,k+1) +yp*fin(3,i,j+1,k+1))
5461  > +(ypi*fin(3,i+1,j,k+1)+yp*fin(3,i+1,j+1,k+1))))
5462 C
5463  sum=sum+sixth*hx(v)*(
5464  > zpi*(
5465  > cxdi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
5466  > cxd*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
5467  > +zp*(
5468  > cxdi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
5469  > cxd*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
5470 C
5471  sum=sum+sixth*hy2*hxi(v)*(
5472  > zpi*(
5473  > -(cyi*fin(6,i,j,k) +cy*fin(6,i,j+1,k))
5474  > +(cyi*fin(6,i+1,j,k)+cy*fin(6,i+1,j+1,k)))
5475  > +zp*(
5476  > -(cyi*fin(6,i,j,k+1) +cy*fin(6,i,j+1,k+1))
5477  > +(cyi*fin(6,i+1,j,k+1)+cy*fin(6,i+1,j+1,k+1))))
5478 C
5479  sum=sum+z36th*hx(v)*hy2*(
5480  > zpi*(
5481  > cxdi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
5482  > cxd*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
5483  > +zp*(
5484  > cxdi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
5485  > cxd*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
5486 C
5487  fval(v,iadr)=sum
5488  enddo
5489  endif
5490 C
5491  if(ict(7).eq.1) then
5492 C ! fyyz
5493  j=jj
5494  k=kk
5495 C
5496 C
5497 C ...and in y direction
5498 C
5499  yp=yparam
5500  ypi=1.0_r8-yp
5501 C
5502 C ...and in z direction
5503 C
5504  zp=zparam
5505  zpi=1.0_r8-zp
5506  zp2=zp*zp
5507  zpi2=zpi*zpi
5508 C
5509  czd=3.0_r8*zp2-1.0_r8
5510  czdi=-3.0_r8*zpi2+1.0_r8
5511 C
5512  iadr=iadr+1
5513  do v=1,ivec
5514  i=ii(v)
5515 C
5516 C ...in x direction
5517 C
5518  xp=xparam(v)
5519  xpi=1.0_r8-xp
5520  xp2=xp*xp
5521  xpi2=xpi*xpi
5522 C
5523  cx=xp*(xp2-1.0_r8)
5524  cxi=xpi*(xpi2-1.0_r8)
5525  hx2=hx(v)*hx(v)
5526 C
5527  sum=hzi*(
5528  > -(
5529  > xpi*(ypi*fin(2,i,j,k) +yp*fin(2,i,j+1,k))+
5530  > xp*(ypi*fin(2,i+1,j,k)+yp*fin(2,i+1,j+1,k)))
5531  > +(
5532  > xpi*(ypi*fin(2,i,j,k+1) +yp*fin(2,i,j+1,k+1))+
5533  > xp*(ypi*fin(2,i+1,j,k+1)+yp*fin(2,i+1,j+1,k+1))))
5534 C
5535  sum=sum+sixth*hx2*hzi*(
5536  > -(
5537  > cxi*(ypi*fin(4,i,j,k) +yp*fin(4,i,j+1,k))+
5538  > cx*(ypi*fin(4,i+1,j,k)+yp*fin(4,i+1,j+1,k)))
5539  > +(
5540  > cxi*(ypi*fin(4,i,j,k+1) +yp*fin(4,i,j+1,k+1))+
5541  > cx*(ypi*fin(4,i+1,j,k+1)+yp*fin(4,i+1,j+1,k+1))))
5542 C
5543  sum=sum+sixth*hz*(
5544  > czdi*(
5545  > xpi*(ypi*fin(6,i,j,k) +yp*fin(6,i,j+1,k))+
5546  > xp*(ypi*fin(6,i+1,j,k)+yp*fin(6,i+1,j+1,k)))
5547  > +czd*(
5548  > xpi*(ypi*fin(6,i,j,k+1) +yp*fin(6,i,j+1,k+1))+
5549  > xp*(ypi*fin(6,i+1,j,k+1)+yp*fin(6,i+1,j+1,k+1))))
5550 C
5551  sum=sum+z36th*hx2*hz*(
5552  > czdi*(
5553  > cxi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
5554  > cx*(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
5555  > +czd*(
5556  > cxi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
5557  > cx*(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
5558 C
5559  fval(v,iadr)=sum
5560  enddo
5561  endif
5562 C
5563  if(ict(8).eq.1) then
5564 C ! fyzz
5565  j=jj
5566  k=kk
5567 C
5568 C ...and in y direction
5569 C
5570  yp=yparam
5571  ypi=1.0_r8-yp
5572  yp2=yp*yp
5573  ypi2=ypi*ypi
5574 C
5575  cyd=3.0_r8*yp2-1.0_r8
5576  cydi=-3.0_r8*ypi2+1.0_r8
5577 C
5578 C ...and in z direction
5579 C
5580  zp=zparam
5581  zpi=1.0_r8-zp
5582 C
5583  iadr=iadr+1
5584  do v=1,ivec
5585  i=ii(v)
5586 C
5587 C ...in x direction
5588 C
5589  xp=xparam(v)
5590  xpi=1.0_r8-xp
5591  xp2=xp*xp
5592  xpi2=xpi*xpi
5593 C
5594  cx=xp*(xp2-1.0_r8)
5595  cxi=xpi*(xpi2-1.0_r8)
5596  hx2=hx(v)*hx(v)
5597 C
5598  sum=hyi*(
5599  > zpi*(
5600  > xpi*(-fin(3,i,j,k) +fin(3,i,j+1,k))+
5601  > xp*( -fin(3,i+1,j,k)+fin(3,i+1,j+1,k)))
5602  > +zp*(
5603  > xpi*(-fin(3,i,j,k+1) +fin(3,i,j+1,k+1))+
5604  > xp*( -fin(3,i+1,j,k+1)+fin(3,i+1,j+1,k+1))))
5605 C
5606  sum=sum+sixth*hx2*hyi*(
5607  > zpi*(
5608  > cxi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
5609  > cx*( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
5610  > +zp*(
5611  > cxi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
5612  > cx*( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
5613 C
5614  sum=sum+sixth*hy*(
5615  > zpi*(
5616  > xpi*(cydi*fin(6,i,j,k) +cyd*fin(6,i,j+1,k))+
5617  > xp*(cydi*fin(6,i+1,j,k)+cyd*fin(6,i+1,j+1,k)))
5618  > +zp*(
5619  > xpi*(cydi*fin(6,i,j,k+1) +cyd*fin(6,i,j+1,k+1))+
5620  > xp*(cydi*fin(6,i+1,j,k+1)+cyd*fin(6,i+1,j+1,k+1))))
5621 C
5622  sum=sum+z36th*hx2*hy*(
5623  > zpi*(
5624  > cxi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
5625  > cx*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
5626  > +zp*(
5627  > cxi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
5628  > cx*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
5629  fval(v,iadr)=sum
5630  enddo
5631  endif
5632 C
5633 C----------------------------------
5634 C 3rd derivatives (3 in each coordinate)
5635 C
5636  else if(ict(1).eq.-3) then
5637  if(ict(2).eq.1) then
5638 C ! fxxx
5639  iadr=iadr+1
5640  do v=1,ivec
5641  i=ii(v)
5642  j=jj
5643  k=kk
5644 C
5645 C ...and in y direction
5646 C
5647  yp=yparam
5648  ypi=1.0_r8-yp
5649  yp2=yp*yp
5650  ypi2=ypi*ypi
5651 C
5652  cy=yp*(yp2-1.0_r8)
5653  cyi=ypi*(ypi2-1.0_r8)
5654  hy2=hy*hy
5655 C
5656 C ...and in z direction
5657 C
5658  zp=zparam
5659  zpi=1.0_r8-zp
5660  zp2=zp*zp
5661  zpi2=zpi*zpi
5662 C
5663  cz=zp*(zp2-1.0_r8)
5664  czi=zpi*(zpi2-1.0_r8)
5665  hz2=hz*hz
5666 C
5667  sum=hxi(v)*(
5668  > zpi*(
5669  > -(ypi*fin(1,i,j,k) +yp*fin(1,i,j+1,k))
5670  > +(ypi*fin(1,i+1,j,k)+yp*fin(1,i+1,j+1,k)))
5671  > +zp*(
5672  > -(ypi*fin(1,i,j,k+1) +yp*fin(1,i,j+1,k+1))
5673  > +(ypi*fin(1,i+1,j,k+1)+yp*fin(1,i+1,j+1,k+1))))
5674 C
5675  sum=sum+sixth*hy2*hxi(v)*(
5676  > zpi*(
5677  > -(cyi*fin(4,i,j,k) +cy*fin(4,i,j+1,k))
5678  > +(cyi*fin(4,i+1,j,k)+cy*fin(4,i+1,j+1,k)))
5679  > +zp*(
5680  > -(cyi*fin(4,i,j,k+1) +cy*fin(4,i,j+1,k+1))
5681  > +(cyi*fin(4,i+1,j,k+1)+cy*fin(4,i+1,j+1,k+1))))
5682 C
5683  sum=sum+sixth*hz2*hxi(v)*(
5684  > czi*(
5685  > -(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))
5686  > +(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
5687  > +cz*(
5688  > -(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))
5689  > +(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
5690 C
5691  sum=sum+z36th*hy2*hz2*hxi(v)*(
5692  > czi*(
5693  > -(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))
5694  > +(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
5695  > +cz*(
5696  > -(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))
5697  > +(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
5698 C
5699  fval(v,iadr)=sum
5700  enddo
5701  endif
5702 C
5703  if(ict(3).eq.1) then
5704 C ! fyyy
5705  j=jj
5706  k=kk
5707 C
5708 C ...and in z direction
5709 C
5710  zp=zparam
5711  zpi=1.0_r8-zp
5712  zp2=zp*zp
5713  zpi2=zpi*zpi
5714 C
5715  cz=zp*(zp2-1.0_r8)
5716  czi=zpi*(zpi2-1.0_r8)
5717  hz2=hz*hz
5718 C
5719  iadr=iadr+1
5720  do v=1,ivec
5721  i=ii(v)
5722 C
5723 C ...in x direction
5724 C
5725  xp=xparam(v)
5726  xpi=1.0_r8-xp
5727  xp2=xp*xp
5728  xpi2=xpi*xpi
5729 C
5730  cx=xp*(xp2-1.0_r8)
5731  cxi=xpi*(xpi2-1.0_r8)
5732  hx2=hx(v)*hx(v)
5733 C
5734  sum=hyi*(
5735  > zpi*(
5736  > xpi*(-fin(2,i,j,k) +fin(2,i,j+1,k))+
5737  > xp*( -fin(2,i+1,j,k)+fin(2,i+1,j+1,k)))
5738  > +zp*(
5739  > xpi*(-fin(2,i,j,k+1) +fin(2,i,j+1,k+1))+
5740  > xp*( -fin(2,i+1,j,k+1)+fin(2,i+1,j+1,k+1))))
5741 C
5742  sum=sum+sixth*hx2*hyi*(
5743  > zpi*(
5744  > cxi*(-fin(4,i,j,k) +fin(4,i,j+1,k))+
5745  > cx*( -fin(4,i+1,j,k)+fin(4,i+1,j+1,k)))
5746  > +zp*(
5747  > cxi*(-fin(4,i,j,k+1) +fin(4,i,j+1,k+1))+
5748  > cx*( -fin(4,i+1,j,k+1)+fin(4,i+1,j+1,k+1))))
5749 C
5750  sum=sum+sixth*hz2*hyi*(
5751  > czi*(
5752  > xpi*(-fin(6,i,j,k) +fin(6,i,j+1,k))+
5753  > xp*( -fin(6,i+1,j,k)+fin(6,i+1,j+1,k)))
5754  > +cz*(
5755  > xpi*(-fin(6,i,j,k+1) +fin(6,i,j+1,k+1))+
5756  > xp*( -fin(6,i+1,j,k+1)+fin(6,i+1,j+1,k+1))))
5757 C
5758  sum=sum+z36th*hx2*hz2*hyi*(
5759  > czi*(
5760  > cxi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
5761  > cx*( -fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
5762  > +cz*(
5763  > cxi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
5764  > cx*( -fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
5765 C
5766  fval(v,iadr)=sum
5767  enddo
5768  endif
5769 C
5770  if(ict(4).eq.1) then
5771 C ! fzzz
5772  j=jj
5773  k=kk
5774 C
5775 C ...and in y direction
5776 C
5777  yp=yparam
5778  ypi=1.0_r8-yp
5779  yp2=yp*yp
5780  ypi2=ypi*ypi
5781 C
5782  cy=yp*(yp2-1.0_r8)
5783  cyi=ypi*(ypi2-1.0_r8)
5784  hy2=hy*hy
5785 C
5786  iadr=iadr+1
5787  do v=1,ivec
5788  i=ii(v)
5789 C
5790 C ...in x direction
5791 C
5792  xp=xparam(v)
5793  xpi=1.0_r8-xp
5794  xp2=xp*xp
5795  xpi2=xpi*xpi
5796 C
5797  cx=xp*(xp2-1.0_r8)
5798  cxi=xpi*(xpi2-1.0_r8)
5799  hx2=hx(v)*hx(v)
5800 C
5801  sum=hzi*(
5802  > -(
5803  > xpi*(ypi*fin(3,i,j,k) +yp*fin(3,i,j+1,k))+
5804  > xp*(ypi*fin(3,i+1,j,k)+yp*fin(3,i+1,j+1,k)))
5805  > +(
5806  > xpi*(ypi*fin(3,i,j,k+1) +yp*fin(3,i,j+1,k+1))+
5807  > xp*(ypi*fin(3,i+1,j,k+1)+yp*fin(3,i+1,j+1,k+1))))
5808 C
5809  sum=sum+sixth*hx2*hzi*(
5810  > -(
5811  > cxi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
5812  > cx*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
5813  > +(
5814  > cxi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
5815  > cx*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
5816 C
5817  sum=sum+sixth*hy2*hzi*(
5818  > -(
5819  > xpi*(cyi*fin(6,i,j,k) +cy*fin(6,i,j+1,k))+
5820  > xp*(cyi*fin(6,i+1,j,k)+cy*fin(6,i+1,j+1,k)))
5821  > +(
5822  > xpi*(cyi*fin(6,i,j,k+1) +cy*fin(6,i,j+1,k+1))+
5823  > xp*(cyi*fin(6,i+1,j,k+1)+cy*fin(6,i+1,j+1,k+1))))
5824 C
5825  sum=sum+z36th*hx2*hy2*hzi*(
5826  > -(
5827  > cxi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
5828  > cx*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
5829  > +(
5830  > cxi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
5831  > cx*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
5832 C
5833  fval(v,iadr)=sum
5834  enddo
5835  endif
5836 C
5837 C----------------------------------
5838 C 4th derivatives (.le.2 in each coordinate)
5839 C
5840  else if(ict(1).eq.4) then
5841  if(ict(2).eq.1) then
5842 C ! fxxyy
5843  j=jj
5844  k=kk
5845 C
5846 C ...and in y direction
5847 C
5848  yp=yparam
5849  ypi=1.0_r8-yp
5850 C
5851 C ...and in z direction
5852 C
5853  zp=zparam
5854  zpi=1.0_r8-zp
5855  zp2=zp*zp
5856  zpi2=zpi*zpi
5857 C
5858  cz=zp*(zp2-1.0_r8)
5859  czi=zpi*(zpi2-1.0_r8)
5860  hz2=hz*hz
5861 C
5862  iadr=iadr+1
5863  do v=1,ivec
5864  i=ii(v)
5865 C
5866 C ...in x direction
5867 C
5868  xp=xparam(v)
5869  xpi=1.0_r8-xp
5870 C
5871  sum=(
5872  > zpi*(
5873  > xpi*(ypi*fin(4,i,j,k) +yp*fin(4,i,j+1,k))+
5874  > xp*( ypi*fin(4,i+1,j,k)+yp*fin(4,i+1,j+1,k)))
5875  > +zp*(
5876  > xpi*(ypi*fin(4,i,j,k+1) +yp*fin(4,i,j+1,k+1))+
5877  > xp*(ypi*fin(4,i+1,j,k+1)+yp*fin(4,i+1,j+1,k+1))))
5878 C
5879  sum=sum+sixth*hz2*(
5880  > czi*(
5881  > xpi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
5882  > xp*(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
5883  > +cz*(
5884  > xpi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
5885  > xp*(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
5886 C
5887  fval(v,iadr)=sum
5888  enddo
5889  endif
5890 C
5891  if(ict(3).eq.1) then
5892 C ! fxxyz
5893  j=jj
5894  k=kk
5895 C
5896 C ...and in y direction
5897 C
5898  yp=yparam
5899  ypi=1.0_r8-yp
5900  yp2=yp*yp
5901  ypi2=ypi*ypi
5902 C
5903  cyd=3.0_r8*yp2-1.0_r8
5904  cydi=-3.0_r8*ypi2+1.0_r8
5905 C
5906 C ...and in z direction
5907 C
5908  zp=zparam
5909  zpi=1.0_r8-zp
5910  zp2=zp*zp
5911  zpi2=zpi*zpi
5912 C
5913  czd=3.0_r8*zp2-1.0_r8
5914  czdi=-3.0_r8*zpi2+1.0_r8
5915 C
5916  iadr=iadr+1
5917  do v=1,ivec
5918  i=ii(v)
5919 C
5920 C ...in x direction
5921 C
5922  xp=xparam(v)
5923  xpi=1.0_r8-xp
5924 C
5925  sum=hyi*hzi*(
5926  > -(
5927  > xpi*(-fin(1,i,j,k) +fin(1,i,j+1,k))+
5928  > xp*( -fin(1,i+1,j,k)+fin(1,i+1,j+1,k)))
5929  > +(
5930  > xpi*(-fin(1,i,j,k+1) +fin(1,i,j+1,k+1))+
5931  > xp*( -fin(1,i+1,j,k+1)+fin(1,i+1,j+1,k+1))))
5932 C
5933  sum=sum+sixth*hy*hzi*(
5934  > -(
5935  > xpi*(cydi*fin(4,i,j,k) +cyd*fin(4,i,j+1,k))+
5936  > xp*(cydi*fin(4,i+1,j,k)+cyd*fin(4,i+1,j+1,k)))
5937  > +(
5938  > xpi*(cydi*fin(4,i,j,k+1) +cyd*fin(4,i,j+1,k+1))+
5939  > xp*(cydi*fin(4,i+1,j,k+1)+cyd*fin(4,i+1,j+1,k+1))))
5940 C
5941  sum=sum+sixth*hz*hyi*(
5942  > czdi*(
5943  > xpi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
5944  > xp*( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
5945  > +czd*(
5946  > xpi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
5947  > xp*( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
5948 C
5949  sum=sum+z36th*hy*hz*(
5950  > czdi*(
5951  > xpi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
5952  > xp*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
5953  > +czd*(
5954  > xpi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
5955  > xp*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
5956 C
5957  fval(v,iadr)=sum
5958  enddo
5959  endif
5960 C
5961  if(ict(4).eq.1) then
5962 C ! fxxzz
5963  j=jj
5964  k=kk
5965 C
5966 C ...and in y direction
5967 C
5968  yp=yparam
5969  ypi=1.0_r8-yp
5970  yp2=yp*yp
5971  ypi2=ypi*ypi
5972 C
5973  cy=yp*(yp2-1.0_r8)
5974  cyi=ypi*(ypi2-1.0_r8)
5975  hy2=hy*hy
5976 C
5977 C ...and in z direction
5978 C
5979  zp=zparam
5980  zpi=1.0_r8-zp
5981 C
5982  iadr=iadr+1
5983  do v=1,ivec
5984  i=ii(v)
5985 C
5986 C ...in x direction
5987 C
5988  xp=xparam(v)
5989  xpi=1.0_r8-xp
5990 C
5991  sum=(
5992  > zpi*(
5993  > xpi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
5994  > xp*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
5995  > +zp*(
5996  > xpi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
5997  > xp*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
5998 C
5999  sum=sum+sixth*hy2*(
6000  > zpi*(
6001  > xpi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
6002  > xp*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
6003  > +zp*(
6004  > xpi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
6005  > xp*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
6006 C
6007  fval(v,iadr)=sum
6008  enddo
6009  endif
6010 C
6011  if(ict(5).eq.1) then
6012 C ! fxyyz
6013  j=jj
6014  k=kk
6015 C
6016 C ...and in y direction
6017 C
6018  yp=yparam
6019  ypi=1.0_r8-yp
6020 C
6021 C ...and in z direction
6022 C
6023  zp=zparam
6024  zpi=1.0_r8-zp
6025  zp2=zp*zp
6026  zpi2=zpi*zpi
6027 
6028  czd=3.0_r8*zp2-1.0_r8
6029  czdi=-3.0_r8*zpi2+1.0_r8
6030 C
6031  iadr=iadr+1
6032  do v=1,ivec
6033  i=ii(v)
6034 C
6035 C ...in x direction
6036 C
6037  xp=xparam(v)
6038  xpi=1.0_r8-xp
6039  xp2=xp*xp
6040  xpi2=xpi*xpi
6041 C
6042  cxd=3.0_r8*xp2-1.0_r8
6043  cxdi=-3.0_r8*xpi2+1.0_r8
6044 C
6045  sum=hxi(v)*hzi*(
6046  > -(
6047  > -(ypi*fin(2,i,j,k) +yp*fin(2,i,j+1,k))
6048  > +(ypi*fin(2,i+1,j,k)+yp*fin(2,i+1,j+1,k)))
6049  > +(
6050  > -(ypi*fin(2,i,j,k+1) +yp*fin(2,i,j+1,k+1))
6051  > +(ypi*fin(2,i+1,j,k+1)+yp*fin(2,i+1,j+1,k+1))))
6052 C
6053  sum=sum+sixth*hx(v)*hzi*(
6054  > -(
6055  > cxdi*(ypi*fin(4,i,j,k) +yp*fin(4,i,j+1,k))+
6056  > cxd*(ypi*fin(4,i+1,j,k)+yp*fin(4,i+1,j+1,k)))
6057  > +(
6058  > cxdi*(ypi*fin(4,i,j,k+1) +yp*fin(4,i,j+1,k+1))+
6059  > cxd*(ypi*fin(4,i+1,j,k+1)+yp*fin(4,i+1,j+1,k+1))))
6060 C
6061  sum=sum+sixth*hz*hxi(v)*(
6062  > czdi*(
6063  > -(ypi*fin(6,i,j,k) +yp*fin(6,i,j+1,k))
6064  > +(ypi*fin(6,i+1,j,k)+yp*fin(6,i+1,j+1,k)))
6065  > +czd*(
6066  > -(ypi*fin(6,i,j,k+1) +yp*fin(6,i,j+1,k+1))
6067  > +(ypi*fin(6,i+1,j,k+1)+yp*fin(6,i+1,j+1,k+1))))
6068 C
6069  sum=sum+z36th*hx(v)*hz*(
6070  > czdi*(
6071  > cxdi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
6072  > cxd*(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
6073  > +czd*(
6074  > cxdi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
6075  > cxd*(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
6076 C
6077  fval(v,iadr)=sum
6078  enddo
6079  endif
6080 C
6081  if(ict(6).eq.1) then
6082 C ! fxyzz
6083  j=jj
6084  k=kk
6085 C
6086 C ...and in y direction
6087 C
6088  yp=yparam
6089  ypi=1.0_r8-yp
6090  yp2=yp*yp
6091  ypi2=ypi*ypi
6092 
6093  cyd=3.0_r8*yp2-1.0_r8
6094  cydi=-3.0_r8*ypi2+1.0_r8
6095 C
6096 C ...and in z direction
6097 C
6098  zp=zparam
6099  zpi=1.0_r8-zp
6100 C
6101  iadr=iadr+1
6102  do v=1,ivec
6103  i=ii(v)
6104 C
6105 C ...in x direction
6106 C
6107  xp=xparam(v)
6108  xpi=1.0_r8-xp
6109  xp2=xp*xp
6110  xpi2=xpi*xpi
6111 
6112  cxd=3.0_r8*xp2-1.0_r8
6113  cxdi=-3.0_r8*xpi2+1.0_r8
6114 C
6115  sum=hyi*hxi(v)*(
6116  > zpi*(
6117  > ( +fin(3,i,j,k) -fin(3,i,j+1,k))
6118  > +( -fin(3,i+1,j,k)+fin(3,i+1,j+1,k)))
6119  > +zp*(
6120  > ( +fin(3,i,j,k+1) -fin(3,i,j+1,k+1))
6121  > +( -fin(3,i+1,j,k+1)+fin(3,i+1,j+1,k+1))))
6122 C
6123  sum=sum+sixth*hx(v)*hyi*(
6124  > zpi*(
6125  > cxdi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
6126  > cxd*( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
6127  > +zp*(
6128  > cxdi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
6129  > cxd*( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
6130 C
6131  sum=sum+sixth*hy*hxi(v)*(
6132  > zpi*(
6133  > -(cydi*fin(6,i,j,k) +cyd*fin(6,i,j+1,k))
6134  > +(cydi*fin(6,i+1,j,k)+cyd*fin(6,i+1,j+1,k)))
6135  > +zp*(
6136  > -(cydi*fin(6,i,j,k+1) +cyd*fin(6,i,j+1,k+1))
6137  > +(cydi*fin(6,i+1,j,k+1)+cyd*fin(6,i+1,j+1,k+1))))
6138 C
6139  sum=sum+z36th*hx(v)*hy*(
6140  > zpi*(
6141  > cxdi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
6142  > cxd*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
6143  > +zp*(
6144  > cxdi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
6145  > cxd*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
6146 C
6147  fval(v,iadr)=sum
6148  enddo
6149  endif
6150 C
6151  if(ict(7).eq.1) then
6152 C ! fyyzz
6153  j=jj
6154  k=kk
6155 C
6156 C ...and in y direction
6157 C
6158  yp=yparam
6159  ypi=1.0_r8-yp
6160 C
6161 C ...and in z direction
6162 C
6163  zp=zparam
6164  zpi=1.0_r8-zp
6165 C
6166  iadr=iadr+1
6167  do v=1,ivec
6168  i=ii(v)
6169 C
6170 C ...in x direction
6171 C
6172  xp=xparam(v)
6173  xpi=1.0_r8-xp
6174  xp2=xp*xp
6175  xpi2=xpi*xpi
6176 C
6177  cx=xp*(xp2-1.0_r8)
6178  cxi=xpi*(xpi2-1.0_r8)
6179  hx2=hx(v)*hx(v)
6180 C
6181  sum=(
6182  > zpi*(
6183  > xpi*(ypi*fin(6,i,j,k) +yp*fin(6,i,j+1,k))+
6184  > xp*( ypi*fin(6,i+1,j,k)+yp*fin(6,i+1,j+1,k)))
6185  > +zp*(
6186  > xpi*(ypi*fin(6,i,j,k+1) +yp*fin(6,i,j+1,k+1))+
6187  > xp*(ypi*fin(6,i+1,j,k+1)+yp*fin(6,i+1,j+1,k+1))))
6188 C
6189  sum=sum+sixth*hx2*(
6190  > zpi*(
6191  > cxi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
6192  > cx*( ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
6193  > +zp*(
6194  > cxi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
6195  > cx*( ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
6196 C
6197  fval(v,iadr)=sum
6198  enddo
6199  endif
6200 C
6201 C----------------------------------
6202 C 4th derivatives (3 in a coordinate)
6203 C
6204  else if(ict(1).eq.-4) then
6205  if(ict(2).eq.1) then
6206 C ! fxxxy
6207  j=jj
6208  k=kk
6209 C
6210 C ...and in y direction
6211 C
6212  yp=yparam
6213  ypi=1.0_r8-yp
6214  yp2=yp*yp
6215  ypi2=ypi*ypi
6216 
6217  cyd=3.0_r8*yp2-1.0_r8
6218  cydi=-3.0_r8*ypi2+1.0_r8
6219 C
6220 C ...and in z direction
6221 C
6222  zp=zparam
6223  zpi=1.0_r8-zp
6224  zp2=zp*zp
6225  zpi2=zpi*zpi
6226 C
6227  cz=zp*(zp2-1.0_r8)
6228  czi=zpi*(zpi2-1.0_r8)
6229  hz2=hz*hz
6230 C
6231  iadr=iadr+1
6232  do v=1,ivec
6233  i=ii(v)
6234 C
6235  sum=hyi*hxi(v)*(
6236  > zpi*(
6237  > ( fin(1,i,j,k) -fin(1,i,j+1,k))+
6238  > ( -fin(1,i+1,j,k)+fin(1,i+1,j+1,k)))
6239  > +zp*(
6240  > ( fin(1,i,j,k+1) -fin(1,i,j+1,k+1))+
6241  > ( -fin(1,i+1,j,k+1)+fin(1,i+1,j+1,k+1))))
6242 C
6243  sum=sum+sixth*hy*hxi(v)*(
6244  > zpi*(
6245  > -(cydi*fin(4,i,j,k) +cyd*fin(4,i,j+1,k))+
6246  > (cydi*fin(4,i+1,j,k)+cyd*fin(4,i+1,j+1,k)))
6247  > +zp*(
6248  > -(cydi*fin(4,i,j,k+1) +cyd*fin(4,i,j+1,k+1))+
6249  > (cydi*fin(4,i+1,j,k+1)+cyd*fin(4,i+1,j+1,k+1))))
6250 C
6251  sum=sum+sixth*hz2*hyi*hxi(v)*(
6252  > czi*(
6253  > ( fin(5,i,j,k) -fin(5,i,j+1,k))+
6254  > ( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
6255  > +cz*(
6256  > ( fin(5,i,j,k+1) -fin(5,i,j+1,k+1))+
6257  > ( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
6258 C
6259  sum=sum+z36th*hy*hz2*hxi(v)*(
6260  > czi*(
6261  > -(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
6262  > (cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
6263  > +cz*(
6264  > -(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
6265  > (cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
6266 C
6267  fval(v,iadr)=sum
6268  enddo
6269  endif
6270 C
6271  if(ict(3).eq.1) then
6272 C ! fxxxz
6273  j=jj
6274  k=kk
6275 C
6276 C ...and in y direction
6277 C
6278  yp=yparam
6279  ypi=1.0_r8-yp
6280  yp2=yp*yp
6281  ypi2=ypi*ypi
6282 C
6283  cy=yp*(yp2-1.0_r8)
6284  cyi=ypi*(ypi2-1.0_r8)
6285  hy2=hy*hy
6286 C
6287 C ...and in z direction
6288 C
6289  zp=zparam
6290  zpi=1.0_r8-zp
6291  zp2=zp*zp
6292  zpi2=zpi*zpi
6293 
6294  czd=3.0_r8*zp2-1.0_r8
6295  czdi=-3.0_r8*zpi2+1.0_r8
6296 C
6297  iadr=iadr+1
6298  do v=1,ivec
6299  i=ii(v)
6300 C
6301  sum=hzi*hxi(v)*(
6302  > (
6303  > +(ypi*fin(1,i,j,k) +yp*fin(1,i,j+1,k))
6304  > -(ypi*fin(1,i+1,j,k)+yp*fin(1,i+1,j+1,k)))
6305  > +(
6306  > -(ypi*fin(1,i,j,k+1) +yp*fin(1,i,j+1,k+1))
6307  > +(ypi*fin(1,i+1,j,k+1)+yp*fin(1,i+1,j+1,k+1))))
6308 C
6309  sum=sum+sixth*hy2*hzi*hxi(v)*(
6310  > (
6311  > +(cyi*fin(4,i,j,k) +cy*fin(4,i,j+1,k))
6312  > -(cyi*fin(4,i+1,j,k)+cy*fin(4,i+1,j+1,k)))
6313  > +(
6314  > -(cyi*fin(4,i,j,k+1) +cy*fin(4,i,j+1,k+1))
6315  > +(cyi*fin(4,i+1,j,k+1)+cy*fin(4,i+1,j+1,k+1))))
6316 C
6317  sum=sum+sixth*hz*hxi(v)*(
6318  > czdi*(
6319  > -(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))
6320  > +(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
6321  > +czd*(
6322  > -(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))
6323  > +(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
6324 C
6325  sum=sum+z36th*hy2*hz*hxi(v)*(
6326  > czdi*(
6327  > -(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))
6328  > +(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
6329  > +czd*(
6330  > -(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))
6331  > +(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
6332 C
6333  fval(v,iadr)=sum
6334  enddo
6335  endif
6336 C
6337  if(ict(4).eq.1) then
6338 C ! fxyyy
6339  j=jj
6340  k=kk
6341 C
6342 C ...and in z direction
6343 C
6344  zp=zparam
6345  zpi=1.0_r8-zp
6346  zp2=zp*zp
6347  zpi2=zpi*zpi
6348 C
6349  cz=zp*(zp2-1.0_r8)
6350  czi=zpi*(zpi2-1.0_r8)
6351  hz2=hz*hz
6352 C
6353  iadr=iadr+1
6354  do v=1,ivec
6355  i=ii(v)
6356 C
6357 C ...in x direction
6358 C
6359  xp=xparam(v)
6360  xpi=1.0_r8-xp
6361  xp2=xp*xp
6362  xpi2=xpi*xpi
6363 
6364  cxd=3.0_r8*xp2-1.0_r8
6365  cxdi=-3.0_r8*xpi2+1.0_r8
6366 C
6367  sum=hxi(v)*hyi*(
6368  > zpi*(
6369  > ( fin(2,i,j,k) -fin(2,i,j+1,k))
6370  > +(-fin(2,i+1,j,k)+fin(2,i+1,j+1,k)))
6371  > +zp*(
6372  > ( fin(2,i,j,k+1) -fin(2,i,j+1,k+1))
6373  > +(-fin(2,i+1,j,k+1)+fin(2,i+1,j+1,k+1))))
6374 C
6375  sum=sum+sixth*hx(v)*hyi*(
6376  > zpi*(
6377  > cxdi*(-fin(4,i,j,k) +fin(4,i,j+1,k))+
6378  > cxd*( -fin(4,i+1,j,k)+fin(4,i+1,j+1,k)))
6379  > +zp*(
6380  > cxdi*(-fin(4,i,j,k+1) +fin(4,i,j+1,k+1))+
6381  > cxd*( -fin(4,i+1,j,k+1)+fin(4,i+1,j+1,k+1))))
6382 C
6383  sum=sum+sixth*hz2*hxi(v)*hyi*(
6384  > czi*(
6385  > ( fin(6,i,j,k) -fin(6,i,j+1,k))
6386  > +(-fin(6,i+1,j,k)+fin(6,i+1,j+1,k)))
6387  > +cz*(
6388  > ( fin(6,i,j,k+1) -fin(6,i,j+1,k+1))
6389  > +(-fin(6,i+1,j,k+1)+fin(6,i+1,j+1,k+1))))
6390 C
6391  sum=sum+z36th*hx(v)*hz2*hyi*(
6392  > czi*(
6393  > cxdi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
6394  > cxd*( -fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
6395  > +cz*(
6396  > cxdi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
6397  > cxd*( -fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
6398 C
6399  fval(v,iadr)=sum
6400  enddo
6401  endif
6402 C
6403  if(ict(5).eq.1) then
6404 C ! fxzzz
6405  j=jj
6406  k=kk
6407 C
6408 C ...and in y direction
6409 C
6410  yp=yparam
6411  ypi=1.0_r8-yp
6412  yp2=yp*yp
6413  ypi2=ypi*ypi
6414 C
6415  cy=yp*(yp2-1.0_r8)
6416  cyi=ypi*(ypi2-1.0_r8)
6417  hy2=hy*hy
6418 C
6419  iadr=iadr+1
6420  do v=1,ivec
6421  i=ii(v)
6422 C
6423 C ...in x direction
6424 C
6425  xp=xparam(v)
6426  xpi=1.0_r8-xp
6427  xp2=xp*xp
6428  xpi2=xpi*xpi
6429 
6430  cxd=3.0_r8*xp2-1.0_r8
6431  cxdi=-3.0_r8*xpi2+1.0_r8
6432 C
6433  sum=hxi(v)*hzi*(
6434  > -(
6435  > -(ypi*fin(3,i,j,k) +yp*fin(3,i,j+1,k))
6436  > +(ypi*fin(3,i+1,j,k)+yp*fin(3,i+1,j+1,k)))
6437  > +(
6438  > -(ypi*fin(3,i,j,k+1) +yp*fin(3,i,j+1,k+1))
6439  > +(ypi*fin(3,i+1,j,k+1)+yp*fin(3,i+1,j+1,k+1))))
6440 C
6441  sum=sum+sixth*hx(v)*hzi*(
6442  > -(
6443  > cxdi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
6444  > cxd*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
6445  > +(
6446  > cxdi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
6447  > cxd*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
6448 C
6449  sum=sum+sixth*hy2*hxi(v)*hzi*(
6450  > -(
6451  > -(cyi*fin(6,i,j,k) +cy*fin(6,i,j+1,k))
6452  > +(cyi*fin(6,i+1,j,k)+cy*fin(6,i+1,j+1,k)))
6453  > +(
6454  > -(cyi*fin(6,i,j,k+1) +cy*fin(6,i,j+1,k+1))
6455  > +(cyi*fin(6,i+1,j,k+1)+cy*fin(6,i+1,j+1,k+1))))
6456 C
6457  sum=sum+z36th*hx(v)*hy2*hzi*(
6458  > -(
6459  > cxdi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
6460  > cxd*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
6461  > +(
6462  > cxdi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
6463  > cxd*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
6464 C
6465  fval(v,iadr)=sum
6466  enddo
6467  endif
6468 C
6469  if(ict(6).eq.1) then
6470 C ! fyyyz
6471  j=jj
6472  k=kk
6473 C
6474 C ...and in z direction
6475 C
6476  zp=zparam
6477  zpi=1.0_r8-zp
6478  zp2=zp*zp
6479  zpi2=zpi*zpi
6480 
6481  czd=3.0_r8*zp2-1.0_r8
6482  czdi=-3.0_r8*zpi2+1.0_r8
6483 C
6484  iadr=iadr+1
6485  do v=1,ivec
6486  i=ii(v)
6487 C
6488 C ...in x direction
6489 C
6490  xp=xparam(v)
6491  xpi=1.0_r8-xp
6492  xp2=xp*xp
6493  xpi2=xpi*xpi
6494 C
6495  cx=xp*(xp2-1.0_r8)
6496  cxi=xpi*(xpi2-1.0_r8)
6497  hx2=hx(v)*hx(v)
6498 C
6499  sum=hyi*hzi*(
6500  > -(
6501  > xpi*(-fin(2,i,j,k) +fin(2,i,j+1,k))+
6502  > xp*( -fin(2,i+1,j,k)+fin(2,i+1,j+1,k)))
6503  > +(
6504  > xpi*(-fin(2,i,j,k+1) +fin(2,i,j+1,k+1))+
6505  > xp*( -fin(2,i+1,j,k+1)+fin(2,i+1,j+1,k+1))))
6506 C
6507  sum=sum+sixth*hx2*hyi*hzi*(
6508  > -(
6509  > cxi*(-fin(4,i,j,k) +fin(4,i,j+1,k))+
6510  > cx*( -fin(4,i+1,j,k)+fin(4,i+1,j+1,k)))
6511  > +(
6512  > cxi*(-fin(4,i,j,k+1) +fin(4,i,j+1,k+1))+
6513  > cx*( -fin(4,i+1,j,k+1)+fin(4,i+1,j+1,k+1))))
6514 C
6515  sum=sum+sixth*hz*hyi*(
6516  > czdi*(
6517  > xpi*(-fin(6,i,j,k) +fin(6,i,j+1,k))+
6518  > xp*( -fin(6,i+1,j,k)+fin(6,i+1,j+1,k)))
6519  > +czd*(
6520  > xpi*(-fin(6,i,j,k+1) +fin(6,i,j+1,k+1))+
6521  > xp*( -fin(6,i+1,j,k+1)+fin(6,i+1,j+1,k+1))))
6522 C
6523  sum=sum+z36th*hx2*hz*hyi*(
6524  > czdi*(
6525  > cxi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
6526  > cx*( -fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
6527  > +czd*(
6528  > cxi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
6529  > cx*( -fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
6530 C
6531  fval(v,iadr)=sum
6532  enddo
6533  endif
6534 C
6535  if(ict(7).eq.1) then
6536 C ! fyzzz
6537  j=jj
6538  k=kk
6539 C
6540 C ...and in y direction
6541 C
6542  yp=yparam
6543  ypi=1.0_r8-yp
6544  yp2=yp*yp
6545  ypi2=ypi*ypi
6546 
6547  cyd=3.0_r8*yp2-1.0_r8
6548  cydi=-3.0_r8*ypi2+1.0_r8
6549 C
6550  iadr=iadr+1
6551  do v=1,ivec
6552  i=ii(v)
6553 C
6554 C ...in x direction
6555 C
6556  xp=xparam(v)
6557  xpi=1.0_r8-xp
6558  xp2=xp*xp
6559  xpi2=xpi*xpi
6560 C
6561  cx=xp*(xp2-1.0_r8)
6562  cxi=xpi*(xpi2-1.0_r8)
6563  hx2=hx(v)*hx(v)
6564 C
6565  sum=hyi*hzi*(
6566  > -(
6567  > xpi*(-fin(3,i,j,k) +fin(3,i,j+1,k))+
6568  > xp*( -fin(3,i+1,j,k)+fin(3,i+1,j+1,k)))
6569  > +(
6570  > xpi*(-fin(3,i,j,k+1) +fin(3,i,j+1,k+1))+
6571  > xp*( -fin(3,i+1,j,k+1)+fin(3,i+1,j+1,k+1))))
6572 C
6573  sum=sum+sixth*hx2*hyi*hzi*(
6574  > -(
6575  > cxi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
6576  > cx*( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
6577  > +(
6578  > cxi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
6579  > cx*( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
6580 C
6581  sum=sum+sixth*hy*hzi*(
6582  > -(
6583  > xpi*(cydi*fin(6,i,j,k) +cyd*fin(6,i,j+1,k))+
6584  > xp*(cydi*fin(6,i+1,j,k)+cyd*fin(6,i+1,j+1,k)))
6585  > +(
6586  > xpi*(cydi*fin(6,i,j,k+1) +cyd*fin(6,i,j+1,k+1))+
6587  > xp*(cydi*fin(6,i+1,j,k+1)+cyd*fin(6,i+1,j+1,k+1))))
6588 C
6589  sum=sum+z36th*hx2*hy*hzi*(
6590  > -(
6591  > cxi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
6592  > cx*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
6593  > +(
6594  > cxi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
6595  > cx*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
6596 C
6597  fval(v,iadr)=sum
6598  enddo
6599  endif
6600 C
6601 C----------------------------------
6602 C 5th derivatives (.le.2 in each coordinate)
6603 C
6604  else if(ict(1).eq.5) then
6605  if(ict(2).eq.1) then
6606 C ! fxxyyz
6607  j=jj
6608  k=kk
6609 C
6610 C ...and in y direction
6611 C
6612  yp=yparam
6613  ypi=1.0_r8-yp
6614 C
6615 C ...and in z direction
6616 C
6617  zp=zparam
6618  zpi=1.0_r8-zp
6619  zp2=zp*zp
6620  zpi2=zpi*zpi
6621 
6622  czd=3.0_r8*zp2-1.0_r8
6623  czdi=-3.0_r8*zpi2+1.0_r8
6624 C
6625  iadr=iadr+1
6626  do v=1,ivec
6627  i=ii(v)
6628 C
6629 C ...in x direction
6630 C
6631  xp=xparam(v)
6632  xpi=1.0_r8-xp
6633 C
6634  sum=hzi*(
6635  > -(
6636  > xpi*(ypi*fin(4,i,j,k) +yp*fin(4,i,j+1,k))+
6637  > xp*( ypi*fin(4,i+1,j,k)+yp*fin(4,i+1,j+1,k)))
6638  > +(
6639  > xpi*(ypi*fin(4,i,j,k+1) +yp*fin(4,i,j+1,k+1))+
6640  > xp*(ypi*fin(4,i+1,j,k+1)+yp*fin(4,i+1,j+1,k+1))))
6641 C
6642  sum=sum+sixth*hz*(
6643  > czdi*(
6644  > xpi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
6645  > xp*(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
6646  > +czd*(
6647  > xpi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
6648  > xp*(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
6649 C
6650  fval(v,iadr)=sum
6651  enddo
6652  endif
6653 C
6654  if(ict(3).eq.1) then
6655 C ! fxxyzz
6656  j=jj
6657  k=kk
6658 C
6659 C ...and in y direction
6660 C
6661  yp=yparam
6662  ypi=1.0_r8-yp
6663  yp2=yp*yp
6664  ypi2=ypi*ypi
6665 
6666  cyd=3.0_r8*yp2-1.0_r8
6667  cydi=-3.0_r8*ypi2+1.0_r8
6668 C
6669 C ...and in z direction
6670 C
6671  zp=zparam
6672  zpi=1.0_r8-zp
6673 C
6674  iadr=iadr+1
6675  do v=1,ivec
6676  i=ii(v)
6677 C
6678 C ...in x direction
6679 C
6680  xp=xparam(v)
6681  xpi=1.0_r8-xp
6682 C
6683  sum=hyi*(
6684  > zpi*(
6685  > xpi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
6686  > xp*( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
6687  > +zp*(
6688  > xpi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
6689  > xp*( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
6690 C
6691  sum=sum+sixth*hy*(
6692  > zpi*(
6693  > xpi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
6694  > xp*( cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
6695  > +zp*(
6696  > xpi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
6697  > xp*( cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
6698 C
6699  fval(v,iadr)=sum
6700  enddo
6701  endif
6702 C
6703  if(ict(4).eq.1) then
6704 C ! fxyyzz
6705  j=jj
6706  k=kk
6707 C
6708 C ...and in y direction
6709 C
6710  yp=yparam
6711  ypi=1.0_r8-yp
6712 C
6713 C ...and in z direction
6714 C
6715  zp=zparam
6716  zpi=1.0_r8-zp
6717 C
6718  iadr=iadr+1
6719  do v=1,ivec
6720  i=ii(v)
6721 C
6722 C ...in x direction
6723 C
6724  xp=xparam(v)
6725  xpi=1.0_r8-xp
6726  xp2=xp*xp
6727  xpi2=xpi*xpi
6728 
6729  cxd=3.0_r8*xp2-1.0_r8
6730  cxdi=-3.0_r8*xpi2+1.0_r8
6731 C
6732  sum=hxi(v)*(
6733  > zpi*(
6734  > -(ypi*fin(6,i,j,k) +yp*fin(6,i,j+1,k))
6735  > +(ypi*fin(6,i+1,j,k)+yp*fin(6,i+1,j+1,k)))
6736  > +zp*(
6737  > -(ypi*fin(6,i,j,k+1) +yp*fin(6,i,j+1,k+1))
6738  > +(ypi*fin(6,i+1,j,k+1)+yp*fin(6,i+1,j+1,k+1))))
6739 C
6740  sum=sum+sixth*hx(v)*(
6741  > zpi*(
6742  > cxdi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
6743  > cxd*(ypi*fin(7,i+1,j,k) +yp*fin(7,i+1,j+1,k)))
6744  > +zp*(
6745  > cxdi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
6746  > cxd*( ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
6747 C
6748  fval(v,iadr)=sum
6749  enddo
6750  endif
6751 C
6752 C----------------------------------
6753 C 5th derivatives (3 in a coordinate)
6754 C
6755  else if(ict(1).eq.-5) then
6756  if(ict(2).eq.1) then
6757 C ! fxxxyy
6758  j=jj
6759  k=kk
6760 C
6761 C ...and in y direction
6762 C
6763  yp=yparam
6764  ypi=1.0_r8-yp
6765 C
6766 C ...and in z direction
6767 C
6768  zp=zparam
6769  zpi=1.0_r8-zp
6770  zp2=zp*zp
6771  zpi2=zpi*zpi
6772 C
6773  cz=zp*(zp2-1.0_r8)
6774  czi=zpi*(zpi2-1.0_r8)
6775  hz2=hz*hz
6776 C
6777  iadr=iadr+1
6778  do v=1,ivec
6779  i=ii(v)
6780 C
6781  sum=hxi(v)*(
6782  > zpi*(
6783  > -(ypi*fin(4,i,j,k) +yp*fin(4,i,j+1,k))
6784  > +( ypi*fin(4,i+1,j,k)+yp*fin(4,i+1,j+1,k)))
6785  > +zp*(
6786  > -(ypi*fin(4,i,j,k+1) +yp*fin(4,i,j+1,k+1))
6787  > +(ypi*fin(4,i+1,j,k+1)+yp*fin(4,i+1,j+1,k+1))))
6788 C
6789  sum=sum+sixth*hz2*hxi(v)*(
6790  > czi*(
6791  > -(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))
6792  > +(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
6793  > +cz*(
6794  > -(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))
6795  > +(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
6796 C
6797  fval(v,iadr)=sum
6798  enddo
6799  endif
6800 C
6801  if(ict(3).eq.1) then
6802 C ! fxxxyz
6803  j=jj
6804  k=kk
6805 C
6806 C ...and in y direction
6807 C
6808  yp=yparam
6809  ypi=1.0_r8-yp
6810  yp2=yp*yp
6811  ypi2=ypi*ypi
6812 
6813  cyd=3.0_r8*yp2-1.0_r8
6814  cydi=-3.0_r8*ypi2+1.0_r8
6815 C
6816 C ...and in z direction
6817 C
6818  zp=zparam
6819  zpi=1.0_r8-zp
6820  zp2=zp*zp
6821  zpi2=zpi*zpi
6822 
6823  czd=3.0_r8*zp2-1.0_r8
6824  czdi=-3.0_r8*zpi2+1.0_r8
6825 C
6826  iadr=iadr+1
6827  do v=1,ivec
6828  i=ii(v)
6829 C
6830  sum=hyi*hzi*hxi(v)*(
6831  > -(
6832  > -(-fin(1,i,j,k) +fin(1,i,j+1,k))
6833  > +( -fin(1,i+1,j,k)+fin(1,i+1,j+1,k)))
6834  > +(
6835  > -(-fin(1,i,j,k+1) +fin(1,i,j+1,k+1))
6836  > +( -fin(1,i+1,j,k+1)+fin(1,i+1,j+1,k+1))))
6837 C
6838  sum=sum+sixth*hy*hzi*hxi(v)*(
6839  > -(
6840  > -(cydi*fin(4,i,j,k) +cyd*fin(4,i,j+1,k))
6841  > +(cydi*fin(4,i+1,j,k)+cyd*fin(4,i+1,j+1,k)))
6842  > +(
6843  > -(cydi*fin(4,i,j,k+1) +cyd*fin(4,i,j+1,k+1))
6844  > +(cydi*fin(4,i+1,j,k+1)+cyd*fin(4,i+1,j+1,k+1))))
6845 C
6846  sum=sum+sixth*hz*hyi*hxi(v)*(
6847  > czdi*(
6848  > -(-fin(5,i,j,k) +fin(5,i,j+1,k))
6849  > +( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
6850  > +czd*(
6851  > -(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))
6852  > +( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
6853 C
6854  sum=sum+z36th*hy*hz*hxi(v)*(
6855  > czdi*(
6856  > -(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))
6857  > +(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
6858  > +czd*(
6859  > -(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))
6860  > +(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
6861 C
6862  fval(v,iadr)=sum
6863  enddo
6864  endif
6865 C
6866  if(ict(4).eq.1) then
6867 C ! fxxxzz
6868  j=jj
6869  k=kk
6870 C
6871 C ...and in y direction
6872 C
6873  yp=yparam
6874  ypi=1.0_r8-yp
6875  yp2=yp*yp
6876  ypi2=ypi*ypi
6877 C
6878  cy=yp*(yp2-1.0_r8)
6879  cyi=ypi*(ypi2-1.0_r8)
6880  hy2=hy*hy
6881 C
6882 C ...and in z direction
6883 C
6884  zp=zparam
6885  zpi=1.0_r8-zp
6886 C
6887  iadr=iadr+1
6888  do v=1,ivec
6889  i=ii(v)
6890 C
6891  sum=hxi(v)*(
6892  > zpi*(
6893  > -(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))
6894  > +(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
6895  > +zp*(
6896  > -(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))
6897  > +(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
6898 C
6899  sum=sum+sixth*hy2*hxi(v)*(
6900  > zpi*(
6901  > -(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))
6902  > +(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
6903  > +zp*(
6904  > -(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))
6905  > +(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
6906 C
6907  fval(v,iadr)=sum
6908  enddo
6909  endif
6910 C
6911  if(ict(5).eq.1) then
6912 C ! fxxyyy
6913  j=jj
6914  k=kk
6915 C
6916 C ...and in z direction
6917 C
6918  zp=zparam
6919  zpi=1.0_r8-zp
6920  zp2=zp*zp
6921  zpi2=zpi*zpi
6922 C
6923  cz=zp*(zp2-1.0_r8)
6924  czi=zpi*(zpi2-1.0_r8)
6925  hz2=hz*hz
6926 C
6927  iadr=iadr+1
6928  do v=1,ivec
6929  i=ii(v)
6930 C
6931 C ...in x direction
6932 C
6933  xp=xparam(v)
6934  xpi=1.0_r8-xp
6935 C
6936  sum=hyi*(
6937  > zpi*(
6938  > xpi*(-fin(4,i,j,k) +fin(4,i,j+1,k))+
6939  > xp*( -fin(4,i+1,j,k)+fin(4,i+1,j+1,k)))
6940  > +zp*(
6941  > xpi*(-fin(4,i,j,k+1) +fin(4,i,j+1,k+1))+
6942  > xp*( -fin(4,i+1,j,k+1)+fin(4,i+1,j+1,k+1))))
6943 C
6944  sum=sum+sixth*hz2*hyi*(
6945  > czi*(
6946  > xpi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
6947  > xp*( -fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
6948  > +cz*(
6949  > xpi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
6950  > xp*( -fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
6951 C
6952  fval(v,iadr)=sum
6953  enddo
6954  endif
6955 C
6956  if(ict(6).eq.1) then
6957 C ! fxxzzz
6958  j=jj
6959  k=kk
6960 C
6961 C ...and in y direction
6962 C
6963  yp=yparam
6964  ypi=1.0_r8-yp
6965  yp2=yp*yp
6966  ypi2=ypi*ypi
6967 C
6968  cy=yp*(yp2-1.0_r8)
6969  cyi=ypi*(ypi2-1.0_r8)
6970  hy2=hy*hy
6971 C
6972  iadr=iadr+1
6973  do v=1,ivec
6974  i=ii(v)
6975 C
6976 C ...in x direction
6977 C
6978  xp=xparam(v)
6979  xpi=1.0_r8-xp
6980 C
6981  sum=hzi*(
6982  > -(
6983  > xpi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
6984  > xp*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
6985  > +(
6986  > xpi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
6987  > xp*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
6988 C
6989  sum=sum+sixth*hy2*hzi*(
6990  > -(
6991  > xpi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
6992  > xp*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
6993  > +(
6994  > xpi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
6995  > xp*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
6996 C
6997  fval(v,iadr)=sum
6998  enddo
6999  endif
7000 C
7001  if(ict(7).eq.1) then
7002 C ! fxyyyz
7003  j=jj
7004  k=kk
7005 C
7006 C ...and in z direction
7007 C
7008  zp=zparam
7009  zpi=1.0_r8-zp
7010  zp2=zp*zp
7011  zpi2=zpi*zpi
7012 
7013  czd=3.0_r8*zp2-1.0_r8
7014  czdi=-3.0_r8*zpi2+1.0_r8
7015 C
7016  iadr=iadr+1
7017  do v=1,ivec
7018  i=ii(v)
7019 C
7020 C ...in x direction
7021 C
7022  xp=xparam(v)
7023  xpi=1.0_r8-xp
7024  xp2=xp*xp
7025  xpi2=xpi*xpi
7026 
7027  cxd=3.0_r8*xp2-1.0_r8
7028  cxdi=-3.0_r8*xpi2+1.0_r8
7029 C
7030  sum=hxi(v)*hzi*hyi*(
7031  > -(
7032  > ( fin(2,i,j,k) -fin(2,i,j+1,k))
7033  > +(-fin(2,i+1,j,k)+fin(2,i+1,j+1,k)))
7034  > +(
7035  > ( fin(2,i,j,k+1) -fin(2,i,j+1,k+1))
7036  > +(-fin(2,i+1,j,k+1)+fin(2,i+1,j+1,k+1))))
7037 C
7038  sum=sum+sixth*hx(v)*hzi*hyi*(
7039  > -(
7040  > cxdi*(-fin(4,i,j,k) +fin(4,i,j+1,k))+
7041  > cxd*(-fin(4,i+1,j,k) +fin(4,i+1,j+1,k)))
7042  > +(
7043  > cxdi*(-fin(4,i,j,k+1) +fin(4,i,j+1,k+1))+
7044  > cxd*(-fin(4,i+1,j,k+1) +fin(4,i+1,j+1,k+1))))
7045 C
7046  sum=sum+sixth*hz*hxi(v)*hyi*(
7047  > czdi*(
7048  > ( fin(6,i,j,k) -fin(6,i,j+1,k))
7049  > +(-fin(6,i+1,j,k)+fin(6,i+1,j+1,k)))
7050  > +czd*(
7051  > ( fin(6,i,j,k+1) -fin(6,i,j+1,k+1))
7052  > +(-fin(6,i+1,j,k+1)+fin(6,i+1,j+1,k+1))))
7053 C
7054  sum=sum+z36th*hx(v)*hz*hyi*(
7055  > czdi*(
7056  > cxdi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
7057  > cxd*(-fin(7,i+1,j,k) +fin(7,i+1,j+1,k)))
7058  > +czd*(
7059  > cxdi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
7060  > cxd*(-fin(7,i+1,j,k+1) +fin(7,i+1,j+1,k+1))))
7061 C
7062  fval(v,iadr)=sum
7063  enddo
7064  endif
7065 C
7066  if(ict(8).eq.1) then
7067 C ! fxyzzz
7068  j=jj
7069  k=kk
7070 C
7071 C ...and in y direction
7072 C
7073  yp=yparam
7074  ypi=1.0_r8-yp
7075  yp2=yp*yp
7076  ypi2=ypi*ypi
7077 
7078  cyd=3.0_r8*yp2-1.0_r8
7079  cydi=-3.0_r8*ypi2+1.0_r8
7080 C
7081  iadr=iadr+1
7082  do v=1,ivec
7083  i=ii(v)
7084 C
7085 C ...in x direction
7086 C
7087  xp=xparam(v)
7088  xpi=1.0_r8-xp
7089  xp2=xp*xp
7090  xpi2=xpi*xpi
7091 
7092  cxd=3.0_r8*xp2-1.0_r8
7093  cxdi=-3.0_r8*xpi2+1.0_r8
7094 C
7095  sum=hyi*hxi(v)*hzi*(
7096  > -(
7097  > ( +fin(3,i,j,k) -fin(3,i,j+1,k))
7098  > +( -fin(3,i+1,j,k)+fin(3,i+1,j+1,k)))
7099  > +(
7100  > ( +fin(3,i,j,k+1) -fin(3,i,j+1,k+1))
7101  > +( -fin(3,i+1,j,k+1)+fin(3,i+1,j+1,k+1))))
7102 C
7103  sum=sum+sixth*hx(v)*hyi*hzi*(
7104  > -(
7105  > cxdi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
7106  > cxd*( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
7107  > +(
7108  > cxdi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
7109  > cxd*( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
7110 C
7111  sum=sum+sixth*hy*hxi(v)*hzi*(
7112  > -(
7113  > -(cydi*fin(6,i,j,k) +cyd*fin(6,i,j+1,k))
7114  > +(cydi*fin(6,i+1,j,k)+cyd*fin(6,i+1,j+1,k)))
7115  > +(
7116  > -(cydi*fin(6,i,j,k+1) +cyd*fin(6,i,j+1,k+1))
7117  > +(cydi*fin(6,i+1,j,k+1)+cyd*fin(6,i+1,j+1,k+1))))
7118 C
7119  sum=sum+z36th*hx(v)*hy*hzi*(
7120  > -(
7121  > cxdi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
7122  > cxd*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
7123  > +(
7124  > cxdi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
7125  > cxd*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
7126 C
7127  fval(v,iadr)=sum
7128  enddo
7129  endif
7130 C
7131  if(ict(9).eq.1) then
7132 C ! fyyyzz
7133  j=jj
7134  k=kk
7135 C
7136 C ...and in z direction
7137 C
7138  zp=zparam
7139  zpi=1.0_r8-zp
7140 C
7141  iadr=iadr+1
7142  do v=1,ivec
7143  i=ii(v)
7144 C
7145 C ...in x direction
7146 C
7147  xp=xparam(v)
7148  xpi=1.0_r8-xp
7149  xp2=xp*xp
7150  xpi2=xpi*xpi
7151 C
7152  cx=xp*(xp2-1.0_r8)
7153  cxi=xpi*(xpi2-1.0_r8)
7154  hx2=hx(v)*hx(v)
7155 C
7156  sum=hyi*(
7157  > zpi*(
7158  > xpi*(-fin(6,i,j,k) +fin(6,i,j+1,k))+
7159  > xp*( -fin(6,i+1,j,k)+fin(6,i+1,j+1,k)))
7160  > +zp*(
7161  > xpi*(-fin(6,i,j,k+1) +fin(6,i,j+1,k+1))+
7162  > xp*( -fin(6,i+1,j,k+1)+fin(6,i+1,j+1,k+1))))
7163 C
7164  sum=sum+sixth*hx2*hyi*(
7165  > zpi*(
7166  > cxi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
7167  > cx*( -fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
7168  > +zp*(
7169  > cxi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
7170  > cx*( -fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
7171 C
7172  fval(v,iadr)=sum
7173  enddo
7174  endif
7175 C
7176  if(ict(10).eq.1) then
7177 C ! fyyzzz
7178  j=jj
7179  k=kk
7180 C
7181 C ...and in y direction
7182 C
7183  yp=yparam
7184  ypi=1.0_r8-yp
7185 C
7186  iadr=iadr+1
7187  do v=1,ivec
7188  i=ii(v)
7189 C
7190 C ...in x direction
7191 C
7192  xp=xparam(v)
7193  xpi=1.0_r8-xp
7194  xp2=xp*xp
7195  xpi2=xpi*xpi
7196 C
7197  cx=xp*(xp2-1.0_r8)
7198  cxi=xpi*(xpi2-1.0_r8)
7199  hx2=hx(v)*hx(v)
7200 C
7201  sum=hzi*(
7202  > -(
7203  > xpi*(ypi*fin(6,i,j,k) +yp*fin(6,i,j+1,k))+
7204  > xp*( ypi*fin(6,i+1,j,k)+yp*fin(6,i+1,j+1,k)))
7205  > +(
7206  > xpi*(ypi*fin(6,i,j,k+1) +yp*fin(6,i,j+1,k+1))+
7207  > xp*(ypi*fin(6,i+1,j,k+1)+yp*fin(6,i+1,j+1,k+1))))
7208 C
7209  sum=sum+sixth*hx2*hzi*(
7210  > -(
7211  > cxi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
7212  > cx*( ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
7213  > +(
7214  > cxi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
7215  > cx*( ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
7216 C
7217  fval(v,iadr)=sum
7218  enddo
7219  endif
7220 C
7221 C----------------------------------
7222 C 6th derivatives (2 in each coordinate)
7223 C
7224  else if(ict(1).eq.6) then
7225 C ! fxxyyzz
7226  j=jj
7227  k=kk
7228 C
7229 C ...and in y direction
7230 C
7231  yp=yparam
7232  ypi=1.0_r8-yp
7233 C
7234 C ...and in z direction
7235 C
7236  zp=zparam
7237  zpi=1.0_r8-zp
7238 C
7239  iadr=iadr+1
7240  do v=1,ivec
7241  i=ii(v)
7242 C
7243 C ...in x direction
7244 C
7245  xp=xparam(v)
7246  xpi=1.0_r8-xp
7247 C
7248  sum=(
7249  > zpi*(
7250  > xpi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
7251  > xp*(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
7252  > +zp*(
7253  > xpi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
7254  > xp*(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
7255 C
7256  fval(v,iadr)=sum
7257  enddo
7258  endif
7259 C
7260 C----------------------------------
7261 C 6th derivatives (3 in a coordinate)
7262 C
7263  if(ict(1).eq.-6) then
7264  if(ict(2).eq.1) then
7265 C ! fxxxyyy
7266  j=jj
7267  k=kk
7268 C
7269 C ...and in z direction
7270 C
7271  zp=zparam
7272  zpi=1.0_r8-zp
7273  zp2=zp*zp
7274  zpi2=zpi*zpi
7275 C
7276  cz=zp*(zp2-1.0_r8)
7277  czi=zpi*(zpi2-1.0_r8)
7278  hz2=hz*hz
7279 C
7280  iadr=iadr+1
7281  do v=1,ivec
7282  i=ii(v)
7283 C
7284  sum=hyi*hxi(v)*(
7285  > zpi*(
7286  > ( fin(4,i,j,k) -fin(4,i,j+1,k))
7287  > +(-fin(4,i+1,j,k)+fin(4,i+1,j+1,k)))
7288  > +zp*(
7289  > ( fin(4,i,j,k+1) -fin(4,i,j+1,k+1))
7290  > +(-fin(4,i+1,j,k+1)+fin(4,i+1,j+1,k+1))))
7291 C
7292  sum=sum+sixth*hz2*hyi*hxi(v)*(
7293  > czi*(
7294  > ( fin(7,i,j,k) -fin(7,i,j+1,k))
7295  > +(-fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
7296  > +cz*(
7297  > ( fin(7,i,j,k+1) -fin(7,i,j+1,k+1))
7298  > +(-fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
7299 C
7300  fval(v,iadr)=sum
7301  enddo
7302  endif
7303 C
7304  if(ict(3).eq.1) then
7305 C ! fxxxyyz
7306  j=jj
7307  k=kk
7308 C
7309 C ...and in y direction
7310 C
7311  yp=yparam
7312  ypi=1.0_r8-yp
7313 C
7314 C ...and in z direction
7315 C
7316  zp=zparam
7317  zpi=1.0_r8-zp
7318  zp2=zp*zp
7319  zpi2=zpi*zpi
7320 
7321  czd=3.0_r8*zp2-1.0_r8
7322  czdi=-3.0_r8*zpi2+1.0_r8
7323 C
7324  iadr=iadr+1
7325  do v=1,ivec
7326  i=ii(v)
7327 C
7328  sum=hxi(v)*hzi*(
7329  > -(
7330  > -(ypi*fin(4,i,j,k) +yp*fin(4,i,j+1,k))
7331  > +( ypi*fin(4,i+1,j,k)+yp*fin(4,i+1,j+1,k)))
7332  > +(
7333  > -(ypi*fin(4,i,j,k+1) +yp*fin(4,i,j+1,k+1))
7334  > +(ypi*fin(4,i+1,j,k+1)+yp*fin(4,i+1,j+1,k+1))))
7335 C
7336  sum=sum+sixth*hz*hxi(v)*(
7337  > czdi*(
7338  > -(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))
7339  > +(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
7340  > +czd*(
7341  > -(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))
7342  > +(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
7343 C
7344  fval(v,iadr)=sum
7345  enddo
7346  endif
7347 C
7348  if(ict(4).eq.1) then
7349 C ! fxxxyzz
7350  j=jj
7351  k=kk
7352 C
7353 C ...and in y direction
7354 C
7355  yp=yparam
7356  ypi=1.0_r8-yp
7357  yp2=yp*yp
7358  ypi2=ypi*ypi
7359 
7360  cyd=3.0_r8*yp2-1.0_r8
7361  cydi=-3.0_r8*ypi2+1.0_r8
7362 C
7363 C ...and in z direction
7364 C
7365  zp=zparam
7366  zpi=1.0_r8-zp
7367 C
7368  iadr=iadr+1
7369  do v=1,ivec
7370  i=ii(v)
7371 C
7372  sum=hxi(v)*hyi*(
7373  > zpi*(
7374  > ( fin(5,i,j,k) -fin(5,i,j+1,k))
7375  > +(-fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
7376  > +zp*(
7377  > ( fin(5,i,j,k+1) -fin(5,i,j+1,k+1))
7378  > +(-fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
7379 C
7380  sum=sum+sixth*hy*hxi(v)*(
7381  > zpi*(
7382  > -(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))
7383  > +(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
7384  > +zp*(
7385  > -(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))
7386  > +(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
7387 C
7388  fval(v,iadr)=sum
7389  enddo
7390  endif
7391 C
7392  if(ict(5).eq.1) then
7393 C ! fxxxzzz
7394  j=jj
7395  k=kk
7396 C
7397 C ...and in y direction
7398 C
7399  yp=yparam
7400  ypi=1.0_r8-yp
7401  yp2=yp*yp
7402  ypi2=ypi*ypi
7403 C
7404  cy=yp*(yp2-1.0_r8)
7405  cyi=ypi*(ypi2-1.0_r8)
7406  hy2=hy*hy
7407 C
7408  iadr=iadr+1
7409  do v=1,ivec
7410  i=ii(v)
7411 C
7412  sum=hxi(v)*hzi*(
7413  > -(
7414  > -(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))
7415  > +(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
7416  > +(
7417  > -(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))
7418  > +(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
7419 C
7420  sum=sum+sixth*hy2*hxi(v)*hzi*(
7421  > -(
7422  > -(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))
7423  > +(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
7424  > +(
7425  > -(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))
7426  > +(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
7427 C
7428  fval(v,iadr)=sum
7429  enddo
7430  endif
7431 C
7432  if(ict(6).eq.1) then
7433 C ! fxxyyyz
7434  j=jj
7435  k=kk
7436 C
7437 C ...and in z direction
7438 C
7439  zp=zparam
7440  zpi=1.0_r8-zp
7441  zp2=zp*zp
7442  zpi2=zpi*zpi
7443 
7444  czd=3.0_r8*zp2-1.0_r8
7445  czdi=-3.0_r8*zpi2+1.0_r8
7446 C
7447  iadr=iadr+1
7448  do v=1,ivec
7449  i=ii(v)
7450 C
7451 C ...in x direction
7452 C
7453  xp=xparam(v)
7454  xpi=1.0_r8-xp
7455 C
7456  sum=hzi*hyi*(
7457  > -(
7458  > xpi*(-fin(4,i,j,k) +fin(4,i,j+1,k))+
7459  > xp*(-fin(4,i+1,j,k) +fin(4,i+1,j+1,k)))
7460  > +(
7461  > xpi*(-fin(4,i,j,k+1) +fin(4,i,j+1,k+1))+
7462  > xp*(-fin(4,i+1,j,k+1) +fin(4,i+1,j+1,k+1))))
7463 C
7464  sum=sum+sixth*hz*hyi*(
7465  > czdi*(
7466  > xpi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
7467  > xp*(-fin(7,i+1,j,k) +fin(7,i+1,j+1,k)))
7468  > +czd*(
7469  > xpi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
7470  > xp*(-fin(7,i+1,j,k+1) +fin(7,i+1,j+1,k+1))))
7471 C
7472  fval(v,iadr)=sum
7473  enddo
7474  endif
7475 C
7476  if(ict(7).eq.1) then
7477 C ! fxxyzzz
7478  j=jj
7479  k=kk
7480 C
7481 C ...and in y direction
7482 C
7483  yp=yparam
7484  ypi=1.0_r8-yp
7485  yp2=yp*yp
7486  ypi2=ypi*ypi
7487 
7488  cyd=3.0_r8*yp2-1.0_r8
7489  cydi=-3.0_r8*ypi2+1.0_r8
7490 C
7491  iadr=iadr+1
7492  do v=1,ivec
7493  i=ii(v)
7494 C
7495 C ...in x direction
7496 C
7497  xp=xparam(v)
7498  xpi=1.0_r8-xp
7499 C
7500  sum=hyi*hzi*(
7501  > -(
7502  > xpi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
7503  > xp*( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
7504  > +(
7505  > xpi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
7506  > xp*( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
7507 C
7508  sum=sum+sixth*hy*hzi*(
7509  > -(
7510  > xpi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
7511  > xp*( cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
7512  > +(
7513  > xpi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
7514  > xp*( cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
7515 C
7516  fval(v,iadr)=sum
7517  enddo
7518  endif
7519 C
7520  if(ict(8).eq.1) then
7521 C ! fxyyyzz
7522  j=jj
7523  k=kk
7524 C
7525 C ...and in z direction
7526 C
7527  zp=zparam
7528  zpi=1.0_r8-zp
7529 C
7530  iadr=iadr+1
7531  do v=1,ivec
7532  i=ii(v)
7533 C
7534 C ...in x direction
7535 C
7536  xp=xparam(v)
7537  xpi=1.0_r8-xp
7538  xp2=xp*xp
7539  xpi2=xpi*xpi
7540 
7541  cxd=3.0_r8*xp2-1.0_r8
7542  cxdi=-3.0_r8*xpi2+1.0_r8
7543 C
7544  sum=hxi(v)*hyi*(
7545  > zpi*(
7546  > ( fin(6,i,j,k) -fin(6,i,j+1,k))
7547  > +(-fin(6,i+1,j,k)+fin(6,i+1,j+1,k)))
7548  > +zp*(
7549  > ( fin(6,i,j,k+1) -fin(6,i,j+1,k+1))
7550  > +(-fin(6,i+1,j,k+1)+fin(6,i+1,j+1,k+1))))
7551 C
7552  sum=sum+sixth*hx(v)*hyi*(
7553  > zpi*(
7554  > cxdi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
7555  > cxd*(-fin(7,i+1,j,k) +fin(7,i+1,j+1,k)))
7556  > +zp*(
7557  > cxdi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
7558  > cxd*(-fin(7,i+1,j,k+1) +fin(7,i+1,j+1,k+1))))
7559 C
7560  fval(v,iadr)=sum
7561  enddo
7562  endif
7563 C
7564  if(ict(9).eq.1) then
7565 C ! fxyyzzz
7566  j=jj
7567  k=kk
7568 C
7569 C ...and in y direction
7570 C
7571  yp=yparam
7572  ypi=1.0_r8-yp
7573 C
7574  iadr=iadr+1
7575  do v=1,ivec
7576  i=ii(v)
7577 C
7578 C ...in x direction
7579 C
7580  xp=xparam(v)
7581  xpi=1.0_r8-xp
7582  xp2=xp*xp
7583  xpi2=xpi*xpi
7584 
7585  cxd=3.0_r8*xp2-1.0_r8
7586  cxdi=-3.0_r8*xpi2+1.0_r8
7587 C
7588  sum=hxi(v)*hzi*(
7589  > -(
7590  > -(ypi*fin(6,i,j,k) +yp*fin(6,i,j+1,k))
7591  > +(ypi*fin(6,i+1,j,k)+yp*fin(6,i+1,j+1,k)))
7592  > +(
7593  > -(ypi*fin(6,i,j,k+1) +yp*fin(6,i,j+1,k+1))
7594  > +(ypi*fin(6,i+1,j,k+1)+yp*fin(6,i+1,j+1,k+1))))
7595 C
7596  sum=sum+sixth*hx(v)*hzi*(
7597  > -(
7598  > cxdi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
7599  > cxd*(ypi*fin(7,i+1,j,k) +yp*fin(7,i+1,j+1,k)))
7600  > +(
7601  > cxdi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
7602  > cxd*( ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
7603 C
7604  fval(v,iadr)=sum
7605  enddo
7606  endif
7607 C
7608  if(ict(10).eq.1) then
7609 C ! fyyyzzz
7610  j=jj
7611  k=kk
7612 C
7613  iadr=iadr+1
7614  do v=1,ivec
7615  i=ii(v)
7616 C
7617 C ...in x direction
7618 C
7619  xp=xparam(v)
7620  xpi=1.0_r8-xp
7621  xp2=xp*xp
7622  xpi2=xpi*xpi
7623 C
7624  cx=xp*(xp2-1.0_r8)
7625  cxi=xpi*(xpi2-1.0_r8)
7626  hx2=hx(v)*hx(v)
7627 C
7628  sum=hyi*hzi*(
7629  > -(
7630  > xpi*(-fin(6,i,j,k) +fin(6,i,j+1,k))+
7631  > xp*( -fin(6,i+1,j,k)+fin(6,i+1,j+1,k)))
7632  > +(
7633  > xpi*(-fin(6,i,j,k+1) +fin(6,i,j+1,k+1))+
7634  > xp*( -fin(6,i+1,j,k+1)+fin(6,i+1,j+1,k+1))))
7635 C
7636  sum=sum+sixth*hx2*hyi*hzi*(
7637  > -(
7638  > cxi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
7639  > cx*( -fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
7640  > +(
7641  > cxi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
7642  > cx*( -fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
7643 C
7644  fval(v,iadr)=sum
7645  enddo
7646  endif
7647 C
7648 C----------------------------------
7649 C 7th derivatives
7650 C
7651  else if(abs(ict(1)).eq.7) then
7652  if(ict(2).eq.1) then
7653 C ! fxxxyyyz
7654  j=jj
7655  k=kk
7656 C
7657 C ...and in z direction
7658 C
7659  zp=zparam
7660  zpi=1.0_r8-zp
7661  zp2=zp*zp
7662  zpi2=zpi*zpi
7663 
7664  czd=3.0_r8*zp2-1.0_r8
7665  czdi=-3.0_r8*zpi2+1.0_r8
7666 C
7667  iadr=iadr+1
7668  do v=1,ivec
7669  i=ii(v)
7670 C
7671  sum=hyi*hxi(v)*hzi*(
7672  > -(
7673  > ( fin(4,i,j,k) -fin(4,i,j+1,k))
7674  > +(-fin(4,i+1,j,k)+fin(4,i+1,j+1,k)))
7675  > +(
7676  > ( fin(4,i,j,k+1) -fin(4,i,j+1,k+1))
7677  > +(-fin(4,i+1,j,k+1)+fin(4,i+1,j+1,k+1))))
7678 C
7679  sum=sum+sixth*hz*hyi*hxi(v)*(
7680  > czdi*(
7681  > ( fin(7,i,j,k) -fin(7,i,j+1,k))
7682  > +(-fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
7683  > +czd*(
7684  > ( fin(7,i,j,k+1) -fin(7,i,j+1,k+1))
7685  > +(-fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
7686 C
7687  fval(v,iadr)=sum
7688  enddo
7689  endif
7690 C
7691  if(ict(3).eq.1) then
7692 C ! fxxxyyzz
7693  j=jj
7694  k=kk
7695 C
7696 C ...and in y direction
7697 C
7698  yp=yparam
7699  ypi=1.0_r8-yp
7700 C
7701 C ...and in z direction
7702 C
7703  zp=zparam
7704  zpi=1.0_r8-zp
7705 C
7706  iadr=iadr+1
7707  do v=1,ivec
7708  i=ii(v)
7709 C
7710  sum=hxi(v)*(
7711  > zpi*(
7712  > -(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))
7713  > +(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
7714  > +zp*(
7715  > -(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))
7716  > +(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
7717 C
7718  fval(v,iadr)=sum
7719  enddo
7720  endif
7721 C
7722  if(ict(4).eq.1) then
7723 C ! fxxxyzzz
7724  j=jj
7725  k=kk
7726 C
7727 C ...and in y direction
7728 C
7729  yp=yparam
7730  ypi=1.0_r8-yp
7731  yp2=yp*yp
7732  ypi2=ypi*ypi
7733 
7734  cyd=3.0_r8*yp2-1.0_r8
7735  cydi=-3.0_r8*ypi2+1.0_r8
7736 C
7737  iadr=iadr+1
7738  do v=1,ivec
7739  i=ii(v)
7740 C
7741  sum=hxi(v)*hyi*hzi*(
7742  > -(
7743  > ( fin(5,i,j,k) -fin(5,i,j+1,k))
7744  > +(-fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
7745  > +(
7746  > ( fin(5,i,j,k+1) -fin(5,i,j+1,k+1))
7747  > +(-fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
7748 C
7749  sum=sum+sixth*hy*hxi(v)*hzi*(
7750  > -(
7751  > -(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))
7752  > +(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
7753  > +(
7754  > -(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))
7755  > +(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
7756 C
7757  fval(v,iadr)=sum
7758  enddo
7759  endif
7760 C
7761  if(ict(5).eq.1) then
7762 C ! fxxyyyzz
7763  j=jj
7764  k=kk
7765 C
7766 C ...and in z direction
7767 C
7768  zp=zparam
7769  zpi=1.0_r8-zp
7770 C
7771  iadr=iadr+1
7772  do v=1,ivec
7773  i=ii(v)
7774 C
7775 C ...in x direction
7776 C
7777  xp=xparam(v)
7778  xpi=1.0_r8-xp
7779 C
7780  sum=hyi*(
7781  > zpi*(
7782  > xpi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
7783  > xp*( -fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
7784  > +zp*(
7785  > xpi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
7786  > xp*( -fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
7787 C
7788  fval(v,iadr)=sum
7789  enddo
7790  endif
7791 C
7792  if(ict(6).eq.1) then
7793 C ! fxxyyzzz
7794  j=jj
7795  k=kk
7796 C
7797 C ...and in y direction
7798 C
7799  yp=yparam
7800  ypi=1.0_r8-yp
7801 C
7802  iadr=iadr+1
7803  do v=1,ivec
7804  i=ii(v)
7805 C
7806 C ...in x direction
7807 C
7808  xp=xparam(v)
7809  xpi=1.0_r8-xp
7810 C
7811  sum=hzi*(
7812  > -(
7813  > xpi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
7814  > xp*(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
7815  > +(
7816  > xpi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
7817  > xp*(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
7818 C
7819  fval(v,iadr)=sum
7820  enddo
7821  endif
7822 C
7823  if(ict(7).eq.1) then
7824 C ! fxyyyzzz
7825  j=jj
7826  k=kk
7827 C
7828  iadr=iadr+1
7829  do v=1,ivec
7830  i=ii(v)
7831 C
7832 C ...in x direction
7833 C
7834  xp=xparam(v)
7835  xpi=1.0_r8-xp
7836  xp2=xp*xp
7837  xpi2=xpi*xpi
7838 
7839  cxd=3.0_r8*xp2-1.0_r8
7840  cxdi=-3.0_r8*xpi2+1.0_r8
7841 C
7842  sum=hxi(v)*hyi*hzi*(
7843  > -(
7844  > ( fin(6,i,j,k) -fin(6,i,j+1,k))
7845  > +(-fin(6,i+1,j,k)+fin(6,i+1,j+1,k)))
7846  > +(
7847  > ( fin(6,i,j,k+1) -fin(6,i,j+1,k+1))
7848  > +(-fin(6,i+1,j,k+1)+fin(6,i+1,j+1,k+1))))
7849 C
7850  sum=sum+sixth*hx(v)*hyi*hzi*(
7851  > -(
7852  > cxdi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
7853  > cxd*(-fin(7,i+1,j,k) +fin(7,i+1,j+1,k)))
7854  > +(
7855  > cxdi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
7856  > cxd*(-fin(7,i+1,j,k+1) +fin(7,i+1,j+1,k+1))))
7857 C
7858  fval(v,iadr)=sum
7859  enddo
7860  endif
7861 C
7862 C----------------------------------
7863 C 8th derivatives
7864 C
7865  else if(abs(ict(1)).eq.8) then
7866  if(ict(2).eq.1) then
7867 C ! fxxxyyyzz
7868  j=jj
7869  k=kk
7870 C
7871 C ...and in z direction
7872 C
7873  zp=zparam
7874  zpi=1.0_r8-zp
7875 C
7876  iadr=iadr+1
7877  do v=1,ivec
7878  i=ii(v)
7879 C
7880  sum=hyi*hxi(v)*(
7881  > zpi*(
7882  > ( fin(7,i,j,k) -fin(7,i,j+1,k))
7883  > +(-fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
7884  > +zp*(
7885  > ( fin(7,i,j,k+1) -fin(7,i,j+1,k+1))
7886  > +(-fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
7887 C
7888  fval(v,iadr)=sum
7889  enddo
7890  endif
7891 C
7892  if(ict(3).eq.1) then
7893 C ! fxxxyyzzz
7894  j=jj
7895  k=kk
7896 C
7897 C ...and in y direction
7898 C
7899  yp=yparam
7900  ypi=1.0_r8-yp
7901 C
7902  iadr=iadr+1
7903  do v=1,ivec
7904  i=ii(v)
7905 C
7906  sum=hxi(v)*hzi*(
7907  > -(
7908  > -(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))
7909  > +(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
7910  > +(
7911  > -(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))
7912  > +(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
7913 C
7914  fval(v,iadr)=sum
7915  enddo
7916  endif
7917 C
7918  if(ict(4).eq.1) then
7919 C ! fxxyyyzzz
7920  j=jj
7921  k=kk
7922 C
7923  iadr=iadr+1
7924  do v=1,ivec
7925  i=ii(v)
7926 C
7927 C ...in x direction
7928 C
7929  xp=xparam(v)
7930  xpi=1.0_r8-xp
7931 C
7932  sum=hyi*hzi*(
7933  > -(
7934  > xpi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
7935  > xp*( -fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
7936  > +(
7937  > xpi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
7938  > xp*( -fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
7939  fval(v,iadr)=sum
7940 C
7941  enddo
7942  endif
7943 C
7944 C----------------------------------
7945 C 9th derivative
7946 C
7947  else if(abs(ict(1)).eq.9) then
7948 C ! fxxxyyyzzz
7949  j=jj
7950  k=kk
7951 C
7952  iadr=iadr+1
7953  do v=1,ivec
7954  i=ii(v)
7955 C
7956  sum=hyi*hxi(v)*hzi*(
7957  > -(
7958  > ( fin(7,i,j,k) -fin(7,i,j+1,k))
7959  > +(-fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
7960  > +(
7961  > ( fin(7,i,j,k+1) -fin(7,i,j+1,k+1))
7962  > +(-fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
7963 C
7964  fval(v,iadr)=sum
7965  enddo
7966  endif
7967 C
7968  return
7969  end