SUBROUTINE PIXSM3(KFILDO,ID,IDPARS,JD,NAREA, 1 ISPOT,MTIMES,DIFFV,DIFFA, 2 P,NX,NY,HOLD,TELEV,SEALND,IRESTR, 3 ISTOP,JER,IER) C C JUNE 2019 GLAHN MDL MOS-2000 C ADAPTED FROM PIXSM1 C NOVEMBER 2019 GLAHN REVISED C NOVEMBER 2019 GLAHN ADDED IRESTR TO CALL C C PURPOSE C TO REMOVE ISOLATED PIXELS (SPOTS LE ISPOT IN SIZE) C FROM A MELD GRID. THIS IS FOR U755 (PIXSM AND PIXSM1 ARE C FOR U201 AND U202), AND CALLS PIX FOR ISPOT=5 (THE SAME C ROUTINE USED IN U201 AND U202) AND PIX1 FOR ISPOT=7 C (PIX1 CALLS PIX). FOR ALASKA (AREA = 2), WHEN IRESTR = 1, C NORTH AMERICA IS RESTORED, SO SPOTS ARE REMOVED, EFFECTIVELY, C ONLY FOR WATER AND SIBERIA. PIXEL REMOVING CAN BE BYPASSED C BY SETTING ISPOT = 0. 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. (INPUT) C ID(J) = THE VARIABLE ID (J=1,4). (INPUT) C IDPARS(J) = THE PARSED, INDIVIDUAL COMPONENTS OF THE PREDICTOR C ID CORRESPONDING TO ID( ) (J=1,15). (INPUT) C J=1--CCC (CLASS OF VARIABLE), C J=2--FFF (SUBCLASS OF VARIABLE), C J=3--B (BINARY INDICATOR), C J=4--DD (DATA SOURCE, MODEL NUMBER), C J=5--V (VERTICAL APPLICATION), C J=6--LBLBLBLB (BOTTOM OF LAYER, 0 IF ONLY 1 LAYER), C J=7--LTLTLTLT (TOP OF LAYER), C J=8--T (TRANSFORMATION), C J=9--RR (RUN TIME OFFSET, ALWAYS + AND BACK IN TIME), C J=10--OT (TIME APPLICATION), C J=11--OH (TIME PERIOD IN HOURS), C J=12--TAU (PROJECTION IN HOURS), C J=13--I (INTERPOLATION TYPE), C J=14--S (SMOOTHING INDICATOR), AND C J=15--G (GRID INDICATOR). C JD(J,N) = THE BASIC INTEGER VARIABLE ID (J=1,4) (N=1,NPRED). C THIS IS THE SAME AS ID(J,N), EXCEPT THAT THE PORTIONS C PERTAINING TO PROCESSING ARE OMITTED: C B = IDPARS(3, ), C T = IDPARS(8, ), C I = IDPARS(13, ), C S = IDPARS(14, ), C G = IDPARS(15, ), AND C THRESH( ). C (INPUT) C NAREA = THE AREA BEING USED: C 1 = CONUS C 2 = ALASKA C 3 = HAWAII C 4 = PUERTO RICO C ISPOT = THE SIZE OF SPOT TO REMOVE WHEN 5 OR 7. WHEN C ZERO, SPOTS ARE NOT REMOVED. (INPUT) C MTIMES = NUMBER OF PASSES OVER THE DATA. C MTIMES SHOULD BE EVENLY DIVISIBLE BY 4 FOR SYMMETRY. C (INTERNAL) C DIFFV = DIFFERENCE BETWEEN END POINTS WHEN EXCEEDED C REMOVAL IS NOT DONE. (INPUT) C DIFFA = THE ELEVATION DIFFERENCE IF EXCEEDED, REMOVAL C IS NOT DONE. (INPUT) C P(IX,JY) = HOLDS THE DATA TO PROCESS (IX=1,NX) (JY=1,NY). C (INPUT/OUTPUT) C HOLD(IX,JY) = WORK ARRAY (IX=1,NX) (JY=1,NY). (INTERNAL) C NX,NY = DIMENSIONS OF P( , ) AND HOLD( , ). (INPUT) C TELEV(IX,JY) = TERRAIN ELEVATION (IX=1,NX) (JY=1,NY). (INPUT) C SEALND(J) = THE LAND/SEA MASK (J=1,NX*NY) AT NOMINAL C MESHLENGTH MESH. C 0 = OCEAN WATER GRIDPOINTS; C 3 = INLAND WATER GRIDPOINTS. C 9 = LAND GRIDPOINTS. C IRESTR = 1 - SAVE AND RESTORE LAND TO ORIGINAL AFTER C PIXEL SMOOTHING. C 0 = DO NOT SAVE AND RESTORE LAND. C ISTOP(J) = (J=1,2): C ISTOP(1)--IS INCREMENTED BY 1 EACH TIME AN ERROR C OCCURS. C ISTOP(2)--IS INCREMENTED WHEN A DATA RECORD C COULD NOT BE FOUND. C (INPUT/OUTPUT) C JER = 0 UNTIL A MAJOR ERROR OCCURS, THEN IT IS C INCREMENTED BY 1. IT COUNTS THE MAJOR ERRORS C THAT WILL CAUSE EITHER NO GRID, A COMPROMISED C GRID, OR A 9999 (MISSING) GRID TO BE OUTPUT. C THIS INCLUDES A GRID THAT COULD NOT BE C CHECKED WITH STATION FORECASTS. (INPUT/OUTPUT) C IER = STATUS RETURN. C 0 = GOOD RETURN. C 103 = VARIABLE IN ID( ) IS NOT CEILING OR C VISIBILITY. C (INTERNAL-OUTPUT) C ITABLE(L,J) = THE FIRST WORD OF THE VARIABLES BEING COMPUTED C (J=1),WHETHER THE VARIABLE IS CEILING (1) C OR VISIBILITY (2), AND THE 1ST WORD ID OF THE C VECTOR FORECASTS TO READ. (J=1,3) (L=1,IDIM). C (INTERNAL) C 1 2 3 4 5 6 7 X C C NONSYSTEM SUBROUTINES USED C PIX, PIX1, TRNSFR, GFETCH, INTRPC C PARAMETER (IDIM=2) C DIMENSION ID(4),IDPARS(15),JD(4) DIMENSION P(NX,NY),HOLD(NX,NY),TELEV(NX,NY),SEALND(NX,NY) DIMENSION SAVE(NX,NY) C SAVE( , ) IS AN AUTOMATIC ARRAY. DIMENSION LD(4),ITABLE(3,IDIM),ISTOP(2) C DATA ITABLE/228080095,1,208071035, !CEILING FCST (CATEGORICAL) 3 228160095,2,208131035/ !VISIBILITY FCST (CATEGORICAL) C DD 35 IS FOR LAMP; 95 IS FOR MELD C/V VECTOR TO READ C THESE ARE IDS FOR CEILING AND VISIBILITY. A 1 INDICATES C CEILING AND A 2 INDICATES VISIBILITY. C CALL TIMPR(KFILDO,KFILDO,'START PIXSM3 ') C IER=0 C C MAKE SURE THIS SUBROUTINE DEALS WITH HRRR OR RAP MELD CEILING C HEIGHT OR VISIBILITY. C DO 1005 M=1,IDIM C IF(ID(1).EQ.ITABLE(1,M))THEN L=ITABLE(2,M) C M IS THE ENTRY INTO ITABLE( ,M). WRITE(KFILDO,1003)ID(1),ISPOT,MTIMES,DIFFV,DIFFA,IRESTR 1003 FORMAT(/' IN PIXMS3, VARIABLE BEING PROCESSED =',I11, 1 ', ISPOT,MTIMES,DIFFV,DIFFA,IRESTR =',2I4,2F10.2,I4) GO TO 120 ENDIF C 1005 CONTINUE C IER=103 WRITE(KFILDO,101)(ID(J),J=1,4),IER 101 FORMAT(/' ****ID(1) DOES NOT INDICATE CIG OR VIS IN PIXSM3', 1 /' VARIABLE ',I9.9,I10.9,I10.9,I4.3,' NOT', 2 ' ACCOMMODATED IN PIXSM3. IER =',I4) GO TO 800 C C REMOVE PIXELS WHEN DESIRED. C 120 IF(ISPOT.NE.0)THEN C C SAVE P( , ) IN SAVE( , ) TO RESTORE NORTH AMERICA LAND C AFTER PIXELING FOR ALASKA AREA WHEN IRESTR = 1. C IF(NAREA.EQ.2.AND.IRESTR.EQ.1)THEN CALL TRNSFR(P,SAVE,NX*NY) ENDIF IF(ISPOT.EQ.5)THEN CALL PIX(KFILDO,P,TELEV,HOLD,NX,NY,MTIMES,DIFFV, 1 DIFFA,L,IER) ELSEIF(ISPOT.EQ.7)THEN CALL PIX1(KFILDO,P,TELEV,HOLD,NX,NY,MTIMES,DIFFV, 1 DIFFA,L,IER) ELSE WRITE(KFILDO,124)ISPOT 124 FORMAT(/' ****ISPOT =',I3,' DOES NOT EQUAL ONE OF THE ', 1 'PERMISSIBLE VALUES, CURRENTLY ONLY 5 AND 7.', 2 ' PIXEL SMOOTHING NOT DONE.') IER=777 GO TO 800 ENDIF C C RESTORE NORTH AMERICAN LAND FOR ALASKA AREA. C IF(NAREA.EQ.2.AND.IRESTR.EQ.1)THEN WRITE(KFILDO,1245) 1245 FORMAT(' LAND BEING RESTORED AFTER PIXEL SMOOTHING.') C DO 126 JY=1,NY DO 125 IX=1,NX C IF(SEALND(IX,JY).GT.3.5.AND. 1 (IX.GT.610.OR.JY.LT.756))THEN P(IX,JY)=SAVE(IX,JY) ENDIF C 125 CONTINUE 126 CONTINUE C ELSE WRITE(KFILDO,127) 127 FORMAT(' LAND NOT BEING RESTORED AFTER PIXEL SMOOTHING.') ENDIF C ELSE WRITE(KFILDO,130) 130 FORMAT(/' GRID IS NOT BEING PIXEL SMOOTHED, ISPOT = 0.') ENDIF C GO TO 900 C C SET OUTPUT FIELD TO MISSING WHEN AN ERROR HAS OCCURRED. C 800 DO 802 JY=1,NY DO 801 IX=1,NX P(IX,JY)=9999. 801 CONTINUE 802 CONTINUE C ISTOP(1)=ISTOP(1)+1 JER=JER+1 C 900 CONTINUE CALL TIMPR(KFILDO,KFILDO,'END PIXSM3 ') RETURN END