1 subroutine herm2ev(xget,yget,x,nx,y,ny,ilinx,iliny,
84 call herm2xy(xget,yget,x,nx,y,ny,ilinx,iliny,
85 > i,j,xparam,yparam,hx,hxi,hy,hyi,ier)
88 call herm2fcn(ict,1,1,
89 > fval,i,j,xparam,yparam,hx,hxi,hy,hyi,f,inf2,ny)
98 subroutine herm2xy(xget,yget,x,nx,y,ny,ilinx,iliny,
99 > i,j,xparam,yparam,hx,hxi,hy,hyi,ier)
142 if((xget.lt.x(1)).or.(xget.gt.x(nx)))
then
143 zxtol=4.0e-7*max(abs(x(1)),abs(x(nx)))
144 if((xget.lt.x(1)-zxtol).or.(xget.gt.x(nx)+zxtol))
then
146 write(6,1001) xget,x(1),x(nx)
147 1001
format(
' ?herm2ev: xget=',1pe11.4,
' out of range ',
148 > 1pe11.4,
' to ',1pe11.4)
150 if((xget.lt.x(1)-0.5*zxtol).or.
151 > (xget.gt.x(nx)+0.5*zxtol))
152 >
write(6,1011) xget,x(1),x(nx)
153 1011
format(
' %herm2ev: xget=',1pe15.8,
' beyond range ',
154 > 1pe15.8,
' to ',1pe15.8,
' (fixup applied)')
155 if(xget.lt.x(1))
then
162 if((yget.lt.y(1)).or.(yget.gt.y(ny)))
then
163 zytol=4.0e-7*max(abs(y(1)),abs(y(ny)))
164 if((yget.lt.y(1)-zytol).or.(yget.gt.y(ny)+zytol))
then
166 write(6,1002) yget,y(1),y(ny)
167 1002
format(
' ?herm2ev: yget=',1pe11.4,
' out of range ',
168 > 1pe11.4,
' to ',1pe11.4)
170 if((yget.lt.y(1)-0.5*zytol).or.
171 > (yget.gt.y(ny)+0.5*zytol))
172 >
write(6,1012) yget,y(1),y(ny)
173 1012
format(
' %herm2ev: yget=',1pe15.8,
' beyond range ',
174 > 1pe15.8,
' to ',1pe15.8,
' (fixup applied)')
175 if(yget.lt.y(1))
then
190 ii=1+nxm*(zxget-x(1))/(x(nx)-x(1))
192 if(zxget.lt.x(i))
then
194 else if(zxget.gt.x(i+1))
then
198 if((1.le.i).and.(i.lt.nxm))
then
199 if((x(i).le.zxget).and.(zxget.le.x(i+1)))
then
202 call zonfind(x,nx,zxget,i)
206 call zonfind(x,nx,zxget,i)
211 jj=1+nym*(zyget-y(1))/(y(ny)-y(1))
213 if(zyget.lt.y(j))
then
215 else if(zyget.gt.y(j+1))
then
219 if((1.le.j).and.(j.lt.nym))
then
220 if((y(j).le.zyget).and.(zyget.le.y(j+1)))
then
223 call zonfind(y,ny,zyget,j)
227 call zonfind(y,ny,zyget,j)
237 xparam=(zxget-x(i))*hxi
238 yparam=(zyget-y(j))*hyi
246 subroutine herm2fcn(ict,ivec,ivecd,
247 > fval,ii,jj,xparam,yparam,hx,hxi,hy,hyi,
254 integer ii(ivec),jj(ivec)
255 real xparam(ivec),yparam(ivec)
258 real hx(ivec),hy(ivec)
259 real hxi(ivec),hyi(ivec)
262 real fin(0:3,inf2,ny)
328 bxbarp=xpi*(3.0*xpi-2.0)
333 bybarp=ypi*(3.0*ypi-2.0)
344 sum=axbar*(aybar*fin(0,i,j) +ay*fin(0,i,j+1))+
345 > ax*(aybar*fin(0,i+1,j)+ay*fin(0,i+1,j+1))
348 > bxbar*(aybar*fin(1,i,j) +ay*fin(1,i,j+1))+
349 > bx*(aybar*fin(1,i+1,j)+ay*fin(1,i+1,j+1)))
352 > axbar*(bybar*fin(2,i,j) +by*fin(2,i,j+1))+
353 > ax*(bybar*fin(2,i+1,j)+by*fin(2,i+1,j+1)))
355 sum=sum+hx(v)*hy(v)*(
356 > bxbar*(bybar*fin(3,i,j) +by*fin(3,i,j+1))+
357 > bx*(bybar*fin(3,i+1,j)+by*fin(3,i+1,j+1)))
369 > axbarp*(aybar*fin(0,i,j) +ay*fin(0,i,j+1))+
370 > axp*(aybar*fin(0,i+1,j)+ay*fin(0,i+1,j+1)))
373 > bxbarp*(aybar*fin(1,i,j) +ay*fin(1,i,j+1))+
374 > bxp*(aybar*fin(1,i+1,j)+ay*fin(1,i+1,j+1))
376 sum=sum+hxi(v)*hy(v)*(
377 > axbarp*(bybar*fin(2,i,j) +by*fin(2,i,j+1))+
378 > axp*(bybar*fin(2,i+1,j)+by*fin(2,i+1,j+1)))
381 > bxbarp*(bybar*fin(3,i,j) +by*fin(3,i,j+1))+
382 > bxp*(bybar*fin(3,i+1,j)+by*fin(3,i+1,j+1)))
394 > axbar*(aybarp*fin(0,i,j) +ayp*fin(0,i,j+1))+
395 > ax*(aybarp*fin(0,i+1,j)+ayp*fin(0,i+1,j+1)))
397 sum=sum+hx(v)*hyi(v)*(
398 > bxbar*(aybarp*fin(1,i,j) +ayp*fin(1,i,j+1))+
399 > bx*(aybarp*fin(1,i+1,j)+ayp*fin(1,i+1,j+1)))
402 > axbar*(bybarp*fin(2,i,j) +byp*fin(2,i,j+1))+
403 > ax*(bybarp*fin(2,i+1,j)+byp*fin(2,i+1,j+1))
406 > bxbar*(bybarp*fin(3,i,j) +byp*fin(3,i,j+1))+
407 > bx*(bybarp*fin(3,i+1,j)+byp*fin(3,i+1,j+1)))
419 > axbarp*(aybarp*fin(0,i,j) +ayp*fin(0,i,j+1))+
420 > axp*(aybarp*fin(0,i+1,j)+ayp*fin(0,i+1,j+1)))
423 > bxbarp*(aybarp*fin(1,i,j) +ayp*fin(1,i,j+1))+
424 > bxp*(aybarp*fin(1,i+1,j)+ayp*fin(1,i+1,j+1)))
427 > axbarp*(bybarp*fin(2,i,j) +byp*fin(2,i,j+1))+
428 > axp*(bybarp*fin(2,i+1,j)+byp*fin(2,i+1,j+1)))
431 > bxbarp*(bybarp*fin(3,i,j) +byp*fin(3,i,j+1))+
432 > bxp*(bybarp*fin(3,i+1,j)+byp*fin(3,i+1,j+1))
446 subroutine herm2fcnx(ict,ivec,ivecd,
447 > fval,ii,jj,xparam,yparam,hx,hxi,hy,hyi,
455 real xparam(ivec),yparam
462 real fin(0:3,inf2,ny)
515 bybarp=ypi*(3.0*ypi-2.0)
536 bxbarp=xpi*(3.0*xpi-2.0)
547 sum=axbar*(aybar*fin(0,i,j) +ay*fin(0,i,j+1))+
548 > ax*(aybar*fin(0,i+1,j)+ay*fin(0,i+1,j+1))
551 > bxbar*(aybar*fin(1,i,j) +ay*fin(1,i,j+1))+
552 > bx*(aybar*fin(1,i+1,j)+ay*fin(1,i+1,j+1)))
555 > axbar*(bybar*fin(2,i,j) +by*fin(2,i,j+1))+
556 > ax*(bybar*fin(2,i+1,j)+by*fin(2,i+1,j+1)))
559 > bxbar*(bybar*fin(3,i,j) +by*fin(3,i,j+1))+
560 > bx*(bybar*fin(3,i+1,j)+by*fin(3,i+1,j+1)))
572 > axbarp*(aybar*fin(0,i,j) +ay*fin(0,i,j+1))+
573 > axp*(aybar*fin(0,i+1,j)+ay*fin(0,i+1,j+1)))
576 > bxbarp*(aybar*fin(1,i,j) +ay*fin(1,i,j+1))+
577 > bxp*(aybar*fin(1,i+1,j)+ay*fin(1,i+1,j+1))
580 > axbarp*(bybar*fin(2,i,j) +by*fin(2,i,j+1))+
581 > axp*(bybar*fin(2,i+1,j)+by*fin(2,i+1,j+1)))
584 > bxbarp*(bybar*fin(3,i,j) +by*fin(3,i,j+1))+
585 > bxp*(bybar*fin(3,i+1,j)+by*fin(3,i+1,j+1)))
597 > axbar*(aybarp*fin(0,i,j) +ayp*fin(0,i,j+1))+
598 > ax*(aybarp*fin(0,i+1,j)+ayp*fin(0,i+1,j+1)))
601 > bxbar*(aybarp*fin(1,i,j) +ayp*fin(1,i,j+1))+
602 > bx*(aybarp*fin(1,i+1,j)+ayp*fin(1,i+1,j+1)))
605 > axbar*(bybarp*fin(2,i,j) +byp*fin(2,i,j+1))+
606 > ax*(bybarp*fin(2,i+1,j)+byp*fin(2,i+1,j+1))
609 > bxbar*(bybarp*fin(3,i,j) +byp*fin(3,i,j+1))+
610 > bx*(bybarp*fin(3,i+1,j)+byp*fin(3,i+1,j+1)))
622 > axbarp*(aybarp*fin(0,i,j) +ayp*fin(0,i,j+1))+
623 > axp*(aybarp*fin(0,i+1,j)+ayp*fin(0,i+1,j+1)))
626 > bxbarp*(aybarp*fin(1,i,j) +ayp*fin(1,i,j+1))+
627 > bxp*(aybarp*fin(1,i+1,j)+ayp*fin(1,i+1,j+1)))
630 > axbarp*(bybarp*fin(2,i,j) +byp*fin(2,i,j+1))+
631 > axp*(bybarp*fin(2,i+1,j)+byp*fin(2,i+1,j+1)))
634 > bxbarp*(bybarp*fin(3,i,j) +byp*fin(3,i,j+1))+
635 > bxp*(bybarp*fin(3,i+1,j)+byp*fin(3,i+1,j+1))