1 subroutine r8evbicub(xget,yget,x,nx,y,ny,ilinx,iliny,
17 INTEGER,
PARAMETER :: R8=selected_real_kind(12,100)
107 real*8 xparam(1),yparam(1)
123 call r8herm2xy(xget,yget,x,nx,y,ny,ilinx,iliny,
124 > i(1),j(1),xparam(1),yparam(1),hx(1),hxi(1),hy(1),hyi(1),ier)
127 call r8fvbicub(ict,1,1,
128 > fval,i,j,xparam,yparam,hx,hxi,hy,hyi,f,inf2,ny)
136 subroutine r8fvbicub(ict,ivec,ivecd,
137 > fval,ii,jj,xparam,yparam,hx,hxi,hy,hyi,
143 INTEGER,
PARAMETER :: R8=selected_real_kind(12,100)
144 INTEGER ny,inf2,iadr,i,j
147 real*8 z36th,xp,xpi,xp2,xpi2,cx,cxi,hx2,yp,ypi,yp2,ypi2,cy
148 real*8 cyi,hy2,cxd,cxdi,cyd,cydi
154 integer ii(ivec),jj(ivec)
155 real*8 xparam(ivec),yparam(ivec)
158 real*8 hx(ivec),hy(ivec)
159 real*8 hxi(ivec),hyi(ivec)
162 real*8 fin(0:3,inf2,ny)
187 real*8,
parameter :: sixth = 0.166666666666666667_r8
216 cxi=xpi*(xpi2-1.0_r8)
227 cyi=ypi*(ypi2-1.0_r8)
230 sum=xpi*(ypi*fin(0,i,j) +yp*fin(0,i,j+1))+
231 > xp*(ypi*fin(0,i+1,j)+yp*fin(0,i+1,j+1))
234 > cxi*(ypi*fin(1,i,j) +yp*fin(1,i,j+1))+
235 > cx*(ypi*fin(1,i+1,j)+yp*fin(1,i+1,j+1)))
238 > xpi*(cyi*fin(2,i,j) +cy*fin(2,i,j+1))+
239 > xp*(cyi*fin(2,i+1,j)+cy*fin(2,i+1,j+1)))
241 sum=sum+z36th*hx2*hy2*(
242 > cxi*(cyi*fin(3,i,j) +cy*fin(3,i,j+1))+
243 > cx*(cyi*fin(3,i+1,j)+cy*fin(3,i+1,j+1)))
265 cxd=3.0_r8*xp2-1.0_r8
266 cxdi=-3.0_r8*xpi2+1.0_r8
276 cyi=ypi*(ypi2-1.0_r8)
280 > -(ypi*fin(0,i,j) +yp*fin(0,i,j+1))
281 > +(ypi*fin(0,i+1,j)+yp*fin(0,i+1,j+1)))
283 sum=sum+sixth*hx(v)*(
284 > cxdi*(ypi*fin(1,i,j) +yp*fin(1,i,j+1))+
285 > cxd*(ypi*fin(1,i+1,j)+yp*fin(1,i+1,j+1)))
287 sum=sum+sixth*hxi(v)*hy2*(
288 > -(cyi*fin(2,i,j) +cy*fin(2,i,j+1))
289 > +(cyi*fin(2,i+1,j)+cy*fin(2,i+1,j+1)))
291 sum=sum+z36th*hx(v)*hy2*(
292 > cxdi*(cyi*fin(3,i,j) +cy*fin(3,i,j+1))+
293 > cxd*(cyi*fin(3,i+1,j)+cy*fin(3,i+1,j+1)))
316 cxi=xpi*(xpi2-1.0_r8)
326 cyd=3.0_r8*yp2-1.0_r8
327 cydi=-3.0_r8*ypi2+1.0_r8
330 > xpi*(-fin(0,i,j) +fin(0,i,j+1))+
331 > xp*(-fin(0,i+1,j)+fin(0,i+1,j+1)))
333 sum=sum+sixth*hx2*hyi(v)*(
334 > cxi*(-fin(1,i,j) +fin(1,i,j+1))+
335 > cx*(-fin(1,i+1,j)+fin(1,i+1,j+1)))
337 sum=sum+sixth*hy(v)*(
338 > xpi*(cydi*fin(2,i,j) +cyd*fin(2,i,j+1))+
339 > xp*(cydi*fin(2,i+1,j)+cyd*fin(2,i+1,j+1)))
341 sum=sum+z36th*hx2*hy(v)*(
342 > cxi*(cydi*fin(3,i,j) +cyd*fin(3,i,j+1))+
343 > cx*(cydi*fin(3,i+1,j)+cyd*fin(3,i+1,j+1)))
371 cyi=ypi*(ypi2-1.0_r8)
375 > xpi*(ypi*fin(1,i,j) +yp*fin(1,i,j+1))+
376 > xp*(ypi*fin(1,i+1,j)+yp*fin(1,i+1,j+1)))
379 > xpi*(cyi*fin(3,i,j) +cy*fin(3,i,j+1))+
380 > xp*(cyi*fin(3,i+1,j)+cy*fin(3,i+1,j+1)))
403 cxi=xpi*(xpi2-1.0_r8)
412 > xpi*(ypi*fin(2,i,j) +yp*fin(2,i,j+1))+
413 > xp*(ypi*fin(2,i+1,j)+yp*fin(2,i+1,j+1)))
416 > cxi*(ypi*fin(3,i,j) +yp*fin(3,i,j+1))+
417 > cx*(ypi*fin(3,i+1,j)+yp*fin(3,i+1,j+1)))
439 cxd=3.0_r8*xp2-1.0_r8
440 cxdi=-3.0_r8*xpi2+1.0_r8
449 cyd=3.0_r8*yp2-1.0_r8
450 cydi=-3.0_r8*ypi2+1.0_r8
453 > fin(0,i,j) -fin(0,i,j+1)
454 > -fin(0,i+1,j)+fin(0,i+1,j+1))
456 sum=sum+sixth*hx(v)*hyi(v)*(
457 > cxdi*(-fin(1,i,j) +fin(1,i,j+1))+
458 > cxd*(-fin(1,i+1,j)+fin(1,i+1,j+1)))
460 sum=sum+sixth*hxi(v)*hy(v)*(
461 > -(cydi*fin(2,i,j) +cyd*fin(2,i,j+1))
462 > +(cydi*fin(2,i+1,j)+cyd*fin(2,i+1,j+1)))
464 sum=sum+z36th*hx(v)*hy(v)*(
465 > cxdi*(cydi*fin(3,i,j) +cyd*fin(3,i,j+1))+
466 > cxd*(cydi*fin(3,i+1,j)+cyd*fin(3,i+1,j+1)))
474 else if(ict(1).eq.3)
then
486 cyi=ypi*(ypi2-1.0_r8)
489 > -(ypi*fin(1,i,j) +yp*fin(1,i,j+1))
490 > +(ypi*fin(1,i+1,j)+yp*fin(1,i+1,j+1)))
492 sum=sum+sixth*hy2*hxi(v)*(
493 > -(cyi*fin(3,i,j) +cy*fin(3,i,j+1))
494 > +(cyi*fin(3,i+1,j)+cy*fin(3,i+1,j+1)))
512 cyd=3.0_r8*yp2-1.0_r8
513 cydi=-3.0_r8*ypi2+1.0_r8
516 > xpi*(-fin(1,i,j) +fin(1,i,j+1))+
517 > xp*(-fin(1,i+1,j) +fin(1,i+1,j+1)))
519 sum=sum+sixth*hy(v)*(
520 > xpi*(cydi*fin(3,i,j) +cyd*fin(3,i,j+1))+
521 > xp*(cydi*fin(3,i+1,j)+cyd*fin(3,i+1,j+1)))
537 cxd=3.0_r8*xp2-1.0_r8
538 cxdi=-3.0_r8*xpi2+1.0_r8
543 > -(ypi*fin(2,i,j) +yp*fin(2,i,j+1))
544 > +(ypi*fin(2,i+1,j)+yp*fin(2,i+1,j+1)))
546 sum=sum+sixth*hx(v)*(
547 > cxdi*(ypi*fin(3,i,j) +yp*fin(3,i,j+1))+
548 > cxd*(ypi*fin(3,i+1,j)+yp*fin(3,i+1,j+1)))
567 cxi=xpi*(xpi2-1.0_r8)
571 > xpi*(-fin(2,i,j) +fin(2,i,j+1))+
572 > xp*(-fin(2,i+1,j) +fin(2,i+1,j+1)))
574 sum=sum+sixth*hx2*hyi(v)*(
575 > cxi*(-fin(3,i,j) +fin(3,i,j+1))+
576 > cx*(-fin(3,i+1,j) +fin(3,i+1,j+1)))
585 else if(ict(1).eq.4)
then
596 cyd=3.0_r8*yp2-1.0_r8
597 cydi=-3.0_r8*ypi2+1.0_r8
600 > +( fin(1,i,j) -fin(1,i,j+1))
601 > +(-fin(1,i+1,j)+fin(1,i+1,j+1)))
603 sum=sum+sixth*hy(v)*hxi(v)*(
604 > -(cydi*fin(3,i,j) +cyd*fin(3,i,j+1))
605 > +(cydi*fin(3,i+1,j)+cyd*fin(3,i+1,j+1)))
623 sum=xpi*(ypi*fin(3,i,j) +yp*fin(3,i,j+1))+
624 > xp*(ypi*fin(3,i+1,j)+yp*fin(3,i+1,j+1))
642 cxd=3.0_r8*xp2-1.0_r8
643 cxdi=-3.0_r8*xpi2+1.0_r8
646 > +( fin(2,i,j) -fin(2,i,j+1))
647 > +(-fin(2,i+1,j)+fin(2,i+1,j+1)))
649 sum=sum+sixth*hx(v)*hyi(v)*(
650 > cxdi*(-fin(3,i,j) +fin(3,i,j+1))+
651 > cxd*(-fin(3,i+1,j) +fin(3,i+1,j+1)))
660 else if(ict(1).eq.5)
then
672 > -(ypi*fin(3,i,j) +yp*fin(3,i,j+1))
673 > +(ypi*fin(3,i+1,j)+yp*fin(3,i+1,j+1)))
690 > xpi*(-fin(3,i,j) +fin(3,i,j+1))+
691 > xp*(-fin(3,i+1,j)+fin(3,i+1,j+1)))
700 else if(ict(1).eq.6)
then
707 > +( fin(3,i,j) -fin(3,i,j+1))
708 > +(-fin(3,i+1,j)+fin(3,i+1,j+1)))
720 subroutine r8fvbicubx(ict,ivec,ivecd,
721 > fval,ii,jj,xparam,yparam,hx,hxi,hy,hyi,
727 INTEGER,
PARAMETER :: R8=selected_real_kind(12,100)
728 INTEGER ny,inf2,iadr,j,i
731 real*8 z36th,yp,ypi,yp2,ypi2,cy,cyi,hy2,xp,xpi,xp2,xpi2,cx
732 real*8 cxi,hx2,cxd,cxdi,cyd,cydi
739 real*8 xparam(ivec),yparam
746 real*8 fin(0:3,inf2,ny)
771 REAL*8,
parameter :: sixth = 0.166666666666666667_r8
797 cyi=ypi*(ypi2-1.0_r8)
812 cxi=xpi*(xpi2-1.0_r8)
815 sum=xpi*(ypi*fin(0,i,j) +yp*fin(0,i,j+1))+
816 > xp*(ypi*fin(0,i+1,j)+yp*fin(0,i+1,j+1))
819 > cxi*(ypi*fin(1,i,j) +yp*fin(1,i,j+1))+
820 > cx*(ypi*fin(1,i+1,j)+yp*fin(1,i+1,j+1)))
823 > xpi*(cyi*fin(2,i,j) +cy*fin(2,i,j+1))+
824 > xp*(cyi*fin(2,i+1,j)+cy*fin(2,i+1,j+1)))
826 sum=sum+z36th*hx2*hy2*(
827 > cxi*(cyi*fin(3,i,j) +cy*fin(3,i,j+1))+
828 > cx*(cyi*fin(3,i+1,j)+cy*fin(3,i+1,j+1)))
848 cyi=ypi*(ypi2-1.0_r8)
862 cxd=3.0_r8*xp2-1.0_r8
863 cxdi=-3.0_r8*xpi2+1.0_r8
866 > -(ypi*fin(0,i,j) +yp*fin(0,i,j+1))
867 > +(ypi*fin(0,i+1,j)+yp*fin(0,i+1,j+1)))
869 sum=sum+sixth*hx(v)*(
870 > cxdi*(ypi*fin(1,i,j) +yp*fin(1,i,j+1))+
871 > cxd*(ypi*fin(1,i+1,j)+yp*fin(1,i+1,j+1)))
873 sum=sum+sixth*hxi(v)*hy2*(
874 > -(cyi*fin(2,i,j) +cy*fin(2,i,j+1))
875 > +(cyi*fin(2,i+1,j)+cy*fin(2,i+1,j+1)))
877 sum=sum+z36th*hx(v)*hy2*(
878 > cxdi*(cyi*fin(3,i,j) +cy*fin(3,i,j+1))+
879 > cxd*(cyi*fin(3,i+1,j)+cy*fin(3,i+1,j+1)))
898 cyd=3.0_r8*yp2-1.0_r8
899 cydi=-3.0_r8*ypi2+1.0_r8
913 cxi=xpi*(xpi2-1.0_r8)
917 > xpi*(-fin(0,i,j) +fin(0,i,j+1))+
918 > xp*(-fin(0,i+1,j)+fin(0,i+1,j+1)))
920 sum=sum+sixth*hx2*hyi*(
921 > cxi*(-fin(1,i,j) +fin(1,i,j+1))+
922 > cx*(-fin(1,i+1,j)+fin(1,i+1,j+1)))
925 > xpi*(cydi*fin(2,i,j) +cyd*fin(2,i,j+1))+
926 > xp*(cydi*fin(2,i+1,j)+cyd*fin(2,i+1,j+1)))
928 sum=sum+z36th*hx2*hy*(
929 > cxi*(cydi*fin(3,i,j) +cyd*fin(3,i,j+1))+
930 > cx*(cydi*fin(3,i+1,j)+cyd*fin(3,i+1,j+1)))
950 cyi=ypi*(ypi2-1.0_r8)
963 > xpi*(ypi*fin(1,i,j) +yp*fin(1,i,j+1))+
964 > xp*(ypi*fin(1,i+1,j)+yp*fin(1,i+1,j+1)))
967 > xpi*(cyi*fin(3,i,j) +cy*fin(3,i,j+1))+
968 > xp*(cyi*fin(3,i+1,j)+cy*fin(3,i+1,j+1)))
997 cxi=xpi*(xpi2-1.0_r8)
1001 > xpi*(ypi*fin(2,i,j) +yp*fin(2,i,j+1))+
1002 > xp*(ypi*fin(2,i+1,j)+yp*fin(2,i+1,j+1)))
1005 > cxi*(ypi*fin(3,i,j) +yp*fin(3,i,j+1))+
1006 > cx*(ypi*fin(3,i+1,j)+yp*fin(3,i+1,j+1)))
1012 if(ict(6).eq.1)
then
1025 cyd=3.0_r8*yp2-1.0_r8
1026 cydi=-3.0_r8*ypi2+1.0_r8
1039 cxd=3.0_r8*xp2-1.0_r8
1040 cxdi=-3.0_r8*xpi2+1.0_r8
1043 > fin(0,i,j) -fin(0,i,j+1)
1044 > -fin(0,i+1,j)+fin(0,i+1,j+1))
1046 sum=sum+sixth*hx(v)*hyi*(
1047 > cxdi*(-fin(1,i,j) +fin(1,i,j+1))+
1048 > cxd*(-fin(1,i+1,j)+fin(1,i+1,j+1)))
1050 sum=sum+sixth*hxi(v)*hy*(
1051 > -(cydi*fin(2,i,j) +cyd*fin(2,i,j+1))
1052 > +(cydi*fin(2,i+1,j)+cyd*fin(2,i+1,j+1)))
1054 sum=sum+z36th*hx(v)*hy*(
1055 > cxdi*(cydi*fin(3,i,j) +cyd*fin(3,i,j+1))+
1056 > cxd*(cydi*fin(3,i+1,j)+cyd*fin(3,i+1,j+1)))
1064 else if(ict(1).eq.3)
then
1065 if(ict(2).eq.1)
then
1073 cyi=ypi*(ypi2-1.0_r8)
1080 > -(ypi*fin(1,i,j) +yp*fin(1,i,j+1))
1081 > +(ypi*fin(1,i+1,j)+yp*fin(1,i+1,j+1)))
1083 sum=sum+sixth*hy2*hxi(v)*(
1084 > -(cyi*fin(3,i,j) +cy*fin(3,i,j+1))
1085 > +(cyi*fin(3,i+1,j)+cy*fin(3,i+1,j+1)))
1091 if(ict(3).eq.1)
then
1099 cyd=3.0_r8*yp2-1.0_r8
1100 cydi=-3.0_r8*ypi2+1.0_r8
1109 > xpi*(-fin(1,i,j) +fin(1,i,j+1))+
1110 > xp*(-fin(1,i+1,j) +fin(1,i+1,j+1)))
1113 > xpi*(cydi*fin(3,i,j) +cyd*fin(3,i,j+1))+
1114 > xp*(cydi*fin(3,i+1,j)+cyd*fin(3,i+1,j+1)))
1120 if(ict(4).eq.1)
then
1133 cxd=3.0_r8*xp2-1.0_r8
1134 cxdi=-3.0_r8*xpi2+1.0_r8
1137 > -(ypi*fin(2,i,j) +yp*fin(2,i,j+1))
1138 > +(ypi*fin(2,i+1,j)+yp*fin(2,i+1,j+1)))
1140 sum=sum+sixth*hx(v)*(
1141 > cxdi*(ypi*fin(3,i,j) +yp*fin(3,i,j+1))+
1142 > cxd*(ypi*fin(3,i+1,j)+yp*fin(3,i+1,j+1)))
1148 if(ict(5).eq.1)
then
1161 cxi=xpi*(xpi2-1.0_r8)
1165 > xpi*(-fin(2,i,j) +fin(2,i,j+1))+
1166 > xp*(-fin(2,i+1,j) +fin(2,i+1,j+1)))
1168 sum=sum+sixth*hx2*hyi*(
1169 > cxi*(-fin(3,i,j) +fin(3,i,j+1))+
1170 > cx*(-fin(3,i+1,j) +fin(3,i+1,j+1)))
1179 else if(ict(1).eq.4)
then
1180 if(ict(2).eq.1)
then
1189 cyd=3.0_r8*yp2-1.0_r8
1190 cydi=-3.0_r8*ypi2+1.0_r8
1196 > +( fin(1,i,j) -fin(1,i,j+1))
1197 > +(-fin(1,i+1,j)+fin(1,i+1,j+1)))
1199 sum=sum+sixth*hy*hxi(v)*(
1200 > -(cydi*fin(3,i,j) +cyd*fin(3,i,j+1))
1201 > +(cydi*fin(3,i+1,j)+cyd*fin(3,i+1,j+1)))
1207 if(ict(3).eq.1)
then
1219 sum=xpi*(ypi*fin(3,i,j) +yp*fin(3,i,j+1))+
1220 > xp*(ypi*fin(3,i+1,j)+yp*fin(3,i+1,j+1))
1226 if(ict(4).eq.1)
then
1239 cxd=3.0_r8*xp2-1.0_r8
1240 cxdi=-3.0_r8*xpi2+1.0_r8
1243 > +( fin(2,i,j) -fin(2,i,j+1))
1244 > +(-fin(2,i+1,j)+fin(2,i+1,j+1)))
1246 sum=sum+sixth*hx(v)*hyi*(
1247 > cxdi*(-fin(3,i,j) +fin(3,i,j+1))+
1248 > cxd*(-fin(3,i+1,j) +fin(3,i+1,j+1)))
1257 else if(ict(1).eq.5)
then
1258 if(ict(2).eq.1)
then
1270 > -(ypi*fin(3,i,j) +yp*fin(3,i,j+1))
1271 > +(ypi*fin(3,i+1,j)+yp*fin(3,i+1,j+1)))
1277 if(ict(3).eq.1)
then
1288 > xpi*(-fin(3,i,j) +fin(3,i,j+1))+
1289 > xp*(-fin(3,i+1,j)+fin(3,i+1,j+1)))
1298 else if(ict(1).eq.6)
then
1305 > +( fin(3,i,j) -fin(3,i,j+1))
1306 > +(-fin(3,i+1,j)+fin(3,i+1,j+1)))