1 SUBROUTINE TLIN4X(X1,X2,X3,X4,Y,NX1,NX2,NX3,NX4,XA1,XA2,XA3,XA4,YA 2 1,LX1L,LX2L,LX3L,LX4L,LX1U,LX2U,LX3U,LX4U,MESS,NMSS,ROUT) 3C 4C*** LINEAR INTERPOLATION OF Y=F(X1,X2,X3,X4) 5C ----STRUCTURE OF Y ARRAY IS Y(NX2,NX1,NX3,NX4) 6C 7 DIMENSION Y(1),X1(1),X2(1),X3(1),X4(1), 8 1 DA(3),MESS(20),ROUT(2) 9 DIMENSION MSSCL(21),RMSCL(21) 10 EQUIVALENCE (RMSCL(1),MSSCL(1)) 11 LOGICAL NOIN4,NAS4,X4A,X4B,MSSG4,EX4,LG(7) 12 EQUIVALENCE (NOIN4,LG(1)),(X4A,LG(2)),(X4B,LG(3)),(MSSG4,LG(4)), 13 1 (EX4,LG(5)),(DA(1),D0),(DA(2),D1),(DA(3),D2),(NAS4,LG(6)) 14 DATA TLIN/4H1TIN/,HOL1/4H1EXP/ 15 DATA MSSCL/4HTLIN,4H4X ,2*0,4,16*0/ 16C 17C ----INITIALIZE SWITCHES. 18C 19 CALL SWITCH(LG,LX4L,LX4U,XA4,X4,NX4) 20 IF(LG(7))GO TO 1110 21 1000 CALL GLOOK(NX4,XA4,X4,NAS4,NOIN4,I4,T4) 22 1010 N123=NX1*NX2*NX3 23 LOC=N123*(I4-1)+1 24 DO 1030 I=1,2 25 IX=4-I 26 GO TO 1140 27 1020 IF(NOIN4)GO TO 1070 28 IF(I.EQ.1)LOC=LOC-N123 29 1030 CONTINUE 30 IF(.NOT.EX4)GO TO 1050 31 IF(NX4.LT.3)GO TO 1040 32 IF(X4A.AND.LX4U.GT.1)GO TO 1120 33 IF(X4B.AND.LX4L.GT.1) GO TO 1180 34 1040 IF(X4A)GO TO 1190 35 1050 D0=D1 36 1060 D2=D0+T4*(D2-D1) 37 1070 YA=D2 38 1080 IF(MSSG4.OR.RO.EQ.HOL1)GO TO 1090 39 RETURN 40 1090 CONTINUE 41C 42C ----SUPRESS MESSAGE IF CALLED BY INTERX 43C 44 IF(ROUT(1).NE.TLIN)GO TO 1100 45 ROUT(1)=HOL1 46 RETURN 47C 48C ----PRINT EXTRAPOLATION MESSAGE. 49C 50 1100 MSSCL(3)=NMSS 51 RMSCL(4)=YA 52C 53C ----1ST VARIABLE. 54C 55 RMSCL(6)=XA1 56 MSSCL(7)=NX1 57 MSSCL(8)=LX1L 58 MSSCL(9)=LX1U 59C 60C ----2ND VARIABLE. 61C 62 RMSCL(10)=XA2 63 MSSCL(11)=NX2 64 MSSCL(12)=LX2L 65 MSSCL(13)=LX2U 66C 67C ----3RD VARIABLE. 68C 69 RMSCL(14)=XA3 70 MSSCL(15)=NX3 71 MSSCL(16)=LX3L 72 MSSCL(17)=LX3U 73C 74C ----4TH VARIABLE 75C 76 RMSCL(18)=XA4 77 MSSCL(19)=NX4 78 MSSCL(20)=LX4L 79 MSSCL(21)=LX4U 80 CALL MESSGE(ROUT,MESS,X1,X2,X3,X4,MSSCL) 81 RETURN 82C 83C ----HERE FOR EXTRAPOLATION. 84C 85 1110 IF(X4B)GO TO 1160 86C 87C ----HERE FOR XA4 ABOVE. 88C 89 T4=XA4-X4(NX4) 90 I4=NX4 91 GO TO 1170 92 1120 LOC=LOC-N123 93 I4=I4-2 94 IX=1 95 1130 I=0 96 1140 RO=TLIN 97 CALL TLIN3X(X1,X2,X3,Y(LOC),NX1,NX2,NX3,XA1,XA2,XA3,DA(IX),LX1L, 98 1 LX2L,LX3L,LX1U,LX2U,LX3U,MESS,NMSS,RO) 99 IF(I.NE.0)GO TO 1020 100 1150 CALL QUAD(X4(I4),DA,XA4,YA) 101 GO TO 1080 102C 103C ----HERE FOR XA4 BELOW. 104C 105 1160 T4=XA4-X4(1) 106 I4=2 107 1170 T4=T4/(X4(I4)-X4(I4-1)) 108 GO TO 1010 109 1180 D0=D1 110 D1=D2 111 I4=1 112 LOC=LOC+2*N123 113 IX=3 114 GO TO 1130 115 1190 D0=D2 116 GO TO 1060 117 END 118