5 &(xinit , yinit , ikinit , npinit , neinit ,
6 & x , y , npoin , npmax , shp , elt)
59 INTEGER,
INTENT(IN) :: NPINIT, NEINIT, NPOIN,NPMAX
60 DOUBLE PRECISION,
INTENT(IN) :: XINIT(npinit) , YINIT(npinit)
61 INTEGER,
INTENT(IN) :: IKINIT(neinit,3)
62 INTEGER,
INTENT(INOUT) :: ELT(npmax)
63 DOUBLE PRECISION,
INTENT(IN) :: X(npmax) , Y(npmax)
64 DOUBLE PRECISION,
INTENT(INOUT) :: SHP(npmax,3)
66 INTEGER IELEM , JELEM , IPOIN
67 DOUBLE PRECISION XP,YP,A1,A2,A3,C1,C2,X1,X2,X3,Y1,Y2,Y3
73 4
FORMAT(//,1x,
'DATA INTERPOLATION',/,
74 & 1x,
'------------------',/)
83 x1 = xinit(ikinit(ielem,1))
84 x2 = xinit(ikinit(ielem,2))
85 x3 = xinit(ikinit(ielem,3))
86 y1 = yinit(ikinit(ielem,1))
87 y2 = yinit(ikinit(ielem,2))
88 y3 = yinit(ikinit(ielem,3))
89 a1 = (x3-x2)*(yp-y2) - (y3-y2)*(xp-x2)
90 a2 = (x1-x3)*(yp-y3) - (y1-y3)*(xp-x3)
91 a3 = (x2-x1)*(yp-y1) - (y2-y1)*(xp-x1)
92 IF (a1.GE.0.AND.a2.GE.0.AND.a3.GE.0)
GOTO 30
93 c2 = min(a1,a2,a3) / ((x3-x2)*(y1-y2)-(y3-y2)*(x1-x2))
100 WRITE(
lu,*)
'EXTRAPOLATION REQUIRED FOR ',
103 x1 = xinit(ikinit(ielem,1))
104 x2 = xinit(ikinit(ielem,2))
105 x3 = xinit(ikinit(ielem,3))
106 y1 = yinit(ikinit(ielem,1))
107 y2 = yinit(ikinit(ielem,2))
108 y3 = yinit(ikinit(ielem,3))
109 a1 = (x3-x2)*(yp-y2) - (y3-y2)*(xp-x2)
110 a2 = (x1-x3)*(yp-y3) - (y1-y3)*(xp-x3)
111 a3 = (x2-x1)*(yp-y1) - (y2-y1)*(xp-x1)
114 c1 = (x3-x2)*(y1-y2)-(y3-y2)*(x1-x2)
subroutine interp(XINIT, YINIT, IKINIT, NPINIT, NEINIT, X, Y, NPOIN, NPMAX, SHP, ELT)