5 &(xrelv,yrelv,zrelv,np,x,y,z,i)
34 INTEGER,
INTENT(IN) :: NP
35 DOUBLE PRECISION,
INTENT(IN) :: X,Y
36 DOUBLE PRECISION,
INTENT(IN) :: XRELV(np),YRELV(np)
37 DOUBLE PRECISION,
INTENT(IN) :: ZRELV(np,
ndir+1)
38 DOUBLE PRECISION,
INTENT(OUT) :: Z(
ndir+1)
45 DOUBLE PRECISION DIST1,DIST2,DIST3,DIST4
46 DOUBLE PRECISION ZCADR1,ZCADR2,ZCADR3,ZCADR4
47 DOUBLE PRECISION DIFX,DIFY,DIST,X1,Y1,X2,Y2,X3,Y3,X4,Y4
48 DOUBLE PRECISION ZNUM,ZDEN
50 LOGICAL OK1,OK2,OK3,OK4
79 dist = difx*difx + dify*dify
81 IF ( dist.LT.1.d-6 ) dist=1.d-6
83 IF( difx.LE.0.d0 .AND. dify.LE.0.d0)
THEN 85 IF(
debug.GT.0) x1=xrelv(n)
86 IF(
debug.GT.0) y1=yrelv(n)
93 ELSEIF( difx.GE.0.d0 .AND. dify.LE.0.d0)
THEN 95 IF(
debug.GT.0) x2=xrelv(n)
96 IF(
debug.GT.0) y2=yrelv(n)
103 ELSEIF( difx.GE.0.d0 .AND. dify.GE.0.d0)
THEN 104 IF(dist.LE.dist3)
THEN 105 IF(
debug.GT.0) x3=xrelv(n)
106 IF(
debug.GT.0) y3=yrelv(n)
113 ELSEIF( difx.LE.0.d0 .AND. dify.GE.0.d0)
THEN 114 IF(dist.LE.dist4)
THEN 115 IF(
debug.GT.0) x4=xrelv(n)
116 IF(
debug.GT.0) y4=yrelv(n)
142 znum = znum + zrelv(n1,idir)/dist1
143 zden = zden + 1.d0/dist1
147 znum = znum + zrelv(n2,idir)/dist2
148 zden = zden + 1.d0/dist2
152 znum = znum + zrelv(n3,idir)/dist3
153 zden = zden + 1.d0/dist3
157 znum = znum + zrelv(n4,idir)/dist4
158 zden = zden + 1.d0/dist4
172 401
FORMAT(/,1x,
'FASDPA_SP : NOT ENOUGH DATA TO INTERPOLATE ',
173 &
'AT ARTEMIS BOUNDARY NODE : ',i7)
subroutine fasp_sp(XRELV, YRELV, ZRELV, NP, X, Y, Z, I)