SUBROUTINE TERDIF(KFILDO,IXE,JYE,XPE,YPE, 1 TELEV,NXE,NYE,ELEV,HGTTHB,IER) C C AUGUST 2007 GLAHN MOS-2000 C CUT FROM CORBC5 C C PURPOSE C TO DETERMINE WHETHER THE CORRECTION DUE TO A STATION C SHOULD NOT BE MADE BECAUSE OF ELEVATION DIFFERENCE C BETWEEN THE STATION AND GRIDPOINT IS HIGHER THAN HGTTHB. C C FATAL ERRORS, IER: C NONE. C C DATA SET USE C KFILDO - UNIT NUMBER FOR OUTPUT (PRINT) FILE. (OUTPUT) C C VARIABLES C KFILDO - UNIT NUMBER FOR OUTPUT (PRINT) FILE. (OUTPUT) C IXE = THE X POSITION OF THE GRIDPOINT ON THE TERRAIN C GRID. (INPUT) C JYE = THE Y POSITION OF THE GRIDPOINT ON THE TERRAIN C GRID. (INPUT) C XPE = THE X POSITION FOR STATION BEING PROCESSED ON C THE ELEVATION GRID AT THE GRID MESH LENGTH C MESHE. (INPUT) C YPE = THE Y POSITION FOR STATION BEING PROCESSED ON C THE ELEVATION GRID AT THE GRID MESH LENGTH C MESHE. (INPUT) C TELEV(IX,JY) = THE TERRAIN ELEVATION FROM THE MOS-2000 EXTERNAL C RANDOM ACCESS FILE IN METERS (IX=1,NXE) C (JY=1,NYE). (INPUT) C NXE = X-EXTENT OF TELEV( , ) AT MESH LENGTH MESHE. C (INPUT) C NYE = Y-EXTENT OF TELEV( , ) AT MESH LENGTH MESHE. C (INPUT) C ELEV = THE ELEVATION OF THE STATION BEING PROCESSED. C (INPUT) C HGTTHB = ELEVATION DIFFERENCE IN M BETWEEN A STATION C AND ANY (INTERPOLATED) POINT ON THE ELEVATION C GRID BETWEEN THE STATION AND THE GRIDPOINT C WHICH MUST NOT BE EXCEEDED FOR THE STATION C TO INFLUENCE THE GRIDPOINT. (INPUT) C IER = RETURN CODE. C 0 = GOOD RETURN. MAKE THE CORRECTION. C 777 = DO NOT MAKE THE CORRECTION TO THE C GRIDPOINT. C (OUTPUT) C 1 2 3 4 5 6 7 X C C NONSYSTEM SUBROUTINES CALLED C ITRP C DIMENSION TELEV(NXE,NYE) C IER=0 C C DETERMINE WHETHER THE DIFFERENCE BETWEEN THE STATION C ELEVATION AND A POINT ON THE LINE BETWEEN THE STATION C AND THE GRIDPOINT EXCEEDS THE HGTTHB THRESHOLD. XPE AND C YPE, THE IX AND JY POSITIONS OF THE STATION K, ARE ON C THE TERRAIN GRID. C DX=IXE-XPE DY=JYE-YPE C X=XPE C INITIALIZE X TO THE X-POSITION OF THE STATION LOCATION. C IF(ABS(DX).LT..001)THEN C THE STATION AND GRIDPOINT ARE IN A NEAR UP/DOWN LINE C AND THE SLOPE WOULD BE CLOSE TO UNDETERMINABLE. C C THE BELOW TWO LOOPS INTERATE UNTIL Y IS NEAR JX (IN WHICH C CASE, USE THE CORRECTION AT THE GRIDPOINT) OR THE C HEIGHT THRESHOLD HGTTHB IS EXCEEDED (IN WHICH CASE, C DO NOT USE THE CORRECTION AT THE GRIDPOINT. C Y=YPE C IF(DY.GT.0.)THEN 224 Y=Y+1. C THIS MARCHES UP FROM THE STATION TO THE GRIDPOINT. IF(Y.GT.JYE)GO TO 240 CALL ITRP(TELEV,NXE,NYE,X,Y,BE) CD IQU=9 C IQU = 9 SIGNIFIES THE GRIDPOINT IS NOT IN A "QUADRANT" C FOR COMPUTATIONAL PURPOSES AND IS ABOVE THE STATION; IT C IS ONLY FOR PRINTING. CD B=999. CD DXLINE=0. C B AND DXLINE ARE ONLY FOR PRINTING. CD WRITE(KFILDO,227)IQU,IXE,JYE,XPE,YPE, CD 1 B,DXLINE,X,Y,ELEV,TELEV(IXE,JYE),BE IF(ABS(ELEV-BE).GT.HGTTHB)GO TO 237 C THE ELEVATION DIFFERENCE IS EXCEEDED. GO TO 224 ELSE 225 Y=Y-1. C THIS MARCHES DOWN FROM THE STATION TO THE GRIDPOINT. IF(Y.LT.JYE)GO TO 240 CALL ITRP(TELEV,NXE,NYE,X,Y,BE) CD IQU=-9 C IQU = -9 SIGNIFIES THE GRIDPOINT IS NOT IN A "QUADRANT" C FOR COMPUTATIONAL PURPOSES AND IS BELOW THE STATION; IT C IS ONLY FOR PRINTING. CD B=999. CD DXLINE=0. C B AND DXLINE ARE ONLY FOR PRINTING. CD WRITE(KFILDO,227)IQU,IXE,JYE,XPE,YPE, CD 1 B,DXLINE,X,Y,ELEV,TELEV(IXE,JYE),BE IF(ABS(ELEV-BE).GT.HGTTHB)GO TO 237 C THE ELEVATION DIFFERENCE IS EXCEEDED. GO TO 225 ENDIF C C THE BELOW FOUR LOOPS INTERATE UNTIL X IS NEAR IX (IN WHICH C CASE, USE THE CORRECTION AT THE GRIDPOINT) OR THE C HEIGHT THRESHOLD HGTTHB IS EXCEEDED (IN WHICH CASE, C DO NOT USE THE CORRECTION AT THE GRIDPOINT. C ELSEIF(DX.GT.0.)THEN C THE GRIDPOINT IS TO THE RIGHT OF THE STATION. C IF(DY.GT.0.)THEN C THE GRIDPOINT IS ABOVE THE STATION. B=DY/DX DXLINE=1./SQRT(1.+B*B) C DXLINE IS THE INCREMENT IN X TO YIELD AN INCREMENTAL C DISTANCE ON THE LINE BETWEEN THE STATION AND THE C GRIDPOINT OF MESHE, THE RESOLUTION OF THE TERRAIN GRID. 2262 X=X+DXLINE C X MUST INCREASE. IF(X.GT.IXE)GO TO 240 Y=YPE+B*(X-XPE) C B IS POSITIVE; Y MUST INCREASE. CALL ITRP(TELEV,NXE,NYE,X,Y,BE) CD IQU=1 C IQU = 1 SIGNIFIES THE GRIDPOINT IS IN THE FIRST C (UPPER RIGHT) QUADRANT. IT IS ONLY FOR PRINTING. CD WRITE(KFILDO,227)IQU,IXE,JYE,XPE,YPE, CD 1 B,DXLINE,X,Y,ELEV,TELEV(IXE,JYE),BE IF(ABS(ELEV-BE).GT.HGTTHB)GO TO 237 C THE ELEVATION DIFFERENCE IS EXCEEDED. GO TO 2262 ELSE C THE GRIDPOINT IS BELOW THE STATION. B=DY/DX DXLINE=1./SQRT(1.+B*B) C DXLINE IS THE INCREMENT IN X TO YIELD AN INCREMENTAL C DISTANCE ON THE LINE BETWEEN THE STATION AND THE C GRIDPOINT OF MESHE, THE RESOLUTION OF THE TERRAIN GRID. 2264 X=X+DXLINE C X MUST INCREASE. IF(X.GT.IXE)GO TO 240 Y=YPE+B*(X-XPE) C B IS NEGATIVE; Y MUST DECREASE. CALL ITRP(TELEV,NXE,NYE,X,Y,BE) CD IQU=4 C IQU = 1 SIGNIFIES THE GRIDPOINT IS IN THE FOURTH C (LOWER RIGHT) QUADRANT. IT IS ONLY FOR PRINTING. CD WRITE(KFILDO,227)IQU,IXE,JYE,XPE,YPE, CD 1 B,DXLINE,X,Y,ELEV,TELEV(IXE,JYE),BE IF(ABS(ELEV-BE).GT.HGTTHB)GO TO 237 C THE ELEVATION DIFFERENCE IS EXCEEDED. GO TO 2264 ENDIF C ELSE C THE GRIDPOINT IS TO THE LEFT OF THE STATION. IF(DY.GT.0.)THEN C THE GRIDPOINT IS ABOVE THE STATION. B=DY/DX DXLINE=1./SQRT(1.+B*B) C DXLINE IS THE INCREMENT IN X TO YIELD AN INCREMENTAL C DISTANCE ON THE LINE BETWEEN THE STATION AND THE C GRIDPOINT OF MESHE, THE RESOLUTION OF THE TERRAIN GRID. 2266 X=X-DXLINE C X MUST DECREASE. IF(X.LT.IXE)GO TO 240 Y=YPE-B*(XPE-X) C B IS NEGATIVE; Y MUST INCREASE. CALL ITRP(TELEV,NXE,NYE,X,Y,BE) CD IQU=2 C IQU = 1 SIGNIFIES THE GRIDPOINT IS IN THE SECOND C (UPPER LEFT) QUADRANT. IT IS ONLY FOR PRINTING. CD WRITE(KFILDO,227)IQU,IXE,JYE,XPE,YPE, CD 1 B,DXLINE,X,Y,ELEV,TELEV(IXE,JYE),BE IF(ABS(ELEV-BE).GT.HGTTHB)GO TO 237 C THE ELEVATION DIFFERENCE IS EXCEEDED. GO TO 2266 ELSE C THE GRIDPOINT IS BELOW THE STATION. B=DY/DX DXLINE=1./SQRT(1.+B*B) C DXLINE IS THE INCREMENT IN X TO YIELD AN INCREMENTAL C DISTANCE ON THE LINE BETWEEN THE STATION AND THE C GRIDPOINT OF MESHE, THE RESOLUTION OF THE TERRAIN GRID. 2268 X=X-DXLINE C X MUST DECREASE IF(X.LT.IXE)GO TO 240 Y=YPE-B*(XPE-X) C B IS POSITIVE; Y MUST DECREASE. CALL ITRP(TELEV,NXE,NYE,X,Y,BE) CD IQU=3 C IQU = 1 SIGNIFIES THE GRIDPOINT IS IN THE THIRD C (LOWER LEFT) QUADRANT. IT IS ONLY FOR PRINTING. CD WRITE(KFILDO,227)IQU,IXE,JYE,XPE,YPE, CD 1 B,DXLINE,X,Y,ELEV,TELEV(IXE,JYE),BE CD227 FORMAT(' ',I5,5I5,2X,A8,2F7.1,F6.1,F6.2,2F7.1,F8.1,F7.1, CD 1 F14.1,2F7.1) C THE ABOVE FORMAT IS USED SEVERAL TIMES WITH /D IF(ABS(ELEV-BE).GT.HGTTHB)GO TO 237 C THE ELEVATION DIFFERENCE IS EXCEEDED. GO TO 2268 ENDIF C ENDIF C 237 IER=777 240 RETURN END