SUBROUTINE PLASTC1(KFILDO,CCALL,NAME,FD4,DIR,ND1,NSTA, 1 DATA,NX,NY,IER) C C JUNE 2019 GLAHN MDL MOS-2000 C REVISED FROM 2016 PLASTC C OCTOBER 2019 GLAHN USED END DO TO ELIMINATE GO TO; C SKIPPED STATION OFF THE GRID C OCTOBER 2019 GLAHN CHANGED VALUES IN TABLE1( , ) C NOVEMBER 2019 GLAHN COUNTED MATCHES C C PURPOSE C TO REPLACE THE 4 GRIDPOINTS ON THE PIXEL SMOOTHED GRID C SURROUNDING EACH STATION WITH THE INTERPOLATED C (CLOSEST STATION) VALUE FROM THE UNSMOOHTED GRID. C THEN CHECK THE STATION VALUE FROM THE GRID WITH THE C LAMP MELD VALUE (THE BULLETIN VALUES). IF THERE IS C A DISCREPANCY, CHANGE THE 4 GRIDDED VALUES TO BE C CONSISTENT. C C THIS ROUTINE IS FOR CEILING. IT IS CALLED FROM PIXSM3. C C DATA SET USE C KFILDO - DEFAULT UNIT NUMBER FOR OUTPUT (PRINT) FILE. C (OUTPUT) C C VARIABLES C KFILDO = DEFAULT UNIT NUMBER FOR OUTPUT (PRINT) FILE. C (INPUT) C CCALL(K) = 8-CHARACTER STATION CALL LETTERS TO PROVIDE C OUTPUT FOR (K=1,NSTA). (CHARACTER*8) (INPUT) C NAME(K) = NAMES OF STATIONS (K=1,NSTA). USED FOR PRINTOUT C ONLY. (CHARACTER*20) (INPUT) C FD4(K) = VECTOR FORECASTS IN 8 CATEGORIES FROM THE C STATION FORECAST PROCESS (BULETIN VALUES) C (K=1,ND1). (INPUT) C DIR(K,J) = THE IX (J=1) AND JY (J=2) POSITIONS ON THE GRID C FOR FOR EACH STATION K (K=1,NSTA) FOR THE C CORRECT GRID. (INPUT) C ND1 = THE FIRST DIMENSION OF DIR( , ). (INPUT) C NSTA = THE NUMBER OF STATIONS DEALT WITH. (INPUT) C DATA(IX,JY) = ARRAY TO OPERATE ON AND RETURN (IX=1,NX) C (JY=1,NY). (INPUT/OUTPUT) C NX,NY = DIMENSIONS IN X AND Y DIRECTIONS OF DATA( , ). C (INPUT) C IER = STATUS RETURN. C 0 = GOOD RETURN. C (OUTPUT) C TABLE1(I,J) = CORRESPONDENCE TABLE THE LOWEST (J=1) AND THE C HIGHEST (J=2) MELD GRID VALUE FOR EACH LAMP CAT C VALUE I (I=1,8) FOR CEILING. (INTERNAL) C KOUNTT1 = COUNTS THE DOWN CANGES. (INTERNAL) C KOUNTT2 = COUNTS THE UP CHANGES. (INTERNAL) C KOUNTT3 = COUNTS THE MATCHES. (INTERNAL) C 1 2 3 4 5 6 7 X C C NONSYSTEM SUBROUTINES USED C NONE C CHARACTER*8 CCALL(ND1) CHARACTER*20 NAME(ND1) C DIMENSION DATA(NX,NY) DIMENSION DIR(ND1,2),FD4(ND1) DIMENSION TABLE1(8,2) C DATA TABLE1/ .0, 2., 5., 10., 20., 31., 66., 888., 1 1.0, 4., 9., 19., 30., 65., 120., 888./ C IER=0 CALL TIMPR(KFILDO,KFILDO,'START PLASTC1 ') KOUNT1=0 KOUNT2=0 KOUNT3=0 C DO_130: DO 130 K=1,NSTA C IF(FD4(K).LT.9998.5)THEN IX=NINT(DIR(K,1)) JY=NINT(DIR(K,2)) L=NINT(FD4(K)) C C GUARD AGAINST VALUE OF L OUT OF RANGE OF TABLE1( , ). C IF(L.LT.1.OR.L.GT.8)THEN WRITE(KFILDO,110)L 110 FORMAT(/'****LAMP CATEGORY =',I7,' ON VECTOR FILE OUT OF', 1 ' PERMISSIBLE RANGE 1 TO 8. VALUE SKIPPED.', 2 ' GRID NOT MODIFIED.') CYCLE DO_130 ENDIF C IF(IX.LT.1.OR.IX.GT.NX-1.OR. 1 JY.LT.1.OR.JY.GT.NY-1)THEN C WRITE(KFILDO,113)CCALL(K),IX,JY 113 FORMAT(' THIS STATION ',A8,' AT IX,JY =',2I6, 1 ' IS OFF THE GRID.') C THIS STATION IS OFF THE GRID. CYCLE DO_130 ENDIF C IF(NINT(DATA(IX,JY)).GT.NINT(TABLE1(L,2)))THEN C GUARD AGAINST LOSS OF PRECISION IN PACKING. C DATA(IX,JY) IS THE VALUE IN THE GRID CLOSEST TO C THE STATION. THIS SETS THE 4 GRIDPONTS SURROUNDING C THE STATION TO THE (CLOSEST) GRIDPONT VALUE. KOUNT1=KOUNT1+1 WRITE(KFILDO,120)CCALL(K),NAME(K),L,DATA(IX,JY), 1 TABLE1(L,2),KOUNT1 120 FORMAT(' STATION ',A8,1X,A20,' LAMP CATEGORY =',I4, 1 ' REPLACING GRID VALUE =',F8.2,' WITH',F8.2, 2 ' DOWN REPLACEMENTS ',I8) IX=DIR(K,1) JY=DIR(K,2) C THIS IS THE LOWER LEFT CORNER OF THE BOX AROUND THE C STATION. DATA(IX,JY)=TABLE1(L,2) DATA(IX+1,JY)=TABLE1(L,2) DATA(IX,JY+1)=TABLE1(L,2) DATA(IX+1,JY+1)=TABLE1(L,2) ELSEIF(NINT(DATA(IX,JY)).LT.NINT(TABLE1(L,1)))THEN C GUARD AGAINST LOSS OF PRECISION IN PACKING. KOUNT2=KOUNT2+1 WRITE(KFILDO,121)CCALL(K),NAME(K),L,DATA(IX,JY), 1 TABLE1(L,1),KOUNT2 121 FORMAT(' STATION ',A8,1X,A20,' LAMP CATEGORY =',I4, 1 ' REPLACING GRID VALUE =',F8.2,' WITH',F8.2, 2 ' UP REPLACEMENTS ',I8) IX=DIR(K,1) JY=DIR(K,2) DATA(IX,JY)=TABLE1(L,1) DATA(IX+1,JY)=TABLE1(L,1) DATA(IX,JY+1)=TABLE1(L,1) DATA(IX+1,JY+1)=TABLE1(L,1) ELSE KOUNT3=KOUNT3+1 WRITE(KFILDO,122)CCALL(K),NAME(K),L,DATA(IX,JY),KOUNT3 122 FORMAT(' STATION ',A8,1X,A20,' LAMP CATEGORY =',I4, 1 ' GRID VALUE =',F8.2,' MATCH, TOTAL =',I4) ENDIF C ENDIF C 130 END DO DO_130 C RETURN END