V3FIT
evtricub.f
1  subroutine evtricub(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  real xget,yget,zget ! target of this interpolation
18  real x(nx) ! ordered x grid
19  real y(ny) ! ordered y grid
20  real z(nz) ! ordered z grid
21  integer ilinx ! ilinx=1 => assume x evenly spaced
22  integer iliny ! iliny=1 => assume y evenly spaced
23  integer ilinz ! ilinz=1 => assume z evenly spaced
24 C
25  real f(0:7,inf2,inf3,nz) ! function data
26 C
27 C f 2nd dimension inf2 must be .ge. nx; 3rd dim inf3 .ge. ny
28 C contents of f:
29 C
30 C f(0,i,j,k) = f @ x(i),y(j),z(k)
31 C f(1,i,j,k) = d2f/dx2 @ x(i),y(j),z(k)
32 C f(2,i,j,k) = d2f/dy2 @ x(i),y(j),z(k)
33 C f(3,i,j,k) = d2f/dz2 @ x(i),y(j),z(k)
34 C f(4,i,j,k) = d4f/dx2dy2 @ x(i),y(j),z(k)
35 C f(5,i,j,k) = d4f/dx2dz2 @ x(i),y(j),z(k)
36 C f(6,i,j,k) = d4f/dy2dz2 @ x(i),y(j),z(k)
37 C f(7,i,j,k) = d6f/dx2dy2dz2 @ x(i),y(j),z(k)
38 C
39  integer ict(10) ! code specifying output desired
40 C
41 C ict(1)=1 -- return f (0, don't)
42 C ict(2)=1 -- return df/dx (0, don't)
43 C ict(3)=1 -- return df/dy (0, don't)
44 C ict(4)=1 -- return df/dz (0, don't)
45 C ict(5)=1 -- return d2f/dx2 (0, don't)
46 C ict(6)=1 -- return d2f/dy2 (0, don't)
47 C ict(7)=1 -- return d2f/dz2 (0, don't)
48 C ict(8)=1 -- return d2f/dxdy (0, don't)
49 C ict(9)=1 -- return d2f/dxdz (0, don't)
50 C ict(10)=1-- return d2f/dydz (0, don't)
51 c
52 c (new dmc Dec 2005 -- higher derivatives available)
53 c ict(1)=3 --> 3rd derivative, .le.2 diff. in any coordinate
54 c ict(2:8) select: fxxy fxxz fxyy fxyz fxzz fyyz fyzz
55 c ->note ict(1)=3, ict(5)=1 gives fxyz = d3f/dxdydz
56 c ict(1)=-3 --> 3rd derivative, 3 in one coordinate
57 c ict(2:4) select: fxxx fyyy fzzz
58 c ict(1)=4 --> 3rd derivative, .le.2 diff. in any coordinate
59 c ict(2:7) select: fxxyy fxxyz fxxzz fxyyz fxyzz fyyzz
60 c ict(1)=-4 --> 3rd derivative, 3 in one coordinate
61 c ict(2:7) select: fxxxy fxxxz fxyyy fxzzz fyyyz fyzzz
62 c ict(1)=5 --> 3rd derivative, .le.2 diff. in any coordinate
63 c ict(2:4) select: fxxyyz fxxyzz fxyyzz
64 c ict(1)=-5 --> 3rd derivative, 3 in one coordinate
65 c ict(2:10) select: fxxxyy fxxxyz fxxxzz fxxyyy fxxzzz
66 c fxyyyz fxyzzz fyyyzz fzzzyy
67 c ict(1)=6 --> 3rd derivative, .le.2 diff. in any coordinate
68 c fxxyyzz
69 c ict(1)=-6 --> 3rd derivative, 3 in one coordinate
70 c ict(2:10) select: fxxxyyy fxxxyyz fxxxyzz fxxxyyz
71 c fxxyyyz fxxyzzz fxyyyzz fxyyzzz fyyyzzz
72 c ict(1)=-7 --> 7th derivative
73 c ict(2:7) select: fxxxyyyz fxxxyyzz fxxxyzzz
74 c fxxyyyzz fxxyyzzz fxyyyzzz
75 c ict(1)=-8 --> 8th derivative
76 c ict(2:4) select: fxxxyyyzz fxxxyyzzz fxxyyyzzz
77 c ict(1)=-9 --> 9th derivative: fxxxyyyzzz
78 c
79 C
80 C output arguments:
81 C =================
82 C
83  real fval(*) ! output data
84  integer ier ! error code =0 ==> no error
85 C
86 C fval(1) receives the first output (depends on ict(...) spec)
87 C fval(2) receives the second output (depends on ict(...) spec)
88 C fval(3) receives the third output (depends on ict(...) spec)
89 C fval(4) receives the 4th output (depends on ict(...) spec)
90 C fval(5-10) receive 5th thru 10th outputs (if required by ict(...) spec)
91 C
92 C examples:
93 C on input ict = [1,1,1,1,0,0,0,0,0,0,0]
94 C on output fval= [f,df/dx,df/dy,df/dz]
95 C
96 C on input ict = [1,0,0,0,0,0,0,0,0,0,0]
97 C on output fval= [f] ... elements 2-10 never referenced
98 C
99 C on input ict = [0,1,1,0,0,0,0,0,0,0,0]
100 C on output fval= [df/dx,df/dy] ... elements 3-10 never referenced
101 C
102 C on input ict = [0,0,0,0,1,0,0,0,0,0,0]
103 C on output fval= [d2f/dx2] ... elements 2-10 never referenced.
104 C
105 C ier -- completion code: 0 means OK
106 C-------------------
107 C local:
108 C
109  integer i(1),j(1),k(1) ! cell indices
110 C
111 C normalized displacement from (x(i),y(j),z(k)) corner of cell.
112 C xparam=0 @x(i) xparam=1 @x(i+1)
113 C yparam=0 @y(j) yparam=1 @y(j+1)
114 C zparam=0 @z(k) zparam=1 @z(k+1)
115 C
116  real xparam(1),yparam(1),zparam(1)
117 C
118 C cell dimensions and
119 C inverse cell dimensions hxi = 1/(x(i+1)-x(i)), hyi = 1/(y(j+1)-y(j))
120 C
121  real hx(1),hy(1),hz(1)
122  real hxi(1),hyi(1),hzi(1)
123 C
124 C 0 .le. xparam .le. 1
125 C 0 .le. yparam .le. 1
126 C 0 .le. zparam .le. 1
127 C
128 C---------------------------------------------------------------------
129 C use lookup routine as in Hermite interpolation
130 C
131  i(1)=0
132  j(1)=0
133  k(1)=0
134  call herm3xyz(xget,yget,zget,x,nx,y,ny,z,nz,ilinx,iliny,ilinz,
135  > i(1),j(1),k(1),xparam(1),yparam(1),zparam(1),
136  > hx(1),hxi(1),hy(1),hyi(1),hz(1),hzi(1),ier)
137  if(ier.ne.0) return
138 c
139  call fvtricub(ict,1,1,
140  > fval,i,j,k,xparam,yparam,zparam,
141  > hx,hxi,hy,hyi,hz,hzi,
142  > f,inf2,inf3,nz)
143 C
144  return
145  end
146 C---------------------------------------------------------------------
147 C evaluate C1 cubic Hermite function interpolation -- 3d fcn
148 C --vectorized-- dmc 10 Feb 1999
149 C
150  subroutine fvtricub(ict,ivec,ivecd,
151  > fval,ii,jj,kk,xparam,yparam,zparam,
152  > hx,hxi,hy,hyi,hz,hzi,
153  > fin,inf2,inf3,nz)
154 C
155 C use mktricub to set up spline coefficients...
156 C
157  integer ict(10) ! requested output control
158  integer ivec ! vector length
159  integer ivecd ! vector dimension (1st dim of fval)
160 C
161  integer ii(ivec),jj(ivec),kk(ivec) ! target cells (i,j,k)
162  real xparam(ivec),yparam(ivec),zparam(ivec)
163  ! normalized displacements from (i,j,k) corners
164 C
165  real hx(ivec),hy(ivec),hz(ivec) ! grid spacing, and
166  real hxi(ivec),hyi(ivec),hzi(ivec) ! inverse grid spacing
167  ! 1/(x(i+1)-x(i)) & 1/(y(j+1)-y(j)) & 1/(z(k+1)-z(i))
168 C
169  real fin(0:7,inf2,inf3,nz) ! interpolant data (cf "evtricub")
170 C
171  real fval(ivecd,*) ! output returned
172 C
173 C for detailed description of fin, ict and fval see subroutine evtricub
174 C comments. Note ict is not vectorized; the same output
175 C is expected to be returned for all input vector data points.
176 C
177 C note that the index inputs ii,jj,kk and parameter inputs
178 C xparam,yparam,zparam,hx,hxi,hy,hyi,hz,hzi are vectorized, and the
179 C output array fval has a vector ** 1st dimension ** whose
180 C size must be given as a separate argument
181 C
182 C to use this routine in scalar mode, pass in ivec=ivecd=1
183 C
184 C---------------
185 C
186  integer v
187 C
188  real sum
189  real, parameter :: sixth = 0.166666666666666667
190 c
191 C---------------
192 C
193  z36th=sixth*sixth
194  z216th=sixth*sixth*sixth
195 C
196  iadr=0
197  if(abs(ict(1)).le.2) then
198 C
199 C 0, 1st, 2nd derivatives...
200 C
201 C get desired values:
202 C
203  if(ict(1).eq.1) then
204 C
205 C function value...
206 C
207  iadr=iadr+1
208  do v=1,ivec
209  i=ii(v)
210  j=jj(v)
211  k=kk(v)
212 C
213 C ...in x direction
214 C
215  xp=xparam(v)
216  xpi=1.0-xp
217  xp2=xp*xp
218  xpi2=xpi*xpi
219 C
220  cx=xp*(xp2-1.0)
221  cxi=xpi*(xpi2-1.0)
222  hx2=hx(v)*hx(v)
223 C
224 C ...and in y direction
225 C
226  yp=yparam(v)
227  ypi=1.0-yp
228  yp2=yp*yp
229  ypi2=ypi*ypi
230 C
231  cy=yp*(yp2-1.0)
232  cyi=ypi*(ypi2-1.0)
233  hy2=hy(v)*hy(v)
234 C
235 C ...and in z direction
236 C
237  zp=zparam(v)
238  zpi=1.0-zp
239  zp2=zp*zp
240  zpi2=zpi*zpi
241 C
242  cz=zp*(zp2-1.0)
243  czi=zpi*(zpi2-1.0)
244  hz2=hz(v)*hz(v)
245 C
246  sum=(
247  > zpi*(
248  > xpi*(ypi*fin(0,i,j,k) +yp*fin(0,i,j+1,k))+
249  > xp*(ypi*fin(0,i+1,j,k)+yp*fin(0,i+1,j+1,k)))
250  > +zp*(
251  > xpi*(ypi*fin(0,i,j,k+1) +yp*fin(0,i,j+1,k+1))+
252  > xp*(ypi*fin(0,i+1,j,k+1)+yp*fin(0,i+1,j+1,k+1))))
253 C
254  sum=sum+sixth*hx2*(
255  > zpi*(
256  > cxi*(ypi*fin(1,i,j,k) +yp*fin(1,i,j+1,k))+
257  > cx*(ypi*fin(1,i+1,j,k)+yp*fin(1,i+1,j+1,k)))
258  > +zp*(
259  > cxi*(ypi*fin(1,i,j,k+1) +yp*fin(1,i,j+1,k+1))+
260  > cx*(ypi*fin(1,i+1,j,k+1)+yp*fin(1,i+1,j+1,k+1))))
261 C
262  sum=sum+sixth*hy2*(
263  > zpi*(
264  > xpi*(cyi*fin(2,i,j,k) +cy*fin(2,i,j+1,k))+
265  > xp*(cyi*fin(2,i+1,j,k)+cy*fin(2,i+1,j+1,k)))
266  > +zp*(
267  > xpi*(cyi*fin(2,i,j,k+1) +cy*fin(2,i,j+1,k+1))+
268  > xp*(cyi*fin(2,i+1,j,k+1)+cy*fin(2,i+1,j+1,k+1))))
269 C
270  sum=sum+sixth*hz2*(
271  > czi*(
272  > xpi*(ypi*fin(3,i,j,k) +yp*fin(3,i,j+1,k))+
273  > xp*(ypi*fin(3,i+1,j,k)+yp*fin(3,i+1,j+1,k)))
274  > +cz*(
275  > xpi*(ypi*fin(3,i,j,k+1) +yp*fin(3,i,j+1,k+1))+
276  > xp*(ypi*fin(3,i+1,j,k+1)+yp*fin(3,i+1,j+1,k+1))))
277 C
278  sum=sum+z36th*hx2*hy2*(
279  > zpi*(
280  > cxi*(cyi*fin(4,i,j,k) +cy*fin(4,i,j+1,k))+
281  > cx*(cyi*fin(4,i+1,j,k)+cy*fin(4,i+1,j+1,k)))
282  > +zp*(
283  > cxi*(cyi*fin(4,i,j,k+1) +cy*fin(4,i,j+1,k+1))+
284  > cx*(cyi*fin(4,i+1,j,k+1)+cy*fin(4,i+1,j+1,k+1))))
285 C
286  sum=sum+z36th*hx2*hz2*(
287  > czi*(
288  > cxi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
289  > cx*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
290  > +cz*(
291  > cxi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
292  > cx*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
293 C
294  sum=sum+z36th*hy2*hz2*(
295  > czi*(
296  > xpi*(cyi*fin(6,i,j,k) +cy*fin(6,i,j+1,k))+
297  > xp*(cyi*fin(6,i+1,j,k)+cy*fin(6,i+1,j+1,k)))
298  > +cz*(
299  > xpi*(cyi*fin(6,i,j,k+1) +cy*fin(6,i,j+1,k+1))+
300  > xp*(cyi*fin(6,i+1,j,k+1)+cy*fin(6,i+1,j+1,k+1))))
301 C
302  sum=sum+z216th*hx2*hy2*hz2*(
303  > czi*(
304  > cxi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
305  > cx*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
306  > +cz*(
307  > cxi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
308  > cx*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
309 C
310  fval(v,iadr)=sum
311  enddo
312  endif
313 C
314  if(ict(2).eq.1) then
315 C
316 C df/dx:
317 C
318  iadr=iadr+1
319  do v=1,ivec
320  i=ii(v)
321  j=jj(v)
322  k=kk(v)
323 C
324 C ...in x direction
325 C
326  xp=xparam(v)
327  xpi=1.0-xp
328  xp2=xp*xp
329  xpi2=xpi*xpi
330 
331  cxd=3.0*xp2-1.0
332  cxdi=-3.0*xpi2+1.0
333 C
334 C ...and in y direction
335 C
336  yp=yparam(v)
337  ypi=1.0-yp
338  yp2=yp*yp
339  ypi2=ypi*ypi
340 C
341  cy=yp*(yp2-1.0)
342  cyi=ypi*(ypi2-1.0)
343  hy2=hy(v)*hy(v)
344 C
345 C ...and in z direction
346 C
347  zp=zparam(v)
348  zpi=1.0-zp
349  zp2=zp*zp
350  zpi2=zpi*zpi
351 C
352  cz=zp*(zp2-1.0)
353  czi=zpi*(zpi2-1.0)
354  hz2=hz(v)*hz(v)
355 C
356  sum=hxi(v)*(
357  > zpi*(
358  > -(ypi*fin(0,i,j,k) +yp*fin(0,i,j+1,k))
359  > +(ypi*fin(0,i+1,j,k)+yp*fin(0,i+1,j+1,k)))
360  > +zp*(
361  > -(ypi*fin(0,i,j,k+1) +yp*fin(0,i,j+1,k+1))
362  > +(ypi*fin(0,i+1,j,k+1)+yp*fin(0,i+1,j+1,k+1))))
363 C
364  sum=sum+sixth*hx(v)*(
365  > zpi*(
366  > cxdi*(ypi*fin(1,i,j,k) +yp*fin(1,i,j+1,k))+
367  > cxd*(ypi*fin(1,i+1,j,k)+yp*fin(1,i+1,j+1,k)))
368  > +zp*(
369  > cxdi*(ypi*fin(1,i,j,k+1) +yp*fin(1,i,j+1,k+1))+
370  > cxd*(ypi*fin(1,i+1,j,k+1)+yp*fin(1,i+1,j+1,k+1))))
371 C
372  sum=sum+sixth*hxi(v)*hy2*(
373  > zpi*(
374  > -(cyi*fin(2,i,j,k) +cy*fin(2,i,j+1,k))
375  > +(cyi*fin(2,i+1,j,k)+cy*fin(2,i+1,j+1,k)))
376  > +zp*(
377  > -(cyi*fin(2,i,j,k+1) +cy*fin(2,i,j+1,k+1))
378  > +(cyi*fin(2,i+1,j,k+1)+cy*fin(2,i+1,j+1,k+1))))
379 C
380  sum=sum+sixth*hxi(v)*hz2*(
381  > czi*(
382  > -(ypi*fin(3,i,j,k) +yp*fin(3,i,j+1,k))
383  > +(ypi*fin(3,i+1,j,k)+yp*fin(3,i+1,j+1,k)))
384  > +cz*(
385  > -(ypi*fin(3,i,j,k+1) +yp*fin(3,i,j+1,k+1))
386  > +(ypi*fin(3,i+1,j,k+1)+yp*fin(3,i+1,j+1,k+1))))
387 C
388  sum=sum+z36th*hx(v)*hy2*(
389  > zpi*(
390  > cxdi*(cyi*fin(4,i,j,k) +cy*fin(4,i,j+1,k))+
391  > cxd*(cyi*fin(4,i+1,j,k)+cy*fin(4,i+1,j+1,k)))
392  > +zp*(
393  > cxdi*(cyi*fin(4,i,j,k+1) +cy*fin(4,i,j+1,k+1))+
394  > cxd*(cyi*fin(4,i+1,j,k+1)+cy*fin(4,i+1,j+1,k+1))))
395 C
396  sum=sum+z36th*hx(v)*hz2*(
397  > czi*(
398  > cxdi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
399  > cxd*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
400  > +cz*(
401  > cxdi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
402  > cxd*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
403 C
404  sum=sum+z36th*hxi(v)*hy2*hz2*(
405  > czi*(
406  > -(cyi*fin(6,i,j,k) +cy*fin(6,i,j+1,k))
407  > +(cyi*fin(6,i+1,j,k)+cy*fin(6,i+1,j+1,k)))
408  > +cz*(
409  > -(cyi*fin(6,i,j,k+1) +cy*fin(6,i,j+1,k+1))
410  > +(cyi*fin(6,i+1,j,k+1)+cy*fin(6,i+1,j+1,k+1))))
411 C
412  sum=sum+z216th*hx(v)*hy2*hz2*(
413  > czi*(
414  > cxdi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
415  > cxd*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
416  > +cz*(
417  > cxdi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
418  > cxd*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
419 C
420  fval(v,iadr)=sum
421  enddo
422  endif
423 C
424  if(ict(3).eq.1) then
425 C
426 C df/dy:
427 C
428  iadr=iadr+1
429  do v=1,ivec
430  i=ii(v)
431  j=jj(v)
432  k=kk(v)
433 C
434 C ...in x direction
435 C
436  xp=xparam(v)
437  xpi=1.0-xp
438  xp2=xp*xp
439  xpi2=xpi*xpi
440 C
441  cx=xp*(xp2-1.0)
442  cxi=xpi*(xpi2-1.0)
443  hx2=hx(v)*hx(v)
444 C
445 C ...and in y direction
446 C
447  yp=yparam(v)
448  ypi=1.0-yp
449  yp2=yp*yp
450  ypi2=ypi*ypi
451 
452  cyd=3.0*yp2-1.0
453  cydi=-3.0*ypi2+1.0
454 C
455 C ...and in z direction
456 C
457  zp=zparam(v)
458  zpi=1.0-zp
459  zp2=zp*zp
460  zpi2=zpi*zpi
461 C
462  cz=zp*(zp2-1.0)
463  czi=zpi*(zpi2-1.0)
464  hz2=hz(v)*hz(v)
465 C
466  sum=hyi(v)*(
467  > zpi*(
468  > xpi*(-fin(0,i,j,k) +fin(0,i,j+1,k))+
469  > xp*(-fin(0,i+1,j,k)+fin(0,i+1,j+1,k)))
470  > +zp*(
471  > xpi*(-fin(0,i,j,k+1) +fin(0,i,j+1,k+1))+
472  > xp*(-fin(0,i+1,j,k+1)+fin(0,i+1,j+1,k+1))))
473 C
474  sum=sum+sixth*hyi(v)*hx2*(
475  > zpi*(
476  > cxi*(-fin(1,i,j,k) +fin(1,i,j+1,k))+
477  > cx*(-fin(1,i+1,j,k)+fin(1,i+1,j+1,k)))
478  > +zp*(
479  > cxi*(-fin(1,i,j,k+1) +fin(1,i,j+1,k+1))+
480  > cx*(-fin(1,i+1,j,k+1)+fin(1,i+1,j+1,k+1))))
481 C
482  sum=sum+sixth*hy(v)*(
483  > zpi*(
484  > xpi*(cydi*fin(2,i,j,k) +cyd*fin(2,i,j+1,k))+
485  > xp*(cydi*fin(2,i+1,j,k)+cyd*fin(2,i+1,j+1,k)))
486  > +zp*(
487  > xpi*(cydi*fin(2,i,j,k+1) +cyd*fin(2,i,j+1,k+1))+
488  > xp*(cydi*fin(2,i+1,j,k+1)+cyd*fin(2,i+1,j+1,k+1))))
489 C
490  sum=sum+sixth*hyi(v)*hz2*(
491  > czi*(
492  > xpi*(-fin(3,i,j,k) +fin(3,i,j+1,k))+
493  > xp*(-fin(3,i+1,j,k)+fin(3,i+1,j+1,k)))
494  > +cz*(
495  > xpi*(-fin(3,i,j,k+1) +fin(3,i,j+1,k+1))+
496  > xp*(-fin(3,i+1,j,k+1)+fin(3,i+1,j+1,k+1))))
497 C
498  sum=sum+z36th*hx2*hy(v)*(
499  > zpi*(
500  > cxi*(cydi*fin(4,i,j,k) +cyd*fin(4,i,j+1,k))+
501  > cx*(cydi*fin(4,i+1,j,k)+cyd*fin(4,i+1,j+1,k)))
502  > +zp*(
503  > cxi*(cydi*fin(4,i,j,k+1) +cyd*fin(4,i,j+1,k+1))+
504  > cx*(cydi*fin(4,i+1,j,k+1)+cyd*fin(4,i+1,j+1,k+1))))
505 C
506  sum=sum+z36th*hyi(v)*hx2*hz2*(
507  > czi*(
508  > cxi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
509  > cx*(-fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
510  > +cz*(
511  > cxi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
512  > cx*(-fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
513 C
514  sum=sum+z36th*hy(v)*hz2*(
515  > czi*(
516  > xpi*(cydi*fin(6,i,j,k) +cyd*fin(6,i,j+1,k))+
517  > xp*(cydi*fin(6,i+1,j,k)+cyd*fin(6,i+1,j+1,k)))
518  > +cz*(
519  > xpi*(cydi*fin(6,i,j,k+1) +cyd*fin(6,i,j+1,k+1))+
520  > xp*(cydi*fin(6,i+1,j,k+1)+cyd*fin(6,i+1,j+1,k+1))))
521 C
522  sum=sum+z216th*hx2*hy(v)*hz2*(
523  > czi*(
524  > cxi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
525  > cx*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
526  > +cz*(
527  > cxi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
528  > cx*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
529 C
530  fval(v,iadr)=sum
531  enddo
532  endif
533 C
534  if(ict(4).eq.1) then
535 C
536 C df/dz:
537 C
538  iadr=iadr+1
539  do v=1,ivec
540  i=ii(v)
541  j=jj(v)
542  k=kk(v)
543 C
544 C ...in x direction
545 C
546  xp=xparam(v)
547  xpi=1.0-xp
548  xp2=xp*xp
549  xpi2=xpi*xpi
550 C
551  cx=xp*(xp2-1.0)
552  cxi=xpi*(xpi2-1.0)
553  hx2=hx(v)*hx(v)
554 C
555 C ...and in y direction
556 C
557  yp=yparam(v)
558  ypi=1.0-yp
559  yp2=yp*yp
560  ypi2=ypi*ypi
561 C
562  cy=yp*(yp2-1.0)
563  cyi=ypi*(ypi2-1.0)
564  hy2=hy(v)*hy(v)
565 C
566 C ...and in z direction
567 C
568  zp=zparam(v)
569  zpi=1.0-zp
570  zp2=zp*zp
571  zpi2=zpi*zpi
572 
573  czd=3.0*zp2-1.0
574  czdi=-3.0*zpi2+1.0
575 C
576  sum=hzi(v)*(
577  > -(
578  > xpi*(ypi*fin(0,i,j,k) +yp*fin(0,i,j+1,k))+
579  > xp*(ypi*fin(0,i+1,j,k)+yp*fin(0,i+1,j+1,k)))
580  > +(
581  > xpi*(ypi*fin(0,i,j,k+1) +yp*fin(0,i,j+1,k+1))+
582  > xp*(ypi*fin(0,i+1,j,k+1)+yp*fin(0,i+1,j+1,k+1))))
583 C
584  sum=sum+sixth*hx2*hzi(v)*(
585  > -(
586  > cxi*(ypi*fin(1,i,j,k) +yp*fin(1,i,j+1,k))+
587  > cx*(ypi*fin(1,i+1,j,k)+yp*fin(1,i+1,j+1,k)))
588  > +(
589  > cxi*(ypi*fin(1,i,j,k+1) +yp*fin(1,i,j+1,k+1))+
590  > cx*(ypi*fin(1,i+1,j,k+1)+yp*fin(1,i+1,j+1,k+1))))
591 C
592  sum=sum+sixth*hy2*hzi(v)*(
593  > -(
594  > xpi*(cyi*fin(2,i,j,k) +cy*fin(2,i,j+1,k))+
595  > xp*(cyi*fin(2,i+1,j,k)+cy*fin(2,i+1,j+1,k)))
596  > +(
597  > xpi*(cyi*fin(2,i,j,k+1) +cy*fin(2,i,j+1,k+1))+
598  > xp*(cyi*fin(2,i+1,j,k+1)+cy*fin(2,i+1,j+1,k+1))))
599 C
600  sum=sum+sixth*hz(v)*(
601  > czdi*(
602  > xpi*(ypi*fin(3,i,j,k) +yp*fin(3,i,j+1,k))+
603  > xp*(ypi*fin(3,i+1,j,k)+yp*fin(3,i+1,j+1,k)))
604  > +czd*(
605  > xpi*(ypi*fin(3,i,j,k+1) +yp*fin(3,i,j+1,k+1))+
606  > xp*(ypi*fin(3,i+1,j,k+1)+yp*fin(3,i+1,j+1,k+1))))
607 C
608  sum=sum+z36th*hx2*hy2*hzi(v)*(
609  > -(
610  > cxi*(cyi*fin(4,i,j,k) +cy*fin(4,i,j+1,k))+
611  > cx*(cyi*fin(4,i+1,j,k)+cy*fin(4,i+1,j+1,k)))
612  > +(
613  > cxi*(cyi*fin(4,i,j,k+1) +cy*fin(4,i,j+1,k+1))+
614  > cx*(cyi*fin(4,i+1,j,k+1)+cy*fin(4,i+1,j+1,k+1))))
615 C
616  sum=sum+z36th*hx2*hz(v)*(
617  > czdi*(
618  > cxi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
619  > cx*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
620  > +czd*(
621  > cxi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
622  > cx*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
623 C
624  sum=sum+z36th*hy2*hz(v)*(
625  > czdi*(
626  > xpi*(cyi*fin(6,i,j,k) +cy*fin(6,i,j+1,k))+
627  > xp*(cyi*fin(6,i+1,j,k)+cy*fin(6,i+1,j+1,k)))
628  > +czd*(
629  > xpi*(cyi*fin(6,i,j,k+1) +cy*fin(6,i,j+1,k+1))+
630  > xp*(cyi*fin(6,i+1,j,k+1)+cy*fin(6,i+1,j+1,k+1))))
631 C
632  sum=sum+z216th*hx2*hy2*hz(v)*(
633  > czdi*(
634  > cxi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
635  > cx*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
636  > +czd*(
637  > cxi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
638  > cx*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
639 C
640  fval(v,iadr)=sum
641  enddo
642  endif
643 C
644  if(ict(5).eq.1) then
645 C
646 C d2f/dx2:
647 C
648  iadr=iadr+1
649  do v=1,ivec
650  i=ii(v)
651  j=jj(v)
652  k=kk(v)
653 C
654 C ...in x direction
655 C
656  xp=xparam(v)
657  xpi=1.0-xp
658 C
659 C ...and in y direction
660 C
661  yp=yparam(v)
662  ypi=1.0-yp
663  yp2=yp*yp
664  ypi2=ypi*ypi
665 C
666  cy=yp*(yp2-1.0)
667  cyi=ypi*(ypi2-1.0)
668  hy2=hy(v)*hy(v)
669 C
670 C ...and in z direction
671 C
672  zp=zparam(v)
673  zpi=1.0-zp
674  zp2=zp*zp
675  zpi2=zpi*zpi
676 C
677  cz=zp*(zp2-1.0)
678  czi=zpi*(zpi2-1.0)
679  hz2=hz(v)*hz(v)
680 C
681  sum=(
682  > zpi*(
683  > xpi*(ypi*fin(1,i,j,k) +yp*fin(1,i,j+1,k))+
684  > xp*(ypi*fin(1,i+1,j,k)+yp*fin(1,i+1,j+1,k)))
685  > +zp*(
686  > xpi*(ypi*fin(1,i,j,k+1) +yp*fin(1,i,j+1,k+1))+
687  > xp*(ypi*fin(1,i+1,j,k+1)+yp*fin(1,i+1,j+1,k+1))))
688 C
689  sum=sum+sixth*hy2*(
690  > zpi*(
691  > xpi*(cyi*fin(4,i,j,k) +cy*fin(4,i,j+1,k))+
692  > xp*(cyi*fin(4,i+1,j,k)+cy*fin(4,i+1,j+1,k)))
693  > +zp*(
694  > xpi*(cyi*fin(4,i,j,k+1) +cy*fin(4,i,j+1,k+1))+
695  > xp*(cyi*fin(4,i+1,j,k+1)+cy*fin(4,i+1,j+1,k+1))))
696 C
697  sum=sum+sixth*hz2*(
698  > czi*(
699  > xpi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
700  > xp*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
701  > +cz*(
702  > xpi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
703  > xp*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
704 C
705  sum=sum+z36th*hy2*hz2*(
706  > czi*(
707  > xpi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
708  > xp*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
709  > +cz*(
710  > xpi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
711  > xp*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
712 C
713  fval(v,iadr)=sum
714  enddo
715  endif
716 C
717  if(ict(6).eq.1) then
718 C
719 C d2f/dy2:
720 C
721  iadr=iadr+1
722  do v=1,ivec
723  i=ii(v)
724  j=jj(v)
725  k=kk(v)
726 C
727 C ...in x direction
728 C
729  xp=xparam(v)
730  xpi=1.0-xp
731  xp2=xp*xp
732  xpi2=xpi*xpi
733 C
734  cx=xp*(xp2-1.0)
735  cxi=xpi*(xpi2-1.0)
736  hx2=hx(v)*hx(v)
737 C
738 C ...and in y direction
739 C
740  yp=yparam(v)
741  ypi=1.0-yp
742 C
743 C ...and in z direction
744 C
745  zp=zparam(v)
746  zpi=1.0-zp
747  zp2=zp*zp
748  zpi2=zpi*zpi
749 C
750  cz=zp*(zp2-1.0)
751  czi=zpi*(zpi2-1.0)
752  hz2=hz(v)*hz(v)
753 C
754  sum=(
755  > zpi*(
756  > xpi*(ypi*fin(2,i,j,k) +yp*fin(2,i,j+1,k))+
757  > xp*(ypi*fin(2,i+1,j,k)+yp*fin(2,i+1,j+1,k)))
758  > +zp*(
759  > xpi*(ypi*fin(2,i,j,k+1) +yp*fin(2,i,j+1,k+1))+
760  > xp*(ypi*fin(2,i+1,j,k+1)+yp*fin(2,i+1,j+1,k+1))))
761 C
762  sum=sum+sixth*hx2*(
763  > zpi*(
764  > cxi*(ypi*fin(4,i,j,k) +yp*fin(4,i,j+1,k))+
765  > cx*(ypi*fin(4,i+1,j,k)+yp*fin(4,i+1,j+1,k)))
766  > +zp*(
767  > cxi*(ypi*fin(4,i,j,k+1) +yp*fin(4,i,j+1,k+1))+
768  > cx*(ypi*fin(4,i+1,j,k+1)+yp*fin(4,i+1,j+1,k+1))))
769 C
770  sum=sum+sixth*hz2*(
771  > czi*(
772  > xpi*(ypi*fin(6,i,j,k) +yp*fin(6,i,j+1,k))+
773  > xp*(ypi*fin(6,i+1,j,k)+yp*fin(6,i+1,j+1,k)))
774  > +cz*(
775  > xpi*(ypi*fin(6,i,j,k+1) +yp*fin(6,i,j+1,k+1))+
776  > xp*(ypi*fin(6,i+1,j,k+1)+yp*fin(6,i+1,j+1,k+1))))
777 C
778  sum=sum+z36th*hx2*hz2*(
779  > czi*(
780  > cxi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
781  > cx*(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
782  > +cz*(
783  > cxi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
784  > cx*(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
785 C
786  fval(v,iadr)=sum
787  enddo
788  endif
789 C
790  if(ict(7).eq.1) then
791 C
792 C d2f/dz2:
793 C
794  iadr=iadr+1
795  do v=1,ivec
796  i=ii(v)
797  j=jj(v)
798  k=kk(v)
799 C
800 C ...in x direction
801 C
802  xp=xparam(v)
803  xpi=1.0-xp
804  xp2=xp*xp
805  xpi2=xpi*xpi
806 C
807  cx=xp*(xp2-1.0)
808  cxi=xpi*(xpi2-1.0)
809  hx2=hx(v)*hx(v)
810 C
811 C ...and in y direction
812 C
813  yp=yparam(v)
814  ypi=1.0-yp
815  yp2=yp*yp
816  ypi2=ypi*ypi
817 C
818  cy=yp*(yp2-1.0)
819  cyi=ypi*(ypi2-1.0)
820  hy2=hy(v)*hy(v)
821 C
822 C ...and in z direction
823 C
824  zp=zparam(v)
825  zpi=1.0-zp
826 C
827  sum=(
828  > zpi*(
829  > xpi*(ypi*fin(3,i,j,k) +yp*fin(3,i,j+1,k))+
830  > xp*(ypi*fin(3,i+1,j,k)+yp*fin(3,i+1,j+1,k)))
831  > +zp*(
832  > xpi*(ypi*fin(3,i,j,k+1) +yp*fin(3,i,j+1,k+1))+
833  > xp*(ypi*fin(3,i+1,j,k+1)+yp*fin(3,i+1,j+1,k+1))))
834 C
835  sum=sum+sixth*hx2*(
836  > zpi*(
837  > cxi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
838  > cx*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
839  > +zp*(
840  > cxi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
841  > cx*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
842 C
843  sum=sum+sixth*hy2*(
844  > zpi*(
845  > xpi*(cyi*fin(6,i,j,k) +cy*fin(6,i,j+1,k))+
846  > xp*(cyi*fin(6,i+1,j,k)+cy*fin(6,i+1,j+1,k)))
847  > +zp*(
848  > xpi*(cyi*fin(6,i,j,k+1) +cy*fin(6,i,j+1,k+1))+
849  > xp*(cyi*fin(6,i+1,j,k+1)+cy*fin(6,i+1,j+1,k+1))))
850 C
851  sum=sum+z36th*hx2*hy2*(
852  > zpi*(
853  > cxi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
854  > cx*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
855  > +zp*(
856  > cxi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
857  > cx*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
858 C
859  fval(v,iadr)=sum
860  enddo
861  endif
862 C
863  if(ict(8).eq.1) then
864 C
865 C d2f/dxdy:
866 C
867  iadr=iadr+1
868  do v=1,ivec
869  i=ii(v)
870  j=jj(v)
871  k=kk(v)
872 C
873 C ...in x direction
874 C
875  xp=xparam(v)
876  xpi=1.0-xp
877  xp2=xp*xp
878  xpi2=xpi*xpi
879 
880  cxd=3.0*xp2-1.0
881  cxdi=-3.0*xpi2+1.0
882 C
883 C ...and in y direction
884 C
885  yp=yparam(v)
886  ypi=1.0-yp
887  yp2=yp*yp
888  ypi2=ypi*ypi
889 
890  cyd=3.0*yp2-1.0
891  cydi=-3.0*ypi2+1.0
892 C
893 C ...and in z direction
894 C
895  zp=zparam(v)
896  zpi=1.0-zp
897  zp2=zp*zp
898  zpi2=zpi*zpi
899 C
900  cz=zp*(zp2-1.0)
901  czi=zpi*(zpi2-1.0)
902  hz2=hz(v)*hz(v)
903 C
904  sum=hxi(v)*hyi(v)*(
905  > zpi*(
906  > (fin(0,i,j,k) -fin(0,i,j+1,k))-
907  > (fin(0,i+1,j,k)-fin(0,i+1,j+1,k)))
908  > +zp*(
909  > (fin(0,i,j,k+1) -fin(0,i,j+1,k+1))-
910  > (fin(0,i+1,j,k+1)-fin(0,i+1,j+1,k+1))))
911 C
912  sum=sum+sixth*hyi(v)*hx(v)*(
913  > zpi*(
914  > cxdi*(-fin(1,i,j,k) +fin(1,i,j+1,k))+
915  > cxd*(-fin(1,i+1,j,k)+fin(1,i+1,j+1,k)))
916  > +zp*(
917  > cxdi*(-fin(1,i,j,k+1) +fin(1,i,j+1,k+1))+
918  > cxd*(-fin(1,i+1,j,k+1)+fin(1,i+1,j+1,k+1))))
919 C
920  sum=sum+sixth*hxi(v)*hy(v)*(
921  > zpi*(
922  > -(cydi*fin(2,i,j,k) +cyd*fin(2,i,j+1,k))
923  > +(cydi*fin(2,i+1,j,k)+cyd*fin(2,i+1,j+1,k)))
924  > +zp*(
925  > -(cydi*fin(2,i,j,k+1) +cyd*fin(2,i,j+1,k+1))
926  > +(cydi*fin(2,i+1,j,k+1)+cyd*fin(2,i+1,j+1,k+1))))
927 C
928  sum=sum+sixth*hxi(v)*hyi(v)*hz2*(
929  > czi*(
930  > (fin(3,i,j,k) -fin(3,i,j+1,k))-
931  > (fin(3,i+1,j,k)-fin(3,i+1,j+1,k)))
932  > +cz*(
933  > (fin(3,i,j,k+1) -fin(3,i,j+1,k+1))-
934  > (fin(3,i+1,j,k+1)-fin(3,i+1,j+1,k+1))))
935 C
936  sum=sum+z36th*hx(v)*hy(v)*(
937  > zpi*(
938  > cxdi*(cydi*fin(4,i,j,k) +cyd*fin(4,i,j+1,k))+
939  > cxd*(cydi*fin(4,i+1,j,k)+cyd*fin(4,i+1,j+1,k)))
940  > +zp*(
941  > cxdi*(cydi*fin(4,i,j,k+1) +cyd*fin(4,i,j+1,k+1))+
942  > cxd*(cydi*fin(4,i+1,j,k+1)+cyd*fin(4,i+1,j+1,k+1))))
943 C
944  sum=sum+z36th*hyi(v)*hx(v)*hz2*(
945  > czi*(
946  > cxdi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
947  > cxd*(-fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
948  > +cz*(
949  > cxdi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
950  > cxd*(-fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
951 C
952  sum=sum+z36th*hxi(v)*hy(v)*hz2*(
953  > czi*(
954  > -(cydi*fin(6,i,j,k) +cyd*fin(6,i,j+1,k))
955  > +(cydi*fin(6,i+1,j,k)+cyd*fin(6,i+1,j+1,k)))
956  > +cz*(
957  > -(cydi*fin(6,i,j,k+1) +cyd*fin(6,i,j+1,k+1))
958  > +(cydi*fin(6,i+1,j,k+1)+cyd*fin(6,i+1,j+1,k+1))))
959 C
960  sum=sum+z216th*hx(v)*hy(v)*hz2*(
961  > czi*(
962  > cxdi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
963  > cxd*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
964  > +cz*(
965  > cxdi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
966  > cxd*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
967 C
968  fval(v,iadr)=sum
969  enddo
970  endif
971 C
972  if(ict(9).eq.1) then
973 C
974 C d2f/dxdz:
975 C
976  iadr=iadr+1
977  do v=1,ivec
978  i=ii(v)
979  j=jj(v)
980  k=kk(v)
981 C
982 C ...in x direction
983 C
984  xp=xparam(v)
985  xpi=1.0-xp
986  xp2=xp*xp
987  xpi2=xpi*xpi
988 
989  cxd=3.0*xp2-1.0
990  cxdi=-3.0*xpi2+1.0
991 C
992 C ...and in y direction
993 C
994  yp=yparam(v)
995  ypi=1.0-yp
996  yp2=yp*yp
997  ypi2=ypi*ypi
998 C
999  cy=yp*(yp2-1.0)
1000  cyi=ypi*(ypi2-1.0)
1001  hy2=hy(v)*hy(v)
1002 C
1003 C ...and in z direction
1004 C
1005  zp=zparam(v)
1006  zpi=1.0-zp
1007  zp2=zp*zp
1008  zpi2=zpi*zpi
1009 
1010  czd=3.0*zp2-1.0
1011  czdi=-3.0*zpi2+1.0
1012 C
1013  sum=hxi(v)*hzi(v)*(
1014  > (
1015  > (ypi*fin(0,i,j,k) +yp*fin(0,i,j+1,k)) -
1016  > (ypi*fin(0,i+1,j,k)+yp*fin(0,i+1,j+1,k)))
1017  > -(
1018  > (ypi*fin(0,i,j,k+1) +yp*fin(0,i,j+1,k+1)) -
1019  > (ypi*fin(0,i+1,j,k+1)+yp*fin(0,i+1,j+1,k+1))))
1020 C
1021  sum=sum+sixth*hx(v)*hzi(v)*(
1022  > -(
1023  > cxdi*(ypi*fin(1,i,j,k) +yp*fin(1,i,j+1,k))+
1024  > cxd*(ypi*fin(1,i+1,j,k)+yp*fin(1,i+1,j+1,k)))
1025  > +(
1026  > cxdi*(ypi*fin(1,i,j,k+1) +yp*fin(1,i,j+1,k+1))+
1027  > cxd*(ypi*fin(1,i+1,j,k+1)+yp*fin(1,i+1,j+1,k+1))))
1028 C
1029  sum=sum+sixth*hxi(v)*hy2*hzi(v)*(
1030  > (
1031  > (cyi*fin(2,i,j,k) +cy*fin(2,i,j+1,k)) -
1032  > (cyi*fin(2,i+1,j,k)+cy*fin(2,i+1,j+1,k)))
1033  > -(
1034  > (cyi*fin(2,i,j,k+1) +cy*fin(2,i,j+1,k+1)) -
1035  > (cyi*fin(2,i+1,j,k+1)+cy*fin(2,i+1,j+1,k+1))))
1036 C
1037  sum=sum+sixth*hxi(v)*hz(v)*(
1038  > czdi*(
1039  > -(ypi*fin(3,i,j,k) +yp*fin(3,i,j+1,k))
1040  > +(ypi*fin(3,i+1,j,k)+yp*fin(3,i+1,j+1,k)))
1041  > +czd*(
1042  > -(ypi*fin(3,i,j,k+1) +yp*fin(3,i,j+1,k+1))
1043  > +(ypi*fin(3,i+1,j,k+1)+yp*fin(3,i+1,j+1,k+1))))
1044 C
1045  sum=sum+z36th*hx(v)*hy2*hzi(v)*(
1046  > -(
1047  > cxdi*(cyi*fin(4,i,j,k) +cy*fin(4,i,j+1,k))+
1048  > cxd*(cyi*fin(4,i+1,j,k)+cy*fin(4,i+1,j+1,k)))
1049  > +(
1050  > cxdi*(cyi*fin(4,i,j,k+1) +cy*fin(4,i,j+1,k+1))+
1051  > cxd*(cyi*fin(4,i+1,j,k+1)+cy*fin(4,i+1,j+1,k+1))))
1052 C
1053  sum=sum+z36th*hx(v)*hz(v)*(
1054  > czdi*(
1055  > cxdi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
1056  > cxd*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
1057  > +czd*(
1058  > cxdi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
1059  > cxd*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
1060 C
1061  sum=sum+z36th*hxi(v)*hy2*hz(v)*(
1062  > czdi*(
1063  > -(cyi*fin(6,i,j,k) +cy*fin(6,i,j+1,k))
1064  > +(cyi*fin(6,i+1,j,k)+cy*fin(6,i+1,j+1,k)))
1065  > +czd*(
1066  > -(cyi*fin(6,i,j,k+1) +cy*fin(6,i,j+1,k+1))
1067  > +(cyi*fin(6,i+1,j,k+1)+cy*fin(6,i+1,j+1,k+1))))
1068 C
1069  sum=sum+z216th*hx(v)*hy2*hz(v)*(
1070  > czdi*(
1071  > cxdi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
1072  > cxd*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
1073  > +czd*(
1074  > cxdi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
1075  > cxd*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
1076 C
1077  fval(v,iadr)=sum
1078  enddo
1079  endif
1080 C
1081  if(ict(10).eq.1) then
1082 C
1083 C d2f/dydz:
1084 C
1085  iadr=iadr+1
1086  do v=1,ivec
1087  i=ii(v)
1088  j=jj(v)
1089  k=kk(v)
1090 C
1091 C ...in x direction
1092 C
1093  xp=xparam(v)
1094  xpi=1.0-xp
1095  xp2=xp*xp
1096  xpi2=xpi*xpi
1097 C
1098  cx=xp*(xp2-1.0)
1099  cxi=xpi*(xpi2-1.0)
1100  hx2=hx(v)*hx(v)
1101 C
1102 C ...and in y direction
1103 C
1104  yp=yparam(v)
1105  ypi=1.0-yp
1106  yp2=yp*yp
1107  ypi2=ypi*ypi
1108 
1109  cyd=3.0*yp2-1.0
1110  cydi=-3.0*ypi2+1.0
1111 C
1112 C ...and in z direction
1113 C
1114  zp=zparam(v)
1115  zpi=1.0-zp
1116  zp2=zp*zp
1117  zpi2=zpi*zpi
1118 
1119  czd=3.0*zp2-1.0
1120  czdi=-3.0*zpi2+1.0
1121 C
1122  sum=hyi(v)*hzi(v)*(
1123  > (
1124  > xpi*(fin(0,i,j,k) -fin(0,i,j+1,k))+
1125  > xp*(fin(0,i+1,j,k)-fin(0,i+1,j+1,k)))
1126  > -(
1127  > xpi*(fin(0,i,j,k+1) -fin(0,i,j+1,k+1))+
1128  > xp*(fin(0,i+1,j,k+1)-fin(0,i+1,j+1,k+1))))
1129 C
1130  sum=sum+sixth*hyi(v)*hx2*hzi(v)*(
1131  > (
1132  > cxi*(fin(1,i,j,k) -fin(1,i,j+1,k))+
1133  > cx*(fin(1,i+1,j,k)-fin(1,i+1,j+1,k)))
1134  > -(
1135  > cxi*(fin(1,i,j,k+1) -fin(1,i,j+1,k+1))+
1136  > cx*(fin(1,i+1,j,k+1)-fin(1,i+1,j+1,k+1))))
1137 C
1138  sum=sum+sixth*hy(v)*hzi(v)*(
1139  > -(
1140  > xpi*(cydi*fin(2,i,j,k) +cyd*fin(2,i,j+1,k))+
1141  > xp*(cydi*fin(2,i+1,j,k)+cyd*fin(2,i+1,j+1,k)))
1142  > +(
1143  > xpi*(cydi*fin(2,i,j,k+1) +cyd*fin(2,i,j+1,k+1))+
1144  > xp*(cydi*fin(2,i+1,j,k+1)+cyd*fin(2,i+1,j+1,k+1))))
1145 C
1146  sum=sum+sixth*hyi(v)*hz(v)*(
1147  > czdi*(
1148  > xpi*(-fin(3,i,j,k) +fin(3,i,j+1,k))+
1149  > xp*(-fin(3,i+1,j,k)+fin(3,i+1,j+1,k)))
1150  > +czd*(
1151  > xpi*(-fin(3,i,j,k+1) +fin(3,i,j+1,k+1))+
1152  > xp*(-fin(3,i+1,j,k+1)+fin(3,i+1,j+1,k+1))))
1153 C
1154  sum=sum+z36th*hx2*hy(v)*hzi(v)*(
1155  > -(
1156  > cxi*(cydi*fin(4,i,j,k) +cyd*fin(4,i,j+1,k))+
1157  > cx*(cydi*fin(4,i+1,j,k)+cyd*fin(4,i+1,j+1,k)))
1158  > +(
1159  > cxi*(cydi*fin(4,i,j,k+1) +cyd*fin(4,i,j+1,k+1))+
1160  > cx*(cydi*fin(4,i+1,j,k+1)+cyd*fin(4,i+1,j+1,k+1))))
1161 C
1162  sum=sum+z36th*hyi(v)*hx2*hz(v)*(
1163  > czdi*(
1164  > cxi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
1165  > cx*(-fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
1166  > +czd*(
1167  > cxi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
1168  > cx*(-fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
1169 C
1170  sum=sum+z36th*hy(v)*hz(v)*(
1171  > czdi*(
1172  > xpi*(cydi*fin(6,i,j,k) +cyd*fin(6,i,j+1,k))+
1173  > xp*(cydi*fin(6,i+1,j,k)+cyd*fin(6,i+1,j+1,k)))
1174  > +czd*(
1175  > xpi*(cydi*fin(6,i,j,k+1) +cyd*fin(6,i,j+1,k+1))+
1176  > xp*(cydi*fin(6,i+1,j,k+1)+cyd*fin(6,i+1,j+1,k+1))))
1177 C
1178  sum=sum+z216th*hx2*hy(v)*hz(v)*(
1179  > czdi*(
1180  > cxi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
1181  > cx*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
1182  > +czd*(
1183  > cxi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
1184  > cx*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
1185 C
1186  fval(v,iadr)=sum
1187  enddo
1188  endif
1189 C
1190 C----------------------------------
1191 C 3rd derivatives (.le.2 in each coordinate)
1192 C
1193  else if(ict(1).eq.3) then
1194  if(ict(2).eq.1) then
1195 C ! fxxy
1196  iadr=iadr+1
1197  do v=1,ivec
1198  i=ii(v)
1199  j=jj(v)
1200  k=kk(v)
1201 C
1202 C ...in x direction
1203 C
1204  xp=xparam(v)
1205  xpi=1.0-xp
1206 C
1207 C ...and in y direction
1208 C
1209  yp=yparam(v)
1210  ypi=1.0-yp
1211  yp2=yp*yp
1212  ypi2=ypi*ypi
1213 C
1214  cyd=3.0*yp2-1.0
1215  cydi=-3.0*ypi2+1.0
1216 C
1217 C ...and in z direction
1218 C
1219  zp=zparam(v)
1220  zpi=1.0-zp
1221  zp2=zp*zp
1222  zpi2=zpi*zpi
1223 C
1224  cz=zp*(zp2-1.0)
1225  czi=zpi*(zpi2-1.0)
1226  hz2=hz(v)*hz(v)
1227 C
1228  sum=hyi(v)*(
1229  > zpi*(
1230  > xpi*(-fin(1,i,j,k) +fin(1,i,j+1,k))+
1231  > xp*( -fin(1,i+1,j,k)+fin(1,i+1,j+1,k)))
1232  > +zp*(
1233  > xpi*(-fin(1,i,j,k+1) +fin(1,i,j+1,k+1))+
1234  > xp*( -fin(1,i+1,j,k+1)+fin(1,i+1,j+1,k+1))))
1235 C
1236  sum=sum+sixth*hy(v)*(
1237  > zpi*(
1238  > xpi*(cydi*fin(4,i,j,k) +cyd*fin(4,i,j+1,k))+
1239  > xp*(cydi*fin(4,i+1,j,k)+cyd*fin(4,i+1,j+1,k)))
1240  > +zp*(
1241  > xpi*(cydi*fin(4,i,j,k+1) +cyd*fin(4,i,j+1,k+1))+
1242  > xp*(cydi*fin(4,i+1,j,k+1)+cyd*fin(4,i+1,j+1,k+1))))
1243 C
1244  sum=sum+sixth*hz2*hyi(v)*(
1245  > czi*(
1246  > xpi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
1247  > xp*( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
1248  > +cz*(
1249  > xpi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
1250  > xp*( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
1251 C
1252  sum=sum+z36th*hy(v)*hz2*(
1253  > czi*(
1254  > xpi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
1255  > xp*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
1256  > +cz*(
1257  > xpi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
1258  > xp*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
1259 C
1260  fval(v,iadr)=sum
1261  enddo
1262  endif
1263 C
1264  if(ict(3).eq.1) then
1265 C ! fxxz
1266  iadr=iadr+1
1267  do v=1,ivec
1268  i=ii(v)
1269  j=jj(v)
1270  k=kk(v)
1271 C
1272 C ...in x direction
1273 C
1274  xp=xparam(v)
1275  xpi=1.0-xp
1276 C
1277 C ...and in y direction
1278 C
1279  yp=yparam(v)
1280  ypi=1.0-yp
1281  yp2=yp*yp
1282  ypi2=ypi*ypi
1283 C
1284  cy=yp*(yp2-1.0)
1285  cyi=ypi*(ypi2-1.0)
1286  hy2=hy(v)*hy(v)
1287 C
1288 C ...and in z direction
1289 C
1290  zp=zparam(v)
1291  zpi=1.0-zp
1292  zp2=zp*zp
1293  zpi2=zpi*zpi
1294 C
1295  czd=3.0*zp2-1.0
1296  czdi=-3.0*zpi2+1.0
1297 C
1298  sum=hzi(v)*(
1299  > -(
1300  > xpi*(ypi*fin(1,i,j,k) +yp*fin(1,i,j+1,k))+
1301  > xp*(ypi*fin(1,i+1,j,k)+yp*fin(1,i+1,j+1,k)))
1302  > +(
1303  > xpi*(ypi*fin(1,i,j,k+1) +yp*fin(1,i,j+1,k+1))+
1304  > xp*(ypi*fin(1,i+1,j,k+1)+yp*fin(1,i+1,j+1,k+1))))
1305 C
1306  sum=sum+sixth*hy2*hzi(v)*(
1307  > -(
1308  > xpi*(cyi*fin(4,i,j,k) +cy*fin(4,i,j+1,k))+
1309  > xp*(cyi*fin(4,i+1,j,k)+cy*fin(4,i+1,j+1,k)))
1310  > +(
1311  > xpi*(cyi*fin(4,i,j,k+1) +cy*fin(4,i,j+1,k+1))+
1312  > xp*(cyi*fin(4,i+1,j,k+1)+cy*fin(4,i+1,j+1,k+1))))
1313 C
1314  sum=sum+sixth*hz(v)*(
1315  > czdi*(
1316  > xpi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
1317  > xp*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
1318  > +czd*(
1319  > xpi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
1320  > xp*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
1321 C
1322  sum=sum+z36th*hy2*hz(v)*(
1323  > czdi*(
1324  > xpi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
1325  > xp*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
1326  > +czd*(
1327  > xpi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
1328  > xp*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
1329 C
1330  fval(v,iadr)=sum
1331  enddo
1332  endif
1333 C
1334  if(ict(4).eq.1) then
1335 C ! fxyy
1336  iadr=iadr+1
1337  do v=1,ivec
1338  i=ii(v)
1339  j=jj(v)
1340  k=kk(v)
1341 C
1342 C ...in x direction
1343 C
1344  xp=xparam(v)
1345  xpi=1.0-xp
1346  xp2=xp*xp
1347  xpi2=xpi*xpi
1348 C
1349  cxd=3.0*xp2-1.0
1350  cxdi=-3.0*xpi2+1.0
1351 C
1352 C ...and in y direction
1353 C
1354  yp=yparam(v)
1355  ypi=1.0-yp
1356 C
1357 C ...and in z direction
1358 C
1359  zp=zparam(v)
1360  zpi=1.0-zp
1361  zp2=zp*zp
1362  zpi2=zpi*zpi
1363 C
1364  cz=zp*(zp2-1.0)
1365  czi=zpi*(zpi2-1.0)
1366  hz2=hz(v)*hz(v)
1367 C
1368  sum=hxi(v)*(
1369  > zpi*(
1370  > -(ypi*fin(2,i,j,k) +yp*fin(2,i,j+1,k))
1371  > +(ypi*fin(2,i+1,j,k)+yp*fin(2,i+1,j+1,k)))
1372  > +zp*(
1373  > -(ypi*fin(2,i,j,k+1) +yp*fin(2,i,j+1,k+1))
1374  > +(ypi*fin(2,i+1,j,k+1)+yp*fin(2,i+1,j+1,k+1))))
1375 C
1376  sum=sum+sixth*hx(v)*(
1377  > zpi*(
1378  > cxdi*(ypi*fin(4,i,j,k) +yp*fin(4,i,j+1,k))+
1379  > cxd*(ypi*fin(4,i+1,j,k)+yp*fin(4,i+1,j+1,k)))
1380  > +zp*(
1381  > cxdi*(ypi*fin(4,i,j,k+1) +yp*fin(4,i,j+1,k+1))+
1382  > cxd*(ypi*fin(4,i+1,j,k+1)+yp*fin(4,i+1,j+1,k+1))))
1383 C
1384  sum=sum+sixth*hz2*hxi(v)*(
1385  > czi*(
1386  > -(ypi*fin(6,i,j,k) +yp*fin(6,i,j+1,k))
1387  > +(ypi*fin(6,i+1,j,k)+yp*fin(6,i+1,j+1,k)))
1388  > +cz*(
1389  > -(ypi*fin(6,i,j,k+1) +yp*fin(6,i,j+1,k+1))
1390  > +(ypi*fin(6,i+1,j,k+1)+yp*fin(6,i+1,j+1,k+1))))
1391 C
1392  sum=sum+z36th*hx(v)*hz2*(
1393  > czi*(
1394  > cxdi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
1395  > cxd*(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
1396  > +cz*(
1397  > cxdi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
1398  > cxd*(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
1399 C
1400  fval(v,iadr)=sum
1401  enddo
1402  endif
1403 C
1404  if(ict(5).eq.1) then
1405 C ! fxyz
1406  iadr=iadr+1
1407  do v=1,ivec
1408  i=ii(v)
1409  j=jj(v)
1410  k=kk(v)
1411 C
1412 C ...in x direction
1413 C
1414  xp=xparam(v)
1415  xpi=1.0-xp
1416  xp2=xp*xp
1417  xpi2=xpi*xpi
1418 C
1419  cxd=3.0*xp2-1.0
1420  cxdi=-3.0*xpi2+1.0
1421 C
1422 C ...and in y direction
1423 C
1424  yp=yparam(v)
1425  ypi=1.0-yp
1426  yp2=yp*yp
1427  ypi2=ypi*ypi
1428 C
1429  cyd=3.0*yp2-1.0
1430  cydi=-3.0*ypi2+1.0
1431 C
1432 C ...and in z direction
1433 C
1434  zp=zparam(v)
1435  zpi=1.0-zp
1436  zp2=zp*zp
1437  zpi2=zpi*zpi
1438 C
1439  czd=3.0*zp2-1.0
1440  czdi=-3.0*zpi2+1.0
1441 C
1442  sum=hxi(v)*hyi(v)*hzi(v)*(
1443  > -(
1444  > (fin(0,i,j,k) -fin(0,i,j+1,k))-
1445  > (fin(0,i+1,j,k)-fin(0,i+1,j+1,k)))
1446  > +(
1447  > (fin(0,i,j,k+1) -fin(0,i,j+1,k+1))-
1448  > (fin(0,i+1,j,k+1)-fin(0,i+1,j+1,k+1))))
1449 C
1450  sum=sum+sixth*hyi(v)*hx(v)*hzi(v)*(
1451  > -(
1452  > cxdi*(-fin(1,i,j,k) +fin(1,i,j+1,k))+
1453  > cxd*(-fin(1,i+1,j,k)+fin(1,i+1,j+1,k)))
1454  > +(
1455  > cxdi*(-fin(1,i,j,k+1) +fin(1,i,j+1,k+1))+
1456  > cxd*(-fin(1,i+1,j,k+1)+fin(1,i+1,j+1,k+1))))
1457 C
1458  sum=sum+sixth*hxi(v)*hy(v)*hzi(v)*(
1459  > -(
1460  > -(cydi*fin(2,i,j,k) +cyd*fin(2,i,j+1,k))
1461  > +(cydi*fin(2,i+1,j,k)+cyd*fin(2,i+1,j+1,k)))
1462  > +(
1463  > -(cydi*fin(2,i,j,k+1) +cyd*fin(2,i,j+1,k+1))
1464  > +(cydi*fin(2,i+1,j,k+1)+cyd*fin(2,i+1,j+1,k+1))))
1465 C
1466  sum=sum+sixth*hxi(v)*hyi(v)*hz(v)*(
1467  > czdi*(
1468  > (fin(3,i,j,k) -fin(3,i,j+1,k))-
1469  > (fin(3,i+1,j,k)-fin(3,i+1,j+1,k)))
1470  > +czd*(
1471  > (fin(3,i,j,k+1) -fin(3,i,j+1,k+1))-
1472  > (fin(3,i+1,j,k+1)-fin(3,i+1,j+1,k+1))))
1473 C
1474  sum=sum+z36th*hx(v)*hy(v)*hzi(v)*(
1475  > -(
1476  > cxdi*(cydi*fin(4,i,j,k) +cyd*fin(4,i,j+1,k))+
1477  > cxd*(cydi*fin(4,i+1,j,k)+cyd*fin(4,i+1,j+1,k)))
1478  > +(
1479  > cxdi*(cydi*fin(4,i,j,k+1) +cyd*fin(4,i,j+1,k+1))+
1480  > cxd*(cydi*fin(4,i+1,j,k+1)+cyd*fin(4,i+1,j+1,k+1))))
1481 C
1482  sum=sum+z36th*hyi(v)*hx(v)*hz(v)*(
1483  > czdi*(
1484  > cxdi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
1485  > cxd*(-fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
1486  > +czd*(
1487  > cxdi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
1488  > cxd*(-fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
1489 C
1490  sum=sum+z36th*hxi(v)*hy(v)*hz(v)*(
1491  > czdi*(
1492  > -(cydi*fin(6,i,j,k) +cyd*fin(6,i,j+1,k))
1493  > +(cydi*fin(6,i+1,j,k)+cyd*fin(6,i+1,j+1,k)))
1494  > +czd*(
1495  > -(cydi*fin(6,i,j,k+1) +cyd*fin(6,i,j+1,k+1))
1496  > +(cydi*fin(6,i+1,j,k+1)+cyd*fin(6,i+1,j+1,k+1))))
1497 C
1498  sum=sum+z216th*hx(v)*hy(v)*hz(v)*(
1499  > czdi*(
1500  > cxdi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
1501  > cxd*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
1502  > +czd*(
1503  > cxdi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
1504  > cxd*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
1505 C
1506  fval(v,iadr)=sum
1507  enddo
1508  endif
1509 C
1510  if(ict(6).eq.1) then
1511 C ! fxzz
1512  iadr=iadr+1
1513  do v=1,ivec
1514  i=ii(v)
1515  j=jj(v)
1516  k=kk(v)
1517 C
1518 C ...in x direction
1519 C
1520  xp=xparam(v)
1521  xpi=1.0-xp
1522  xp2=xp*xp
1523  xpi2=xpi*xpi
1524 C
1525  cxd=3.0*xp2-1.0
1526  cxdi=-3.0*xpi2+1.0
1527 C
1528 C ...and in y direction
1529 C
1530  yp=yparam(v)
1531  ypi=1.0-yp
1532  yp2=yp*yp
1533  ypi2=ypi*ypi
1534 C
1535  cy=yp*(yp2-1.0)
1536  cyi=ypi*(ypi2-1.0)
1537  hy2=hy(v)*hy(v)
1538 
1539 C
1540 C ...and in z direction
1541 C
1542  zp=zparam(v)
1543  zpi=1.0-zp
1544 C
1545  sum=hxi(v)*(
1546  > zpi*(
1547  > -(ypi*fin(3,i,j,k) +yp*fin(3,i,j+1,k))
1548  > +(ypi*fin(3,i+1,j,k)+yp*fin(3,i+1,j+1,k)))
1549  > +zp*(
1550  > -(ypi*fin(3,i,j,k+1) +yp*fin(3,i,j+1,k+1))
1551  > +(ypi*fin(3,i+1,j,k+1)+yp*fin(3,i+1,j+1,k+1))))
1552 C
1553  sum=sum+sixth*hx(v)*(
1554  > zpi*(
1555  > cxdi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
1556  > cxd*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
1557  > +zp*(
1558  > cxdi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
1559  > cxd*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
1560 C
1561  sum=sum+sixth*hy2*hxi(v)*(
1562  > zpi*(
1563  > -(cyi*fin(6,i,j,k) +cy*fin(6,i,j+1,k))
1564  > +(cyi*fin(6,i+1,j,k)+cy*fin(6,i+1,j+1,k)))
1565  > +zp*(
1566  > -(cyi*fin(6,i,j,k+1) +cy*fin(6,i,j+1,k+1))
1567  > +(cyi*fin(6,i+1,j,k+1)+cy*fin(6,i+1,j+1,k+1))))
1568 C
1569  sum=sum+z36th*hx(v)*hy2*(
1570  > zpi*(
1571  > cxdi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
1572  > cxd*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
1573  > +zp*(
1574  > cxdi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
1575  > cxd*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
1576 C
1577  fval(v,iadr)=sum
1578  enddo
1579  endif
1580 C
1581  if(ict(7).eq.1) then
1582 C ! fyyz
1583  iadr=iadr+1
1584  do v=1,ivec
1585  i=ii(v)
1586  j=jj(v)
1587  k=kk(v)
1588 C
1589 C ...in x direction
1590 C
1591  xp=xparam(v)
1592  xpi=1.0-xp
1593  xp2=xp*xp
1594  xpi2=xpi*xpi
1595 C
1596  cx=xp*(xp2-1.0)
1597  cxi=xpi*(xpi2-1.0)
1598  hx2=hx(v)*hx(v)
1599 C
1600 C ...and in y direction
1601 C
1602  yp=yparam(v)
1603  ypi=1.0-yp
1604 C
1605 C ...and in z direction
1606 C
1607  zp=zparam(v)
1608  zpi=1.0-zp
1609  zp2=zp*zp
1610  zpi2=zpi*zpi
1611 C
1612  czd=3.0*zp2-1.0
1613  czdi=-3.0*zpi2+1.0
1614 C
1615  sum=hzi(v)*(
1616  > -(
1617  > xpi*(ypi*fin(2,i,j,k) +yp*fin(2,i,j+1,k))+
1618  > xp*(ypi*fin(2,i+1,j,k)+yp*fin(2,i+1,j+1,k)))
1619  > +(
1620  > xpi*(ypi*fin(2,i,j,k+1) +yp*fin(2,i,j+1,k+1))+
1621  > xp*(ypi*fin(2,i+1,j,k+1)+yp*fin(2,i+1,j+1,k+1))))
1622 C
1623  sum=sum+sixth*hx2*hzi(v)*(
1624  > -(
1625  > cxi*(ypi*fin(4,i,j,k) +yp*fin(4,i,j+1,k))+
1626  > cx*(ypi*fin(4,i+1,j,k)+yp*fin(4,i+1,j+1,k)))
1627  > +(
1628  > cxi*(ypi*fin(4,i,j,k+1) +yp*fin(4,i,j+1,k+1))+
1629  > cx*(ypi*fin(4,i+1,j,k+1)+yp*fin(4,i+1,j+1,k+1))))
1630 C
1631  sum=sum+sixth*hz(v)*(
1632  > czdi*(
1633  > xpi*(ypi*fin(6,i,j,k) +yp*fin(6,i,j+1,k))+
1634  > xp*(ypi*fin(6,i+1,j,k)+yp*fin(6,i+1,j+1,k)))
1635  > +czd*(
1636  > xpi*(ypi*fin(6,i,j,k+1) +yp*fin(6,i,j+1,k+1))+
1637  > xp*(ypi*fin(6,i+1,j,k+1)+yp*fin(6,i+1,j+1,k+1))))
1638 C
1639  sum=sum+z36th*hx2*hz(v)*(
1640  > czdi*(
1641  > cxi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
1642  > cx*(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
1643  > +czd*(
1644  > cxi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
1645  > cx*(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
1646 C
1647  fval(v,iadr)=sum
1648  enddo
1649  endif
1650 C
1651  if(ict(8).eq.1) then
1652 C ! fyzz
1653  iadr=iadr+1
1654  do v=1,ivec
1655  i=ii(v)
1656  j=jj(v)
1657  k=kk(v)
1658 C
1659 C ...in x direction
1660 C
1661  xp=xparam(v)
1662  xpi=1.0-xp
1663  xp2=xp*xp
1664  xpi2=xpi*xpi
1665 C
1666  cx=xp*(xp2-1.0)
1667  cxi=xpi*(xpi2-1.0)
1668  hx2=hx(v)*hx(v)
1669 C
1670 C ...and in y direction
1671 C
1672  yp=yparam(v)
1673  ypi=1.0-yp
1674  yp2=yp*yp
1675  ypi2=ypi*ypi
1676 C
1677  cyd=3.0*yp2-1.0
1678  cydi=-3.0*ypi2+1.0
1679 C
1680 C ...and in z direction
1681 C
1682  zp=zparam(v)
1683  zpi=1.0-zp
1684 C
1685  sum=hyi(v)*(
1686  > zpi*(
1687  > xpi*(-fin(3,i,j,k) +fin(3,i,j+1,k))+
1688  > xp*( -fin(3,i+1,j,k)+fin(3,i+1,j+1,k)))
1689  > +zp*(
1690  > xpi*(-fin(3,i,j,k+1) +fin(3,i,j+1,k+1))+
1691  > xp*( -fin(3,i+1,j,k+1)+fin(3,i+1,j+1,k+1))))
1692 C
1693  sum=sum+sixth*hx2*hyi(v)*(
1694  > zpi*(
1695  > cxi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
1696  > cx*( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
1697  > +zp*(
1698  > cxi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
1699  > cx*( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
1700 C
1701  sum=sum+sixth*hy(v)*(
1702  > zpi*(
1703  > xpi*(cydi*fin(6,i,j,k) +cyd*fin(6,i,j+1,k))+
1704  > xp*(cydi*fin(6,i+1,j,k)+cyd*fin(6,i+1,j+1,k)))
1705  > +zp*(
1706  > xpi*(cydi*fin(6,i,j,k+1) +cyd*fin(6,i,j+1,k+1))+
1707  > xp*(cydi*fin(6,i+1,j,k+1)+cyd*fin(6,i+1,j+1,k+1))))
1708 C
1709  sum=sum+z36th*hx2*hy(v)*(
1710  > zpi*(
1711  > cxi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
1712  > cx*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
1713  > +zp*(
1714  > cxi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
1715  > cx*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
1716  fval(v,iadr)=sum
1717  enddo
1718  endif
1719 C
1720 C----------------------------------
1721 C 3rd derivatives (3 in each coordinate)
1722 C
1723  else if(ict(1).eq.-3) then
1724  if(ict(2).eq.1) then
1725 C ! fxxx
1726  iadr=iadr+1
1727  do v=1,ivec
1728  i=ii(v)
1729  j=jj(v)
1730  k=kk(v)
1731 C
1732 C ...and in y direction
1733 C
1734  yp=yparam(v)
1735  ypi=1.0-yp
1736  yp2=yp*yp
1737  ypi2=ypi*ypi
1738 C
1739  cy=yp*(yp2-1.0)
1740  cyi=ypi*(ypi2-1.0)
1741  hy2=hy(v)*hy(v)
1742 C
1743 C ...and in z direction
1744 C
1745  zp=zparam(v)
1746  zpi=1.0-zp
1747  zp2=zp*zp
1748  zpi2=zpi*zpi
1749 C
1750  cz=zp*(zp2-1.0)
1751  czi=zpi*(zpi2-1.0)
1752  hz2=hz(v)*hz(v)
1753 C
1754  sum=hxi(v)*(
1755  > zpi*(
1756  > -(ypi*fin(1,i,j,k) +yp*fin(1,i,j+1,k))
1757  > +(ypi*fin(1,i+1,j,k)+yp*fin(1,i+1,j+1,k)))
1758  > +zp*(
1759  > -(ypi*fin(1,i,j,k+1) +yp*fin(1,i,j+1,k+1))
1760  > +(ypi*fin(1,i+1,j,k+1)+yp*fin(1,i+1,j+1,k+1))))
1761 C
1762  sum=sum+sixth*hy2*hxi(v)*(
1763  > zpi*(
1764  > -(cyi*fin(4,i,j,k) +cy*fin(4,i,j+1,k))
1765  > +(cyi*fin(4,i+1,j,k)+cy*fin(4,i+1,j+1,k)))
1766  > +zp*(
1767  > -(cyi*fin(4,i,j,k+1) +cy*fin(4,i,j+1,k+1))
1768  > +(cyi*fin(4,i+1,j,k+1)+cy*fin(4,i+1,j+1,k+1))))
1769 C
1770  sum=sum+sixth*hz2*hxi(v)*(
1771  > czi*(
1772  > -(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))
1773  > +(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
1774  > +cz*(
1775  > -(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))
1776  > +(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
1777 C
1778  sum=sum+z36th*hy2*hz2*hxi(v)*(
1779  > czi*(
1780  > -(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))
1781  > +(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
1782  > +cz*(
1783  > -(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))
1784  > +(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
1785 C
1786  fval(v,iadr)=sum
1787  enddo
1788  endif
1789 C
1790  if(ict(3).eq.1) then
1791 C ! fyyy
1792  iadr=iadr+1
1793  do v=1,ivec
1794  i=ii(v)
1795  j=jj(v)
1796  k=kk(v)
1797 C
1798 C ...in x direction
1799 C
1800  xp=xparam(v)
1801  xpi=1.0-xp
1802  xp2=xp*xp
1803  xpi2=xpi*xpi
1804 C
1805  cx=xp*(xp2-1.0)
1806  cxi=xpi*(xpi2-1.0)
1807  hx2=hx(v)*hx(v)
1808 C
1809 C ...and in z direction
1810 C
1811  zp=zparam(v)
1812  zpi=1.0-zp
1813  zp2=zp*zp
1814  zpi2=zpi*zpi
1815 C
1816  cz=zp*(zp2-1.0)
1817  czi=zpi*(zpi2-1.0)
1818  hz2=hz(v)*hz(v)
1819 C
1820  sum=hyi(v)*(
1821  > zpi*(
1822  > xpi*(-fin(2,i,j,k) +fin(2,i,j+1,k))+
1823  > xp*( -fin(2,i+1,j,k)+fin(2,i+1,j+1,k)))
1824  > +zp*(
1825  > xpi*(-fin(2,i,j,k+1) +fin(2,i,j+1,k+1))+
1826  > xp*( -fin(2,i+1,j,k+1)+fin(2,i+1,j+1,k+1))))
1827 C
1828  sum=sum+sixth*hx2*hyi(v)*(
1829  > zpi*(
1830  > cxi*(-fin(4,i,j,k) +fin(4,i,j+1,k))+
1831  > cx*( -fin(4,i+1,j,k)+fin(4,i+1,j+1,k)))
1832  > +zp*(
1833  > cxi*(-fin(4,i,j,k+1) +fin(4,i,j+1,k+1))+
1834  > cx*( -fin(4,i+1,j,k+1)+fin(4,i+1,j+1,k+1))))
1835 C
1836  sum=sum+sixth*hz2*hyi(v)*(
1837  > czi*(
1838  > xpi*(-fin(6,i,j,k) +fin(6,i,j+1,k))+
1839  > xp*( -fin(6,i+1,j,k)+fin(6,i+1,j+1,k)))
1840  > +cz*(
1841  > xpi*(-fin(6,i,j,k+1) +fin(6,i,j+1,k+1))+
1842  > xp*( -fin(6,i+1,j,k+1)+fin(6,i+1,j+1,k+1))))
1843 C
1844  sum=sum+z36th*hx2*hz2*hyi(v)*(
1845  > czi*(
1846  > cxi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
1847  > cx*( -fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
1848  > +cz*(
1849  > cxi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
1850  > cx*( -fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
1851 C
1852  fval(v,iadr)=sum
1853  enddo
1854  endif
1855 C
1856  if(ict(4).eq.1) then
1857 C ! fzzz
1858  iadr=iadr+1
1859  do v=1,ivec
1860  i=ii(v)
1861  j=jj(v)
1862  k=kk(v)
1863 C
1864 C ...in x direction
1865 C
1866  xp=xparam(v)
1867  xpi=1.0-xp
1868  xp2=xp*xp
1869  xpi2=xpi*xpi
1870 C
1871  cx=xp*(xp2-1.0)
1872  cxi=xpi*(xpi2-1.0)
1873  hx2=hx(v)*hx(v)
1874 C
1875 C ...and in y direction
1876 C
1877  yp=yparam(v)
1878  ypi=1.0-yp
1879  yp2=yp*yp
1880  ypi2=ypi*ypi
1881 C
1882  cy=yp*(yp2-1.0)
1883  cyi=ypi*(ypi2-1.0)
1884  hy2=hy(v)*hy(v)
1885 C
1886  sum=hzi(v)*(
1887  > -(
1888  > xpi*(ypi*fin(3,i,j,k) +yp*fin(3,i,j+1,k))+
1889  > xp*(ypi*fin(3,i+1,j,k)+yp*fin(3,i+1,j+1,k)))
1890  > +(
1891  > xpi*(ypi*fin(3,i,j,k+1) +yp*fin(3,i,j+1,k+1))+
1892  > xp*(ypi*fin(3,i+1,j,k+1)+yp*fin(3,i+1,j+1,k+1))))
1893 C
1894  sum=sum+sixth*hx2*hzi(v)*(
1895  > -(
1896  > cxi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
1897  > cx*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
1898  > +(
1899  > cxi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
1900  > cx*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
1901 C
1902  sum=sum+sixth*hy2*hzi(v)*(
1903  > -(
1904  > xpi*(cyi*fin(6,i,j,k) +cy*fin(6,i,j+1,k))+
1905  > xp*(cyi*fin(6,i+1,j,k)+cy*fin(6,i+1,j+1,k)))
1906  > +(
1907  > xpi*(cyi*fin(6,i,j,k+1) +cy*fin(6,i,j+1,k+1))+
1908  > xp*(cyi*fin(6,i+1,j,k+1)+cy*fin(6,i+1,j+1,k+1))))
1909 C
1910  sum=sum+z36th*hx2*hy2*hzi(v)*(
1911  > -(
1912  > cxi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
1913  > cx*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
1914  > +(
1915  > cxi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
1916  > cx*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
1917 C
1918  fval(v,iadr)=sum
1919  enddo
1920  endif
1921 C
1922 C----------------------------------
1923 C 4th derivatives (.le.2 in each coordinate)
1924 C
1925  else if(ict(1).eq.4) then
1926  if(ict(2).eq.1) then
1927 C ! fxxyy
1928  iadr=iadr+1
1929  do v=1,ivec
1930  i=ii(v)
1931  j=jj(v)
1932  k=kk(v)
1933 C
1934 C ...in x direction
1935 C
1936  xp=xparam(v)
1937  xpi=1.0-xp
1938 C
1939 C ...and in y direction
1940 C
1941  yp=yparam(v)
1942  ypi=1.0-yp
1943 C
1944 C ...and in z direction
1945 C
1946  zp=zparam(v)
1947  zpi=1.0-zp
1948  zp2=zp*zp
1949  zpi2=zpi*zpi
1950 C
1951  cz=zp*(zp2-1.0)
1952  czi=zpi*(zpi2-1.0)
1953  hz2=hz(v)*hz(v)
1954 C
1955  sum=(
1956  > zpi*(
1957  > xpi*(ypi*fin(4,i,j,k) +yp*fin(4,i,j+1,k))+
1958  > xp*( ypi*fin(4,i+1,j,k)+yp*fin(4,i+1,j+1,k)))
1959  > +zp*(
1960  > xpi*(ypi*fin(4,i,j,k+1) +yp*fin(4,i,j+1,k+1))+
1961  > xp*(ypi*fin(4,i+1,j,k+1)+yp*fin(4,i+1,j+1,k+1))))
1962 C
1963  sum=sum+sixth*hz2*(
1964  > czi*(
1965  > xpi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
1966  > xp*(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
1967  > +cz*(
1968  > xpi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
1969  > xp*(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
1970 C
1971  fval(v,iadr)=sum
1972  enddo
1973  endif
1974 C
1975  if(ict(3).eq.1) then
1976 C ! fxxyz
1977  iadr=iadr+1
1978  do v=1,ivec
1979  i=ii(v)
1980  j=jj(v)
1981  k=kk(v)
1982 C
1983 C ...in x direction
1984 C
1985  xp=xparam(v)
1986  xpi=1.0-xp
1987 C
1988 C ...and in y direction
1989 C
1990  yp=yparam(v)
1991  ypi=1.0-yp
1992  yp2=yp*yp
1993  ypi2=ypi*ypi
1994 C
1995  cyd=3.0*yp2-1.0
1996  cydi=-3.0*ypi2+1.0
1997 C
1998 C ...and in z direction
1999 C
2000  zp=zparam(v)
2001  zpi=1.0-zp
2002  zp2=zp*zp
2003  zpi2=zpi*zpi
2004 C
2005  czd=3.0*zp2-1.0
2006  czdi=-3.0*zpi2+1.0
2007 C
2008  sum=hyi(v)*hzi(v)*(
2009  > -(
2010  > xpi*(-fin(1,i,j,k) +fin(1,i,j+1,k))+
2011  > xp*( -fin(1,i+1,j,k)+fin(1,i+1,j+1,k)))
2012  > +(
2013  > xpi*(-fin(1,i,j,k+1) +fin(1,i,j+1,k+1))+
2014  > xp*( -fin(1,i+1,j,k+1)+fin(1,i+1,j+1,k+1))))
2015 C
2016  sum=sum+sixth*hy(v)*hzi(v)*(
2017  > -(
2018  > xpi*(cydi*fin(4,i,j,k) +cyd*fin(4,i,j+1,k))+
2019  > xp*(cydi*fin(4,i+1,j,k)+cyd*fin(4,i+1,j+1,k)))
2020  > +(
2021  > xpi*(cydi*fin(4,i,j,k+1) +cyd*fin(4,i,j+1,k+1))+
2022  > xp*(cydi*fin(4,i+1,j,k+1)+cyd*fin(4,i+1,j+1,k+1))))
2023 C
2024  sum=sum+sixth*hz(v)*hyi(v)*(
2025  > czdi*(
2026  > xpi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
2027  > xp*( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
2028  > +czd*(
2029  > xpi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
2030  > xp*( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
2031 C
2032  sum=sum+z36th*hy(v)*hz(v)*(
2033  > czdi*(
2034  > xpi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
2035  > xp*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
2036  > +czd*(
2037  > xpi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
2038  > xp*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
2039 C
2040  fval(v,iadr)=sum
2041  enddo
2042  endif
2043 C
2044  if(ict(4).eq.1) then
2045 C ! fxxzz
2046  iadr=iadr+1
2047  do v=1,ivec
2048  i=ii(v)
2049  j=jj(v)
2050  k=kk(v)
2051 C
2052 C ...in x direction
2053 C
2054  xp=xparam(v)
2055  xpi=1.0-xp
2056 C
2057 C ...and in y direction
2058 C
2059  yp=yparam(v)
2060  ypi=1.0-yp
2061  yp2=yp*yp
2062  ypi2=ypi*ypi
2063 C
2064  cy=yp*(yp2-1.0)
2065  cyi=ypi*(ypi2-1.0)
2066  hy2=hy(v)*hy(v)
2067 C
2068 C ...and in z direction
2069 C
2070  zp=zparam(v)
2071  zpi=1.0-zp
2072 C
2073  sum=(
2074  > zpi*(
2075  > xpi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
2076  > xp*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
2077  > +zp*(
2078  > xpi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
2079  > xp*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
2080 C
2081  sum=sum+sixth*hy2*(
2082  > zpi*(
2083  > xpi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
2084  > xp*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
2085  > +zp*(
2086  > xpi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
2087  > xp*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
2088 C
2089  fval(v,iadr)=sum
2090  enddo
2091  endif
2092 C
2093  if(ict(5).eq.1) then
2094 C ! fxyyz
2095  iadr=iadr+1
2096  do v=1,ivec
2097  i=ii(v)
2098  j=jj(v)
2099  k=kk(v)
2100 C
2101 C ...in x direction
2102 C
2103  xp=xparam(v)
2104  xpi=1.0-xp
2105  xp2=xp*xp
2106  xpi2=xpi*xpi
2107 C
2108  cxd=3.0*xp2-1.0
2109  cxdi=-3.0*xpi2+1.0
2110 C
2111 C ...and in y direction
2112 C
2113  yp=yparam(v)
2114  ypi=1.0-yp
2115 C
2116 C ...and in z direction
2117 C
2118  zp=zparam(v)
2119  zpi=1.0-zp
2120  zp2=zp*zp
2121  zpi2=zpi*zpi
2122 
2123  czd=3.0*zp2-1.0
2124  czdi=-3.0*zpi2+1.0
2125 C
2126  sum=hxi(v)*hzi(v)*(
2127  > -(
2128  > -(ypi*fin(2,i,j,k) +yp*fin(2,i,j+1,k))
2129  > +(ypi*fin(2,i+1,j,k)+yp*fin(2,i+1,j+1,k)))
2130  > +(
2131  > -(ypi*fin(2,i,j,k+1) +yp*fin(2,i,j+1,k+1))
2132  > +(ypi*fin(2,i+1,j,k+1)+yp*fin(2,i+1,j+1,k+1))))
2133 C
2134  sum=sum+sixth*hx(v)*hzi(v)*(
2135  > -(
2136  > cxdi*(ypi*fin(4,i,j,k) +yp*fin(4,i,j+1,k))+
2137  > cxd*(ypi*fin(4,i+1,j,k)+yp*fin(4,i+1,j+1,k)))
2138  > +(
2139  > cxdi*(ypi*fin(4,i,j,k+1) +yp*fin(4,i,j+1,k+1))+
2140  > cxd*(ypi*fin(4,i+1,j,k+1)+yp*fin(4,i+1,j+1,k+1))))
2141 C
2142  sum=sum+sixth*hz(v)*hxi(v)*(
2143  > czdi*(
2144  > -(ypi*fin(6,i,j,k) +yp*fin(6,i,j+1,k))
2145  > +(ypi*fin(6,i+1,j,k)+yp*fin(6,i+1,j+1,k)))
2146  > +czd*(
2147  > -(ypi*fin(6,i,j,k+1) +yp*fin(6,i,j+1,k+1))
2148  > +(ypi*fin(6,i+1,j,k+1)+yp*fin(6,i+1,j+1,k+1))))
2149 C
2150  sum=sum+z36th*hx(v)*hz(v)*(
2151  > czdi*(
2152  > cxdi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
2153  > cxd*(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
2154  > +czd*(
2155  > cxdi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
2156  > cxd*(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
2157 C
2158  fval(v,iadr)=sum
2159  enddo
2160  endif
2161 C
2162  if(ict(6).eq.1) then
2163 C ! fxyzz
2164  iadr=iadr+1
2165  do v=1,ivec
2166  i=ii(v)
2167  j=jj(v)
2168  k=kk(v)
2169 C
2170 C ...in x direction
2171 C
2172  xp=xparam(v)
2173  xpi=1.0-xp
2174  xp2=xp*xp
2175  xpi2=xpi*xpi
2176 
2177  cxd=3.0*xp2-1.0
2178  cxdi=-3.0*xpi2+1.0
2179 C
2180 C ...and in y direction
2181 C
2182  yp=yparam(v)
2183  ypi=1.0-yp
2184  yp2=yp*yp
2185  ypi2=ypi*ypi
2186 
2187  cyd=3.0*yp2-1.0
2188  cydi=-3.0*ypi2+1.0
2189 C
2190 C ...and in z direction
2191 C
2192  zp=zparam(v)
2193  zpi=1.0-zp
2194 C
2195  sum=hyi(v)*hxi(v)*(
2196  > zpi*(
2197  > ( +fin(3,i,j,k) -fin(3,i,j+1,k))
2198  > +( -fin(3,i+1,j,k)+fin(3,i+1,j+1,k)))
2199  > +zp*(
2200  > ( +fin(3,i,j,k+1) -fin(3,i,j+1,k+1))
2201  > +( -fin(3,i+1,j,k+1)+fin(3,i+1,j+1,k+1))))
2202 C
2203  sum=sum+sixth*hx(v)*hyi(v)*(
2204  > zpi*(
2205  > cxdi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
2206  > cxd*( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
2207  > +zp*(
2208  > cxdi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
2209  > cxd*( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
2210 C
2211  sum=sum+sixth*hy(v)*hxi(v)*(
2212  > zpi*(
2213  > -(cydi*fin(6,i,j,k) +cyd*fin(6,i,j+1,k))
2214  > +(cydi*fin(6,i+1,j,k)+cyd*fin(6,i+1,j+1,k)))
2215  > +zp*(
2216  > -(cydi*fin(6,i,j,k+1) +cyd*fin(6,i,j+1,k+1))
2217  > +(cydi*fin(6,i+1,j,k+1)+cyd*fin(6,i+1,j+1,k+1))))
2218 C
2219  sum=sum+z36th*hx(v)*hy(v)*(
2220  > zpi*(
2221  > cxdi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
2222  > cxd*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
2223  > +zp*(
2224  > cxdi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
2225  > cxd*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
2226 C
2227  fval(v,iadr)=sum
2228  enddo
2229  endif
2230 C
2231  if(ict(7).eq.1) then
2232 C ! fyyzz
2233  iadr=iadr+1
2234  do v=1,ivec
2235  i=ii(v)
2236  j=jj(v)
2237  k=kk(v)
2238 C
2239 C ...in x direction
2240 C
2241  xp=xparam(v)
2242  xpi=1.0-xp
2243  xp2=xp*xp
2244  xpi2=xpi*xpi
2245 C
2246  cx=xp*(xp2-1.0)
2247  cxi=xpi*(xpi2-1.0)
2248  hx2=hx(v)*hx(v)
2249 C
2250 C ...and in y direction
2251 C
2252  yp=yparam(v)
2253  ypi=1.0-yp
2254 C
2255 C ...and in z direction
2256 C
2257  zp=zparam(v)
2258  zpi=1.0-zp
2259 C
2260  sum=(
2261  > zpi*(
2262  > xpi*(ypi*fin(6,i,j,k) +yp*fin(6,i,j+1,k))+
2263  > xp*( ypi*fin(6,i+1,j,k)+yp*fin(6,i+1,j+1,k)))
2264  > +zp*(
2265  > xpi*(ypi*fin(6,i,j,k+1) +yp*fin(6,i,j+1,k+1))+
2266  > xp*(ypi*fin(6,i+1,j,k+1)+yp*fin(6,i+1,j+1,k+1))))
2267 C
2268  sum=sum+sixth*hx2*(
2269  > zpi*(
2270  > cxi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
2271  > cx*( ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
2272  > +zp*(
2273  > cxi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
2274  > cx*( ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
2275 C
2276  fval(v,iadr)=sum
2277  enddo
2278  endif
2279 C
2280 C----------------------------------
2281 C 4th derivatives (3 in a coordinate)
2282 C
2283  else if(ict(1).eq.-4) then
2284  if(ict(2).eq.1) then
2285 C ! fxxxy
2286  iadr=iadr+1
2287  do v=1,ivec
2288  i=ii(v)
2289  j=jj(v)
2290  k=kk(v)
2291 C
2292 C ...and in y direction
2293 C
2294  yp=yparam(v)
2295  ypi=1.0-yp
2296  yp2=yp*yp
2297  ypi2=ypi*ypi
2298 
2299  cyd=3.0*yp2-1.0
2300  cydi=-3.0*ypi2+1.0
2301 C
2302 C ...and in z direction
2303 C
2304  zp=zparam(v)
2305  zpi=1.0-zp
2306  zp2=zp*zp
2307  zpi2=zpi*zpi
2308 C
2309  cz=zp*(zp2-1.0)
2310  czi=zpi*(zpi2-1.0)
2311  hz2=hz(v)*hz(v)
2312 C
2313  sum=hyi(v)*hxi(v)*(
2314  > zpi*(
2315  > ( fin(1,i,j,k) -fin(1,i,j+1,k))+
2316  > ( -fin(1,i+1,j,k)+fin(1,i+1,j+1,k)))
2317  > +zp*(
2318  > ( fin(1,i,j,k+1) -fin(1,i,j+1,k+1))+
2319  > ( -fin(1,i+1,j,k+1)+fin(1,i+1,j+1,k+1))))
2320 C
2321  sum=sum+sixth*hy(v)*hxi(v)*(
2322  > zpi*(
2323  > -(cydi*fin(4,i,j,k) +cyd*fin(4,i,j+1,k))+
2324  > (cydi*fin(4,i+1,j,k)+cyd*fin(4,i+1,j+1,k)))
2325  > +zp*(
2326  > -(cydi*fin(4,i,j,k+1) +cyd*fin(4,i,j+1,k+1))+
2327  > (cydi*fin(4,i+1,j,k+1)+cyd*fin(4,i+1,j+1,k+1))))
2328 C
2329  sum=sum+sixth*hz2*hyi(v)*hxi(v)*(
2330  > czi*(
2331  > ( fin(5,i,j,k) -fin(5,i,j+1,k))+
2332  > ( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
2333  > +cz*(
2334  > ( fin(5,i,j,k+1) -fin(5,i,j+1,k+1))+
2335  > ( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
2336 C
2337  sum=sum+z36th*hy(v)*hz2*hxi(v)*(
2338  > czi*(
2339  > -(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
2340  > (cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
2341  > +cz*(
2342  > -(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
2343  > (cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
2344 C
2345  fval(v,iadr)=sum
2346  enddo
2347  endif
2348 C
2349  if(ict(3).eq.1) then
2350 C ! fxxxz
2351  iadr=iadr+1
2352  do v=1,ivec
2353  i=ii(v)
2354  j=jj(v)
2355  k=kk(v)
2356 C
2357 C ...and in y direction
2358 C
2359  yp=yparam(v)
2360  ypi=1.0-yp
2361  yp2=yp*yp
2362  ypi2=ypi*ypi
2363 C
2364  cy=yp*(yp2-1.0)
2365  cyi=ypi*(ypi2-1.0)
2366  hy2=hy(v)*hy(v)
2367 C
2368 C ...and in z direction
2369 C
2370  zp=zparam(v)
2371  zpi=1.0-zp
2372  zp2=zp*zp
2373  zpi2=zpi*zpi
2374 
2375  czd=3.0*zp2-1.0
2376  czdi=-3.0*zpi2+1.0
2377 C
2378  sum=hzi(v)*hxi(v)*(
2379  > (
2380  > +(ypi*fin(1,i,j,k) +yp*fin(1,i,j+1,k))
2381  > -(ypi*fin(1,i+1,j,k)+yp*fin(1,i+1,j+1,k)))
2382  > +(
2383  > -(ypi*fin(1,i,j,k+1) +yp*fin(1,i,j+1,k+1))
2384  > +(ypi*fin(1,i+1,j,k+1)+yp*fin(1,i+1,j+1,k+1))))
2385 C
2386  sum=sum+sixth*hy2*hzi(v)*hxi(v)*(
2387  > (
2388  > +(cyi*fin(4,i,j,k) +cy*fin(4,i,j+1,k))
2389  > -(cyi*fin(4,i+1,j,k)+cy*fin(4,i+1,j+1,k)))
2390  > +(
2391  > -(cyi*fin(4,i,j,k+1) +cy*fin(4,i,j+1,k+1))
2392  > +(cyi*fin(4,i+1,j,k+1)+cy*fin(4,i+1,j+1,k+1))))
2393 C
2394  sum=sum+sixth*hz(v)*hxi(v)*(
2395  > czdi*(
2396  > -(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))
2397  > +(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
2398  > +czd*(
2399  > -(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))
2400  > +(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
2401 C
2402  sum=sum+z36th*hy2*hz(v)*hxi(v)*(
2403  > czdi*(
2404  > -(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))
2405  > +(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
2406  > +czd*(
2407  > -(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))
2408  > +(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
2409 C
2410  fval(v,iadr)=sum
2411  enddo
2412  endif
2413 C
2414  if(ict(4).eq.1) then
2415 C ! fxyyy
2416  iadr=iadr+1
2417  do v=1,ivec
2418  i=ii(v)
2419  j=jj(v)
2420  k=kk(v)
2421 C
2422 C ...in x direction
2423 C
2424  xp=xparam(v)
2425  xpi=1.0-xp
2426  xp2=xp*xp
2427  xpi2=xpi*xpi
2428 
2429  cxd=3.0*xp2-1.0
2430  cxdi=-3.0*xpi2+1.0
2431 C
2432 C ...and in z direction
2433 C
2434  zp=zparam(v)
2435  zpi=1.0-zp
2436  zp2=zp*zp
2437  zpi2=zpi*zpi
2438 C
2439  cz=zp*(zp2-1.0)
2440  czi=zpi*(zpi2-1.0)
2441  hz2=hz(v)*hz(v)
2442 C
2443  sum=hxi(v)*hyi(v)*(
2444  > zpi*(
2445  > ( fin(2,i,j,k) -fin(2,i,j+1,k))
2446  > +(-fin(2,i+1,j,k)+fin(2,i+1,j+1,k)))
2447  > +zp*(
2448  > ( fin(2,i,j,k+1) -fin(2,i,j+1,k+1))
2449  > +(-fin(2,i+1,j,k+1)+fin(2,i+1,j+1,k+1))))
2450 C
2451  sum=sum+sixth*hx(v)*hyi(v)*(
2452  > zpi*(
2453  > cxdi*(-fin(4,i,j,k) +fin(4,i,j+1,k))+
2454  > cxd*( -fin(4,i+1,j,k)+fin(4,i+1,j+1,k)))
2455  > +zp*(
2456  > cxdi*(-fin(4,i,j,k+1) +fin(4,i,j+1,k+1))+
2457  > cxd*( -fin(4,i+1,j,k+1)+fin(4,i+1,j+1,k+1))))
2458 C
2459  sum=sum+sixth*hz2*hxi(v)*hyi(v)*(
2460  > czi*(
2461  > ( fin(6,i,j,k) -fin(6,i,j+1,k))
2462  > +(-fin(6,i+1,j,k)+fin(6,i+1,j+1,k)))
2463  > +cz*(
2464  > ( fin(6,i,j,k+1) -fin(6,i,j+1,k+1))
2465  > +(-fin(6,i+1,j,k+1)+fin(6,i+1,j+1,k+1))))
2466 C
2467  sum=sum+z36th*hx(v)*hz2*hyi(v)*(
2468  > czi*(
2469  > cxdi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
2470  > cxd*( -fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
2471  > +cz*(
2472  > cxdi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
2473  > cxd*( -fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
2474 C
2475  fval(v,iadr)=sum
2476  enddo
2477  endif
2478 C
2479  if(ict(5).eq.1) then
2480 C ! fxzzz
2481  iadr=iadr+1
2482  do v=1,ivec
2483  i=ii(v)
2484  j=jj(v)
2485  k=kk(v)
2486 C
2487 C ...in x direction
2488 C
2489  xp=xparam(v)
2490  xpi=1.0-xp
2491  xp2=xp*xp
2492  xpi2=xpi*xpi
2493 
2494  cxd=3.0*xp2-1.0
2495  cxdi=-3.0*xpi2+1.0
2496 C
2497 C ...and in y direction
2498 C
2499  yp=yparam(v)
2500  ypi=1.0-yp
2501  yp2=yp*yp
2502  ypi2=ypi*ypi
2503 C
2504  cy=yp*(yp2-1.0)
2505  cyi=ypi*(ypi2-1.0)
2506  hy2=hy(v)*hy(v)
2507 C
2508  sum=hxi(v)*hzi(v)*(
2509  > -(
2510  > -(ypi*fin(3,i,j,k) +yp*fin(3,i,j+1,k))
2511  > +(ypi*fin(3,i+1,j,k)+yp*fin(3,i+1,j+1,k)))
2512  > +(
2513  > -(ypi*fin(3,i,j,k+1) +yp*fin(3,i,j+1,k+1))
2514  > +(ypi*fin(3,i+1,j,k+1)+yp*fin(3,i+1,j+1,k+1))))
2515 C
2516  sum=sum+sixth*hx(v)*hzi(v)*(
2517  > -(
2518  > cxdi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
2519  > cxd*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
2520  > +(
2521  > cxdi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
2522  > cxd*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
2523 C
2524  sum=sum+sixth*hy2*hxi(v)*hzi(v)*(
2525  > -(
2526  > -(cyi*fin(6,i,j,k) +cy*fin(6,i,j+1,k))
2527  > +(cyi*fin(6,i+1,j,k)+cy*fin(6,i+1,j+1,k)))
2528  > +(
2529  > -(cyi*fin(6,i,j,k+1) +cy*fin(6,i,j+1,k+1))
2530  > +(cyi*fin(6,i+1,j,k+1)+cy*fin(6,i+1,j+1,k+1))))
2531 C
2532  sum=sum+z36th*hx(v)*hy2*hzi(v)*(
2533  > -(
2534  > cxdi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
2535  > cxd*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
2536  > +(
2537  > cxdi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
2538  > cxd*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
2539 C
2540  fval(v,iadr)=sum
2541  enddo
2542  endif
2543 C
2544  if(ict(6).eq.1) then
2545 C ! fyyyz
2546  iadr=iadr+1
2547  do v=1,ivec
2548  i=ii(v)
2549  j=jj(v)
2550  k=kk(v)
2551 C
2552 C ...in x direction
2553 C
2554  xp=xparam(v)
2555  xpi=1.0-xp
2556  xp2=xp*xp
2557  xpi2=xpi*xpi
2558 C
2559  cx=xp*(xp2-1.0)
2560  cxi=xpi*(xpi2-1.0)
2561  hx2=hx(v)*hx(v)
2562 C
2563 C ...and in z direction
2564 C
2565  zp=zparam(v)
2566  zpi=1.0-zp
2567  zp2=zp*zp
2568  zpi2=zpi*zpi
2569 
2570  czd=3.0*zp2-1.0
2571  czdi=-3.0*zpi2+1.0
2572 C
2573  sum=hyi(v)*hzi(v)*(
2574  > -(
2575  > xpi*(-fin(2,i,j,k) +fin(2,i,j+1,k))+
2576  > xp*( -fin(2,i+1,j,k)+fin(2,i+1,j+1,k)))
2577  > +(
2578  > xpi*(-fin(2,i,j,k+1) +fin(2,i,j+1,k+1))+
2579  > xp*( -fin(2,i+1,j,k+1)+fin(2,i+1,j+1,k+1))))
2580 C
2581  sum=sum+sixth*hx2*hyi(v)*hzi(v)*(
2582  > -(
2583  > cxi*(-fin(4,i,j,k) +fin(4,i,j+1,k))+
2584  > cx*( -fin(4,i+1,j,k)+fin(4,i+1,j+1,k)))
2585  > +(
2586  > cxi*(-fin(4,i,j,k+1) +fin(4,i,j+1,k+1))+
2587  > cx*( -fin(4,i+1,j,k+1)+fin(4,i+1,j+1,k+1))))
2588 C
2589  sum=sum+sixth*hz(v)*hyi(v)*(
2590  > czdi*(
2591  > xpi*(-fin(6,i,j,k) +fin(6,i,j+1,k))+
2592  > xp*( -fin(6,i+1,j,k)+fin(6,i+1,j+1,k)))
2593  > +czd*(
2594  > xpi*(-fin(6,i,j,k+1) +fin(6,i,j+1,k+1))+
2595  > xp*( -fin(6,i+1,j,k+1)+fin(6,i+1,j+1,k+1))))
2596 C
2597  sum=sum+z36th*hx2*hz(v)*hyi(v)*(
2598  > czdi*(
2599  > cxi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
2600  > cx*( -fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
2601  > +czd*(
2602  > cxi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
2603  > cx*( -fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
2604 C
2605  fval(v,iadr)=sum
2606  enddo
2607  endif
2608 C
2609  if(ict(7).eq.1) then
2610 C ! fyzzz
2611  iadr=iadr+1
2612  do v=1,ivec
2613  i=ii(v)
2614  j=jj(v)
2615  k=kk(v)
2616 C
2617 C ...in x direction
2618 C
2619  xp=xparam(v)
2620  xpi=1.0-xp
2621  xp2=xp*xp
2622  xpi2=xpi*xpi
2623 C
2624  cx=xp*(xp2-1.0)
2625  cxi=xpi*(xpi2-1.0)
2626  hx2=hx(v)*hx(v)
2627 C
2628 C ...and in y direction
2629 C
2630  yp=yparam(v)
2631  ypi=1.0-yp
2632  yp2=yp*yp
2633  ypi2=ypi*ypi
2634 
2635  cyd=3.0*yp2-1.0
2636  cydi=-3.0*ypi2+1.0
2637 C
2638  sum=hyi(v)*hzi(v)*(
2639  > -(
2640  > xpi*(-fin(3,i,j,k) +fin(3,i,j+1,k))+
2641  > xp*( -fin(3,i+1,j,k)+fin(3,i+1,j+1,k)))
2642  > +(
2643  > xpi*(-fin(3,i,j,k+1) +fin(3,i,j+1,k+1))+
2644  > xp*( -fin(3,i+1,j,k+1)+fin(3,i+1,j+1,k+1))))
2645 C
2646  sum=sum+sixth*hx2*hyi(v)*hzi(v)*(
2647  > -(
2648  > cxi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
2649  > cx*( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
2650  > +(
2651  > cxi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
2652  > cx*( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
2653 C
2654  sum=sum+sixth*hy(v)*hzi(v)*(
2655  > -(
2656  > xpi*(cydi*fin(6,i,j,k) +cyd*fin(6,i,j+1,k))+
2657  > xp*(cydi*fin(6,i+1,j,k)+cyd*fin(6,i+1,j+1,k)))
2658  > +(
2659  > xpi*(cydi*fin(6,i,j,k+1) +cyd*fin(6,i,j+1,k+1))+
2660  > xp*(cydi*fin(6,i+1,j,k+1)+cyd*fin(6,i+1,j+1,k+1))))
2661 C
2662  sum=sum+z36th*hx2*hy(v)*hzi(v)*(
2663  > -(
2664  > cxi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
2665  > cx*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
2666  > +(
2667  > cxi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
2668  > cx*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
2669 C
2670  fval(v,iadr)=sum
2671  enddo
2672  endif
2673 C
2674 C----------------------------------
2675 C 5th derivatives (.le.2 in each coordinate)
2676 C
2677  else if(ict(1).eq.5) then
2678  if(ict(2).eq.1) then
2679 C ! fxxyyz
2680  iadr=iadr+1
2681  do v=1,ivec
2682  i=ii(v)
2683  j=jj(v)
2684  k=kk(v)
2685 C
2686 C ...in x direction
2687 C
2688  xp=xparam(v)
2689  xpi=1.0-xp
2690 C
2691 C ...and in y direction
2692 C
2693  yp=yparam(v)
2694  ypi=1.0-yp
2695 C
2696 C ...and in z direction
2697 C
2698  zp=zparam(v)
2699  zpi=1.0-zp
2700  zp2=zp*zp
2701  zpi2=zpi*zpi
2702 
2703  czd=3.0*zp2-1.0
2704  czdi=-3.0*zpi2+1.0
2705 C
2706  sum=hzi(v)*(
2707  > -(
2708  > xpi*(ypi*fin(4,i,j,k) +yp*fin(4,i,j+1,k))+
2709  > xp*( ypi*fin(4,i+1,j,k)+yp*fin(4,i+1,j+1,k)))
2710  > +(
2711  > xpi*(ypi*fin(4,i,j,k+1) +yp*fin(4,i,j+1,k+1))+
2712  > xp*(ypi*fin(4,i+1,j,k+1)+yp*fin(4,i+1,j+1,k+1))))
2713 C
2714  sum=sum+sixth*hz(v)*(
2715  > czdi*(
2716  > xpi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
2717  > xp*(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
2718  > +czd*(
2719  > xpi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
2720  > xp*(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
2721 C
2722  fval(v,iadr)=sum
2723  enddo
2724  endif
2725 C
2726  if(ict(3).eq.1) then
2727 C ! fxxyzz
2728  iadr=iadr+1
2729  do v=1,ivec
2730  i=ii(v)
2731  j=jj(v)
2732  k=kk(v)
2733 C
2734 C ...in x direction
2735 C
2736  xp=xparam(v)
2737  xpi=1.0-xp
2738 C
2739 C ...and in y direction
2740 C
2741  yp=yparam(v)
2742  ypi=1.0-yp
2743  yp2=yp*yp
2744  ypi2=ypi*ypi
2745 
2746  cyd=3.0*yp2-1.0
2747  cydi=-3.0*ypi2+1.0
2748 C
2749 C ...and in z direction
2750 C
2751  zp=zparam(v)
2752  zpi=1.0-zp
2753 C
2754  sum=hyi(v)*(
2755  > zpi*(
2756  > xpi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
2757  > xp*( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
2758  > +zp*(
2759  > xpi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
2760  > xp*( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
2761 C
2762  sum=sum+sixth*hy(v)*(
2763  > zpi*(
2764  > xpi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
2765  > xp*( cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
2766  > +zp*(
2767  > xpi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
2768  > xp*( cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
2769 C
2770  fval(v,iadr)=sum
2771  enddo
2772  endif
2773 C
2774  if(ict(4).eq.1) then
2775 C ! fxyyzz
2776  iadr=iadr+1
2777  do v=1,ivec
2778  i=ii(v)
2779  j=jj(v)
2780  k=kk(v)
2781 C
2782 C ...in x direction
2783 C
2784  xp=xparam(v)
2785  xpi=1.0-xp
2786  xp2=xp*xp
2787  xpi2=xpi*xpi
2788 
2789  cxd=3.0*xp2-1.0
2790  cxdi=-3.0*xpi2+1.0
2791 C
2792 C ...and in y direction
2793 C
2794  yp=yparam(v)
2795  ypi=1.0-yp
2796 C
2797 C ...and in z direction
2798 C
2799  zp=zparam(v)
2800  zpi=1.0-zp
2801 C
2802  sum=hxi(v)*(
2803  > zpi*(
2804  > -(ypi*fin(6,i,j,k) +yp*fin(6,i,j+1,k))
2805  > +(ypi*fin(6,i+1,j,k)+yp*fin(6,i+1,j+1,k)))
2806  > +zp*(
2807  > -(ypi*fin(6,i,j,k+1) +yp*fin(6,i,j+1,k+1))
2808  > +(ypi*fin(6,i+1,j,k+1)+yp*fin(6,i+1,j+1,k+1))))
2809 C
2810  sum=sum+sixth*hx(v)*(
2811  > zpi*(
2812  > cxdi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
2813  > cxd*(ypi*fin(7,i+1,j,k) +yp*fin(7,i+1,j+1,k)))
2814  > +zp*(
2815  > cxdi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
2816  > cxd*( ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
2817 C
2818  fval(v,iadr)=sum
2819  enddo
2820  endif
2821 C
2822 C----------------------------------
2823 C 5th derivatives (3 in a coordinate)
2824 C
2825  else if(ict(1).eq.-5) then
2826  if(ict(2).eq.1) then
2827 C ! fxxxyy
2828  iadr=iadr+1
2829  do v=1,ivec
2830  i=ii(v)
2831  j=jj(v)
2832  k=kk(v)
2833 C
2834 C ...and in y direction
2835 C
2836  yp=yparam(v)
2837  ypi=1.0-yp
2838 C
2839 C ...and in z direction
2840 C
2841  zp=zparam(v)
2842  zpi=1.0-zp
2843  zp2=zp*zp
2844  zpi2=zpi*zpi
2845 C
2846  cz=zp*(zp2-1.0)
2847  czi=zpi*(zpi2-1.0)
2848  hz2=hz(v)*hz(v)
2849 C
2850  sum=hxi(v)*(
2851  > zpi*(
2852  > -(ypi*fin(4,i,j,k) +yp*fin(4,i,j+1,k))
2853  > +( ypi*fin(4,i+1,j,k)+yp*fin(4,i+1,j+1,k)))
2854  > +zp*(
2855  > -(ypi*fin(4,i,j,k+1) +yp*fin(4,i,j+1,k+1))
2856  > +(ypi*fin(4,i+1,j,k+1)+yp*fin(4,i+1,j+1,k+1))))
2857 C
2858  sum=sum+sixth*hz2*hxi(v)*(
2859  > czi*(
2860  > -(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))
2861  > +(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
2862  > +cz*(
2863  > -(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))
2864  > +(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
2865 C
2866  fval(v,iadr)=sum
2867  enddo
2868  endif
2869 C
2870  if(ict(3).eq.1) then
2871 C ! fxxxyz
2872  iadr=iadr+1
2873  do v=1,ivec
2874  i=ii(v)
2875  j=jj(v)
2876  k=kk(v)
2877 C
2878 C ...and in y direction
2879 C
2880  yp=yparam(v)
2881  ypi=1.0-yp
2882  yp2=yp*yp
2883  ypi2=ypi*ypi
2884 
2885  cyd=3.0*yp2-1.0
2886  cydi=-3.0*ypi2+1.0
2887 C
2888 C ...and in z direction
2889 C
2890  zp=zparam(v)
2891  zpi=1.0-zp
2892  zp2=zp*zp
2893  zpi2=zpi*zpi
2894 
2895  czd=3.0*zp2-1.0
2896  czdi=-3.0*zpi2+1.0
2897 C
2898  sum=hyi(v)*hzi(v)*hxi(v)*(
2899  > -(
2900  > -(-fin(1,i,j,k) +fin(1,i,j+1,k))
2901  > +( -fin(1,i+1,j,k)+fin(1,i+1,j+1,k)))
2902  > +(
2903  > -(-fin(1,i,j,k+1) +fin(1,i,j+1,k+1))
2904  > +( -fin(1,i+1,j,k+1)+fin(1,i+1,j+1,k+1))))
2905 C
2906  sum=sum+sixth*hy(v)*hzi(v)*hxi(v)*(
2907  > -(
2908  > -(cydi*fin(4,i,j,k) +cyd*fin(4,i,j+1,k))
2909  > +(cydi*fin(4,i+1,j,k)+cyd*fin(4,i+1,j+1,k)))
2910  > +(
2911  > -(cydi*fin(4,i,j,k+1) +cyd*fin(4,i,j+1,k+1))
2912  > +(cydi*fin(4,i+1,j,k+1)+cyd*fin(4,i+1,j+1,k+1))))
2913 C
2914  sum=sum+sixth*hz(v)*hyi(v)*hxi(v)*(
2915  > czdi*(
2916  > -(-fin(5,i,j,k) +fin(5,i,j+1,k))
2917  > +( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
2918  > +czd*(
2919  > -(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))
2920  > +( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
2921 C
2922  sum=sum+z36th*hy(v)*hz(v)*hxi(v)*(
2923  > czdi*(
2924  > -(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))
2925  > +(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
2926  > +czd*(
2927  > -(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))
2928  > +(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
2929 C
2930  fval(v,iadr)=sum
2931  enddo
2932  endif
2933 C
2934  if(ict(4).eq.1) then
2935 C ! fxxxzz
2936  iadr=iadr+1
2937  do v=1,ivec
2938  i=ii(v)
2939  j=jj(v)
2940  k=kk(v)
2941 C
2942 C ...and in y direction
2943 C
2944  yp=yparam(v)
2945  ypi=1.0-yp
2946  yp2=yp*yp
2947  ypi2=ypi*ypi
2948 C
2949  cy=yp*(yp2-1.0)
2950  cyi=ypi*(ypi2-1.0)
2951  hy2=hy(v)*hy(v)
2952 C
2953 C ...and in z direction
2954 C
2955  zp=zparam(v)
2956  zpi=1.0-zp
2957 C
2958  sum=hxi(v)*(
2959  > zpi*(
2960  > -(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))
2961  > +(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
2962  > +zp*(
2963  > -(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))
2964  > +(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
2965 C
2966  sum=sum+sixth*hy2*hxi(v)*(
2967  > zpi*(
2968  > -(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))
2969  > +(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
2970  > +zp*(
2971  > -(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))
2972  > +(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
2973 C
2974  fval(v,iadr)=sum
2975  enddo
2976  endif
2977 C
2978  if(ict(5).eq.1) then
2979 C ! fxxyyy
2980  iadr=iadr+1
2981  do v=1,ivec
2982  i=ii(v)
2983  j=jj(v)
2984  k=kk(v)
2985 C
2986 C ...in x direction
2987 C
2988  xp=xparam(v)
2989  xpi=1.0-xp
2990 C
2991 C ...and in z direction
2992 C
2993  zp=zparam(v)
2994  zpi=1.0-zp
2995  zp2=zp*zp
2996  zpi2=zpi*zpi
2997 C
2998  cz=zp*(zp2-1.0)
2999  czi=zpi*(zpi2-1.0)
3000  hz2=hz(v)*hz(v)
3001 
3002 C
3003  sum=hyi(v)*(
3004  > zpi*(
3005  > xpi*(-fin(4,i,j,k) +fin(4,i,j+1,k))+
3006  > xp*( -fin(4,i+1,j,k)+fin(4,i+1,j+1,k)))
3007  > +zp*(
3008  > xpi*(-fin(4,i,j,k+1) +fin(4,i,j+1,k+1))+
3009  > xp*( -fin(4,i+1,j,k+1)+fin(4,i+1,j+1,k+1))))
3010 C
3011  sum=sum+sixth*hz2*hyi(v)*(
3012  > czi*(
3013  > xpi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
3014  > xp*( -fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
3015  > +cz*(
3016  > xpi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
3017  > xp*( -fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
3018 C
3019  fval(v,iadr)=sum
3020  enddo
3021  endif
3022 C
3023  if(ict(6).eq.1) then
3024 C ! fxxzzz
3025  iadr=iadr+1
3026  do v=1,ivec
3027  i=ii(v)
3028  j=jj(v)
3029  k=kk(v)
3030 C
3031 C ...in x direction
3032 C
3033  xp=xparam(v)
3034  xpi=1.0-xp
3035 C
3036 C ...and in y direction
3037 C
3038  yp=yparam(v)
3039  ypi=1.0-yp
3040  yp2=yp*yp
3041  ypi2=ypi*ypi
3042 C
3043  cy=yp*(yp2-1.0)
3044  cyi=ypi*(ypi2-1.0)
3045  hy2=hy(v)*hy(v)
3046 C
3047  sum=hzi(v)*(
3048  > -(
3049  > xpi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
3050  > xp*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
3051  > +(
3052  > xpi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
3053  > xp*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
3054 C
3055  sum=sum+sixth*hy2*hzi(v)*(
3056  > -(
3057  > xpi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
3058  > xp*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
3059  > +(
3060  > xpi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
3061  > xp*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
3062 C
3063  fval(v,iadr)=sum
3064  enddo
3065  endif
3066 C
3067  if(ict(7).eq.1) then
3068 C ! fxyyyz
3069  iadr=iadr+1
3070  do v=1,ivec
3071  i=ii(v)
3072  j=jj(v)
3073  k=kk(v)
3074 C
3075 C ...in x direction
3076 C
3077  xp=xparam(v)
3078  xpi=1.0-xp
3079  xp2=xp*xp
3080  xpi2=xpi*xpi
3081 
3082  cxd=3.0*xp2-1.0
3083  cxdi=-3.0*xpi2+1.0
3084 C
3085 C ...and in z direction
3086 C
3087  zp=zparam(v)
3088  zpi=1.0-zp
3089  zp2=zp*zp
3090  zpi2=zpi*zpi
3091 
3092  czd=3.0*zp2-1.0
3093  czdi=-3.0*zpi2+1.0
3094 C
3095  sum=hxi(v)*hzi(v)*hyi(v)*(
3096  > -(
3097  > ( fin(2,i,j,k) -fin(2,i,j+1,k))
3098  > +(-fin(2,i+1,j,k)+fin(2,i+1,j+1,k)))
3099  > +(
3100  > ( fin(2,i,j,k+1) -fin(2,i,j+1,k+1))
3101  > +(-fin(2,i+1,j,k+1)+fin(2,i+1,j+1,k+1))))
3102 C
3103  sum=sum+sixth*hx(v)*hzi(v)*hyi(v)*(
3104  > -(
3105  > cxdi*(-fin(4,i,j,k) +fin(4,i,j+1,k))+
3106  > cxd*(-fin(4,i+1,j,k) +fin(4,i+1,j+1,k)))
3107  > +(
3108  > cxdi*(-fin(4,i,j,k+1) +fin(4,i,j+1,k+1))+
3109  > cxd*(-fin(4,i+1,j,k+1) +fin(4,i+1,j+1,k+1))))
3110 C
3111  sum=sum+sixth*hz(v)*hxi(v)*hyi(v)*(
3112  > czdi*(
3113  > ( fin(6,i,j,k) -fin(6,i,j+1,k))
3114  > +(-fin(6,i+1,j,k)+fin(6,i+1,j+1,k)))
3115  > +czd*(
3116  > ( fin(6,i,j,k+1) -fin(6,i,j+1,k+1))
3117  > +(-fin(6,i+1,j,k+1)+fin(6,i+1,j+1,k+1))))
3118 C
3119  sum=sum+z36th*hx(v)*hz(v)*hyi(v)*(
3120  > czdi*(
3121  > cxdi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
3122  > cxd*(-fin(7,i+1,j,k) +fin(7,i+1,j+1,k)))
3123  > +czd*(
3124  > cxdi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
3125  > cxd*(-fin(7,i+1,j,k+1) +fin(7,i+1,j+1,k+1))))
3126 C
3127  fval(v,iadr)=sum
3128  enddo
3129  endif
3130 C
3131  if(ict(8).eq.1) then
3132 C ! fxyzzz
3133  iadr=iadr+1
3134  do v=1,ivec
3135  i=ii(v)
3136  j=jj(v)
3137  k=kk(v)
3138 C
3139 C ...in x direction
3140 C
3141  xp=xparam(v)
3142  xpi=1.0-xp
3143  xp2=xp*xp
3144  xpi2=xpi*xpi
3145 
3146  cxd=3.0*xp2-1.0
3147  cxdi=-3.0*xpi2+1.0
3148 C
3149 C ...and in y direction
3150 C
3151  yp=yparam(v)
3152  ypi=1.0-yp
3153  yp2=yp*yp
3154  ypi2=ypi*ypi
3155 
3156  cyd=3.0*yp2-1.0
3157  cydi=-3.0*ypi2+1.0
3158 C
3159  sum=hyi(v)*hxi(v)*hzi(v)*(
3160  > -(
3161  > ( +fin(3,i,j,k) -fin(3,i,j+1,k))
3162  > +( -fin(3,i+1,j,k)+fin(3,i+1,j+1,k)))
3163  > +(
3164  > ( +fin(3,i,j,k+1) -fin(3,i,j+1,k+1))
3165  > +( -fin(3,i+1,j,k+1)+fin(3,i+1,j+1,k+1))))
3166 C
3167  sum=sum+sixth*hx(v)*hyi(v)*hzi(v)*(
3168  > -(
3169  > cxdi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
3170  > cxd*( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
3171  > +(
3172  > cxdi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
3173  > cxd*( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
3174 C
3175  sum=sum+sixth*hy(v)*hxi(v)*hzi(v)*(
3176  > -(
3177  > -(cydi*fin(6,i,j,k) +cyd*fin(6,i,j+1,k))
3178  > +(cydi*fin(6,i+1,j,k)+cyd*fin(6,i+1,j+1,k)))
3179  > +(
3180  > -(cydi*fin(6,i,j,k+1) +cyd*fin(6,i,j+1,k+1))
3181  > +(cydi*fin(6,i+1,j,k+1)+cyd*fin(6,i+1,j+1,k+1))))
3182 C
3183  sum=sum+z36th*hx(v)*hy(v)*hzi(v)*(
3184  > -(
3185  > cxdi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
3186  > cxd*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
3187  > +(
3188  > cxdi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
3189  > cxd*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
3190 C
3191  fval(v,iadr)=sum
3192  enddo
3193  endif
3194 C
3195  if(ict(9).eq.1) then
3196 C ! fyyyzz
3197  iadr=iadr+1
3198  do v=1,ivec
3199  i=ii(v)
3200  j=jj(v)
3201  k=kk(v)
3202 C
3203 C ...in x direction
3204 C
3205  xp=xparam(v)
3206  xpi=1.0-xp
3207  xp2=xp*xp
3208  xpi2=xpi*xpi
3209 C
3210  cx=xp*(xp2-1.0)
3211  cxi=xpi*(xpi2-1.0)
3212  hx2=hx(v)*hx(v)
3213 C
3214 C ...and in z direction
3215 C
3216  zp=zparam(v)
3217  zpi=1.0-zp
3218 C
3219  sum=hyi(v)*(
3220  > zpi*(
3221  > xpi*(-fin(6,i,j,k) +fin(6,i,j+1,k))+
3222  > xp*( -fin(6,i+1,j,k)+fin(6,i+1,j+1,k)))
3223  > +zp*(
3224  > xpi*(-fin(6,i,j,k+1) +fin(6,i,j+1,k+1))+
3225  > xp*( -fin(6,i+1,j,k+1)+fin(6,i+1,j+1,k+1))))
3226 C
3227  sum=sum+sixth*hx2*hyi(v)*(
3228  > zpi*(
3229  > cxi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
3230  > cx*( -fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
3231  > +zp*(
3232  > cxi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
3233  > cx*( -fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
3234 C
3235  fval(v,iadr)=sum
3236  enddo
3237  endif
3238 C
3239  if(ict(10).eq.1) then
3240 C ! fyyzzz
3241  iadr=iadr+1
3242  do v=1,ivec
3243  i=ii(v)
3244  j=jj(v)
3245  k=kk(v)
3246 C
3247 C ...in x direction
3248 C
3249  xp=xparam(v)
3250  xpi=1.0-xp
3251  xp2=xp*xp
3252  xpi2=xpi*xpi
3253 C
3254  cx=xp*(xp2-1.0)
3255  cxi=xpi*(xpi2-1.0)
3256  hx2=hx(v)*hx(v)
3257 C
3258 C ...and in y direction
3259 C
3260  yp=yparam(v)
3261  ypi=1.0-yp
3262 C
3263  sum=hzi(v)*(
3264  > -(
3265  > xpi*(ypi*fin(6,i,j,k) +yp*fin(6,i,j+1,k))+
3266  > xp*( ypi*fin(6,i+1,j,k)+yp*fin(6,i+1,j+1,k)))
3267  > +(
3268  > xpi*(ypi*fin(6,i,j,k+1) +yp*fin(6,i,j+1,k+1))+
3269  > xp*(ypi*fin(6,i+1,j,k+1)+yp*fin(6,i+1,j+1,k+1))))
3270 C
3271  sum=sum+sixth*hx2*hzi(v)*(
3272  > -(
3273  > cxi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
3274  > cx*( ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
3275  > +(
3276  > cxi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
3277  > cx*( ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
3278 C
3279  fval(v,iadr)=sum
3280  enddo
3281  endif
3282 C
3283 C----------------------------------
3284 C 6th derivatives (2 in each coordinate)
3285 C
3286  else if(ict(1).eq.6) then
3287 C ! fxxyyzz
3288  iadr=iadr+1
3289  do v=1,ivec
3290  i=ii(v)
3291  j=jj(v)
3292  k=kk(v)
3293 C
3294 C ...in x direction
3295 C
3296  xp=xparam(v)
3297  xpi=1.0-xp
3298 C
3299 C ...and in y direction
3300 C
3301  yp=yparam(v)
3302  ypi=1.0-yp
3303 C
3304 C ...and in z direction
3305 C
3306  zp=zparam(v)
3307  zpi=1.0-zp
3308 C
3309  sum=(
3310  > zpi*(
3311  > xpi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
3312  > xp*(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
3313  > +zp*(
3314  > xpi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
3315  > xp*(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
3316 C
3317  fval(v,iadr)=sum
3318  enddo
3319  endif
3320 C
3321 C----------------------------------
3322 C 6th derivatives (3 in a coordinate)
3323 C
3324  if(ict(1).eq.-6) then
3325  if(ict(2).eq.1) then
3326 C ! fxxxyyy
3327  iadr=iadr+1
3328  do v=1,ivec
3329  i=ii(v)
3330  j=jj(v)
3331  k=kk(v)
3332 C
3333 C ...and in z direction
3334 C
3335  zp=zparam(v)
3336  zpi=1.0-zp
3337  zp2=zp*zp
3338  zpi2=zpi*zpi
3339 C
3340  cz=zp*(zp2-1.0)
3341  czi=zpi*(zpi2-1.0)
3342  hz2=hz(v)*hz(v)
3343 C
3344  sum=hyi(v)*hxi(v)*(
3345  > zpi*(
3346  > ( fin(4,i,j,k) -fin(4,i,j+1,k))
3347  > +(-fin(4,i+1,j,k)+fin(4,i+1,j+1,k)))
3348  > +zp*(
3349  > ( fin(4,i,j,k+1) -fin(4,i,j+1,k+1))
3350  > +(-fin(4,i+1,j,k+1)+fin(4,i+1,j+1,k+1))))
3351 C
3352  sum=sum+sixth*hz2*hyi(v)*hxi(v)*(
3353  > czi*(
3354  > ( fin(7,i,j,k) -fin(7,i,j+1,k))
3355  > +(-fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
3356  > +cz*(
3357  > ( fin(7,i,j,k+1) -fin(7,i,j+1,k+1))
3358  > +(-fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
3359 C
3360  fval(v,iadr)=sum
3361  enddo
3362  endif
3363 C
3364  if(ict(3).eq.1) then
3365 C ! fxxxyyz
3366  iadr=iadr+1
3367  do v=1,ivec
3368  i=ii(v)
3369  j=jj(v)
3370  k=kk(v)
3371 C
3372 C ...and in y direction
3373 C
3374  yp=yparam(v)
3375  ypi=1.0-yp
3376 C
3377 C ...and in z direction
3378 C
3379  zp=zparam(v)
3380  zpi=1.0-zp
3381  zp2=zp*zp
3382  zpi2=zpi*zpi
3383 
3384  czd=3.0*zp2-1.0
3385  czdi=-3.0*zpi2+1.0
3386 C
3387  sum=hxi(v)*hzi(v)*(
3388  > -(
3389  > -(ypi*fin(4,i,j,k) +yp*fin(4,i,j+1,k))
3390  > +( ypi*fin(4,i+1,j,k)+yp*fin(4,i+1,j+1,k)))
3391  > +(
3392  > -(ypi*fin(4,i,j,k+1) +yp*fin(4,i,j+1,k+1))
3393  > +(ypi*fin(4,i+1,j,k+1)+yp*fin(4,i+1,j+1,k+1))))
3394 C
3395  sum=sum+sixth*hz(v)*hxi(v)*(
3396  > czdi*(
3397  > -(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))
3398  > +(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
3399  > +czd*(
3400  > -(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))
3401  > +(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
3402 C
3403  fval(v,iadr)=sum
3404  enddo
3405  endif
3406 C
3407  if(ict(4).eq.1) then
3408 C ! fxxxyzz
3409  iadr=iadr+1
3410  do v=1,ivec
3411  i=ii(v)
3412  j=jj(v)
3413  k=kk(v)
3414 C
3415 C ...and in y direction
3416 C
3417  yp=yparam(v)
3418  ypi=1.0-yp
3419  yp2=yp*yp
3420  ypi2=ypi*ypi
3421 
3422  cyd=3.0*yp2-1.0
3423  cydi=-3.0*ypi2+1.0
3424 C
3425 C ...and in z direction
3426 C
3427  zp=zparam(v)
3428  zpi=1.0-zp
3429 C
3430  sum=hxi(v)*hyi(v)*(
3431  > zpi*(
3432  > ( fin(5,i,j,k) -fin(5,i,j+1,k))
3433  > +(-fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
3434  > +zp*(
3435  > ( fin(5,i,j,k+1) -fin(5,i,j+1,k+1))
3436  > +(-fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
3437 C
3438  sum=sum+sixth*hy(v)*hxi(v)*(
3439  > zpi*(
3440  > -(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))
3441  > +(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
3442  > +zp*(
3443  > -(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))
3444  > +(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
3445 C
3446  fval(v,iadr)=sum
3447  enddo
3448  endif
3449 C
3450  if(ict(5).eq.1) then
3451 C ! fxxxzzz
3452  iadr=iadr+1
3453  do v=1,ivec
3454  i=ii(v)
3455  j=jj(v)
3456  k=kk(v)
3457 C
3458 C ...and in y direction
3459 C
3460  yp=yparam(v)
3461  ypi=1.0-yp
3462  yp2=yp*yp
3463  ypi2=ypi*ypi
3464 C
3465  cy=yp*(yp2-1.0)
3466  cyi=ypi*(ypi2-1.0)
3467  hy2=hy(v)*hy(v)
3468 C
3469  sum=hxi(v)*hzi(v)*(
3470  > -(
3471  > -(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))
3472  > +(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
3473  > +(
3474  > -(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))
3475  > +(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
3476 C
3477  sum=sum+sixth*hy2*hxi(v)*hzi(v)*(
3478  > -(
3479  > -(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))
3480  > +(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
3481  > +(
3482  > -(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))
3483  > +(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
3484 C
3485  fval(v,iadr)=sum
3486  enddo
3487  endif
3488 C
3489  if(ict(6).eq.1) then
3490 C ! fxxyyyz
3491  iadr=iadr+1
3492  do v=1,ivec
3493  i=ii(v)
3494  j=jj(v)
3495  k=kk(v)
3496 C
3497 C ...in x direction
3498 C
3499  xp=xparam(v)
3500  xpi=1.0-xp
3501 C
3502 C ...and in z direction
3503 C
3504  zp=zparam(v)
3505  zpi=1.0-zp
3506  zp2=zp*zp
3507  zpi2=zpi*zpi
3508 
3509  czd=3.0*zp2-1.0
3510  czdi=-3.0*zpi2+1.0
3511 C
3512  sum=hzi(v)*hyi(v)*(
3513  > -(
3514  > xpi*(-fin(4,i,j,k) +fin(4,i,j+1,k))+
3515  > xp*(-fin(4,i+1,j,k) +fin(4,i+1,j+1,k)))
3516  > +(
3517  > xpi*(-fin(4,i,j,k+1) +fin(4,i,j+1,k+1))+
3518  > xp*(-fin(4,i+1,j,k+1) +fin(4,i+1,j+1,k+1))))
3519 C
3520  sum=sum+sixth*hz(v)*hyi(v)*(
3521  > czdi*(
3522  > xpi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
3523  > xp*(-fin(7,i+1,j,k) +fin(7,i+1,j+1,k)))
3524  > +czd*(
3525  > xpi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
3526  > xp*(-fin(7,i+1,j,k+1) +fin(7,i+1,j+1,k+1))))
3527 C
3528  fval(v,iadr)=sum
3529  enddo
3530  endif
3531 C
3532  if(ict(7).eq.1) then
3533 C ! fxxyzzz
3534  iadr=iadr+1
3535  do v=1,ivec
3536  i=ii(v)
3537  j=jj(v)
3538  k=kk(v)
3539 C
3540 C ...in x direction
3541 C
3542  xp=xparam(v)
3543  xpi=1.0-xp
3544 C
3545 C ...and in y direction
3546 C
3547  yp=yparam(v)
3548  ypi=1.0-yp
3549  yp2=yp*yp
3550  ypi2=ypi*ypi
3551 
3552  cyd=3.0*yp2-1.0
3553  cydi=-3.0*ypi2+1.0
3554 C
3555  sum=hyi(v)*hzi(v)*(
3556  > -(
3557  > xpi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
3558  > xp*( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
3559  > +(
3560  > xpi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
3561  > xp*( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
3562 C
3563  sum=sum+sixth*hy(v)*hzi(v)*(
3564  > -(
3565  > xpi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
3566  > xp*( cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
3567  > +(
3568  > xpi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
3569  > xp*( cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
3570 C
3571  fval(v,iadr)=sum
3572  enddo
3573  endif
3574 C
3575  if(ict(8).eq.1) then
3576 C ! fxyyyzz
3577  iadr=iadr+1
3578  do v=1,ivec
3579  i=ii(v)
3580  j=jj(v)
3581  k=kk(v)
3582 C
3583 C ...in x direction
3584 C
3585  xp=xparam(v)
3586  xpi=1.0-xp
3587  xp2=xp*xp
3588  xpi2=xpi*xpi
3589 
3590  cxd=3.0*xp2-1.0
3591  cxdi=-3.0*xpi2+1.0
3592 C
3593 C ...and in z direction
3594 C
3595  zp=zparam(v)
3596  zpi=1.0-zp
3597 C
3598  sum=hxi(v)*hyi(v)*(
3599  > zpi*(
3600  > ( fin(6,i,j,k) -fin(6,i,j+1,k))
3601  > +(-fin(6,i+1,j,k)+fin(6,i+1,j+1,k)))
3602  > +zp*(
3603  > ( fin(6,i,j,k+1) -fin(6,i,j+1,k+1))
3604  > +(-fin(6,i+1,j,k+1)+fin(6,i+1,j+1,k+1))))
3605 C
3606  sum=sum+sixth*hx(v)*hyi(v)*(
3607  > zpi*(
3608  > cxdi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
3609  > cxd*(-fin(7,i+1,j,k) +fin(7,i+1,j+1,k)))
3610  > +zp*(
3611  > cxdi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
3612  > cxd*(-fin(7,i+1,j,k+1) +fin(7,i+1,j+1,k+1))))
3613 C
3614  fval(v,iadr)=sum
3615  enddo
3616  endif
3617 C
3618  if(ict(9).eq.1) then
3619 C ! fxyyzzz
3620  iadr=iadr+1
3621  do v=1,ivec
3622  i=ii(v)
3623  j=jj(v)
3624  k=kk(v)
3625 C
3626 C ...in x direction
3627 C
3628  xp=xparam(v)
3629  xpi=1.0-xp
3630  xp2=xp*xp
3631  xpi2=xpi*xpi
3632 
3633  cxd=3.0*xp2-1.0
3634  cxdi=-3.0*xpi2+1.0
3635 C
3636 C ...and in y direction
3637 C
3638  yp=yparam(v)
3639  ypi=1.0-yp
3640 C
3641  sum=hxi(v)*hzi(v)*(
3642  > -(
3643  > -(ypi*fin(6,i,j,k) +yp*fin(6,i,j+1,k))
3644  > +(ypi*fin(6,i+1,j,k)+yp*fin(6,i+1,j+1,k)))
3645  > +(
3646  > -(ypi*fin(6,i,j,k+1) +yp*fin(6,i,j+1,k+1))
3647  > +(ypi*fin(6,i+1,j,k+1)+yp*fin(6,i+1,j+1,k+1))))
3648 C
3649  sum=sum+sixth*hx(v)*hzi(v)*(
3650  > -(
3651  > cxdi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
3652  > cxd*(ypi*fin(7,i+1,j,k) +yp*fin(7,i+1,j+1,k)))
3653  > +(
3654  > cxdi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
3655  > cxd*( ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
3656 C
3657  fval(v,iadr)=sum
3658  enddo
3659  endif
3660 C
3661  if(ict(10).eq.1) then
3662 C ! fyyyzzz
3663  iadr=iadr+1
3664  do v=1,ivec
3665  i=ii(v)
3666  j=jj(v)
3667  k=kk(v)
3668 C
3669 C ...in x direction
3670 C
3671  xp=xparam(v)
3672  xpi=1.0-xp
3673  xp2=xp*xp
3674  xpi2=xpi*xpi
3675 C
3676  cx=xp*(xp2-1.0)
3677  cxi=xpi*(xpi2-1.0)
3678  hx2=hx(v)*hx(v)
3679 C
3680  sum=hyi(v)*hzi(v)*(
3681  > -(
3682  > xpi*(-fin(6,i,j,k) +fin(6,i,j+1,k))+
3683  > xp*( -fin(6,i+1,j,k)+fin(6,i+1,j+1,k)))
3684  > +(
3685  > xpi*(-fin(6,i,j,k+1) +fin(6,i,j+1,k+1))+
3686  > xp*( -fin(6,i+1,j,k+1)+fin(6,i+1,j+1,k+1))))
3687 C
3688  sum=sum+sixth*hx2*hyi(v)*hzi(v)*(
3689  > -(
3690  > cxi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
3691  > cx*( -fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
3692  > +(
3693  > cxi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
3694  > cx*( -fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
3695 C
3696  fval(v,iadr)=sum
3697  enddo
3698  endif
3699 C
3700 C----------------------------------
3701 C 7th derivatives
3702 C
3703  else if(abs(ict(1)).eq.7) then
3704  if(ict(2).eq.1) then
3705 C ! fxxxyyyz
3706  iadr=iadr+1
3707  do v=1,ivec
3708  i=ii(v)
3709  j=jj(v)
3710  k=kk(v)
3711 C
3712 C ...and in z direction
3713 C
3714  zp=zparam(v)
3715  zpi=1.0-zp
3716  zp2=zp*zp
3717  zpi2=zpi*zpi
3718 
3719  czd=3.0*zp2-1.0
3720  czdi=-3.0*zpi2+1.0
3721 C
3722  sum=hyi(v)*hxi(v)*hzi(v)*(
3723  > -(
3724  > ( fin(4,i,j,k) -fin(4,i,j+1,k))
3725  > +(-fin(4,i+1,j,k)+fin(4,i+1,j+1,k)))
3726  > +(
3727  > ( fin(4,i,j,k+1) -fin(4,i,j+1,k+1))
3728  > +(-fin(4,i+1,j,k+1)+fin(4,i+1,j+1,k+1))))
3729 C
3730  sum=sum+sixth*hz(v)*hyi(v)*hxi(v)*(
3731  > czdi*(
3732  > ( fin(7,i,j,k) -fin(7,i,j+1,k))
3733  > +(-fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
3734  > +czd*(
3735  > ( fin(7,i,j,k+1) -fin(7,i,j+1,k+1))
3736  > +(-fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
3737 C
3738  fval(v,iadr)=sum
3739  enddo
3740  endif
3741 C
3742  if(ict(3).eq.1) then
3743 C ! fxxxyyzz
3744  iadr=iadr+1
3745  do v=1,ivec
3746  i=ii(v)
3747  j=jj(v)
3748  k=kk(v)
3749 C
3750 C ...and in y direction
3751 C
3752  yp=yparam(v)
3753  ypi=1.0-yp
3754 C
3755 C ...and in z direction
3756 C
3757  zp=zparam(v)
3758  zpi=1.0-zp
3759 C
3760  sum=hxi(v)*(
3761  > zpi*(
3762  > -(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))
3763  > +(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
3764  > +zp*(
3765  > -(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))
3766  > +(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
3767 C
3768  fval(v,iadr)=sum
3769  enddo
3770  endif
3771 C
3772  if(ict(4).eq.1) then
3773 C ! fxxxyzzz
3774  iadr=iadr+1
3775  do v=1,ivec
3776  i=ii(v)
3777  j=jj(v)
3778  k=kk(v)
3779 C
3780 C ...and in y direction
3781 C
3782  yp=yparam(v)
3783  ypi=1.0-yp
3784  yp2=yp*yp
3785  ypi2=ypi*ypi
3786 
3787  cyd=3.0*yp2-1.0
3788  cydi=-3.0*ypi2+1.0
3789 C
3790  sum=hxi(v)*hyi(v)*hzi(v)*(
3791  > -(
3792  > ( fin(5,i,j,k) -fin(5,i,j+1,k))
3793  > +(-fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
3794  > +(
3795  > ( fin(5,i,j,k+1) -fin(5,i,j+1,k+1))
3796  > +(-fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
3797 C
3798  sum=sum+sixth*hy(v)*hxi(v)*hzi(v)*(
3799  > -(
3800  > -(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))
3801  > +(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
3802  > +(
3803  > -(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))
3804  > +(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
3805 C
3806  fval(v,iadr)=sum
3807  enddo
3808  endif
3809 C
3810  if(ict(5).eq.1) then
3811 C ! fxxyyyzz
3812  iadr=iadr+1
3813  do v=1,ivec
3814  i=ii(v)
3815  j=jj(v)
3816  k=kk(v)
3817 C
3818 C ...in x direction
3819 C
3820  xp=xparam(v)
3821  xpi=1.0-xp
3822 C
3823 C ...and in z direction
3824 C
3825  zp=zparam(v)
3826  zpi=1.0-zp
3827 C
3828  sum=hyi(v)*(
3829  > zpi*(
3830  > xpi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
3831  > xp*( -fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
3832  > +zp*(
3833  > xpi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
3834  > xp*( -fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
3835 C
3836  fval(v,iadr)=sum
3837  enddo
3838  endif
3839 C
3840  if(ict(6).eq.1) then
3841 C ! fxxyyzzz
3842  iadr=iadr+1
3843  do v=1,ivec
3844  i=ii(v)
3845  j=jj(v)
3846  k=kk(v)
3847 C
3848 C ...in x direction
3849 C
3850  xp=xparam(v)
3851  xpi=1.0-xp
3852 C
3853 C ...and in y direction
3854 C
3855  yp=yparam(v)
3856  ypi=1.0-yp
3857 C
3858  sum=hzi(v)*(
3859  > -(
3860  > xpi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
3861  > xp*(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
3862  > +(
3863  > xpi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
3864  > xp*(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
3865 C
3866  fval(v,iadr)=sum
3867  enddo
3868  endif
3869 C
3870  if(ict(7).eq.1) then
3871 C ! fxyyyzzz
3872  iadr=iadr+1
3873  do v=1,ivec
3874  i=ii(v)
3875  j=jj(v)
3876  k=kk(v)
3877 C
3878 C ...in x direction
3879 C
3880  xp=xparam(v)
3881  xpi=1.0-xp
3882  xp2=xp*xp
3883  xpi2=xpi*xpi
3884 
3885  cxd=3.0*xp2-1.0
3886  cxdi=-3.0*xpi2+1.0
3887 C
3888  sum=hxi(v)*hyi(v)*hzi(v)*(
3889  > -(
3890  > ( fin(6,i,j,k) -fin(6,i,j+1,k))
3891  > +(-fin(6,i+1,j,k)+fin(6,i+1,j+1,k)))
3892  > +(
3893  > ( fin(6,i,j,k+1) -fin(6,i,j+1,k+1))
3894  > +(-fin(6,i+1,j,k+1)+fin(6,i+1,j+1,k+1))))
3895 C
3896  sum=sum+sixth*hx(v)*hyi(v)*hzi(v)*(
3897  > -(
3898  > cxdi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
3899  > cxd*(-fin(7,i+1,j,k) +fin(7,i+1,j+1,k)))
3900  > +(
3901  > cxdi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
3902  > cxd*(-fin(7,i+1,j,k+1) +fin(7,i+1,j+1,k+1))))
3903 C
3904  fval(v,iadr)=sum
3905  enddo
3906  endif
3907 C
3908 C----------------------------------
3909 C 8th derivatives
3910 C
3911  else if(abs(ict(1)).eq.8) then
3912  if(ict(2).eq.1) then
3913 C ! fxxxyyyzz
3914  iadr=iadr+1
3915  do v=1,ivec
3916  i=ii(v)
3917  j=jj(v)
3918  k=kk(v)
3919 C
3920 C ...and in z direction
3921 C
3922  zp=zparam(v)
3923  zpi=1.0-zp
3924 C
3925  sum=hyi(v)*hxi(v)*(
3926  > zpi*(
3927  > ( fin(7,i,j,k) -fin(7,i,j+1,k))
3928  > +(-fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
3929  > +zp*(
3930  > ( fin(7,i,j,k+1) -fin(7,i,j+1,k+1))
3931  > +(-fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
3932 C
3933  fval(v,iadr)=sum
3934  enddo
3935  endif
3936 C
3937  if(ict(3).eq.1) then
3938 C ! fxxxyyzzz
3939  iadr=iadr+1
3940  do v=1,ivec
3941  i=ii(v)
3942  j=jj(v)
3943  k=kk(v)
3944 C
3945 C ...and in y direction
3946 C
3947  yp=yparam(v)
3948  ypi=1.0-yp
3949 C
3950  sum=hxi(v)*hzi(v)*(
3951  > -(
3952  > -(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))
3953  > +(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
3954  > +(
3955  > -(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))
3956  > +(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
3957 C
3958  fval(v,iadr)=sum
3959  enddo
3960  endif
3961 C
3962  if(ict(4).eq.1) then
3963 C ! fxxyyyzzz
3964  iadr=iadr+1
3965  do v=1,ivec
3966  i=ii(v)
3967  j=jj(v)
3968  k=kk(v)
3969 C
3970 C ...in x direction
3971 C
3972  xp=xparam(v)
3973  xpi=1.0-xp
3974 C
3975  sum=hyi(v)*hzi(v)*(
3976  > -(
3977  > xpi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
3978  > xp*( -fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
3979  > +(
3980  > xpi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
3981  > xp*( -fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
3982  fval(v,iadr)=sum
3983 C
3984  enddo
3985  endif
3986 C
3987 C----------------------------------
3988 C 9th derivative
3989 C
3990  else if(abs(ict(1)).eq.9) then
3991 C ! fxxxyyyzzz
3992  iadr=iadr+1
3993  do v=1,ivec
3994  i=ii(v)
3995  j=jj(v)
3996  k=kk(v)
3997 C
3998  sum=hyi(v)*hxi(v)*hzi(v)*(
3999  > -(
4000  > ( fin(7,i,j,k) -fin(7,i,j+1,k))
4001  > +(-fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
4002  > +(
4003  > ( fin(7,i,j,k+1) -fin(7,i,j+1,k+1))
4004  > +(-fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
4005 C
4006  fval(v,iadr)=sum
4007  enddo
4008  endif
4009 C
4010  return
4011  end
4012 C---------------------------------------------------------------------
4013 C evaluate C1 cubic Hermite function interpolation -- 3d fcn
4014 C --vectorized-- dmc 10 Feb 1999
4015 C --optimized for VARIATION along x axis ONLY--
4016 C
4017  subroutine fvtricubx(ict,ivec,ivecd,
4018  > fval,ii,jj,kk,xparam,yparam,zparam,
4019  > hx,hxi,hy,hyi,hz,hzi,
4020  > fin,inf2,inf3,nz)
4021 C
4022 C use mktricub to set up spline coefficients...
4023 C
4024  integer ict(10) ! requested output control
4025  integer ivec ! vector length
4026  integer ivecd ! vector dimension (1st dim of fval)
4027 C
4028  integer ii(ivec),jj,kk ! target cells (i,j,k)
4029  real xparam(ivec),yparam,zparam
4030  ! normalized displacements from (i,j,k) corners
4031 C
4032  real hx(ivec),hy,hz ! grid spacing, and
4033  real hxi(ivec),hyi,hzi ! inverse grid spacing
4034  ! 1/(x(i+1)-x(i)) & 1/(y(j+1)-y(j)) & 1/(z(k+1)-z(i))
4035 C
4036  real fin(0:7,inf2,inf3,nz) ! interpolant data (cf "evtricub")
4037 C
4038  real fval(ivecd,*) ! output returned
4039 C
4040 C for detailed description of fin, ict and fval see subroutine evtricub
4041 C comments. Note ict is not vectorized; the same output
4042 C is expected to be returned for all input vector data points.
4043 C
4044 C note that the index inputs ii,jj,kk and parameter inputs
4045 C xparam,yparam,zparam,hx,hxi,hy,hyi,hz,hzi are vectorized, and the
4046 C output array fval has a vector ** 1st dimension ** whose
4047 C size must be given as a separate argument
4048 C
4049 C to use this routine in scalar mode, pass in ivec=ivecd=1
4050 C
4051 C---------------
4052 C
4053  integer v
4054 C
4055  real sum
4056  real, parameter :: sixth = 0.166666666666666667
4057 c
4058 C---------------
4059 C
4060  z36th=sixth*sixth
4061  z216th=sixth*sixth*sixth
4062 C
4063  iadr=0
4064  if(abs(ict(1)).le.2) then
4065 C
4066 C 0, 1st, 2nd derivatives...
4067 C
4068 C get desired values:
4069 C
4070  if(ict(1).eq.1) then
4071 C
4072 C function value...
4073 C
4074  j=jj
4075  k=kk
4076 C
4077 C ...and in y direction
4078 C
4079  yp=yparam
4080  ypi=1.0-yp
4081  yp2=yp*yp
4082  ypi2=ypi*ypi
4083 C
4084  cy=yp*(yp2-1.0)
4085  cyi=ypi*(ypi2-1.0)
4086  hy2=hy*hy
4087 C
4088 C ...and in z direction
4089 C
4090  zp=zparam
4091  zpi=1.0-zp
4092  zp2=zp*zp
4093  zpi2=zpi*zpi
4094 C
4095  cz=zp*(zp2-1.0)
4096  czi=zpi*(zpi2-1.0)
4097  hz2=hz*hz
4098 
4099  iadr=iadr+1
4100  do v=1,ivec
4101  i=ii(v)
4102 C
4103 C ...in x direction
4104 C
4105  xp=xparam(v)
4106  xpi=1.0-xp
4107  xp2=xp*xp
4108  xpi2=xpi*xpi
4109 C
4110  cx=xp*(xp2-1.0)
4111  cxi=xpi*(xpi2-1.0)
4112  hx2=hx(v)*hx(v)
4113 C
4114  sum=(
4115  > zpi*(
4116  > xpi*(ypi*fin(0,i,j,k) +yp*fin(0,i,j+1,k))+
4117  > xp*(ypi*fin(0,i+1,j,k)+yp*fin(0,i+1,j+1,k)))
4118  > +zp*(
4119  > xpi*(ypi*fin(0,i,j,k+1) +yp*fin(0,i,j+1,k+1))+
4120  > xp*(ypi*fin(0,i+1,j,k+1)+yp*fin(0,i+1,j+1,k+1))))
4121 C
4122  sum=sum+sixth*hx2*(
4123  > zpi*(
4124  > cxi*(ypi*fin(1,i,j,k) +yp*fin(1,i,j+1,k))+
4125  > cx*(ypi*fin(1,i+1,j,k)+yp*fin(1,i+1,j+1,k)))
4126  > +zp*(
4127  > cxi*(ypi*fin(1,i,j,k+1) +yp*fin(1,i,j+1,k+1))+
4128  > cx*(ypi*fin(1,i+1,j,k+1)+yp*fin(1,i+1,j+1,k+1))))
4129 C
4130  sum=sum+sixth*hy2*(
4131  > zpi*(
4132  > xpi*(cyi*fin(2,i,j,k) +cy*fin(2,i,j+1,k))+
4133  > xp*(cyi*fin(2,i+1,j,k)+cy*fin(2,i+1,j+1,k)))
4134  > +zp*(
4135  > xpi*(cyi*fin(2,i,j,k+1) +cy*fin(2,i,j+1,k+1))+
4136  > xp*(cyi*fin(2,i+1,j,k+1)+cy*fin(2,i+1,j+1,k+1))))
4137 C
4138  sum=sum+sixth*hz2*(
4139  > czi*(
4140  > xpi*(ypi*fin(3,i,j,k) +yp*fin(3,i,j+1,k))+
4141  > xp*(ypi*fin(3,i+1,j,k)+yp*fin(3,i+1,j+1,k)))
4142  > +cz*(
4143  > xpi*(ypi*fin(3,i,j,k+1) +yp*fin(3,i,j+1,k+1))+
4144  > xp*(ypi*fin(3,i+1,j,k+1)+yp*fin(3,i+1,j+1,k+1))))
4145 C
4146  sum=sum+z36th*hx2*hy2*(
4147  > zpi*(
4148  > cxi*(cyi*fin(4,i,j,k) +cy*fin(4,i,j+1,k))+
4149  > cx*(cyi*fin(4,i+1,j,k)+cy*fin(4,i+1,j+1,k)))
4150  > +zp*(
4151  > cxi*(cyi*fin(4,i,j,k+1) +cy*fin(4,i,j+1,k+1))+
4152  > cx*(cyi*fin(4,i+1,j,k+1)+cy*fin(4,i+1,j+1,k+1))))
4153 C
4154  sum=sum+z36th*hx2*hz2*(
4155  > czi*(
4156  > cxi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
4157  > cx*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
4158  > +cz*(
4159  > cxi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
4160  > cx*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
4161 C
4162  sum=sum+z36th*hy2*hz2*(
4163  > czi*(
4164  > xpi*(cyi*fin(6,i,j,k) +cy*fin(6,i,j+1,k))+
4165  > xp*(cyi*fin(6,i+1,j,k)+cy*fin(6,i+1,j+1,k)))
4166  > +cz*(
4167  > xpi*(cyi*fin(6,i,j,k+1) +cy*fin(6,i,j+1,k+1))+
4168  > xp*(cyi*fin(6,i+1,j,k+1)+cy*fin(6,i+1,j+1,k+1))))
4169 C
4170  sum=sum+z216th*hx2*hy2*hz2*(
4171  > czi*(
4172  > cxi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
4173  > cx*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
4174  > +cz*(
4175  > cxi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
4176  > cx*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
4177 C
4178  fval(v,iadr)=sum
4179  enddo
4180  endif
4181 C
4182  if(ict(2).eq.1) then
4183 C
4184 C df/dx:
4185 C
4186  j=jj
4187  k=kk
4188 C
4189 C ...and in y direction
4190 C
4191  yp=yparam
4192  ypi=1.0-yp
4193  yp2=yp*yp
4194  ypi2=ypi*ypi
4195 C
4196  cy=yp*(yp2-1.0)
4197  cyi=ypi*(ypi2-1.0)
4198  hy2=hy*hy
4199 C
4200 C ...and in z direction
4201 C
4202  zp=zparam
4203  zpi=1.0-zp
4204  zp2=zp*zp
4205  zpi2=zpi*zpi
4206 C
4207  cz=zp*(zp2-1.0)
4208  czi=zpi*(zpi2-1.0)
4209  hz2=hz*hz
4210 
4211  iadr=iadr+1
4212  do v=1,ivec
4213  i=ii(v)
4214 C
4215 C ...in x direction
4216 C
4217  xp=xparam(v)
4218  xpi=1.0-xp
4219  xp2=xp*xp
4220  xpi2=xpi*xpi
4221 
4222  cxd=3.0*xp2-1.0
4223  cxdi=-3.0*xpi2+1.0
4224 C
4225  sum=hxi(v)*(
4226  > zpi*(
4227  > -(ypi*fin(0,i,j,k) +yp*fin(0,i,j+1,k))
4228  > +(ypi*fin(0,i+1,j,k)+yp*fin(0,i+1,j+1,k)))
4229  > +zp*(
4230  > -(ypi*fin(0,i,j,k+1) +yp*fin(0,i,j+1,k+1))
4231  > +(ypi*fin(0,i+1,j,k+1)+yp*fin(0,i+1,j+1,k+1))))
4232 C
4233  sum=sum+sixth*hx(v)*(
4234  > zpi*(
4235  > cxdi*(ypi*fin(1,i,j,k) +yp*fin(1,i,j+1,k))+
4236  > cxd*(ypi*fin(1,i+1,j,k)+yp*fin(1,i+1,j+1,k)))
4237  > +zp*(
4238  > cxdi*(ypi*fin(1,i,j,k+1) +yp*fin(1,i,j+1,k+1))+
4239  > cxd*(ypi*fin(1,i+1,j,k+1)+yp*fin(1,i+1,j+1,k+1))))
4240 C
4241  sum=sum+sixth*hxi(v)*hy2*(
4242  > zpi*(
4243  > -(cyi*fin(2,i,j,k) +cy*fin(2,i,j+1,k))
4244  > +(cyi*fin(2,i+1,j,k)+cy*fin(2,i+1,j+1,k)))
4245  > +zp*(
4246  > -(cyi*fin(2,i,j,k+1) +cy*fin(2,i,j+1,k+1))
4247  > +(cyi*fin(2,i+1,j,k+1)+cy*fin(2,i+1,j+1,k+1))))
4248 C
4249  sum=sum+sixth*hxi(v)*hz2*(
4250  > czi*(
4251  > -(ypi*fin(3,i,j,k) +yp*fin(3,i,j+1,k))
4252  > +(ypi*fin(3,i+1,j,k)+yp*fin(3,i+1,j+1,k)))
4253  > +cz*(
4254  > -(ypi*fin(3,i,j,k+1) +yp*fin(3,i,j+1,k+1))
4255  > +(ypi*fin(3,i+1,j,k+1)+yp*fin(3,i+1,j+1,k+1))))
4256 C
4257  sum=sum+z36th*hx(v)*hy2*(
4258  > zpi*(
4259  > cxdi*(cyi*fin(4,i,j,k) +cy*fin(4,i,j+1,k))+
4260  > cxd*(cyi*fin(4,i+1,j,k)+cy*fin(4,i+1,j+1,k)))
4261  > +zp*(
4262  > cxdi*(cyi*fin(4,i,j,k+1) +cy*fin(4,i,j+1,k+1))+
4263  > cxd*(cyi*fin(4,i+1,j,k+1)+cy*fin(4,i+1,j+1,k+1))))
4264 C
4265  sum=sum+z36th*hx(v)*hz2*(
4266  > czi*(
4267  > cxdi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
4268  > cxd*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
4269  > +cz*(
4270  > cxdi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
4271  > cxd*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
4272 C
4273  sum=sum+z36th*hxi(v)*hy2*hz2*(
4274  > czi*(
4275  > -(cyi*fin(6,i,j,k) +cy*fin(6,i,j+1,k))
4276  > +(cyi*fin(6,i+1,j,k)+cy*fin(6,i+1,j+1,k)))
4277  > +cz*(
4278  > -(cyi*fin(6,i,j,k+1) +cy*fin(6,i,j+1,k+1))
4279  > +(cyi*fin(6,i+1,j,k+1)+cy*fin(6,i+1,j+1,k+1))))
4280 C
4281  sum=sum+z216th*hx(v)*hy2*hz2*(
4282  > czi*(
4283  > cxdi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
4284  > cxd*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
4285  > +cz*(
4286  > cxdi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
4287  > cxd*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
4288 C
4289  fval(v,iadr)=sum
4290  enddo
4291  endif
4292 C
4293  if(ict(3).eq.1) then
4294 C
4295 C df/dy:
4296 C
4297  j=jj
4298  k=kk
4299 C
4300 C ...and in y direction
4301 C
4302  yp=yparam
4303  ypi=1.0-yp
4304  yp2=yp*yp
4305  ypi2=ypi*ypi
4306 
4307  cyd=3.0*yp2-1.0
4308  cydi=-3.0*ypi2+1.0
4309 C
4310 C ...and in z direction
4311 C
4312  zp=zparam
4313  zpi=1.0-zp
4314  zp2=zp*zp
4315  zpi2=zpi*zpi
4316 C
4317  cz=zp*(zp2-1.0)
4318  czi=zpi*(zpi2-1.0)
4319  hz2=hz*hz
4320 C
4321  iadr=iadr+1
4322  do v=1,ivec
4323  i=ii(v)
4324 C
4325 C ...in x direction
4326 C
4327  xp=xparam(v)
4328  xpi=1.0-xp
4329  xp2=xp*xp
4330  xpi2=xpi*xpi
4331 C
4332  cx=xp*(xp2-1.0)
4333  cxi=xpi*(xpi2-1.0)
4334  hx2=hx(v)*hx(v)
4335 C
4336  sum=hyi*(
4337  > zpi*(
4338  > xpi*(-fin(0,i,j,k) +fin(0,i,j+1,k))+
4339  > xp*(-fin(0,i+1,j,k)+fin(0,i+1,j+1,k)))
4340  > +zp*(
4341  > xpi*(-fin(0,i,j,k+1) +fin(0,i,j+1,k+1))+
4342  > xp*(-fin(0,i+1,j,k+1)+fin(0,i+1,j+1,k+1))))
4343 C
4344  sum=sum+sixth*hyi*hx2*(
4345  > zpi*(
4346  > cxi*(-fin(1,i,j,k) +fin(1,i,j+1,k))+
4347  > cx*(-fin(1,i+1,j,k)+fin(1,i+1,j+1,k)))
4348  > +zp*(
4349  > cxi*(-fin(1,i,j,k+1) +fin(1,i,j+1,k+1))+
4350  > cx*(-fin(1,i+1,j,k+1)+fin(1,i+1,j+1,k+1))))
4351 C
4352  sum=sum+sixth*hy*(
4353  > zpi*(
4354  > xpi*(cydi*fin(2,i,j,k) +cyd*fin(2,i,j+1,k))+
4355  > xp*(cydi*fin(2,i+1,j,k)+cyd*fin(2,i+1,j+1,k)))
4356  > +zp*(
4357  > xpi*(cydi*fin(2,i,j,k+1) +cyd*fin(2,i,j+1,k+1))+
4358  > xp*(cydi*fin(2,i+1,j,k+1)+cyd*fin(2,i+1,j+1,k+1))))
4359 C
4360  sum=sum+sixth*hyi*hz2*(
4361  > czi*(
4362  > xpi*(-fin(3,i,j,k) +fin(3,i,j+1,k))+
4363  > xp*(-fin(3,i+1,j,k)+fin(3,i+1,j+1,k)))
4364  > +cz*(
4365  > xpi*(-fin(3,i,j,k+1) +fin(3,i,j+1,k+1))+
4366  > xp*(-fin(3,i+1,j,k+1)+fin(3,i+1,j+1,k+1))))
4367 C
4368  sum=sum+z36th*hx2*hy*(
4369  > zpi*(
4370  > cxi*(cydi*fin(4,i,j,k) +cyd*fin(4,i,j+1,k))+
4371  > cx*(cydi*fin(4,i+1,j,k)+cyd*fin(4,i+1,j+1,k)))
4372  > +zp*(
4373  > cxi*(cydi*fin(4,i,j,k+1) +cyd*fin(4,i,j+1,k+1))+
4374  > cx*(cydi*fin(4,i+1,j,k+1)+cyd*fin(4,i+1,j+1,k+1))))
4375 C
4376  sum=sum+z36th*hyi*hx2*hz2*(
4377  > czi*(
4378  > cxi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
4379  > cx*(-fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
4380  > +cz*(
4381  > cxi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
4382  > cx*(-fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
4383 C
4384  sum=sum+z36th*hy*hz2*(
4385  > czi*(
4386  > xpi*(cydi*fin(6,i,j,k) +cyd*fin(6,i,j+1,k))+
4387  > xp*(cydi*fin(6,i+1,j,k)+cyd*fin(6,i+1,j+1,k)))
4388  > +cz*(
4389  > xpi*(cydi*fin(6,i,j,k+1) +cyd*fin(6,i,j+1,k+1))+
4390  > xp*(cydi*fin(6,i+1,j,k+1)+cyd*fin(6,i+1,j+1,k+1))))
4391 C
4392  sum=sum+z216th*hx2*hy*hz2*(
4393  > czi*(
4394  > cxi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
4395  > cx*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
4396  > +cz*(
4397  > cxi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
4398  > cx*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
4399 C
4400  fval(v,iadr)=sum
4401  enddo
4402  endif
4403 C
4404  if(ict(4).eq.1) then
4405 C
4406 C df/dz:
4407 C
4408  j=jj
4409  k=kk
4410 C
4411 C ...and in y direction
4412 C
4413  yp=yparam
4414  ypi=1.0-yp
4415  yp2=yp*yp
4416  ypi2=ypi*ypi
4417 C
4418  cy=yp*(yp2-1.0)
4419  cyi=ypi*(ypi2-1.0)
4420  hy2=hy*hy
4421 C
4422 C ...and in z direction
4423 C
4424  zp=zparam
4425  zpi=1.0-zp
4426  zp2=zp*zp
4427  zpi2=zpi*zpi
4428 
4429  czd=3.0*zp2-1.0
4430  czdi=-3.0*zpi2+1.0
4431 C
4432  iadr=iadr+1
4433  do v=1,ivec
4434  i=ii(v)
4435 C
4436 C ...in x direction
4437 C
4438  xp=xparam(v)
4439  xpi=1.0-xp
4440  xp2=xp*xp
4441  xpi2=xpi*xpi
4442 C
4443  cx=xp*(xp2-1.0)
4444  cxi=xpi*(xpi2-1.0)
4445  hx2=hx(v)*hx(v)
4446 C
4447  sum=hzi*(
4448  > -(
4449  > xpi*(ypi*fin(0,i,j,k) +yp*fin(0,i,j+1,k))+
4450  > xp*(ypi*fin(0,i+1,j,k)+yp*fin(0,i+1,j+1,k)))
4451  > +(
4452  > xpi*(ypi*fin(0,i,j,k+1) +yp*fin(0,i,j+1,k+1))+
4453  > xp*(ypi*fin(0,i+1,j,k+1)+yp*fin(0,i+1,j+1,k+1))))
4454 C
4455  sum=sum+sixth*hx2*hzi*(
4456  > -(
4457  > cxi*(ypi*fin(1,i,j,k) +yp*fin(1,i,j+1,k))+
4458  > cx*(ypi*fin(1,i+1,j,k)+yp*fin(1,i+1,j+1,k)))
4459  > +(
4460  > cxi*(ypi*fin(1,i,j,k+1) +yp*fin(1,i,j+1,k+1))+
4461  > cx*(ypi*fin(1,i+1,j,k+1)+yp*fin(1,i+1,j+1,k+1))))
4462 C
4463  sum=sum+sixth*hy2*hzi*(
4464  > -(
4465  > xpi*(cyi*fin(2,i,j,k) +cy*fin(2,i,j+1,k))+
4466  > xp*(cyi*fin(2,i+1,j,k)+cy*fin(2,i+1,j+1,k)))
4467  > +(
4468  > xpi*(cyi*fin(2,i,j,k+1) +cy*fin(2,i,j+1,k+1))+
4469  > xp*(cyi*fin(2,i+1,j,k+1)+cy*fin(2,i+1,j+1,k+1))))
4470 C
4471  sum=sum+sixth*hz*(
4472  > czdi*(
4473  > xpi*(ypi*fin(3,i,j,k) +yp*fin(3,i,j+1,k))+
4474  > xp*(ypi*fin(3,i+1,j,k)+yp*fin(3,i+1,j+1,k)))
4475  > +czd*(
4476  > xpi*(ypi*fin(3,i,j,k+1) +yp*fin(3,i,j+1,k+1))+
4477  > xp*(ypi*fin(3,i+1,j,k+1)+yp*fin(3,i+1,j+1,k+1))))
4478 C
4479  sum=sum+z36th*hx2*hy2*hzi*(
4480  > -(
4481  > cxi*(cyi*fin(4,i,j,k) +cy*fin(4,i,j+1,k))+
4482  > cx*(cyi*fin(4,i+1,j,k)+cy*fin(4,i+1,j+1,k)))
4483  > +(
4484  > cxi*(cyi*fin(4,i,j,k+1) +cy*fin(4,i,j+1,k+1))+
4485  > cx*(cyi*fin(4,i+1,j,k+1)+cy*fin(4,i+1,j+1,k+1))))
4486 C
4487  sum=sum+z36th*hx2*hz*(
4488  > czdi*(
4489  > cxi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
4490  > cx*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
4491  > +czd*(
4492  > cxi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
4493  > cx*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
4494 C
4495  sum=sum+z36th*hy2*hz*(
4496  > czdi*(
4497  > xpi*(cyi*fin(6,i,j,k) +cy*fin(6,i,j+1,k))+
4498  > xp*(cyi*fin(6,i+1,j,k)+cy*fin(6,i+1,j+1,k)))
4499  > +czd*(
4500  > xpi*(cyi*fin(6,i,j,k+1) +cy*fin(6,i,j+1,k+1))+
4501  > xp*(cyi*fin(6,i+1,j,k+1)+cy*fin(6,i+1,j+1,k+1))))
4502 C
4503  sum=sum+z216th*hx2*hy2*hz*(
4504  > czdi*(
4505  > cxi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
4506  > cx*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
4507  > +czd*(
4508  > cxi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
4509  > cx*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
4510 C
4511  fval(v,iadr)=sum
4512  enddo
4513  endif
4514 C
4515  if(ict(5).eq.1) then
4516 C
4517 C d2f/dx2:
4518 C
4519  j=jj
4520  k=kk
4521 C
4522 C ...and in y direction
4523 C
4524  yp=yparam
4525  ypi=1.0-yp
4526  yp2=yp*yp
4527  ypi2=ypi*ypi
4528 C
4529  cy=yp*(yp2-1.0)
4530  cyi=ypi*(ypi2-1.0)
4531  hy2=hy*hy
4532 C
4533 C ...and in z direction
4534 C
4535  zp=zparam
4536  zpi=1.0-zp
4537  zp2=zp*zp
4538  zpi2=zpi*zpi
4539 C
4540  cz=zp*(zp2-1.0)
4541  czi=zpi*(zpi2-1.0)
4542  hz2=hz*hz
4543 C
4544  iadr=iadr+1
4545  do v=1,ivec
4546  i=ii(v)
4547 C
4548 C ...in x direction
4549 C
4550  xp=xparam(v)
4551  xpi=1.0-xp
4552 C
4553  sum=(
4554  > zpi*(
4555  > xpi*(ypi*fin(1,i,j,k) +yp*fin(1,i,j+1,k))+
4556  > xp*(ypi*fin(1,i+1,j,k)+yp*fin(1,i+1,j+1,k)))
4557  > +zp*(
4558  > xpi*(ypi*fin(1,i,j,k+1) +yp*fin(1,i,j+1,k+1))+
4559  > xp*(ypi*fin(1,i+1,j,k+1)+yp*fin(1,i+1,j+1,k+1))))
4560 C
4561  sum=sum+sixth*hy2*(
4562  > zpi*(
4563  > xpi*(cyi*fin(4,i,j,k) +cy*fin(4,i,j+1,k))+
4564  > xp*(cyi*fin(4,i+1,j,k)+cy*fin(4,i+1,j+1,k)))
4565  > +zp*(
4566  > xpi*(cyi*fin(4,i,j,k+1) +cy*fin(4,i,j+1,k+1))+
4567  > xp*(cyi*fin(4,i+1,j,k+1)+cy*fin(4,i+1,j+1,k+1))))
4568 C
4569  sum=sum+sixth*hz2*(
4570  > czi*(
4571  > xpi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
4572  > xp*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
4573  > +cz*(
4574  > xpi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
4575  > xp*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
4576 C
4577  sum=sum+z36th*hy2*hz2*(
4578  > czi*(
4579  > xpi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
4580  > xp*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
4581  > +cz*(
4582  > xpi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
4583  > xp*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
4584 C
4585  fval(v,iadr)=sum
4586  enddo
4587  endif
4588 C
4589  if(ict(6).eq.1) then
4590 C
4591 C d2f/dy2:
4592 C
4593  j=jj
4594  k=kk
4595 C
4596 C ...and in y direction
4597 C
4598  yp=yparam
4599  ypi=1.0-yp
4600 C
4601 C ...and in z direction
4602 C
4603  zp=zparam
4604  zpi=1.0-zp
4605  zp2=zp*zp
4606  zpi2=zpi*zpi
4607 C
4608  cz=zp*(zp2-1.0)
4609  czi=zpi*(zpi2-1.0)
4610  hz2=hz*hz
4611 C
4612  iadr=iadr+1
4613  do v=1,ivec
4614  i=ii(v)
4615 C
4616 C ...in x direction
4617 C
4618  xp=xparam(v)
4619  xpi=1.0-xp
4620  xp2=xp*xp
4621  xpi2=xpi*xpi
4622 C
4623  cx=xp*(xp2-1.0)
4624  cxi=xpi*(xpi2-1.0)
4625  hx2=hx(v)*hx(v)
4626 C
4627  sum=(
4628  > zpi*(
4629  > xpi*(ypi*fin(2,i,j,k) +yp*fin(2,i,j+1,k))+
4630  > xp*(ypi*fin(2,i+1,j,k)+yp*fin(2,i+1,j+1,k)))
4631  > +zp*(
4632  > xpi*(ypi*fin(2,i,j,k+1) +yp*fin(2,i,j+1,k+1))+
4633  > xp*(ypi*fin(2,i+1,j,k+1)+yp*fin(2,i+1,j+1,k+1))))
4634 C
4635  sum=sum+sixth*hx2*(
4636  > zpi*(
4637  > cxi*(ypi*fin(4,i,j,k) +yp*fin(4,i,j+1,k))+
4638  > cx*(ypi*fin(4,i+1,j,k)+yp*fin(4,i+1,j+1,k)))
4639  > +zp*(
4640  > cxi*(ypi*fin(4,i,j,k+1) +yp*fin(4,i,j+1,k+1))+
4641  > cx*(ypi*fin(4,i+1,j,k+1)+yp*fin(4,i+1,j+1,k+1))))
4642 C
4643  sum=sum+sixth*hz2*(
4644  > czi*(
4645  > xpi*(ypi*fin(6,i,j,k) +yp*fin(6,i,j+1,k))+
4646  > xp*(ypi*fin(6,i+1,j,k)+yp*fin(6,i+1,j+1,k)))
4647  > +cz*(
4648  > xpi*(ypi*fin(6,i,j,k+1) +yp*fin(6,i,j+1,k+1))+
4649  > xp*(ypi*fin(6,i+1,j,k+1)+yp*fin(6,i+1,j+1,k+1))))
4650 C
4651  sum=sum+z36th*hx2*hz2*(
4652  > czi*(
4653  > cxi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
4654  > cx*(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
4655  > +cz*(
4656  > cxi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
4657  > cx*(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
4658 C
4659  fval(v,iadr)=sum
4660  enddo
4661  endif
4662 C
4663  if(ict(7).eq.1) then
4664 C
4665 C d2f/dz2:
4666 C
4667  j=jj
4668  k=kk
4669 C
4670 C ...and in y direction
4671 C
4672  yp=yparam
4673  ypi=1.0-yp
4674  yp2=yp*yp
4675  ypi2=ypi*ypi
4676 C
4677  cy=yp*(yp2-1.0)
4678  cyi=ypi*(ypi2-1.0)
4679  hy2=hy*hy
4680 C
4681 C ...and in z direction
4682 C
4683  zp=zparam
4684  zpi=1.0-zp
4685 
4686  iadr=iadr+1
4687  do v=1,ivec
4688  i=ii(v)
4689 C
4690 C ...in x direction
4691 C
4692  xp=xparam(v)
4693  xpi=1.0-xp
4694  xp2=xp*xp
4695  xpi2=xpi*xpi
4696 C
4697  cx=xp*(xp2-1.0)
4698  cxi=xpi*(xpi2-1.0)
4699  hx2=hx(v)*hx(v)
4700 C
4701  sum=(
4702  > zpi*(
4703  > xpi*(ypi*fin(3,i,j,k) +yp*fin(3,i,j+1,k))+
4704  > xp*(ypi*fin(3,i+1,j,k)+yp*fin(3,i+1,j+1,k)))
4705  > +zp*(
4706  > xpi*(ypi*fin(3,i,j,k+1) +yp*fin(3,i,j+1,k+1))+
4707  > xp*(ypi*fin(3,i+1,j,k+1)+yp*fin(3,i+1,j+1,k+1))))
4708 C
4709  sum=sum+sixth*hx2*(
4710  > zpi*(
4711  > cxi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
4712  > cx*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
4713  > +zp*(
4714  > cxi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
4715  > cx*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
4716 C
4717  sum=sum+sixth*hy2*(
4718  > zpi*(
4719  > xpi*(cyi*fin(6,i,j,k) +cy*fin(6,i,j+1,k))+
4720  > xp*(cyi*fin(6,i+1,j,k)+cy*fin(6,i+1,j+1,k)))
4721  > +zp*(
4722  > xpi*(cyi*fin(6,i,j,k+1) +cy*fin(6,i,j+1,k+1))+
4723  > xp*(cyi*fin(6,i+1,j,k+1)+cy*fin(6,i+1,j+1,k+1))))
4724 C
4725  sum=sum+z36th*hx2*hy2*(
4726  > zpi*(
4727  > cxi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
4728  > cx*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
4729  > +zp*(
4730  > cxi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
4731  > cx*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
4732 C
4733  fval(v,iadr)=sum
4734  enddo
4735  endif
4736 C
4737  if(ict(8).eq.1) then
4738 C
4739 C d2f/dxdy:
4740 C
4741  j=jj
4742  k=kk
4743 C
4744 C ...and in y direction
4745 C
4746  yp=yparam
4747  ypi=1.0-yp
4748  yp2=yp*yp
4749  ypi2=ypi*ypi
4750 
4751  cyd=3.0*yp2-1.0
4752  cydi=-3.0*ypi2+1.0
4753 C
4754 C ...and in z direction
4755 C
4756  zp=zparam
4757  zpi=1.0-zp
4758  zp2=zp*zp
4759  zpi2=zpi*zpi
4760 C
4761  cz=zp*(zp2-1.0)
4762  czi=zpi*(zpi2-1.0)
4763  hz2=hz*hz
4764 C
4765  iadr=iadr+1
4766  do v=1,ivec
4767  i=ii(v)
4768 C
4769 C ...in x direction
4770 C
4771  xp=xparam(v)
4772  xpi=1.0-xp
4773  xp2=xp*xp
4774  xpi2=xpi*xpi
4775 
4776  cxd=3.0*xp2-1.0
4777  cxdi=-3.0*xpi2+1.0
4778 C
4779  sum=hxi(v)*hyi*(
4780  > zpi*(
4781  > (fin(0,i,j,k) -fin(0,i,j+1,k))-
4782  > (fin(0,i+1,j,k)-fin(0,i+1,j+1,k)))
4783  > +zp*(
4784  > (fin(0,i,j,k+1) -fin(0,i,j+1,k+1))-
4785  > (fin(0,i+1,j,k+1)-fin(0,i+1,j+1,k+1))))
4786 C
4787  sum=sum+sixth*hyi*hx(v)*(
4788  > zpi*(
4789  > cxdi*(-fin(1,i,j,k) +fin(1,i,j+1,k))+
4790  > cxd*(-fin(1,i+1,j,k)+fin(1,i+1,j+1,k)))
4791  > +zp*(
4792  > cxdi*(-fin(1,i,j,k+1) +fin(1,i,j+1,k+1))+
4793  > cxd*(-fin(1,i+1,j,k+1)+fin(1,i+1,j+1,k+1))))
4794 C
4795  sum=sum+sixth*hxi(v)*hy*(
4796  > zpi*(
4797  > -(cydi*fin(2,i,j,k) +cyd*fin(2,i,j+1,k))
4798  > +(cydi*fin(2,i+1,j,k)+cyd*fin(2,i+1,j+1,k)))
4799  > +zp*(
4800  > -(cydi*fin(2,i,j,k+1) +cyd*fin(2,i,j+1,k+1))
4801  > +(cydi*fin(2,i+1,j,k+1)+cyd*fin(2,i+1,j+1,k+1))))
4802 C
4803  sum=sum+sixth*hxi(v)*hyi*hz2*(
4804  > czi*(
4805  > (fin(3,i,j,k) -fin(3,i,j+1,k))-
4806  > (fin(3,i+1,j,k)-fin(3,i+1,j+1,k)))
4807  > +cz*(
4808  > (fin(3,i,j,k+1) -fin(3,i,j+1,k+1))-
4809  > (fin(3,i+1,j,k+1)-fin(3,i+1,j+1,k+1))))
4810 C
4811  sum=sum+z36th*hx(v)*hy*(
4812  > zpi*(
4813  > cxdi*(cydi*fin(4,i,j,k) +cyd*fin(4,i,j+1,k))+
4814  > cxd*(cydi*fin(4,i+1,j,k)+cyd*fin(4,i+1,j+1,k)))
4815  > +zp*(
4816  > cxdi*(cydi*fin(4,i,j,k+1) +cyd*fin(4,i,j+1,k+1))+
4817  > cxd*(cydi*fin(4,i+1,j,k+1)+cyd*fin(4,i+1,j+1,k+1))))
4818 C
4819  sum=sum+z36th*hyi*hx(v)*hz2*(
4820  > czi*(
4821  > cxdi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
4822  > cxd*(-fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
4823  > +cz*(
4824  > cxdi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
4825  > cxd*(-fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
4826 C
4827  sum=sum+z36th*hxi(v)*hy*hz2*(
4828  > czi*(
4829  > -(cydi*fin(6,i,j,k) +cyd*fin(6,i,j+1,k))
4830  > +(cydi*fin(6,i+1,j,k)+cyd*fin(6,i+1,j+1,k)))
4831  > +cz*(
4832  > -(cydi*fin(6,i,j,k+1) +cyd*fin(6,i,j+1,k+1))
4833  > +(cydi*fin(6,i+1,j,k+1)+cyd*fin(6,i+1,j+1,k+1))))
4834 C
4835  sum=sum+z216th*hx(v)*hy*hz2*(
4836  > czi*(
4837  > cxdi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
4838  > cxd*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
4839  > +cz*(
4840  > cxdi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
4841  > cxd*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
4842 C
4843  fval(v,iadr)=sum
4844  enddo
4845  endif
4846 C
4847  if(ict(9).eq.1) then
4848 C
4849 C d2f/dxdz:
4850 C
4851  j=jj
4852  k=kk
4853 C
4854 C ...and in y direction
4855 C
4856  yp=yparam
4857  ypi=1.0-yp
4858  yp2=yp*yp
4859  ypi2=ypi*ypi
4860 C
4861  cy=yp*(yp2-1.0)
4862  cyi=ypi*(ypi2-1.0)
4863  hy2=hy*hy
4864 C
4865 C ...and in z direction
4866 C
4867  zp=zparam
4868  zpi=1.0-zp
4869  zp2=zp*zp
4870  zpi2=zpi*zpi
4871 
4872  czd=3.0*zp2-1.0
4873  czdi=-3.0*zpi2+1.0
4874 C
4875  iadr=iadr+1
4876  do v=1,ivec
4877  i=ii(v)
4878 C
4879 C ...in x direction
4880 C
4881  xp=xparam(v)
4882  xpi=1.0-xp
4883  xp2=xp*xp
4884  xpi2=xpi*xpi
4885 
4886  cxd=3.0*xp2-1.0
4887  cxdi=-3.0*xpi2+1.0
4888 C
4889  sum=hxi(v)*hzi*(
4890  > (
4891  > (ypi*fin(0,i,j,k) +yp*fin(0,i,j+1,k)) -
4892  > (ypi*fin(0,i+1,j,k)+yp*fin(0,i+1,j+1,k)))
4893  > -(
4894  > (ypi*fin(0,i,j,k+1) +yp*fin(0,i,j+1,k+1)) -
4895  > (ypi*fin(0,i+1,j,k+1)+yp*fin(0,i+1,j+1,k+1))))
4896 C
4897  sum=sum+sixth*hx(v)*hzi*(
4898  > -(
4899  > cxdi*(ypi*fin(1,i,j,k) +yp*fin(1,i,j+1,k))+
4900  > cxd*(ypi*fin(1,i+1,j,k)+yp*fin(1,i+1,j+1,k)))
4901  > +(
4902  > cxdi*(ypi*fin(1,i,j,k+1) +yp*fin(1,i,j+1,k+1))+
4903  > cxd*(ypi*fin(1,i+1,j,k+1)+yp*fin(1,i+1,j+1,k+1))))
4904 C
4905  sum=sum+sixth*hxi(v)*hy2*hzi*(
4906  > (
4907  > (cyi*fin(2,i,j,k) +cy*fin(2,i,j+1,k)) -
4908  > (cyi*fin(2,i+1,j,k)+cy*fin(2,i+1,j+1,k)))
4909  > -(
4910  > (cyi*fin(2,i,j,k+1) +cy*fin(2,i,j+1,k+1)) -
4911  > (cyi*fin(2,i+1,j,k+1)+cy*fin(2,i+1,j+1,k+1))))
4912 C
4913  sum=sum+sixth*hxi(v)*hz*(
4914  > czdi*(
4915  > -(ypi*fin(3,i,j,k) +yp*fin(3,i,j+1,k))
4916  > +(ypi*fin(3,i+1,j,k)+yp*fin(3,i+1,j+1,k)))
4917  > +czd*(
4918  > -(ypi*fin(3,i,j,k+1) +yp*fin(3,i,j+1,k+1))
4919  > +(ypi*fin(3,i+1,j,k+1)+yp*fin(3,i+1,j+1,k+1))))
4920 C
4921  sum=sum+z36th*hx(v)*hy2*hzi*(
4922  > -(
4923  > cxdi*(cyi*fin(4,i,j,k) +cy*fin(4,i,j+1,k))+
4924  > cxd*(cyi*fin(4,i+1,j,k)+cy*fin(4,i+1,j+1,k)))
4925  > +(
4926  > cxdi*(cyi*fin(4,i,j,k+1) +cy*fin(4,i,j+1,k+1))+
4927  > cxd*(cyi*fin(4,i+1,j,k+1)+cy*fin(4,i+1,j+1,k+1))))
4928 C
4929  sum=sum+z36th*hx(v)*hz*(
4930  > czdi*(
4931  > cxdi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
4932  > cxd*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
4933  > +czd*(
4934  > cxdi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
4935  > cxd*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
4936 C
4937  sum=sum+z36th*hxi(v)*hy2*hz*(
4938  > czdi*(
4939  > -(cyi*fin(6,i,j,k) +cy*fin(6,i,j+1,k))
4940  > +(cyi*fin(6,i+1,j,k)+cy*fin(6,i+1,j+1,k)))
4941  > +czd*(
4942  > -(cyi*fin(6,i,j,k+1) +cy*fin(6,i,j+1,k+1))
4943  > +(cyi*fin(6,i+1,j,k+1)+cy*fin(6,i+1,j+1,k+1))))
4944 C
4945  sum=sum+z216th*hx(v)*hy2*hz*(
4946  > czdi*(
4947  > cxdi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
4948  > cxd*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
4949  > +czd*(
4950  > cxdi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
4951  > cxd*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
4952 C
4953  fval(v,iadr)=sum
4954  enddo
4955  endif
4956 C
4957  if(ict(10).eq.1) then
4958 C
4959 C d2f/dydz:
4960 C
4961  j=jj
4962  k=kk
4963 C
4964 C ...and in y direction
4965 C
4966  yp=yparam
4967  ypi=1.0-yp
4968  yp2=yp*yp
4969  ypi2=ypi*ypi
4970 
4971  cyd=3.0*yp2-1.0
4972  cydi=-3.0*ypi2+1.0
4973 C
4974 C ...and in z direction
4975 C
4976  zp=zparam
4977  zpi=1.0-zp
4978  zp2=zp*zp
4979  zpi2=zpi*zpi
4980 
4981  czd=3.0*zp2-1.0
4982  czdi=-3.0*zpi2+1.0
4983 C
4984  iadr=iadr+1
4985  do v=1,ivec
4986  i=ii(v)
4987 C
4988 C ...in x direction
4989 C
4990  xp=xparam(v)
4991  xpi=1.0-xp
4992  xp2=xp*xp
4993  xpi2=xpi*xpi
4994 C
4995  cx=xp*(xp2-1.0)
4996  cxi=xpi*(xpi2-1.0)
4997  hx2=hx(v)*hx(v)
4998 C
4999  sum=hyi*hzi*(
5000  > (
5001  > xpi*(fin(0,i,j,k) -fin(0,i,j+1,k))+
5002  > xp*(fin(0,i+1,j,k)-fin(0,i+1,j+1,k)))
5003  > -(
5004  > xpi*(fin(0,i,j,k+1) -fin(0,i,j+1,k+1))+
5005  > xp*(fin(0,i+1,j,k+1)-fin(0,i+1,j+1,k+1))))
5006 C
5007  sum=sum+sixth*hyi*hx2*hzi*(
5008  > (
5009  > cxi*(fin(1,i,j,k) -fin(1,i,j+1,k))+
5010  > cx*(fin(1,i+1,j,k)-fin(1,i+1,j+1,k)))
5011  > -(
5012  > cxi*(fin(1,i,j,k+1) -fin(1,i,j+1,k+1))+
5013  > cx*(fin(1,i+1,j,k+1)-fin(1,i+1,j+1,k+1))))
5014 C
5015  sum=sum+sixth*hy*hzi*(
5016  > -(
5017  > xpi*(cydi*fin(2,i,j,k) +cyd*fin(2,i,j+1,k))+
5018  > xp*(cydi*fin(2,i+1,j,k)+cyd*fin(2,i+1,j+1,k)))
5019  > +(
5020  > xpi*(cydi*fin(2,i,j,k+1) +cyd*fin(2,i,j+1,k+1))+
5021  > xp*(cydi*fin(2,i+1,j,k+1)+cyd*fin(2,i+1,j+1,k+1))))
5022 C
5023  sum=sum+sixth*hyi*hz*(
5024  > czdi*(
5025  > xpi*(-fin(3,i,j,k) +fin(3,i,j+1,k))+
5026  > xp*(-fin(3,i+1,j,k)+fin(3,i+1,j+1,k)))
5027  > +czd*(
5028  > xpi*(-fin(3,i,j,k+1) +fin(3,i,j+1,k+1))+
5029  > xp*(-fin(3,i+1,j,k+1)+fin(3,i+1,j+1,k+1))))
5030 C
5031  sum=sum+z36th*hx2*hy*hzi*(
5032  > -(
5033  > cxi*(cydi*fin(4,i,j,k) +cyd*fin(4,i,j+1,k))+
5034  > cx*(cydi*fin(4,i+1,j,k)+cyd*fin(4,i+1,j+1,k)))
5035  > +(
5036  > cxi*(cydi*fin(4,i,j,k+1) +cyd*fin(4,i,j+1,k+1))+
5037  > cx*(cydi*fin(4,i+1,j,k+1)+cyd*fin(4,i+1,j+1,k+1))))
5038 C
5039  sum=sum+z36th*hyi*hx2*hz*(
5040  > czdi*(
5041  > cxi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
5042  > cx*(-fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
5043  > +czd*(
5044  > cxi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
5045  > cx*(-fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
5046 C
5047  sum=sum+z36th*hy*hz*(
5048  > czdi*(
5049  > xpi*(cydi*fin(6,i,j,k) +cyd*fin(6,i,j+1,k))+
5050  > xp*(cydi*fin(6,i+1,j,k)+cyd*fin(6,i+1,j+1,k)))
5051  > +czd*(
5052  > xpi*(cydi*fin(6,i,j,k+1) +cyd*fin(6,i,j+1,k+1))+
5053  > xp*(cydi*fin(6,i+1,j,k+1)+cyd*fin(6,i+1,j+1,k+1))))
5054 C
5055  sum=sum+z216th*hx2*hy*hz*(
5056  > czdi*(
5057  > cxi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
5058  > cx*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
5059  > +czd*(
5060  > cxi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
5061  > cx*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
5062 C
5063  fval(v,iadr)=sum
5064  enddo
5065  endif
5066 C
5067 C----------------------------------
5068 C 3rd derivatives (.le.2 in each coordinate)
5069 C
5070  else if(ict(1).eq.3) then
5071  if(ict(2).eq.1) then
5072 C ! fxxy
5073  j=jj
5074  k=kk
5075 C
5076 C ...and in y direction
5077 C
5078  yp=yparam
5079  ypi=1.0-yp
5080  yp2=yp*yp
5081  ypi2=ypi*ypi
5082 C
5083  cyd=3.0*yp2-1.0
5084  cydi=-3.0*ypi2+1.0
5085 C
5086 C ...and in z direction
5087 C
5088  zp=zparam
5089  zpi=1.0-zp
5090  zp2=zp*zp
5091  zpi2=zpi*zpi
5092 C
5093  cz=zp*(zp2-1.0)
5094  czi=zpi*(zpi2-1.0)
5095  hz2=hz*hz
5096 C
5097  iadr=iadr+1
5098  do v=1,ivec
5099  i=ii(v)
5100 C
5101 C ...in x direction
5102 C
5103  xp=xparam(v)
5104  xpi=1.0-xp
5105 C
5106  sum=hyi*(
5107  > zpi*(
5108  > xpi*(-fin(1,i,j,k) +fin(1,i,j+1,k))+
5109  > xp*( -fin(1,i+1,j,k)+fin(1,i+1,j+1,k)))
5110  > +zp*(
5111  > xpi*(-fin(1,i,j,k+1) +fin(1,i,j+1,k+1))+
5112  > xp*( -fin(1,i+1,j,k+1)+fin(1,i+1,j+1,k+1))))
5113 C
5114  sum=sum+sixth*hy*(
5115  > zpi*(
5116  > xpi*(cydi*fin(4,i,j,k) +cyd*fin(4,i,j+1,k))+
5117  > xp*(cydi*fin(4,i+1,j,k)+cyd*fin(4,i+1,j+1,k)))
5118  > +zp*(
5119  > xpi*(cydi*fin(4,i,j,k+1) +cyd*fin(4,i,j+1,k+1))+
5120  > xp*(cydi*fin(4,i+1,j,k+1)+cyd*fin(4,i+1,j+1,k+1))))
5121 C
5122  sum=sum+sixth*hz2*hyi*(
5123  > czi*(
5124  > xpi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
5125  > xp*( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
5126  > +cz*(
5127  > xpi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
5128  > xp*( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
5129 C
5130  sum=sum+z36th*hy*hz2*(
5131  > czi*(
5132  > xpi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
5133  > xp*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
5134  > +cz*(
5135  > xpi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
5136  > xp*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
5137 C
5138  fval(v,iadr)=sum
5139  enddo
5140  endif
5141 C
5142  if(ict(3).eq.1) then
5143 C ! fxxz
5144  j=jj
5145  k=kk
5146 C
5147 C ...and in y direction
5148 C
5149  yp=yparam
5150  ypi=1.0-yp
5151  yp2=yp*yp
5152  ypi2=ypi*ypi
5153 C
5154  cy=yp*(yp2-1.0)
5155  cyi=ypi*(ypi2-1.0)
5156  hy2=hy*hy
5157 C
5158 C ...and in z direction
5159 C
5160  zp=zparam
5161  zpi=1.0-zp
5162  zp2=zp*zp
5163  zpi2=zpi*zpi
5164 C
5165  czd=3.0*zp2-1.0
5166  czdi=-3.0*zpi2+1.0
5167 C
5168  iadr=iadr+1
5169  do v=1,ivec
5170  i=ii(v)
5171 C
5172 C ...in x direction
5173 C
5174  xp=xparam(v)
5175  xpi=1.0-xp
5176 C
5177  sum=hzi*(
5178  > -(
5179  > xpi*(ypi*fin(1,i,j,k) +yp*fin(1,i,j+1,k))+
5180  > xp*(ypi*fin(1,i+1,j,k)+yp*fin(1,i+1,j+1,k)))
5181  > +(
5182  > xpi*(ypi*fin(1,i,j,k+1) +yp*fin(1,i,j+1,k+1))+
5183  > xp*(ypi*fin(1,i+1,j,k+1)+yp*fin(1,i+1,j+1,k+1))))
5184 C
5185  sum=sum+sixth*hy2*hzi*(
5186  > -(
5187  > xpi*(cyi*fin(4,i,j,k) +cy*fin(4,i,j+1,k))+
5188  > xp*(cyi*fin(4,i+1,j,k)+cy*fin(4,i+1,j+1,k)))
5189  > +(
5190  > xpi*(cyi*fin(4,i,j,k+1) +cy*fin(4,i,j+1,k+1))+
5191  > xp*(cyi*fin(4,i+1,j,k+1)+cy*fin(4,i+1,j+1,k+1))))
5192 C
5193  sum=sum+sixth*hz*(
5194  > czdi*(
5195  > xpi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
5196  > xp*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
5197  > +czd*(
5198  > xpi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
5199  > xp*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
5200 C
5201  sum=sum+z36th*hy2*hz*(
5202  > czdi*(
5203  > xpi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
5204  > xp*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
5205  > +czd*(
5206  > xpi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
5207  > xp*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
5208 C
5209  fval(v,iadr)=sum
5210  enddo
5211  endif
5212 C
5213  if(ict(4).eq.1) then
5214 C ! fxyy
5215  j=jj
5216  k=kk
5217 C
5218 C ...and in y direction
5219 C
5220  yp=yparam
5221  ypi=1.0-yp
5222 C
5223 C ...and in z direction
5224 C
5225  zp=zparam
5226  zpi=1.0-zp
5227  zp2=zp*zp
5228  zpi2=zpi*zpi
5229 C
5230  cz=zp*(zp2-1.0)
5231  czi=zpi*(zpi2-1.0)
5232  hz2=hz*hz
5233 C
5234  iadr=iadr+1
5235  do v=1,ivec
5236  i=ii(v)
5237 C
5238 C ...in x direction
5239 C
5240  xp=xparam(v)
5241  xpi=1.0-xp
5242  xp2=xp*xp
5243  xpi2=xpi*xpi
5244 C
5245  cxd=3.0*xp2-1.0
5246  cxdi=-3.0*xpi2+1.0
5247 C
5248  sum=hxi(v)*(
5249  > zpi*(
5250  > -(ypi*fin(2,i,j,k) +yp*fin(2,i,j+1,k))
5251  > +(ypi*fin(2,i+1,j,k)+yp*fin(2,i+1,j+1,k)))
5252  > +zp*(
5253  > -(ypi*fin(2,i,j,k+1) +yp*fin(2,i,j+1,k+1))
5254  > +(ypi*fin(2,i+1,j,k+1)+yp*fin(2,i+1,j+1,k+1))))
5255 C
5256  sum=sum+sixth*hx(v)*(
5257  > zpi*(
5258  > cxdi*(ypi*fin(4,i,j,k) +yp*fin(4,i,j+1,k))+
5259  > cxd*(ypi*fin(4,i+1,j,k)+yp*fin(4,i+1,j+1,k)))
5260  > +zp*(
5261  > cxdi*(ypi*fin(4,i,j,k+1) +yp*fin(4,i,j+1,k+1))+
5262  > cxd*(ypi*fin(4,i+1,j,k+1)+yp*fin(4,i+1,j+1,k+1))))
5263 C
5264  sum=sum+sixth*hz2*hxi(v)*(
5265  > czi*(
5266  > -(ypi*fin(6,i,j,k) +yp*fin(6,i,j+1,k))
5267  > +(ypi*fin(6,i+1,j,k)+yp*fin(6,i+1,j+1,k)))
5268  > +cz*(
5269  > -(ypi*fin(6,i,j,k+1) +yp*fin(6,i,j+1,k+1))
5270  > +(ypi*fin(6,i+1,j,k+1)+yp*fin(6,i+1,j+1,k+1))))
5271 C
5272  sum=sum+z36th*hx(v)*hz2*(
5273  > czi*(
5274  > cxdi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
5275  > cxd*(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
5276  > +cz*(
5277  > cxdi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
5278  > cxd*(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
5279 C
5280  fval(v,iadr)=sum
5281  enddo
5282  endif
5283 C
5284  if(ict(5).eq.1) then
5285 C ! fxyz
5286  j=jj
5287  k=kk
5288 C
5289 C ...and in y direction
5290 C
5291  yp=yparam
5292  ypi=1.0-yp
5293  yp2=yp*yp
5294  ypi2=ypi*ypi
5295 C
5296  cyd=3.0*yp2-1.0
5297  cydi=-3.0*ypi2+1.0
5298 C
5299 C ...and in z direction
5300 C
5301  zp=zparam
5302  zpi=1.0-zp
5303  zp2=zp*zp
5304  zpi2=zpi*zpi
5305 C
5306  czd=3.0*zp2-1.0
5307  czdi=-3.0*zpi2+1.0
5308 C
5309  iadr=iadr+1
5310  do v=1,ivec
5311  i=ii(v)
5312 C
5313 C ...in x direction
5314 C
5315  xp=xparam(v)
5316  xpi=1.0-xp
5317  xp2=xp*xp
5318  xpi2=xpi*xpi
5319 C
5320  cxd=3.0*xp2-1.0
5321  cxdi=-3.0*xpi2+1.0
5322 C
5323  sum=hxi(v)*hyi*hzi*(
5324  > -(
5325  > (fin(0,i,j,k) -fin(0,i,j+1,k))-
5326  > (fin(0,i+1,j,k)-fin(0,i+1,j+1,k)))
5327  > +(
5328  > (fin(0,i,j,k+1) -fin(0,i,j+1,k+1))-
5329  > (fin(0,i+1,j,k+1)-fin(0,i+1,j+1,k+1))))
5330 C
5331  sum=sum+sixth*hyi*hx(v)*hzi*(
5332  > -(
5333  > cxdi*(-fin(1,i,j,k) +fin(1,i,j+1,k))+
5334  > cxd*(-fin(1,i+1,j,k)+fin(1,i+1,j+1,k)))
5335  > +(
5336  > cxdi*(-fin(1,i,j,k+1) +fin(1,i,j+1,k+1))+
5337  > cxd*(-fin(1,i+1,j,k+1)+fin(1,i+1,j+1,k+1))))
5338 C
5339  sum=sum+sixth*hxi(v)*hy*hzi*(
5340  > -(
5341  > -(cydi*fin(2,i,j,k) +cyd*fin(2,i,j+1,k))
5342  > +(cydi*fin(2,i+1,j,k)+cyd*fin(2,i+1,j+1,k)))
5343  > +(
5344  > -(cydi*fin(2,i,j,k+1) +cyd*fin(2,i,j+1,k+1))
5345  > +(cydi*fin(2,i+1,j,k+1)+cyd*fin(2,i+1,j+1,k+1))))
5346 C
5347  sum=sum+sixth*hxi(v)*hyi*hz*(
5348  > czdi*(
5349  > (fin(3,i,j,k) -fin(3,i,j+1,k))-
5350  > (fin(3,i+1,j,k)-fin(3,i+1,j+1,k)))
5351  > +czd*(
5352  > (fin(3,i,j,k+1) -fin(3,i,j+1,k+1))-
5353  > (fin(3,i+1,j,k+1)-fin(3,i+1,j+1,k+1))))
5354 C
5355  sum=sum+z36th*hx(v)*hy*hzi*(
5356  > -(
5357  > cxdi*(cydi*fin(4,i,j,k) +cyd*fin(4,i,j+1,k))+
5358  > cxd*(cydi*fin(4,i+1,j,k)+cyd*fin(4,i+1,j+1,k)))
5359  > +(
5360  > cxdi*(cydi*fin(4,i,j,k+1) +cyd*fin(4,i,j+1,k+1))+
5361  > cxd*(cydi*fin(4,i+1,j,k+1)+cyd*fin(4,i+1,j+1,k+1))))
5362 C
5363  sum=sum+z36th*hyi*hx(v)*hz*(
5364  > czdi*(
5365  > cxdi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
5366  > cxd*(-fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
5367  > +czd*(
5368  > cxdi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
5369  > cxd*(-fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
5370 C
5371  sum=sum+z36th*hxi(v)*hy*hz*(
5372  > czdi*(
5373  > -(cydi*fin(6,i,j,k) +cyd*fin(6,i,j+1,k))
5374  > +(cydi*fin(6,i+1,j,k)+cyd*fin(6,i+1,j+1,k)))
5375  > +czd*(
5376  > -(cydi*fin(6,i,j,k+1) +cyd*fin(6,i,j+1,k+1))
5377  > +(cydi*fin(6,i+1,j,k+1)+cyd*fin(6,i+1,j+1,k+1))))
5378 C
5379  sum=sum+z216th*hx(v)*hy*hz*(
5380  > czdi*(
5381  > cxdi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
5382  > cxd*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
5383  > +czd*(
5384  > cxdi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
5385  > cxd*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
5386 C
5387  fval(v,iadr)=sum
5388  enddo
5389  endif
5390 C
5391  if(ict(6).eq.1) then
5392 C ! fxzz
5393  j=jj
5394  k=kk
5395 C
5396 C ...and in y direction
5397 C
5398  yp=yparam
5399  ypi=1.0-yp
5400  yp2=yp*yp
5401  ypi2=ypi*ypi
5402 C
5403  cy=yp*(yp2-1.0)
5404  cyi=ypi*(ypi2-1.0)
5405  hy2=hy*hy
5406 
5407 C
5408 C ...and in z direction
5409 C
5410  zp=zparam
5411  zpi=1.0-zp
5412 C
5413  iadr=iadr+1
5414  do v=1,ivec
5415  i=ii(v)
5416 C
5417 C ...in x direction
5418 C
5419  xp=xparam(v)
5420  xpi=1.0-xp
5421  xp2=xp*xp
5422  xpi2=xpi*xpi
5423 C
5424  cxd=3.0*xp2-1.0
5425  cxdi=-3.0*xpi2+1.0
5426 C
5427  sum=hxi(v)*(
5428  > zpi*(
5429  > -(ypi*fin(3,i,j,k) +yp*fin(3,i,j+1,k))
5430  > +(ypi*fin(3,i+1,j,k)+yp*fin(3,i+1,j+1,k)))
5431  > +zp*(
5432  > -(ypi*fin(3,i,j,k+1) +yp*fin(3,i,j+1,k+1))
5433  > +(ypi*fin(3,i+1,j,k+1)+yp*fin(3,i+1,j+1,k+1))))
5434 C
5435  sum=sum+sixth*hx(v)*(
5436  > zpi*(
5437  > cxdi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
5438  > cxd*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
5439  > +zp*(
5440  > cxdi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
5441  > cxd*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
5442 C
5443  sum=sum+sixth*hy2*hxi(v)*(
5444  > zpi*(
5445  > -(cyi*fin(6,i,j,k) +cy*fin(6,i,j+1,k))
5446  > +(cyi*fin(6,i+1,j,k)+cy*fin(6,i+1,j+1,k)))
5447  > +zp*(
5448  > -(cyi*fin(6,i,j,k+1) +cy*fin(6,i,j+1,k+1))
5449  > +(cyi*fin(6,i+1,j,k+1)+cy*fin(6,i+1,j+1,k+1))))
5450 C
5451  sum=sum+z36th*hx(v)*hy2*(
5452  > zpi*(
5453  > cxdi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
5454  > cxd*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
5455  > +zp*(
5456  > cxdi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
5457  > cxd*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
5458 C
5459  fval(v,iadr)=sum
5460  enddo
5461  endif
5462 C
5463  if(ict(7).eq.1) then
5464 C ! fyyz
5465  j=jj
5466  k=kk
5467 C
5468 C
5469 C ...and in y direction
5470 C
5471  yp=yparam
5472  ypi=1.0-yp
5473 C
5474 C ...and in z direction
5475 C
5476  zp=zparam
5477  zpi=1.0-zp
5478  zp2=zp*zp
5479  zpi2=zpi*zpi
5480 C
5481  czd=3.0*zp2-1.0
5482  czdi=-3.0*zpi2+1.0
5483 C
5484  iadr=iadr+1
5485  do v=1,ivec
5486  i=ii(v)
5487 C
5488 C ...in x direction
5489 C
5490  xp=xparam(v)
5491  xpi=1.0-xp
5492  xp2=xp*xp
5493  xpi2=xpi*xpi
5494 C
5495  cx=xp*(xp2-1.0)
5496  cxi=xpi*(xpi2-1.0)
5497  hx2=hx(v)*hx(v)
5498 C
5499  sum=hzi*(
5500  > -(
5501  > xpi*(ypi*fin(2,i,j,k) +yp*fin(2,i,j+1,k))+
5502  > xp*(ypi*fin(2,i+1,j,k)+yp*fin(2,i+1,j+1,k)))
5503  > +(
5504  > xpi*(ypi*fin(2,i,j,k+1) +yp*fin(2,i,j+1,k+1))+
5505  > xp*(ypi*fin(2,i+1,j,k+1)+yp*fin(2,i+1,j+1,k+1))))
5506 C
5507  sum=sum+sixth*hx2*hzi*(
5508  > -(
5509  > cxi*(ypi*fin(4,i,j,k) +yp*fin(4,i,j+1,k))+
5510  > cx*(ypi*fin(4,i+1,j,k)+yp*fin(4,i+1,j+1,k)))
5511  > +(
5512  > cxi*(ypi*fin(4,i,j,k+1) +yp*fin(4,i,j+1,k+1))+
5513  > cx*(ypi*fin(4,i+1,j,k+1)+yp*fin(4,i+1,j+1,k+1))))
5514 C
5515  sum=sum+sixth*hz*(
5516  > czdi*(
5517  > xpi*(ypi*fin(6,i,j,k) +yp*fin(6,i,j+1,k))+
5518  > xp*(ypi*fin(6,i+1,j,k)+yp*fin(6,i+1,j+1,k)))
5519  > +czd*(
5520  > xpi*(ypi*fin(6,i,j,k+1) +yp*fin(6,i,j+1,k+1))+
5521  > xp*(ypi*fin(6,i+1,j,k+1)+yp*fin(6,i+1,j+1,k+1))))
5522 C
5523  sum=sum+z36th*hx2*hz*(
5524  > czdi*(
5525  > cxi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
5526  > cx*(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
5527  > +czd*(
5528  > cxi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
5529  > cx*(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
5530 C
5531  fval(v,iadr)=sum
5532  enddo
5533  endif
5534 C
5535  if(ict(8).eq.1) then
5536 C ! fyzz
5537  j=jj
5538  k=kk
5539 C
5540 C ...and in y direction
5541 C
5542  yp=yparam
5543  ypi=1.0-yp
5544  yp2=yp*yp
5545  ypi2=ypi*ypi
5546 C
5547  cyd=3.0*yp2-1.0
5548  cydi=-3.0*ypi2+1.0
5549 C
5550 C ...and in z direction
5551 C
5552  zp=zparam
5553  zpi=1.0-zp
5554 C
5555  iadr=iadr+1
5556  do v=1,ivec
5557  i=ii(v)
5558 C
5559 C ...in x direction
5560 C
5561  xp=xparam(v)
5562  xpi=1.0-xp
5563  xp2=xp*xp
5564  xpi2=xpi*xpi
5565 C
5566  cx=xp*(xp2-1.0)
5567  cxi=xpi*(xpi2-1.0)
5568  hx2=hx(v)*hx(v)
5569 C
5570  sum=hyi*(
5571  > zpi*(
5572  > xpi*(-fin(3,i,j,k) +fin(3,i,j+1,k))+
5573  > xp*( -fin(3,i+1,j,k)+fin(3,i+1,j+1,k)))
5574  > +zp*(
5575  > xpi*(-fin(3,i,j,k+1) +fin(3,i,j+1,k+1))+
5576  > xp*( -fin(3,i+1,j,k+1)+fin(3,i+1,j+1,k+1))))
5577 C
5578  sum=sum+sixth*hx2*hyi*(
5579  > zpi*(
5580  > cxi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
5581  > cx*( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
5582  > +zp*(
5583  > cxi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
5584  > cx*( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
5585 C
5586  sum=sum+sixth*hy*(
5587  > zpi*(
5588  > xpi*(cydi*fin(6,i,j,k) +cyd*fin(6,i,j+1,k))+
5589  > xp*(cydi*fin(6,i+1,j,k)+cyd*fin(6,i+1,j+1,k)))
5590  > +zp*(
5591  > xpi*(cydi*fin(6,i,j,k+1) +cyd*fin(6,i,j+1,k+1))+
5592  > xp*(cydi*fin(6,i+1,j,k+1)+cyd*fin(6,i+1,j+1,k+1))))
5593 C
5594  sum=sum+z36th*hx2*hy*(
5595  > zpi*(
5596  > cxi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
5597  > cx*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
5598  > +zp*(
5599  > cxi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
5600  > cx*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
5601  fval(v,iadr)=sum
5602  enddo
5603  endif
5604 C
5605 C----------------------------------
5606 C 3rd derivatives (3 in each coordinate)
5607 C
5608  else if(ict(1).eq.-3) then
5609  if(ict(2).eq.1) then
5610 C ! fxxx
5611  iadr=iadr+1
5612  do v=1,ivec
5613  i=ii(v)
5614  j=jj
5615  k=kk
5616 C
5617 C ...and in y direction
5618 C
5619  yp=yparam
5620  ypi=1.0-yp
5621  yp2=yp*yp
5622  ypi2=ypi*ypi
5623 C
5624  cy=yp*(yp2-1.0)
5625  cyi=ypi*(ypi2-1.0)
5626  hy2=hy*hy
5627 C
5628 C ...and in z direction
5629 C
5630  zp=zparam
5631  zpi=1.0-zp
5632  zp2=zp*zp
5633  zpi2=zpi*zpi
5634 C
5635  cz=zp*(zp2-1.0)
5636  czi=zpi*(zpi2-1.0)
5637  hz2=hz*hz
5638 C
5639  sum=hxi(v)*(
5640  > zpi*(
5641  > -(ypi*fin(1,i,j,k) +yp*fin(1,i,j+1,k))
5642  > +(ypi*fin(1,i+1,j,k)+yp*fin(1,i+1,j+1,k)))
5643  > +zp*(
5644  > -(ypi*fin(1,i,j,k+1) +yp*fin(1,i,j+1,k+1))
5645  > +(ypi*fin(1,i+1,j,k+1)+yp*fin(1,i+1,j+1,k+1))))
5646 C
5647  sum=sum+sixth*hy2*hxi(v)*(
5648  > zpi*(
5649  > -(cyi*fin(4,i,j,k) +cy*fin(4,i,j+1,k))
5650  > +(cyi*fin(4,i+1,j,k)+cy*fin(4,i+1,j+1,k)))
5651  > +zp*(
5652  > -(cyi*fin(4,i,j,k+1) +cy*fin(4,i,j+1,k+1))
5653  > +(cyi*fin(4,i+1,j,k+1)+cy*fin(4,i+1,j+1,k+1))))
5654 C
5655  sum=sum+sixth*hz2*hxi(v)*(
5656  > czi*(
5657  > -(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))
5658  > +(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
5659  > +cz*(
5660  > -(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))
5661  > +(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
5662 C
5663  sum=sum+z36th*hy2*hz2*hxi(v)*(
5664  > czi*(
5665  > -(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))
5666  > +(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
5667  > +cz*(
5668  > -(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))
5669  > +(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
5670 C
5671  fval(v,iadr)=sum
5672  enddo
5673  endif
5674 C
5675  if(ict(3).eq.1) then
5676 C ! fyyy
5677  j=jj
5678  k=kk
5679 C
5680 C ...and in z direction
5681 C
5682  zp=zparam
5683  zpi=1.0-zp
5684  zp2=zp*zp
5685  zpi2=zpi*zpi
5686 C
5687  cz=zp*(zp2-1.0)
5688  czi=zpi*(zpi2-1.0)
5689  hz2=hz*hz
5690 C
5691  iadr=iadr+1
5692  do v=1,ivec
5693  i=ii(v)
5694 C
5695 C ...in x direction
5696 C
5697  xp=xparam(v)
5698  xpi=1.0-xp
5699  xp2=xp*xp
5700  xpi2=xpi*xpi
5701 C
5702  cx=xp*(xp2-1.0)
5703  cxi=xpi*(xpi2-1.0)
5704  hx2=hx(v)*hx(v)
5705 C
5706  sum=hyi*(
5707  > zpi*(
5708  > xpi*(-fin(2,i,j,k) +fin(2,i,j+1,k))+
5709  > xp*( -fin(2,i+1,j,k)+fin(2,i+1,j+1,k)))
5710  > +zp*(
5711  > xpi*(-fin(2,i,j,k+1) +fin(2,i,j+1,k+1))+
5712  > xp*( -fin(2,i+1,j,k+1)+fin(2,i+1,j+1,k+1))))
5713 C
5714  sum=sum+sixth*hx2*hyi*(
5715  > zpi*(
5716  > cxi*(-fin(4,i,j,k) +fin(4,i,j+1,k))+
5717  > cx*( -fin(4,i+1,j,k)+fin(4,i+1,j+1,k)))
5718  > +zp*(
5719  > cxi*(-fin(4,i,j,k+1) +fin(4,i,j+1,k+1))+
5720  > cx*( -fin(4,i+1,j,k+1)+fin(4,i+1,j+1,k+1))))
5721 C
5722  sum=sum+sixth*hz2*hyi*(
5723  > czi*(
5724  > xpi*(-fin(6,i,j,k) +fin(6,i,j+1,k))+
5725  > xp*( -fin(6,i+1,j,k)+fin(6,i+1,j+1,k)))
5726  > +cz*(
5727  > xpi*(-fin(6,i,j,k+1) +fin(6,i,j+1,k+1))+
5728  > xp*( -fin(6,i+1,j,k+1)+fin(6,i+1,j+1,k+1))))
5729 C
5730  sum=sum+z36th*hx2*hz2*hyi*(
5731  > czi*(
5732  > cxi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
5733  > cx*( -fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
5734  > +cz*(
5735  > cxi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
5736  > cx*( -fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
5737 C
5738  fval(v,iadr)=sum
5739  enddo
5740  endif
5741 C
5742  if(ict(4).eq.1) then
5743 C ! fzzz
5744  j=jj
5745  k=kk
5746 C
5747 C ...and in y direction
5748 C
5749  yp=yparam
5750  ypi=1.0-yp
5751  yp2=yp*yp
5752  ypi2=ypi*ypi
5753 C
5754  cy=yp*(yp2-1.0)
5755  cyi=ypi*(ypi2-1.0)
5756  hy2=hy*hy
5757 C
5758  iadr=iadr+1
5759  do v=1,ivec
5760  i=ii(v)
5761 C
5762 C ...in x direction
5763 C
5764  xp=xparam(v)
5765  xpi=1.0-xp
5766  xp2=xp*xp
5767  xpi2=xpi*xpi
5768 C
5769  cx=xp*(xp2-1.0)
5770  cxi=xpi*(xpi2-1.0)
5771  hx2=hx(v)*hx(v)
5772 C
5773  sum=hzi*(
5774  > -(
5775  > xpi*(ypi*fin(3,i,j,k) +yp*fin(3,i,j+1,k))+
5776  > xp*(ypi*fin(3,i+1,j,k)+yp*fin(3,i+1,j+1,k)))
5777  > +(
5778  > xpi*(ypi*fin(3,i,j,k+1) +yp*fin(3,i,j+1,k+1))+
5779  > xp*(ypi*fin(3,i+1,j,k+1)+yp*fin(3,i+1,j+1,k+1))))
5780 C
5781  sum=sum+sixth*hx2*hzi*(
5782  > -(
5783  > cxi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
5784  > cx*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
5785  > +(
5786  > cxi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
5787  > cx*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
5788 C
5789  sum=sum+sixth*hy2*hzi*(
5790  > -(
5791  > xpi*(cyi*fin(6,i,j,k) +cy*fin(6,i,j+1,k))+
5792  > xp*(cyi*fin(6,i+1,j,k)+cy*fin(6,i+1,j+1,k)))
5793  > +(
5794  > xpi*(cyi*fin(6,i,j,k+1) +cy*fin(6,i,j+1,k+1))+
5795  > xp*(cyi*fin(6,i+1,j,k+1)+cy*fin(6,i+1,j+1,k+1))))
5796 C
5797  sum=sum+z36th*hx2*hy2*hzi*(
5798  > -(
5799  > cxi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
5800  > cx*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
5801  > +(
5802  > cxi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
5803  > cx*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
5804 C
5805  fval(v,iadr)=sum
5806  enddo
5807  endif
5808 C
5809 C----------------------------------
5810 C 4th derivatives (.le.2 in each coordinate)
5811 C
5812  else if(ict(1).eq.4) then
5813  if(ict(2).eq.1) then
5814 C ! fxxyy
5815  j=jj
5816  k=kk
5817 C
5818 C ...and in y direction
5819 C
5820  yp=yparam
5821  ypi=1.0-yp
5822 C
5823 C ...and in z direction
5824 C
5825  zp=zparam
5826  zpi=1.0-zp
5827  zp2=zp*zp
5828  zpi2=zpi*zpi
5829 C
5830  cz=zp*(zp2-1.0)
5831  czi=zpi*(zpi2-1.0)
5832  hz2=hz*hz
5833 C
5834  iadr=iadr+1
5835  do v=1,ivec
5836  i=ii(v)
5837 C
5838 C ...in x direction
5839 C
5840  xp=xparam(v)
5841  xpi=1.0-xp
5842 C
5843  sum=(
5844  > zpi*(
5845  > xpi*(ypi*fin(4,i,j,k) +yp*fin(4,i,j+1,k))+
5846  > xp*( ypi*fin(4,i+1,j,k)+yp*fin(4,i+1,j+1,k)))
5847  > +zp*(
5848  > xpi*(ypi*fin(4,i,j,k+1) +yp*fin(4,i,j+1,k+1))+
5849  > xp*(ypi*fin(4,i+1,j,k+1)+yp*fin(4,i+1,j+1,k+1))))
5850 C
5851  sum=sum+sixth*hz2*(
5852  > czi*(
5853  > xpi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
5854  > xp*(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
5855  > +cz*(
5856  > xpi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
5857  > xp*(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
5858 C
5859  fval(v,iadr)=sum
5860  enddo
5861  endif
5862 C
5863  if(ict(3).eq.1) then
5864 C ! fxxyz
5865  j=jj
5866  k=kk
5867 C
5868 C ...and in y direction
5869 C
5870  yp=yparam
5871  ypi=1.0-yp
5872  yp2=yp*yp
5873  ypi2=ypi*ypi
5874 C
5875  cyd=3.0*yp2-1.0
5876  cydi=-3.0*ypi2+1.0
5877 C
5878 C ...and in z direction
5879 C
5880  zp=zparam
5881  zpi=1.0-zp
5882  zp2=zp*zp
5883  zpi2=zpi*zpi
5884 C
5885  czd=3.0*zp2-1.0
5886  czdi=-3.0*zpi2+1.0
5887 C
5888  iadr=iadr+1
5889  do v=1,ivec
5890  i=ii(v)
5891 C
5892 C ...in x direction
5893 C
5894  xp=xparam(v)
5895  xpi=1.0-xp
5896 C
5897  sum=hyi*hzi*(
5898  > -(
5899  > xpi*(-fin(1,i,j,k) +fin(1,i,j+1,k))+
5900  > xp*( -fin(1,i+1,j,k)+fin(1,i+1,j+1,k)))
5901  > +(
5902  > xpi*(-fin(1,i,j,k+1) +fin(1,i,j+1,k+1))+
5903  > xp*( -fin(1,i+1,j,k+1)+fin(1,i+1,j+1,k+1))))
5904 C
5905  sum=sum+sixth*hy*hzi*(
5906  > -(
5907  > xpi*(cydi*fin(4,i,j,k) +cyd*fin(4,i,j+1,k))+
5908  > xp*(cydi*fin(4,i+1,j,k)+cyd*fin(4,i+1,j+1,k)))
5909  > +(
5910  > xpi*(cydi*fin(4,i,j,k+1) +cyd*fin(4,i,j+1,k+1))+
5911  > xp*(cydi*fin(4,i+1,j,k+1)+cyd*fin(4,i+1,j+1,k+1))))
5912 C
5913  sum=sum+sixth*hz*hyi*(
5914  > czdi*(
5915  > xpi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
5916  > xp*( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
5917  > +czd*(
5918  > xpi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
5919  > xp*( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
5920 C
5921  sum=sum+z36th*hy*hz*(
5922  > czdi*(
5923  > xpi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
5924  > xp*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
5925  > +czd*(
5926  > xpi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
5927  > xp*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
5928 C
5929  fval(v,iadr)=sum
5930  enddo
5931  endif
5932 C
5933  if(ict(4).eq.1) then
5934 C ! fxxzz
5935  j=jj
5936  k=kk
5937 C
5938 C ...and in y direction
5939 C
5940  yp=yparam
5941  ypi=1.0-yp
5942  yp2=yp*yp
5943  ypi2=ypi*ypi
5944 C
5945  cy=yp*(yp2-1.0)
5946  cyi=ypi*(ypi2-1.0)
5947  hy2=hy*hy
5948 C
5949 C ...and in z direction
5950 C
5951  zp=zparam
5952  zpi=1.0-zp
5953 C
5954  iadr=iadr+1
5955  do v=1,ivec
5956  i=ii(v)
5957 C
5958 C ...in x direction
5959 C
5960  xp=xparam(v)
5961  xpi=1.0-xp
5962 C
5963  sum=(
5964  > zpi*(
5965  > xpi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
5966  > xp*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
5967  > +zp*(
5968  > xpi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
5969  > xp*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
5970 C
5971  sum=sum+sixth*hy2*(
5972  > zpi*(
5973  > xpi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
5974  > xp*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
5975  > +zp*(
5976  > xpi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
5977  > xp*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
5978 C
5979  fval(v,iadr)=sum
5980  enddo
5981  endif
5982 C
5983  if(ict(5).eq.1) then
5984 C ! fxyyz
5985  j=jj
5986  k=kk
5987 C
5988 C ...and in y direction
5989 C
5990  yp=yparam
5991  ypi=1.0-yp
5992 C
5993 C ...and in z direction
5994 C
5995  zp=zparam
5996  zpi=1.0-zp
5997  zp2=zp*zp
5998  zpi2=zpi*zpi
5999 
6000  czd=3.0*zp2-1.0
6001  czdi=-3.0*zpi2+1.0
6002 C
6003  iadr=iadr+1
6004  do v=1,ivec
6005  i=ii(v)
6006 C
6007 C ...in x direction
6008 C
6009  xp=xparam(v)
6010  xpi=1.0-xp
6011  xp2=xp*xp
6012  xpi2=xpi*xpi
6013 C
6014  cxd=3.0*xp2-1.0
6015  cxdi=-3.0*xpi2+1.0
6016 C
6017  sum=hxi(v)*hzi*(
6018  > -(
6019  > -(ypi*fin(2,i,j,k) +yp*fin(2,i,j+1,k))
6020  > +(ypi*fin(2,i+1,j,k)+yp*fin(2,i+1,j+1,k)))
6021  > +(
6022  > -(ypi*fin(2,i,j,k+1) +yp*fin(2,i,j+1,k+1))
6023  > +(ypi*fin(2,i+1,j,k+1)+yp*fin(2,i+1,j+1,k+1))))
6024 C
6025  sum=sum+sixth*hx(v)*hzi*(
6026  > -(
6027  > cxdi*(ypi*fin(4,i,j,k) +yp*fin(4,i,j+1,k))+
6028  > cxd*(ypi*fin(4,i+1,j,k)+yp*fin(4,i+1,j+1,k)))
6029  > +(
6030  > cxdi*(ypi*fin(4,i,j,k+1) +yp*fin(4,i,j+1,k+1))+
6031  > cxd*(ypi*fin(4,i+1,j,k+1)+yp*fin(4,i+1,j+1,k+1))))
6032 C
6033  sum=sum+sixth*hz*hxi(v)*(
6034  > czdi*(
6035  > -(ypi*fin(6,i,j,k) +yp*fin(6,i,j+1,k))
6036  > +(ypi*fin(6,i+1,j,k)+yp*fin(6,i+1,j+1,k)))
6037  > +czd*(
6038  > -(ypi*fin(6,i,j,k+1) +yp*fin(6,i,j+1,k+1))
6039  > +(ypi*fin(6,i+1,j,k+1)+yp*fin(6,i+1,j+1,k+1))))
6040 C
6041  sum=sum+z36th*hx(v)*hz*(
6042  > czdi*(
6043  > cxdi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
6044  > cxd*(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
6045  > +czd*(
6046  > cxdi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
6047  > cxd*(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
6048 C
6049  fval(v,iadr)=sum
6050  enddo
6051  endif
6052 C
6053  if(ict(6).eq.1) then
6054 C ! fxyzz
6055  j=jj
6056  k=kk
6057 C
6058 C ...and in y direction
6059 C
6060  yp=yparam
6061  ypi=1.0-yp
6062  yp2=yp*yp
6063  ypi2=ypi*ypi
6064 
6065  cyd=3.0*yp2-1.0
6066  cydi=-3.0*ypi2+1.0
6067 C
6068 C ...and in z direction
6069 C
6070  zp=zparam
6071  zpi=1.0-zp
6072 C
6073  iadr=iadr+1
6074  do v=1,ivec
6075  i=ii(v)
6076 C
6077 C ...in x direction
6078 C
6079  xp=xparam(v)
6080  xpi=1.0-xp
6081  xp2=xp*xp
6082  xpi2=xpi*xpi
6083 
6084  cxd=3.0*xp2-1.0
6085  cxdi=-3.0*xpi2+1.0
6086 C
6087  sum=hyi*hxi(v)*(
6088  > zpi*(
6089  > ( +fin(3,i,j,k) -fin(3,i,j+1,k))
6090  > +( -fin(3,i+1,j,k)+fin(3,i+1,j+1,k)))
6091  > +zp*(
6092  > ( +fin(3,i,j,k+1) -fin(3,i,j+1,k+1))
6093  > +( -fin(3,i+1,j,k+1)+fin(3,i+1,j+1,k+1))))
6094 C
6095  sum=sum+sixth*hx(v)*hyi*(
6096  > zpi*(
6097  > cxdi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
6098  > cxd*( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
6099  > +zp*(
6100  > cxdi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
6101  > cxd*( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
6102 C
6103  sum=sum+sixth*hy*hxi(v)*(
6104  > zpi*(
6105  > -(cydi*fin(6,i,j,k) +cyd*fin(6,i,j+1,k))
6106  > +(cydi*fin(6,i+1,j,k)+cyd*fin(6,i+1,j+1,k)))
6107  > +zp*(
6108  > -(cydi*fin(6,i,j,k+1) +cyd*fin(6,i,j+1,k+1))
6109  > +(cydi*fin(6,i+1,j,k+1)+cyd*fin(6,i+1,j+1,k+1))))
6110 C
6111  sum=sum+z36th*hx(v)*hy*(
6112  > zpi*(
6113  > cxdi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
6114  > cxd*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
6115  > +zp*(
6116  > cxdi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
6117  > cxd*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
6118 C
6119  fval(v,iadr)=sum
6120  enddo
6121  endif
6122 C
6123  if(ict(7).eq.1) then
6124 C ! fyyzz
6125  j=jj
6126  k=kk
6127 C
6128 C ...and in y direction
6129 C
6130  yp=yparam
6131  ypi=1.0-yp
6132 C
6133 C ...and in z direction
6134 C
6135  zp=zparam
6136  zpi=1.0-zp
6137 C
6138  iadr=iadr+1
6139  do v=1,ivec
6140  i=ii(v)
6141 C
6142 C ...in x direction
6143 C
6144  xp=xparam(v)
6145  xpi=1.0-xp
6146  xp2=xp*xp
6147  xpi2=xpi*xpi
6148 C
6149  cx=xp*(xp2-1.0)
6150  cxi=xpi*(xpi2-1.0)
6151  hx2=hx(v)*hx(v)
6152 C
6153  sum=(
6154  > zpi*(
6155  > xpi*(ypi*fin(6,i,j,k) +yp*fin(6,i,j+1,k))+
6156  > xp*( ypi*fin(6,i+1,j,k)+yp*fin(6,i+1,j+1,k)))
6157  > +zp*(
6158  > xpi*(ypi*fin(6,i,j,k+1) +yp*fin(6,i,j+1,k+1))+
6159  > xp*(ypi*fin(6,i+1,j,k+1)+yp*fin(6,i+1,j+1,k+1))))
6160 C
6161  sum=sum+sixth*hx2*(
6162  > zpi*(
6163  > cxi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
6164  > cx*( ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
6165  > +zp*(
6166  > cxi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
6167  > cx*( ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
6168 C
6169  fval(v,iadr)=sum
6170  enddo
6171  endif
6172 C
6173 C----------------------------------
6174 C 4th derivatives (3 in a coordinate)
6175 C
6176  else if(ict(1).eq.-4) then
6177  if(ict(2).eq.1) then
6178 C ! fxxxy
6179  j=jj
6180  k=kk
6181 C
6182 C ...and in y direction
6183 C
6184  yp=yparam
6185  ypi=1.0-yp
6186  yp2=yp*yp
6187  ypi2=ypi*ypi
6188 
6189  cyd=3.0*yp2-1.0
6190  cydi=-3.0*ypi2+1.0
6191 C
6192 C ...and in z direction
6193 C
6194  zp=zparam
6195  zpi=1.0-zp
6196  zp2=zp*zp
6197  zpi2=zpi*zpi
6198 C
6199  cz=zp*(zp2-1.0)
6200  czi=zpi*(zpi2-1.0)
6201  hz2=hz*hz
6202 C
6203  iadr=iadr+1
6204  do v=1,ivec
6205  i=ii(v)
6206 C
6207  sum=hyi*hxi(v)*(
6208  > zpi*(
6209  > ( fin(1,i,j,k) -fin(1,i,j+1,k))+
6210  > ( -fin(1,i+1,j,k)+fin(1,i+1,j+1,k)))
6211  > +zp*(
6212  > ( fin(1,i,j,k+1) -fin(1,i,j+1,k+1))+
6213  > ( -fin(1,i+1,j,k+1)+fin(1,i+1,j+1,k+1))))
6214 C
6215  sum=sum+sixth*hy*hxi(v)*(
6216  > zpi*(
6217  > -(cydi*fin(4,i,j,k) +cyd*fin(4,i,j+1,k))+
6218  > (cydi*fin(4,i+1,j,k)+cyd*fin(4,i+1,j+1,k)))
6219  > +zp*(
6220  > -(cydi*fin(4,i,j,k+1) +cyd*fin(4,i,j+1,k+1))+
6221  > (cydi*fin(4,i+1,j,k+1)+cyd*fin(4,i+1,j+1,k+1))))
6222 C
6223  sum=sum+sixth*hz2*hyi*hxi(v)*(
6224  > czi*(
6225  > ( fin(5,i,j,k) -fin(5,i,j+1,k))+
6226  > ( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
6227  > +cz*(
6228  > ( fin(5,i,j,k+1) -fin(5,i,j+1,k+1))+
6229  > ( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
6230 C
6231  sum=sum+z36th*hy*hz2*hxi(v)*(
6232  > czi*(
6233  > -(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
6234  > (cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
6235  > +cz*(
6236  > -(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
6237  > (cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
6238 C
6239  fval(v,iadr)=sum
6240  enddo
6241  endif
6242 C
6243  if(ict(3).eq.1) then
6244 C ! fxxxz
6245  j=jj
6246  k=kk
6247 C
6248 C ...and in y direction
6249 C
6250  yp=yparam
6251  ypi=1.0-yp
6252  yp2=yp*yp
6253  ypi2=ypi*ypi
6254 C
6255  cy=yp*(yp2-1.0)
6256  cyi=ypi*(ypi2-1.0)
6257  hy2=hy*hy
6258 C
6259 C ...and in z direction
6260 C
6261  zp=zparam
6262  zpi=1.0-zp
6263  zp2=zp*zp
6264  zpi2=zpi*zpi
6265 
6266  czd=3.0*zp2-1.0
6267  czdi=-3.0*zpi2+1.0
6268 C
6269  iadr=iadr+1
6270  do v=1,ivec
6271  i=ii(v)
6272 C
6273  sum=hzi*hxi(v)*(
6274  > (
6275  > +(ypi*fin(1,i,j,k) +yp*fin(1,i,j+1,k))
6276  > -(ypi*fin(1,i+1,j,k)+yp*fin(1,i+1,j+1,k)))
6277  > +(
6278  > -(ypi*fin(1,i,j,k+1) +yp*fin(1,i,j+1,k+1))
6279  > +(ypi*fin(1,i+1,j,k+1)+yp*fin(1,i+1,j+1,k+1))))
6280 C
6281  sum=sum+sixth*hy2*hzi*hxi(v)*(
6282  > (
6283  > +(cyi*fin(4,i,j,k) +cy*fin(4,i,j+1,k))
6284  > -(cyi*fin(4,i+1,j,k)+cy*fin(4,i+1,j+1,k)))
6285  > +(
6286  > -(cyi*fin(4,i,j,k+1) +cy*fin(4,i,j+1,k+1))
6287  > +(cyi*fin(4,i+1,j,k+1)+cy*fin(4,i+1,j+1,k+1))))
6288 C
6289  sum=sum+sixth*hz*hxi(v)*(
6290  > czdi*(
6291  > -(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))
6292  > +(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
6293  > +czd*(
6294  > -(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))
6295  > +(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
6296 C
6297  sum=sum+z36th*hy2*hz*hxi(v)*(
6298  > czdi*(
6299  > -(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))
6300  > +(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
6301  > +czd*(
6302  > -(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))
6303  > +(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
6304 C
6305  fval(v,iadr)=sum
6306  enddo
6307  endif
6308 C
6309  if(ict(4).eq.1) then
6310 C ! fxyyy
6311  j=jj
6312  k=kk
6313 C
6314 C ...and in z direction
6315 C
6316  zp=zparam
6317  zpi=1.0-zp
6318  zp2=zp*zp
6319  zpi2=zpi*zpi
6320 C
6321  cz=zp*(zp2-1.0)
6322  czi=zpi*(zpi2-1.0)
6323  hz2=hz*hz
6324 C
6325  iadr=iadr+1
6326  do v=1,ivec
6327  i=ii(v)
6328 C
6329 C ...in x direction
6330 C
6331  xp=xparam(v)
6332  xpi=1.0-xp
6333  xp2=xp*xp
6334  xpi2=xpi*xpi
6335 
6336  cxd=3.0*xp2-1.0
6337  cxdi=-3.0*xpi2+1.0
6338 C
6339  sum=hxi(v)*hyi*(
6340  > zpi*(
6341  > ( fin(2,i,j,k) -fin(2,i,j+1,k))
6342  > +(-fin(2,i+1,j,k)+fin(2,i+1,j+1,k)))
6343  > +zp*(
6344  > ( fin(2,i,j,k+1) -fin(2,i,j+1,k+1))
6345  > +(-fin(2,i+1,j,k+1)+fin(2,i+1,j+1,k+1))))
6346 C
6347  sum=sum+sixth*hx(v)*hyi*(
6348  > zpi*(
6349  > cxdi*(-fin(4,i,j,k) +fin(4,i,j+1,k))+
6350  > cxd*( -fin(4,i+1,j,k)+fin(4,i+1,j+1,k)))
6351  > +zp*(
6352  > cxdi*(-fin(4,i,j,k+1) +fin(4,i,j+1,k+1))+
6353  > cxd*( -fin(4,i+1,j,k+1)+fin(4,i+1,j+1,k+1))))
6354 C
6355  sum=sum+sixth*hz2*hxi(v)*hyi*(
6356  > czi*(
6357  > ( fin(6,i,j,k) -fin(6,i,j+1,k))
6358  > +(-fin(6,i+1,j,k)+fin(6,i+1,j+1,k)))
6359  > +cz*(
6360  > ( fin(6,i,j,k+1) -fin(6,i,j+1,k+1))
6361  > +(-fin(6,i+1,j,k+1)+fin(6,i+1,j+1,k+1))))
6362 C
6363  sum=sum+z36th*hx(v)*hz2*hyi*(
6364  > czi*(
6365  > cxdi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
6366  > cxd*( -fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
6367  > +cz*(
6368  > cxdi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
6369  > cxd*( -fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
6370 C
6371  fval(v,iadr)=sum
6372  enddo
6373  endif
6374 C
6375  if(ict(5).eq.1) then
6376 C ! fxzzz
6377  j=jj
6378  k=kk
6379 C
6380 C ...and in y direction
6381 C
6382  yp=yparam
6383  ypi=1.0-yp
6384  yp2=yp*yp
6385  ypi2=ypi*ypi
6386 C
6387  cy=yp*(yp2-1.0)
6388  cyi=ypi*(ypi2-1.0)
6389  hy2=hy*hy
6390 C
6391  iadr=iadr+1
6392  do v=1,ivec
6393  i=ii(v)
6394 C
6395 C ...in x direction
6396 C
6397  xp=xparam(v)
6398  xpi=1.0-xp
6399  xp2=xp*xp
6400  xpi2=xpi*xpi
6401 
6402  cxd=3.0*xp2-1.0
6403  cxdi=-3.0*xpi2+1.0
6404 C
6405  sum=hxi(v)*hzi*(
6406  > -(
6407  > -(ypi*fin(3,i,j,k) +yp*fin(3,i,j+1,k))
6408  > +(ypi*fin(3,i+1,j,k)+yp*fin(3,i+1,j+1,k)))
6409  > +(
6410  > -(ypi*fin(3,i,j,k+1) +yp*fin(3,i,j+1,k+1))
6411  > +(ypi*fin(3,i+1,j,k+1)+yp*fin(3,i+1,j+1,k+1))))
6412 C
6413  sum=sum+sixth*hx(v)*hzi*(
6414  > -(
6415  > cxdi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
6416  > cxd*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
6417  > +(
6418  > cxdi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
6419  > cxd*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
6420 C
6421  sum=sum+sixth*hy2*hxi(v)*hzi*(
6422  > -(
6423  > -(cyi*fin(6,i,j,k) +cy*fin(6,i,j+1,k))
6424  > +(cyi*fin(6,i+1,j,k)+cy*fin(6,i+1,j+1,k)))
6425  > +(
6426  > -(cyi*fin(6,i,j,k+1) +cy*fin(6,i,j+1,k+1))
6427  > +(cyi*fin(6,i+1,j,k+1)+cy*fin(6,i+1,j+1,k+1))))
6428 C
6429  sum=sum+z36th*hx(v)*hy2*hzi*(
6430  > -(
6431  > cxdi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
6432  > cxd*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
6433  > +(
6434  > cxdi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
6435  > cxd*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
6436 C
6437  fval(v,iadr)=sum
6438  enddo
6439  endif
6440 C
6441  if(ict(6).eq.1) then
6442 C ! fyyyz
6443  j=jj
6444  k=kk
6445 C
6446 C ...and in z direction
6447 C
6448  zp=zparam
6449  zpi=1.0-zp
6450  zp2=zp*zp
6451  zpi2=zpi*zpi
6452 
6453  czd=3.0*zp2-1.0
6454  czdi=-3.0*zpi2+1.0
6455 C
6456  iadr=iadr+1
6457  do v=1,ivec
6458  i=ii(v)
6459 C
6460 C ...in x direction
6461 C
6462  xp=xparam(v)
6463  xpi=1.0-xp
6464  xp2=xp*xp
6465  xpi2=xpi*xpi
6466 C
6467  cx=xp*(xp2-1.0)
6468  cxi=xpi*(xpi2-1.0)
6469  hx2=hx(v)*hx(v)
6470 C
6471  sum=hyi*hzi*(
6472  > -(
6473  > xpi*(-fin(2,i,j,k) +fin(2,i,j+1,k))+
6474  > xp*( -fin(2,i+1,j,k)+fin(2,i+1,j+1,k)))
6475  > +(
6476  > xpi*(-fin(2,i,j,k+1) +fin(2,i,j+1,k+1))+
6477  > xp*( -fin(2,i+1,j,k+1)+fin(2,i+1,j+1,k+1))))
6478 C
6479  sum=sum+sixth*hx2*hyi*hzi*(
6480  > -(
6481  > cxi*(-fin(4,i,j,k) +fin(4,i,j+1,k))+
6482  > cx*( -fin(4,i+1,j,k)+fin(4,i+1,j+1,k)))
6483  > +(
6484  > cxi*(-fin(4,i,j,k+1) +fin(4,i,j+1,k+1))+
6485  > cx*( -fin(4,i+1,j,k+1)+fin(4,i+1,j+1,k+1))))
6486 C
6487  sum=sum+sixth*hz*hyi*(
6488  > czdi*(
6489  > xpi*(-fin(6,i,j,k) +fin(6,i,j+1,k))+
6490  > xp*( -fin(6,i+1,j,k)+fin(6,i+1,j+1,k)))
6491  > +czd*(
6492  > xpi*(-fin(6,i,j,k+1) +fin(6,i,j+1,k+1))+
6493  > xp*( -fin(6,i+1,j,k+1)+fin(6,i+1,j+1,k+1))))
6494 C
6495  sum=sum+z36th*hx2*hz*hyi*(
6496  > czdi*(
6497  > cxi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
6498  > cx*( -fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
6499  > +czd*(
6500  > cxi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
6501  > cx*( -fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
6502 C
6503  fval(v,iadr)=sum
6504  enddo
6505  endif
6506 C
6507  if(ict(7).eq.1) then
6508 C ! fyzzz
6509  j=jj
6510  k=kk
6511 C
6512 C ...and in y direction
6513 C
6514  yp=yparam
6515  ypi=1.0-yp
6516  yp2=yp*yp
6517  ypi2=ypi*ypi
6518 
6519  cyd=3.0*yp2-1.0
6520  cydi=-3.0*ypi2+1.0
6521 C
6522  iadr=iadr+1
6523  do v=1,ivec
6524  i=ii(v)
6525 C
6526 C ...in x direction
6527 C
6528  xp=xparam(v)
6529  xpi=1.0-xp
6530  xp2=xp*xp
6531  xpi2=xpi*xpi
6532 C
6533  cx=xp*(xp2-1.0)
6534  cxi=xpi*(xpi2-1.0)
6535  hx2=hx(v)*hx(v)
6536 C
6537  sum=hyi*hzi*(
6538  > -(
6539  > xpi*(-fin(3,i,j,k) +fin(3,i,j+1,k))+
6540  > xp*( -fin(3,i+1,j,k)+fin(3,i+1,j+1,k)))
6541  > +(
6542  > xpi*(-fin(3,i,j,k+1) +fin(3,i,j+1,k+1))+
6543  > xp*( -fin(3,i+1,j,k+1)+fin(3,i+1,j+1,k+1))))
6544 C
6545  sum=sum+sixth*hx2*hyi*hzi*(
6546  > -(
6547  > cxi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
6548  > cx*( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
6549  > +(
6550  > cxi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
6551  > cx*( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
6552 C
6553  sum=sum+sixth*hy*hzi*(
6554  > -(
6555  > xpi*(cydi*fin(6,i,j,k) +cyd*fin(6,i,j+1,k))+
6556  > xp*(cydi*fin(6,i+1,j,k)+cyd*fin(6,i+1,j+1,k)))
6557  > +(
6558  > xpi*(cydi*fin(6,i,j,k+1) +cyd*fin(6,i,j+1,k+1))+
6559  > xp*(cydi*fin(6,i+1,j,k+1)+cyd*fin(6,i+1,j+1,k+1))))
6560 C
6561  sum=sum+z36th*hx2*hy*hzi*(
6562  > -(
6563  > cxi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
6564  > cx*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
6565  > +(
6566  > cxi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
6567  > cx*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
6568 C
6569  fval(v,iadr)=sum
6570  enddo
6571  endif
6572 C
6573 C----------------------------------
6574 C 5th derivatives (.le.2 in each coordinate)
6575 C
6576  else if(ict(1).eq.5) then
6577  if(ict(2).eq.1) then
6578 C ! fxxyyz
6579  j=jj
6580  k=kk
6581 C
6582 C ...and in y direction
6583 C
6584  yp=yparam
6585  ypi=1.0-yp
6586 C
6587 C ...and in z direction
6588 C
6589  zp=zparam
6590  zpi=1.0-zp
6591  zp2=zp*zp
6592  zpi2=zpi*zpi
6593 
6594  czd=3.0*zp2-1.0
6595  czdi=-3.0*zpi2+1.0
6596 C
6597  iadr=iadr+1
6598  do v=1,ivec
6599  i=ii(v)
6600 C
6601 C ...in x direction
6602 C
6603  xp=xparam(v)
6604  xpi=1.0-xp
6605 C
6606  sum=hzi*(
6607  > -(
6608  > xpi*(ypi*fin(4,i,j,k) +yp*fin(4,i,j+1,k))+
6609  > xp*( ypi*fin(4,i+1,j,k)+yp*fin(4,i+1,j+1,k)))
6610  > +(
6611  > xpi*(ypi*fin(4,i,j,k+1) +yp*fin(4,i,j+1,k+1))+
6612  > xp*(ypi*fin(4,i+1,j,k+1)+yp*fin(4,i+1,j+1,k+1))))
6613 C
6614  sum=sum+sixth*hz*(
6615  > czdi*(
6616  > xpi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
6617  > xp*(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
6618  > +czd*(
6619  > xpi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
6620  > xp*(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
6621 C
6622  fval(v,iadr)=sum
6623  enddo
6624  endif
6625 C
6626  if(ict(3).eq.1) then
6627 C ! fxxyzz
6628  j=jj
6629  k=kk
6630 C
6631 C ...and in y direction
6632 C
6633  yp=yparam
6634  ypi=1.0-yp
6635  yp2=yp*yp
6636  ypi2=ypi*ypi
6637 
6638  cyd=3.0*yp2-1.0
6639  cydi=-3.0*ypi2+1.0
6640 C
6641 C ...and in z direction
6642 C
6643  zp=zparam
6644  zpi=1.0-zp
6645 C
6646  iadr=iadr+1
6647  do v=1,ivec
6648  i=ii(v)
6649 C
6650 C ...in x direction
6651 C
6652  xp=xparam(v)
6653  xpi=1.0-xp
6654 C
6655  sum=hyi*(
6656  > zpi*(
6657  > xpi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
6658  > xp*( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
6659  > +zp*(
6660  > xpi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
6661  > xp*( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
6662 C
6663  sum=sum+sixth*hy*(
6664  > zpi*(
6665  > xpi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
6666  > xp*( cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
6667  > +zp*(
6668  > xpi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
6669  > xp*( cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
6670 C
6671  fval(v,iadr)=sum
6672  enddo
6673  endif
6674 C
6675  if(ict(4).eq.1) then
6676 C ! fxyyzz
6677  j=jj
6678  k=kk
6679 C
6680 C ...and in y direction
6681 C
6682  yp=yparam
6683  ypi=1.0-yp
6684 C
6685 C ...and in z direction
6686 C
6687  zp=zparam
6688  zpi=1.0-zp
6689 C
6690  iadr=iadr+1
6691  do v=1,ivec
6692  i=ii(v)
6693 C
6694 C ...in x direction
6695 C
6696  xp=xparam(v)
6697  xpi=1.0-xp
6698  xp2=xp*xp
6699  xpi2=xpi*xpi
6700 
6701  cxd=3.0*xp2-1.0
6702  cxdi=-3.0*xpi2+1.0
6703 C
6704  sum=hxi(v)*(
6705  > zpi*(
6706  > -(ypi*fin(6,i,j,k) +yp*fin(6,i,j+1,k))
6707  > +(ypi*fin(6,i+1,j,k)+yp*fin(6,i+1,j+1,k)))
6708  > +zp*(
6709  > -(ypi*fin(6,i,j,k+1) +yp*fin(6,i,j+1,k+1))
6710  > +(ypi*fin(6,i+1,j,k+1)+yp*fin(6,i+1,j+1,k+1))))
6711 C
6712  sum=sum+sixth*hx(v)*(
6713  > zpi*(
6714  > cxdi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
6715  > cxd*(ypi*fin(7,i+1,j,k) +yp*fin(7,i+1,j+1,k)))
6716  > +zp*(
6717  > cxdi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
6718  > cxd*( ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
6719 C
6720  fval(v,iadr)=sum
6721  enddo
6722  endif
6723 C
6724 C----------------------------------
6725 C 5th derivatives (3 in a coordinate)
6726 C
6727  else if(ict(1).eq.-5) then
6728  if(ict(2).eq.1) then
6729 C ! fxxxyy
6730  j=jj
6731  k=kk
6732 C
6733 C ...and in y direction
6734 C
6735  yp=yparam
6736  ypi=1.0-yp
6737 C
6738 C ...and in z direction
6739 C
6740  zp=zparam
6741  zpi=1.0-zp
6742  zp2=zp*zp
6743  zpi2=zpi*zpi
6744 C
6745  cz=zp*(zp2-1.0)
6746  czi=zpi*(zpi2-1.0)
6747  hz2=hz*hz
6748 C
6749  iadr=iadr+1
6750  do v=1,ivec
6751  i=ii(v)
6752 C
6753  sum=hxi(v)*(
6754  > zpi*(
6755  > -(ypi*fin(4,i,j,k) +yp*fin(4,i,j+1,k))
6756  > +( ypi*fin(4,i+1,j,k)+yp*fin(4,i+1,j+1,k)))
6757  > +zp*(
6758  > -(ypi*fin(4,i,j,k+1) +yp*fin(4,i,j+1,k+1))
6759  > +(ypi*fin(4,i+1,j,k+1)+yp*fin(4,i+1,j+1,k+1))))
6760 C
6761  sum=sum+sixth*hz2*hxi(v)*(
6762  > czi*(
6763  > -(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))
6764  > +(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
6765  > +cz*(
6766  > -(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))
6767  > +(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
6768 C
6769  fval(v,iadr)=sum
6770  enddo
6771  endif
6772 C
6773  if(ict(3).eq.1) then
6774 C ! fxxxyz
6775  j=jj
6776  k=kk
6777 C
6778 C ...and in y direction
6779 C
6780  yp=yparam
6781  ypi=1.0-yp
6782  yp2=yp*yp
6783  ypi2=ypi*ypi
6784 
6785  cyd=3.0*yp2-1.0
6786  cydi=-3.0*ypi2+1.0
6787 C
6788 C ...and in z direction
6789 C
6790  zp=zparam
6791  zpi=1.0-zp
6792  zp2=zp*zp
6793  zpi2=zpi*zpi
6794 
6795  czd=3.0*zp2-1.0
6796  czdi=-3.0*zpi2+1.0
6797 C
6798  iadr=iadr+1
6799  do v=1,ivec
6800  i=ii(v)
6801 C
6802  sum=hyi*hzi*hxi(v)*(
6803  > -(
6804  > -(-fin(1,i,j,k) +fin(1,i,j+1,k))
6805  > +( -fin(1,i+1,j,k)+fin(1,i+1,j+1,k)))
6806  > +(
6807  > -(-fin(1,i,j,k+1) +fin(1,i,j+1,k+1))
6808  > +( -fin(1,i+1,j,k+1)+fin(1,i+1,j+1,k+1))))
6809 C
6810  sum=sum+sixth*hy*hzi*hxi(v)*(
6811  > -(
6812  > -(cydi*fin(4,i,j,k) +cyd*fin(4,i,j+1,k))
6813  > +(cydi*fin(4,i+1,j,k)+cyd*fin(4,i+1,j+1,k)))
6814  > +(
6815  > -(cydi*fin(4,i,j,k+1) +cyd*fin(4,i,j+1,k+1))
6816  > +(cydi*fin(4,i+1,j,k+1)+cyd*fin(4,i+1,j+1,k+1))))
6817 C
6818  sum=sum+sixth*hz*hyi*hxi(v)*(
6819  > czdi*(
6820  > -(-fin(5,i,j,k) +fin(5,i,j+1,k))
6821  > +( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
6822  > +czd*(
6823  > -(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))
6824  > +( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
6825 C
6826  sum=sum+z36th*hy*hz*hxi(v)*(
6827  > czdi*(
6828  > -(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))
6829  > +(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
6830  > +czd*(
6831  > -(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))
6832  > +(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
6833 C
6834  fval(v,iadr)=sum
6835  enddo
6836  endif
6837 C
6838  if(ict(4).eq.1) then
6839 C ! fxxxzz
6840  j=jj
6841  k=kk
6842 C
6843 C ...and in y direction
6844 C
6845  yp=yparam
6846  ypi=1.0-yp
6847  yp2=yp*yp
6848  ypi2=ypi*ypi
6849 C
6850  cy=yp*(yp2-1.0)
6851  cyi=ypi*(ypi2-1.0)
6852  hy2=hy*hy
6853 C
6854 C ...and in z direction
6855 C
6856  zp=zparam
6857  zpi=1.0-zp
6858 C
6859  iadr=iadr+1
6860  do v=1,ivec
6861  i=ii(v)
6862 C
6863  sum=hxi(v)*(
6864  > zpi*(
6865  > -(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))
6866  > +(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
6867  > +zp*(
6868  > -(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))
6869  > +(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
6870 C
6871  sum=sum+sixth*hy2*hxi(v)*(
6872  > zpi*(
6873  > -(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))
6874  > +(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
6875  > +zp*(
6876  > -(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))
6877  > +(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
6878 C
6879  fval(v,iadr)=sum
6880  enddo
6881  endif
6882 C
6883  if(ict(5).eq.1) then
6884 C ! fxxyyy
6885  j=jj
6886  k=kk
6887 C
6888 C ...and in z direction
6889 C
6890  zp=zparam
6891  zpi=1.0-zp
6892  zp2=zp*zp
6893  zpi2=zpi*zpi
6894 C
6895  cz=zp*(zp2-1.0)
6896  czi=zpi*(zpi2-1.0)
6897  hz2=hz*hz
6898 C
6899  iadr=iadr+1
6900  do v=1,ivec
6901  i=ii(v)
6902 C
6903 C ...in x direction
6904 C
6905  xp=xparam(v)
6906  xpi=1.0-xp
6907 C
6908  sum=hyi*(
6909  > zpi*(
6910  > xpi*(-fin(4,i,j,k) +fin(4,i,j+1,k))+
6911  > xp*( -fin(4,i+1,j,k)+fin(4,i+1,j+1,k)))
6912  > +zp*(
6913  > xpi*(-fin(4,i,j,k+1) +fin(4,i,j+1,k+1))+
6914  > xp*( -fin(4,i+1,j,k+1)+fin(4,i+1,j+1,k+1))))
6915 C
6916  sum=sum+sixth*hz2*hyi*(
6917  > czi*(
6918  > xpi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
6919  > xp*( -fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
6920  > +cz*(
6921  > xpi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
6922  > xp*( -fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
6923 C
6924  fval(v,iadr)=sum
6925  enddo
6926  endif
6927 C
6928  if(ict(6).eq.1) then
6929 C ! fxxzzz
6930  j=jj
6931  k=kk
6932 C
6933 C ...and in y direction
6934 C
6935  yp=yparam
6936  ypi=1.0-yp
6937  yp2=yp*yp
6938  ypi2=ypi*ypi
6939 C
6940  cy=yp*(yp2-1.0)
6941  cyi=ypi*(ypi2-1.0)
6942  hy2=hy*hy
6943 C
6944  iadr=iadr+1
6945  do v=1,ivec
6946  i=ii(v)
6947 C
6948 C ...in x direction
6949 C
6950  xp=xparam(v)
6951  xpi=1.0-xp
6952 C
6953  sum=hzi*(
6954  > -(
6955  > xpi*(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))+
6956  > xp*(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
6957  > +(
6958  > xpi*(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))+
6959  > xp*(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
6960 C
6961  sum=sum+sixth*hy2*hzi*(
6962  > -(
6963  > xpi*(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))+
6964  > xp*(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
6965  > +(
6966  > xpi*(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))+
6967  > xp*(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
6968 C
6969  fval(v,iadr)=sum
6970  enddo
6971  endif
6972 C
6973  if(ict(7).eq.1) then
6974 C ! fxyyyz
6975  j=jj
6976  k=kk
6977 C
6978 C ...and in z direction
6979 C
6980  zp=zparam
6981  zpi=1.0-zp
6982  zp2=zp*zp
6983  zpi2=zpi*zpi
6984 
6985  czd=3.0*zp2-1.0
6986  czdi=-3.0*zpi2+1.0
6987 C
6988  iadr=iadr+1
6989  do v=1,ivec
6990  i=ii(v)
6991 C
6992 C ...in x direction
6993 C
6994  xp=xparam(v)
6995  xpi=1.0-xp
6996  xp2=xp*xp
6997  xpi2=xpi*xpi
6998 
6999  cxd=3.0*xp2-1.0
7000  cxdi=-3.0*xpi2+1.0
7001 C
7002  sum=hxi(v)*hzi*hyi*(
7003  > -(
7004  > ( fin(2,i,j,k) -fin(2,i,j+1,k))
7005  > +(-fin(2,i+1,j,k)+fin(2,i+1,j+1,k)))
7006  > +(
7007  > ( fin(2,i,j,k+1) -fin(2,i,j+1,k+1))
7008  > +(-fin(2,i+1,j,k+1)+fin(2,i+1,j+1,k+1))))
7009 C
7010  sum=sum+sixth*hx(v)*hzi*hyi*(
7011  > -(
7012  > cxdi*(-fin(4,i,j,k) +fin(4,i,j+1,k))+
7013  > cxd*(-fin(4,i+1,j,k) +fin(4,i+1,j+1,k)))
7014  > +(
7015  > cxdi*(-fin(4,i,j,k+1) +fin(4,i,j+1,k+1))+
7016  > cxd*(-fin(4,i+1,j,k+1) +fin(4,i+1,j+1,k+1))))
7017 C
7018  sum=sum+sixth*hz*hxi(v)*hyi*(
7019  > czdi*(
7020  > ( fin(6,i,j,k) -fin(6,i,j+1,k))
7021  > +(-fin(6,i+1,j,k)+fin(6,i+1,j+1,k)))
7022  > +czd*(
7023  > ( fin(6,i,j,k+1) -fin(6,i,j+1,k+1))
7024  > +(-fin(6,i+1,j,k+1)+fin(6,i+1,j+1,k+1))))
7025 C
7026  sum=sum+z36th*hx(v)*hz*hyi*(
7027  > czdi*(
7028  > cxdi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
7029  > cxd*(-fin(7,i+1,j,k) +fin(7,i+1,j+1,k)))
7030  > +czd*(
7031  > cxdi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
7032  > cxd*(-fin(7,i+1,j,k+1) +fin(7,i+1,j+1,k+1))))
7033 C
7034  fval(v,iadr)=sum
7035  enddo
7036  endif
7037 C
7038  if(ict(8).eq.1) then
7039 C ! fxyzzz
7040  j=jj
7041  k=kk
7042 C
7043 C ...and in y direction
7044 C
7045  yp=yparam
7046  ypi=1.0-yp
7047  yp2=yp*yp
7048  ypi2=ypi*ypi
7049 
7050  cyd=3.0*yp2-1.0
7051  cydi=-3.0*ypi2+1.0
7052 C
7053  iadr=iadr+1
7054  do v=1,ivec
7055  i=ii(v)
7056 C
7057 C ...in x direction
7058 C
7059  xp=xparam(v)
7060  xpi=1.0-xp
7061  xp2=xp*xp
7062  xpi2=xpi*xpi
7063 
7064  cxd=3.0*xp2-1.0
7065  cxdi=-3.0*xpi2+1.0
7066 C
7067  sum=hyi*hxi(v)*hzi*(
7068  > -(
7069  > ( +fin(3,i,j,k) -fin(3,i,j+1,k))
7070  > +( -fin(3,i+1,j,k)+fin(3,i+1,j+1,k)))
7071  > +(
7072  > ( +fin(3,i,j,k+1) -fin(3,i,j+1,k+1))
7073  > +( -fin(3,i+1,j,k+1)+fin(3,i+1,j+1,k+1))))
7074 C
7075  sum=sum+sixth*hx(v)*hyi*hzi*(
7076  > -(
7077  > cxdi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
7078  > cxd*( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
7079  > +(
7080  > cxdi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
7081  > cxd*( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
7082 C
7083  sum=sum+sixth*hy*hxi(v)*hzi*(
7084  > -(
7085  > -(cydi*fin(6,i,j,k) +cyd*fin(6,i,j+1,k))
7086  > +(cydi*fin(6,i+1,j,k)+cyd*fin(6,i+1,j+1,k)))
7087  > +(
7088  > -(cydi*fin(6,i,j,k+1) +cyd*fin(6,i,j+1,k+1))
7089  > +(cydi*fin(6,i+1,j,k+1)+cyd*fin(6,i+1,j+1,k+1))))
7090 C
7091  sum=sum+z36th*hx(v)*hy*hzi*(
7092  > -(
7093  > cxdi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
7094  > cxd*(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
7095  > +(
7096  > cxdi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
7097  > cxd*(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
7098 C
7099  fval(v,iadr)=sum
7100  enddo
7101  endif
7102 C
7103  if(ict(9).eq.1) then
7104 C ! fyyyzz
7105  j=jj
7106  k=kk
7107 C
7108 C ...and in z direction
7109 C
7110  zp=zparam
7111  zpi=1.0-zp
7112 C
7113  iadr=iadr+1
7114  do v=1,ivec
7115  i=ii(v)
7116 C
7117 C ...in x direction
7118 C
7119  xp=xparam(v)
7120  xpi=1.0-xp
7121  xp2=xp*xp
7122  xpi2=xpi*xpi
7123 C
7124  cx=xp*(xp2-1.0)
7125  cxi=xpi*(xpi2-1.0)
7126  hx2=hx(v)*hx(v)
7127 C
7128  sum=hyi*(
7129  > zpi*(
7130  > xpi*(-fin(6,i,j,k) +fin(6,i,j+1,k))+
7131  > xp*( -fin(6,i+1,j,k)+fin(6,i+1,j+1,k)))
7132  > +zp*(
7133  > xpi*(-fin(6,i,j,k+1) +fin(6,i,j+1,k+1))+
7134  > xp*( -fin(6,i+1,j,k+1)+fin(6,i+1,j+1,k+1))))
7135 C
7136  sum=sum+sixth*hx2*hyi*(
7137  > zpi*(
7138  > cxi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
7139  > cx*( -fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
7140  > +zp*(
7141  > cxi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
7142  > cx*( -fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
7143 C
7144  fval(v,iadr)=sum
7145  enddo
7146  endif
7147 C
7148  if(ict(10).eq.1) then
7149 C ! fyyzzz
7150  j=jj
7151  k=kk
7152 C
7153 C ...and in y direction
7154 C
7155  yp=yparam
7156  ypi=1.0-yp
7157 C
7158  iadr=iadr+1
7159  do v=1,ivec
7160  i=ii(v)
7161 C
7162 C ...in x direction
7163 C
7164  xp=xparam(v)
7165  xpi=1.0-xp
7166  xp2=xp*xp
7167  xpi2=xpi*xpi
7168 C
7169  cx=xp*(xp2-1.0)
7170  cxi=xpi*(xpi2-1.0)
7171  hx2=hx(v)*hx(v)
7172 C
7173  sum=hzi*(
7174  > -(
7175  > xpi*(ypi*fin(6,i,j,k) +yp*fin(6,i,j+1,k))+
7176  > xp*( ypi*fin(6,i+1,j,k)+yp*fin(6,i+1,j+1,k)))
7177  > +(
7178  > xpi*(ypi*fin(6,i,j,k+1) +yp*fin(6,i,j+1,k+1))+
7179  > xp*(ypi*fin(6,i+1,j,k+1)+yp*fin(6,i+1,j+1,k+1))))
7180 C
7181  sum=sum+sixth*hx2*hzi*(
7182  > -(
7183  > cxi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
7184  > cx*( ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
7185  > +(
7186  > cxi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
7187  > cx*( ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
7188 C
7189  fval(v,iadr)=sum
7190  enddo
7191  endif
7192 C
7193 C----------------------------------
7194 C 6th derivatives (2 in each coordinate)
7195 C
7196  else if(ict(1).eq.6) then
7197 C ! fxxyyzz
7198  j=jj
7199  k=kk
7200 C
7201 C ...and in y direction
7202 C
7203  yp=yparam
7204  ypi=1.0-yp
7205 C
7206 C ...and in z direction
7207 C
7208  zp=zparam
7209  zpi=1.0-zp
7210 C
7211  iadr=iadr+1
7212  do v=1,ivec
7213  i=ii(v)
7214 C
7215 C ...in x direction
7216 C
7217  xp=xparam(v)
7218  xpi=1.0-xp
7219 C
7220  sum=(
7221  > zpi*(
7222  > xpi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
7223  > xp*(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
7224  > +zp*(
7225  > xpi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
7226  > xp*(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
7227 C
7228  fval(v,iadr)=sum
7229  enddo
7230  endif
7231 C
7232 C----------------------------------
7233 C 6th derivatives (3 in a coordinate)
7234 C
7235  if(ict(1).eq.-6) then
7236  if(ict(2).eq.1) then
7237 C ! fxxxyyy
7238  j=jj
7239  k=kk
7240 C
7241 C ...and in z direction
7242 C
7243  zp=zparam
7244  zpi=1.0-zp
7245  zp2=zp*zp
7246  zpi2=zpi*zpi
7247 C
7248  cz=zp*(zp2-1.0)
7249  czi=zpi*(zpi2-1.0)
7250  hz2=hz*hz
7251 C
7252  iadr=iadr+1
7253  do v=1,ivec
7254  i=ii(v)
7255 C
7256  sum=hyi*hxi(v)*(
7257  > zpi*(
7258  > ( fin(4,i,j,k) -fin(4,i,j+1,k))
7259  > +(-fin(4,i+1,j,k)+fin(4,i+1,j+1,k)))
7260  > +zp*(
7261  > ( fin(4,i,j,k+1) -fin(4,i,j+1,k+1))
7262  > +(-fin(4,i+1,j,k+1)+fin(4,i+1,j+1,k+1))))
7263 C
7264  sum=sum+sixth*hz2*hyi*hxi(v)*(
7265  > czi*(
7266  > ( fin(7,i,j,k) -fin(7,i,j+1,k))
7267  > +(-fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
7268  > +cz*(
7269  > ( fin(7,i,j,k+1) -fin(7,i,j+1,k+1))
7270  > +(-fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
7271 C
7272  fval(v,iadr)=sum
7273  enddo
7274  endif
7275 C
7276  if(ict(3).eq.1) then
7277 C ! fxxxyyz
7278  j=jj
7279  k=kk
7280 C
7281 C ...and in y direction
7282 C
7283  yp=yparam
7284  ypi=1.0-yp
7285 C
7286 C ...and in z direction
7287 C
7288  zp=zparam
7289  zpi=1.0-zp
7290  zp2=zp*zp
7291  zpi2=zpi*zpi
7292 
7293  czd=3.0*zp2-1.0
7294  czdi=-3.0*zpi2+1.0
7295 C
7296  iadr=iadr+1
7297  do v=1,ivec
7298  i=ii(v)
7299 C
7300  sum=hxi(v)*hzi*(
7301  > -(
7302  > -(ypi*fin(4,i,j,k) +yp*fin(4,i,j+1,k))
7303  > +( ypi*fin(4,i+1,j,k)+yp*fin(4,i+1,j+1,k)))
7304  > +(
7305  > -(ypi*fin(4,i,j,k+1) +yp*fin(4,i,j+1,k+1))
7306  > +(ypi*fin(4,i+1,j,k+1)+yp*fin(4,i+1,j+1,k+1))))
7307 C
7308  sum=sum+sixth*hz*hxi(v)*(
7309  > czdi*(
7310  > -(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))
7311  > +(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
7312  > +czd*(
7313  > -(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))
7314  > +(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
7315 C
7316  fval(v,iadr)=sum
7317  enddo
7318  endif
7319 C
7320  if(ict(4).eq.1) then
7321 C ! fxxxyzz
7322  j=jj
7323  k=kk
7324 C
7325 C ...and in y direction
7326 C
7327  yp=yparam
7328  ypi=1.0-yp
7329  yp2=yp*yp
7330  ypi2=ypi*ypi
7331 
7332  cyd=3.0*yp2-1.0
7333  cydi=-3.0*ypi2+1.0
7334 C
7335 C ...and in z direction
7336 C
7337  zp=zparam
7338  zpi=1.0-zp
7339 C
7340  iadr=iadr+1
7341  do v=1,ivec
7342  i=ii(v)
7343 C
7344  sum=hxi(v)*hyi*(
7345  > zpi*(
7346  > ( fin(5,i,j,k) -fin(5,i,j+1,k))
7347  > +(-fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
7348  > +zp*(
7349  > ( fin(5,i,j,k+1) -fin(5,i,j+1,k+1))
7350  > +(-fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
7351 C
7352  sum=sum+sixth*hy*hxi(v)*(
7353  > zpi*(
7354  > -(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))
7355  > +(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
7356  > +zp*(
7357  > -(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))
7358  > +(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
7359 C
7360  fval(v,iadr)=sum
7361  enddo
7362  endif
7363 C
7364  if(ict(5).eq.1) then
7365 C ! fxxxzzz
7366  j=jj
7367  k=kk
7368 C
7369 C ...and in y direction
7370 C
7371  yp=yparam
7372  ypi=1.0-yp
7373  yp2=yp*yp
7374  ypi2=ypi*ypi
7375 C
7376  cy=yp*(yp2-1.0)
7377  cyi=ypi*(ypi2-1.0)
7378  hy2=hy*hy
7379 C
7380  iadr=iadr+1
7381  do v=1,ivec
7382  i=ii(v)
7383 C
7384  sum=hxi(v)*hzi*(
7385  > -(
7386  > -(ypi*fin(5,i,j,k) +yp*fin(5,i,j+1,k))
7387  > +(ypi*fin(5,i+1,j,k)+yp*fin(5,i+1,j+1,k)))
7388  > +(
7389  > -(ypi*fin(5,i,j,k+1) +yp*fin(5,i,j+1,k+1))
7390  > +(ypi*fin(5,i+1,j,k+1)+yp*fin(5,i+1,j+1,k+1))))
7391 C
7392  sum=sum+sixth*hy2*hxi(v)*hzi*(
7393  > -(
7394  > -(cyi*fin(7,i,j,k) +cy*fin(7,i,j+1,k))
7395  > +(cyi*fin(7,i+1,j,k)+cy*fin(7,i+1,j+1,k)))
7396  > +(
7397  > -(cyi*fin(7,i,j,k+1) +cy*fin(7,i,j+1,k+1))
7398  > +(cyi*fin(7,i+1,j,k+1)+cy*fin(7,i+1,j+1,k+1))))
7399 C
7400  fval(v,iadr)=sum
7401  enddo
7402  endif
7403 C
7404  if(ict(6).eq.1) then
7405 C ! fxxyyyz
7406  j=jj
7407  k=kk
7408 C
7409 C ...and in z direction
7410 C
7411  zp=zparam
7412  zpi=1.0-zp
7413  zp2=zp*zp
7414  zpi2=zpi*zpi
7415 
7416  czd=3.0*zp2-1.0
7417  czdi=-3.0*zpi2+1.0
7418 C
7419  iadr=iadr+1
7420  do v=1,ivec
7421  i=ii(v)
7422 C
7423 C ...in x direction
7424 C
7425  xp=xparam(v)
7426  xpi=1.0-xp
7427 C
7428  sum=hzi*hyi*(
7429  > -(
7430  > xpi*(-fin(4,i,j,k) +fin(4,i,j+1,k))+
7431  > xp*(-fin(4,i+1,j,k) +fin(4,i+1,j+1,k)))
7432  > +(
7433  > xpi*(-fin(4,i,j,k+1) +fin(4,i,j+1,k+1))+
7434  > xp*(-fin(4,i+1,j,k+1) +fin(4,i+1,j+1,k+1))))
7435 C
7436  sum=sum+sixth*hz*hyi*(
7437  > czdi*(
7438  > xpi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
7439  > xp*(-fin(7,i+1,j,k) +fin(7,i+1,j+1,k)))
7440  > +czd*(
7441  > xpi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
7442  > xp*(-fin(7,i+1,j,k+1) +fin(7,i+1,j+1,k+1))))
7443 C
7444  fval(v,iadr)=sum
7445  enddo
7446  endif
7447 C
7448  if(ict(7).eq.1) then
7449 C ! fxxyzzz
7450  j=jj
7451  k=kk
7452 C
7453 C ...and in y direction
7454 C
7455  yp=yparam
7456  ypi=1.0-yp
7457  yp2=yp*yp
7458  ypi2=ypi*ypi
7459 
7460  cyd=3.0*yp2-1.0
7461  cydi=-3.0*ypi2+1.0
7462 C
7463  iadr=iadr+1
7464  do v=1,ivec
7465  i=ii(v)
7466 C
7467 C ...in x direction
7468 C
7469  xp=xparam(v)
7470  xpi=1.0-xp
7471 C
7472  sum=hyi*hzi*(
7473  > -(
7474  > xpi*(-fin(5,i,j,k) +fin(5,i,j+1,k))+
7475  > xp*( -fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
7476  > +(
7477  > xpi*(-fin(5,i,j,k+1) +fin(5,i,j+1,k+1))+
7478  > xp*( -fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
7479 C
7480  sum=sum+sixth*hy*hzi*(
7481  > -(
7482  > xpi*(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))+
7483  > xp*( cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
7484  > +(
7485  > xpi*(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))+
7486  > xp*( cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
7487 C
7488  fval(v,iadr)=sum
7489  enddo
7490  endif
7491 C
7492  if(ict(8).eq.1) then
7493 C ! fxyyyzz
7494  j=jj
7495  k=kk
7496 C
7497 C ...and in z direction
7498 C
7499  zp=zparam
7500  zpi=1.0-zp
7501 C
7502  iadr=iadr+1
7503  do v=1,ivec
7504  i=ii(v)
7505 C
7506 C ...in x direction
7507 C
7508  xp=xparam(v)
7509  xpi=1.0-xp
7510  xp2=xp*xp
7511  xpi2=xpi*xpi
7512 
7513  cxd=3.0*xp2-1.0
7514  cxdi=-3.0*xpi2+1.0
7515 C
7516  sum=hxi(v)*hyi*(
7517  > zpi*(
7518  > ( fin(6,i,j,k) -fin(6,i,j+1,k))
7519  > +(-fin(6,i+1,j,k)+fin(6,i+1,j+1,k)))
7520  > +zp*(
7521  > ( fin(6,i,j,k+1) -fin(6,i,j+1,k+1))
7522  > +(-fin(6,i+1,j,k+1)+fin(6,i+1,j+1,k+1))))
7523 C
7524  sum=sum+sixth*hx(v)*hyi*(
7525  > zpi*(
7526  > cxdi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
7527  > cxd*(-fin(7,i+1,j,k) +fin(7,i+1,j+1,k)))
7528  > +zp*(
7529  > cxdi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
7530  > cxd*(-fin(7,i+1,j,k+1) +fin(7,i+1,j+1,k+1))))
7531 C
7532  fval(v,iadr)=sum
7533  enddo
7534  endif
7535 C
7536  if(ict(9).eq.1) then
7537 C ! fxyyzzz
7538  j=jj
7539  k=kk
7540 C
7541 C ...and in y direction
7542 C
7543  yp=yparam
7544  ypi=1.0-yp
7545 C
7546  iadr=iadr+1
7547  do v=1,ivec
7548  i=ii(v)
7549 C
7550 C ...in x direction
7551 C
7552  xp=xparam(v)
7553  xpi=1.0-xp
7554  xp2=xp*xp
7555  xpi2=xpi*xpi
7556 
7557  cxd=3.0*xp2-1.0
7558  cxdi=-3.0*xpi2+1.0
7559 C
7560  sum=hxi(v)*hzi*(
7561  > -(
7562  > -(ypi*fin(6,i,j,k) +yp*fin(6,i,j+1,k))
7563  > +(ypi*fin(6,i+1,j,k)+yp*fin(6,i+1,j+1,k)))
7564  > +(
7565  > -(ypi*fin(6,i,j,k+1) +yp*fin(6,i,j+1,k+1))
7566  > +(ypi*fin(6,i+1,j,k+1)+yp*fin(6,i+1,j+1,k+1))))
7567 C
7568  sum=sum+sixth*hx(v)*hzi*(
7569  > -(
7570  > cxdi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
7571  > cxd*(ypi*fin(7,i+1,j,k) +yp*fin(7,i+1,j+1,k)))
7572  > +(
7573  > cxdi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
7574  > cxd*( ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
7575 C
7576  fval(v,iadr)=sum
7577  enddo
7578  endif
7579 C
7580  if(ict(10).eq.1) then
7581 C ! fyyyzzz
7582  j=jj
7583  k=kk
7584 C
7585  iadr=iadr+1
7586  do v=1,ivec
7587  i=ii(v)
7588 C
7589 C ...in x direction
7590 C
7591  xp=xparam(v)
7592  xpi=1.0-xp
7593  xp2=xp*xp
7594  xpi2=xpi*xpi
7595 C
7596  cx=xp*(xp2-1.0)
7597  cxi=xpi*(xpi2-1.0)
7598  hx2=hx(v)*hx(v)
7599 C
7600  sum=hyi*hzi*(
7601  > -(
7602  > xpi*(-fin(6,i,j,k) +fin(6,i,j+1,k))+
7603  > xp*( -fin(6,i+1,j,k)+fin(6,i+1,j+1,k)))
7604  > +(
7605  > xpi*(-fin(6,i,j,k+1) +fin(6,i,j+1,k+1))+
7606  > xp*( -fin(6,i+1,j,k+1)+fin(6,i+1,j+1,k+1))))
7607 C
7608  sum=sum+sixth*hx2*hyi*hzi*(
7609  > -(
7610  > cxi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
7611  > cx*( -fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
7612  > +(
7613  > cxi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
7614  > cx*( -fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
7615 C
7616  fval(v,iadr)=sum
7617  enddo
7618  endif
7619 C
7620 C----------------------------------
7621 C 7th derivatives
7622 C
7623  else if(abs(ict(1)).eq.7) then
7624  if(ict(2).eq.1) then
7625 C ! fxxxyyyz
7626  j=jj
7627  k=kk
7628 C
7629 C ...and in z direction
7630 C
7631  zp=zparam
7632  zpi=1.0-zp
7633  zp2=zp*zp
7634  zpi2=zpi*zpi
7635 
7636  czd=3.0*zp2-1.0
7637  czdi=-3.0*zpi2+1.0
7638 C
7639  iadr=iadr+1
7640  do v=1,ivec
7641  i=ii(v)
7642 C
7643  sum=hyi*hxi(v)*hzi*(
7644  > -(
7645  > ( fin(4,i,j,k) -fin(4,i,j+1,k))
7646  > +(-fin(4,i+1,j,k)+fin(4,i+1,j+1,k)))
7647  > +(
7648  > ( fin(4,i,j,k+1) -fin(4,i,j+1,k+1))
7649  > +(-fin(4,i+1,j,k+1)+fin(4,i+1,j+1,k+1))))
7650 C
7651  sum=sum+sixth*hz*hyi*hxi(v)*(
7652  > czdi*(
7653  > ( fin(7,i,j,k) -fin(7,i,j+1,k))
7654  > +(-fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
7655  > +czd*(
7656  > ( fin(7,i,j,k+1) -fin(7,i,j+1,k+1))
7657  > +(-fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
7658 C
7659  fval(v,iadr)=sum
7660  enddo
7661  endif
7662 C
7663  if(ict(3).eq.1) then
7664 C ! fxxxyyzz
7665  j=jj
7666  k=kk
7667 C
7668 C ...and in y direction
7669 C
7670  yp=yparam
7671  ypi=1.0-yp
7672 C
7673 C ...and in z direction
7674 C
7675  zp=zparam
7676  zpi=1.0-zp
7677 C
7678  iadr=iadr+1
7679  do v=1,ivec
7680  i=ii(v)
7681 C
7682  sum=hxi(v)*(
7683  > zpi*(
7684  > -(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))
7685  > +(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
7686  > +zp*(
7687  > -(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))
7688  > +(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
7689 C
7690  fval(v,iadr)=sum
7691  enddo
7692  endif
7693 C
7694  if(ict(4).eq.1) then
7695 C ! fxxxyzzz
7696  j=jj
7697  k=kk
7698 C
7699 C ...and in y direction
7700 C
7701  yp=yparam
7702  ypi=1.0-yp
7703  yp2=yp*yp
7704  ypi2=ypi*ypi
7705 
7706  cyd=3.0*yp2-1.0
7707  cydi=-3.0*ypi2+1.0
7708 C
7709  iadr=iadr+1
7710  do v=1,ivec
7711  i=ii(v)
7712 C
7713  sum=hxi(v)*hyi*hzi*(
7714  > -(
7715  > ( fin(5,i,j,k) -fin(5,i,j+1,k))
7716  > +(-fin(5,i+1,j,k)+fin(5,i+1,j+1,k)))
7717  > +(
7718  > ( fin(5,i,j,k+1) -fin(5,i,j+1,k+1))
7719  > +(-fin(5,i+1,j,k+1)+fin(5,i+1,j+1,k+1))))
7720 C
7721  sum=sum+sixth*hy*hxi(v)*hzi*(
7722  > -(
7723  > -(cydi*fin(7,i,j,k) +cyd*fin(7,i,j+1,k))
7724  > +(cydi*fin(7,i+1,j,k)+cyd*fin(7,i+1,j+1,k)))
7725  > +(
7726  > -(cydi*fin(7,i,j,k+1) +cyd*fin(7,i,j+1,k+1))
7727  > +(cydi*fin(7,i+1,j,k+1)+cyd*fin(7,i+1,j+1,k+1))))
7728 C
7729  fval(v,iadr)=sum
7730  enddo
7731  endif
7732 C
7733  if(ict(5).eq.1) then
7734 C ! fxxyyyzz
7735  j=jj
7736  k=kk
7737 C
7738 C ...and in z direction
7739 C
7740  zp=zparam
7741  zpi=1.0-zp
7742 C
7743  iadr=iadr+1
7744  do v=1,ivec
7745  i=ii(v)
7746 C
7747 C ...in x direction
7748 C
7749  xp=xparam(v)
7750  xpi=1.0-xp
7751 C
7752  sum=hyi*(
7753  > zpi*(
7754  > xpi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
7755  > xp*( -fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
7756  > +zp*(
7757  > xpi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
7758  > xp*( -fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
7759 C
7760  fval(v,iadr)=sum
7761  enddo
7762  endif
7763 C
7764  if(ict(6).eq.1) then
7765 C ! fxxyyzzz
7766  j=jj
7767  k=kk
7768 C
7769 C ...and in y direction
7770 C
7771  yp=yparam
7772  ypi=1.0-yp
7773 C
7774  iadr=iadr+1
7775  do v=1,ivec
7776  i=ii(v)
7777 C
7778 C ...in x direction
7779 C
7780  xp=xparam(v)
7781  xpi=1.0-xp
7782 C
7783  sum=hzi*(
7784  > -(
7785  > xpi*(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))+
7786  > xp*(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
7787  > +(
7788  > xpi*(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))+
7789  > xp*(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
7790 C
7791  fval(v,iadr)=sum
7792  enddo
7793  endif
7794 C
7795  if(ict(7).eq.1) then
7796 C ! fxyyyzzz
7797  j=jj
7798  k=kk
7799 C
7800  iadr=iadr+1
7801  do v=1,ivec
7802  i=ii(v)
7803 C
7804 C ...in x direction
7805 C
7806  xp=xparam(v)
7807  xpi=1.0-xp
7808  xp2=xp*xp
7809  xpi2=xpi*xpi
7810 
7811  cxd=3.0*xp2-1.0
7812  cxdi=-3.0*xpi2+1.0
7813 C
7814  sum=hxi(v)*hyi*hzi*(
7815  > -(
7816  > ( fin(6,i,j,k) -fin(6,i,j+1,k))
7817  > +(-fin(6,i+1,j,k)+fin(6,i+1,j+1,k)))
7818  > +(
7819  > ( fin(6,i,j,k+1) -fin(6,i,j+1,k+1))
7820  > +(-fin(6,i+1,j,k+1)+fin(6,i+1,j+1,k+1))))
7821 C
7822  sum=sum+sixth*hx(v)*hyi*hzi*(
7823  > -(
7824  > cxdi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
7825  > cxd*(-fin(7,i+1,j,k) +fin(7,i+1,j+1,k)))
7826  > +(
7827  > cxdi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
7828  > cxd*(-fin(7,i+1,j,k+1) +fin(7,i+1,j+1,k+1))))
7829 C
7830  fval(v,iadr)=sum
7831  enddo
7832  endif
7833 C
7834 C----------------------------------
7835 C 8th derivatives
7836 C
7837  else if(abs(ict(1)).eq.8) then
7838  if(ict(2).eq.1) then
7839 C ! fxxxyyyzz
7840  j=jj
7841  k=kk
7842 C
7843 C ...and in z direction
7844 C
7845  zp=zparam
7846  zpi=1.0-zp
7847 C
7848  iadr=iadr+1
7849  do v=1,ivec
7850  i=ii(v)
7851 C
7852  sum=hyi*hxi(v)*(
7853  > zpi*(
7854  > ( fin(7,i,j,k) -fin(7,i,j+1,k))
7855  > +(-fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
7856  > +zp*(
7857  > ( fin(7,i,j,k+1) -fin(7,i,j+1,k+1))
7858  > +(-fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
7859 C
7860  fval(v,iadr)=sum
7861  enddo
7862  endif
7863 C
7864  if(ict(3).eq.1) then
7865 C ! fxxxyyzzz
7866  j=jj
7867  k=kk
7868 C
7869 C ...and in y direction
7870 C
7871  yp=yparam
7872  ypi=1.0-yp
7873 C
7874  iadr=iadr+1
7875  do v=1,ivec
7876  i=ii(v)
7877 C
7878  sum=hxi(v)*hzi*(
7879  > -(
7880  > -(ypi*fin(7,i,j,k) +yp*fin(7,i,j+1,k))
7881  > +(ypi*fin(7,i+1,j,k)+yp*fin(7,i+1,j+1,k)))
7882  > +(
7883  > -(ypi*fin(7,i,j,k+1) +yp*fin(7,i,j+1,k+1))
7884  > +(ypi*fin(7,i+1,j,k+1)+yp*fin(7,i+1,j+1,k+1))))
7885 C
7886  fval(v,iadr)=sum
7887  enddo
7888  endif
7889 C
7890  if(ict(4).eq.1) then
7891 C ! fxxyyyzzz
7892  j=jj
7893  k=kk
7894 C
7895  iadr=iadr+1
7896  do v=1,ivec
7897  i=ii(v)
7898 C
7899 C ...in x direction
7900 C
7901  xp=xparam(v)
7902  xpi=1.0-xp
7903 C
7904  sum=hyi*hzi*(
7905  > -(
7906  > xpi*(-fin(7,i,j,k) +fin(7,i,j+1,k))+
7907  > xp*( -fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
7908  > +(
7909  > xpi*(-fin(7,i,j,k+1) +fin(7,i,j+1,k+1))+
7910  > xp*( -fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
7911  fval(v,iadr)=sum
7912 C
7913  enddo
7914  endif
7915 C
7916 C----------------------------------
7917 C 9th derivative
7918 C
7919  else if(abs(ict(1)).eq.9) then
7920 C ! fxxxyyyzzz
7921  j=jj
7922  k=kk
7923 C
7924  iadr=iadr+1
7925  do v=1,ivec
7926  i=ii(v)
7927 C
7928  sum=hyi*hxi(v)*hzi*(
7929  > -(
7930  > ( fin(7,i,j,k) -fin(7,i,j+1,k))
7931  > +(-fin(7,i+1,j,k)+fin(7,i+1,j+1,k)))
7932  > +(
7933  > ( fin(7,i,j,k+1) -fin(7,i,j+1,k+1))
7934  > +(-fin(7,i+1,j,k+1)+fin(7,i+1,j+1,k+1))))
7935 C
7936  fval(v,iadr)=sum
7937  enddo
7938  endif
7939 C
7940  return
7941  end