SUBROUTINE PIXSM1(KFILDO,ID,IDPARS,JD, 2 ISPOT,MTIMES,DIFFV,DIFFA, 7 P,NX,NY,TELEV,NXE,NYE,HOLD,ND2X3, 8 L3264B,ISTOP,IER) C C MAY 2015 GLAHN MDL MOS-2000 C ADAPTED FROM PIXSM C OCTOBER 2017 GLAHN MODIFIED TO ACCOMMODATE MORE IDS C JULY 2018 GLAHN ADDED VARIABLES 228080 (CIG) AND 228160 (VIS) C FORECASTS C JUNE 2019 GLAHN DIFFA IS DIFFB IN THE CALLING PROBRAM C C PURPOSE C TO REMOVE ISOLATED PIXELS (SPOTS LE ISPOT IN SIZE) C FROM A MELD GRID. THIS IS FOR U405A (PIXSM IS FOR U201 C AND U202), AND CALLS PIX FOR ISPOT=5, THE SAME ROUTINE C USED IN U201 AND U202 AND PIX1 FOR ISPOT=7. C C USING DIFFA IN U405A WAS TANGLING WITH DIFFA FOR SPOTRM, C SO IT WAS CHANGED TO DIFFB. C C DATA SET USE C KFILDO - DEFAULT UNIT NUMBER FOR OUTPUT (PRINT) FILE. C (OUTPUT) C KFIL10 - UNIT NUMBER OF TDL MOS-2000 FILE SYSTEM ACCESS. C (INPUT-OUTPUT) C C VARIABLES C KFILDO = DEFAULT UNIT NUMBER FOR OUTPUT (PRINT) FILE. (INPUT) C KFIL10 = UNIT NUMBER OF TDL MOS-2000 FILE SYSTEM ACCESS. C (INPUT) C ID(J) = THE PREDICTOR 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 ISPOT = THE SIZE OF SPOT TO REMOVE = ISOPT. (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 NDATE = THE DATE/TIME FOR WHICH PREDICTOR IS NEEDED. C (INPUT) C P(IX,JY) = HOLDS THE HRRR DATA TO PROCESS (IX=1,NX) (JY=1,NY) C (INPUT/OUTPUT) C NX,NY = DIMENSIONS OF P( , ). (INPUT) C TELEV(J) = TERRAIN ELEVATION (J=1,ND2X3). READ FROM RA C FILE. (INPUT) C HOLD(J) = WORK ARRAY (J=1,ND2X3). (INTERNAL) C ND2X3 = SIZE OF TELEV( ), SEALND( ), AND SEALND( ). C (INPUT) C L3264B = INTEGER WORD LENGTH IN BITS OF MACHINE BEING USED C (EITHER 32 OR 64). (INPUT) C ISTOP = INCREMENTED BY 1 WHEN AN ERROR OCCURS. C (INPUT/OUTPUT) C IER = STATUS RETURN. C 0 = GOOD RETURN. C 103 = VARIABLE IN ID( ) IS NOT CEILING OR C VISIBILITY. C 777 = IX, JY DO NOT EQUAL NXE, NYE, C RESPECTIVELY OR ISPOT DOES NOT HAVE C A USABLE VALUE (CURRENTLY, 5 AND 7). C (INTERNAL-OUTPUT) C ITABLE(L,2) = THE TWO VARIABLES BEING COMPUTED (L=1,IDIM), C WHICH ARE CEILING AND VISIBILITY. (INTERNAL) C 1 2 3 4 5 6 7 X C C NONSYSTEM SUBROUTINES USED C PIX, PIX1 C PARAMETER (IDIM=6) C DIMENSION ID(4),IDPARS(15),JD(4) DIMENSION P(NX,NY),TELEV(NXE,NYE),HOLD(NX,NY) DIMENSION LD(4),ITABLE(2,IDIM) C DATA ITABLE/228081005,1, !CEILING (CATEGORICAL) 1 228080095,1, !CEILING (CATEGORICAL) 2 728000085,1, !CEILING OBS 3 228161005,2, ! 4 228160095,2, !VISIBILITY FCST (ATEGORICAL) 5 728100085,2/ !VISIBILITY OBS C THESE ARE IDS FOR CEILING AND VISIBILITY. A 1 INDICATES C CEILING AND A 2 INDICATES VISIBILITY. C CALL TIMPR(KFILDO,KFILDO,'START PIXSM1 ') IER=0 C WRITE(KFILDO,100)ID(1),ISPOT,MTIMES,DIFFV,DIFFA 100 FORMAT(' PIXSM1 BEING USED; ID(1),ISPOT,MTIMES,DIFFV,DIFFA =', 1 3I10,2F10.2) C C MAKE SURE THIS SUBROUTINE DEALS WITH HRRR CEILING HEIGHT OR C VISIBILITY. C DO 1005 J=1,IDIM C IF(ID(1).EQ.ITABLE(1,J))THEN L=ITABLE(2,J) GO TO 120 ENDIF C 1005 CONTINUE C IER=103 ISTOP=ISTOP+1 WRITE(KFILDO,101)(ID(J),J=1,4),IER 101 FORMAT(/' ****ID(1) DOES NOT INDICATE HRRR CIG OR VIS IN PIXSM1', 1 /' VARIABLE ',I9.9,I10.9,I10.9,I4.3,' NOT', 2 ' ACCOMMODATED IN PIXSM1. IER =',I4) GO TO 800 C 120 IF(NXE.NE.NX.OR.NYE.NE.NY)THEN WRITE(KFILDO,122)NX,NY,NXE,NYE 122 FORMAT(/' ****DIMENSIONS OF P =',2I5, 1 ' NOT EQUAL TO DIMENSION OF TELEV =',2I5, 2 '.') IER=777 ISTOP=ISTOP+1 GO TO 800 ENDIF C 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,130)ISPOT 130 FORMAT(/' ****ISPOT =',I3,' DOES NOT EQUAL ONE OF THE', 1 'PERMISSIBLE VALUES, CURRENTLY ONLY 5 AND 7.') IER=777 ISTOP=ISTOP+1 GO TO 800 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 900 CONTINUE CALL TIMPR(KFILDO,KFILDO,'END PIXSM1 ') RETURN END