1 SUBROUTINE TLINVS(X1,X2,Y,NX1,NX2,DA1,XA2,ZA) 2C 3C*** INTERPOLATES BETWEEN TABLES FOR FG6115 4C 5 DIMENSION ROUTID(2),Q46115(2) 6 DIMENSION X1(1),X2(1),Y(NX2,NX1) 7 DATA ROUTID/4HTLIN,4HVS /,Q46115/4H4.6.,4H1-30/ 8C 9C ----TEST FOR ZA OUTSIDE RANGE OF TABLE 10C ----TEST FOR XA2.LE.X2(1) 11C 12 IF(XA2.GT.X2(1))GO TO 1010 13 IF(ZA.LT.Y(1,1))GO TO 1000 14 GO TO 1060 15 1000 IF(ZA.GT.Y(1,NX1))GO TO 1010 16 GO TO 1080 17C 18C ----TEST XA2.GE.X2(NX2) 19C 20 1010 IF(XA2.LT.X2(NX2))GO TO 1030 21 IF(ZA.LT.Y(NX2,1))GO TO 1020 22 GO TO 1060 23 1020 IF(ZA.GT.Y(NX2,NX1))GO TO 1030 24 GO TO 1080 25C 26C ----XA2 WITHIN TABLE.TEST FOR ZA OUTSIDE 27C 28 1030 DO 1040 I=2,NX2 29 IF(X2(I)-XA2)1040,1050,1090 30 1040 CONTINUE 31 1050 IF(ZA.LT.Y(I,1))GO TO 1070 32 1060 DA1=X1(1) 33 RETURN 34 1070 IF(ZA.GT.Y(I,NX1))GO TO 1100 35 1080 DA1=X1(NX1) 36 RETURN 37 1090 RAT=(XA2-X2(I-1))/(X2(I)-X2(I-1)) 38 ZTP=Y(I-1,1)+(Y(I,1)-Y(I-1,1))*RAT 39 IF(ZA.GE.ZTP)GO TO 1060 40 ZTP=Y(I-1,NX1)+(Y(I,NX1)-Y(I-1,NX1))*RAT 41 IF(ZA.LE.ZTP)GO TO 1080 42 1100 CONTINUE 43 NX1O2=NX1/2 44 DGSS=X1(NX1O2) 45 KOUNT=0 46 1110 CALL TLINEX(X1,X2,Y,NX1,NX2,DGSS,XA2,ZGSS,0,0,0,0,Q46115,2,ROUTID) 47 KOUNT=KOUNT+1 48 IF(ABS(ZGSS-ZA).LT.1.E-3)GO TO 1140 49C 50C ----CUTOFF IF T00 MANY PASSES 51C 52 IF(KOUNT.GT.20)GO TO 1130 53 DIN=DGSS*ABS(ZGSS-ZA)/ZGSS 54 IF(ZGSS.GT.ZA)GO TO 1120 55C 56C ----DECREASE DGSS TO INCREASE ZGSS WHICH WAS TOO SMALL. 57C 58 DGSS=DGSS-DIN 59 IF(DGSS.LT.X1(1))DGSS=X1(1) 60 GO TO 1110 61C 62C ----INCREASE DGSS TO REDUCE ZGSS WHICH WAS TOO LARGE. 63C 64 1120 DGSS=DGSS+DIN 65 IF(DGSS.GT.X1(NX1))DGSS=X1(NX1) 66 GO TO 1110 67 1130 CONTINUE 68 1140 DA1=DGSS 69 RETURN 70 END 71