SUBROUTINE POSTPM(KFILDO,XDATA,NVAL,TLO,SETLO,THI,SETHI, 1 CONST,NSCAL,SET,PM,IER) C C MARCH 2011 GLAHN MDL MOS-2000 C ADAPTED FROM OCTOBER 2008 POST C TO INCLUDE SET AND PM C MAY 2011 GLAHN CHANGED GO TO 150 TO GO TO 125; C INSERTED STATEMENT NUMBER 125, C CHANGED FORMAT 125 TO 135; C REMOVED IF(PM.NE.0)THEN C MAY 2018 GLAHN CAPPED GRID AT 10 TO AGREE WTIH C CAPPING DATA AT 10 IN VISFRQ C C PURPOSE C TO POSTPROCESS A VARIABLE. THE VARIABLE IN XDATA( ) C IS SET TO XDATA( )*CONST*10**NSCAL AFTER SETTING C ALL VALUES LT TLO TO SETLO AND ALL VALUES GT THI C TO SETHI. EX1 AND EX2 ARE FOR POSSIBLE FUTURE USE. C THIS ROUTINE CAN BE USED FOR DISPOSABLE OR ARCHIVE C GRIDS. WHEN TLO = -9999., THE LOW VALUE WILL NOT C BE MODIFIED. WHEN THI = +9999., THE HIGH VALUE WILL C NOT BE MODIFIED. C C WHEN PM NE 0, ALL VALUES WITHIN PM OF SET WILL BE C SET TO SET. THIS CAPABILITY WAS INSERTED TO PRODUCE C FLAT AREAL OF 10 MI FOR VISIBILITY. C C INITIALLY (~2011), DATA VALUES > 10 WERE USED AND THIS C ROUTINE ONLY CREATED A CONSTANT VALUE OF 10 WHEN THE C ANALSIS WAS BETWEEN 9.1 AND 10.9 (WHEN NSET = 10 AND C PM = .9). C LATER (2015, DATA VALUES WERE CAPPED AT 10 IN VISFRQ, C BUT THIS REOUTIN WAS NOT CHANGED. SO, THIS ROUTINE C WAS CHANGED IN 2018 TO AGREE. C C DATA SET USE C KFILDO - UNIT NUMBER OF OUTPUT (PRINT) FILE. (OUTPUT) C C VARIABLES C KFILDO = UNIT NUMBER OF OUTPUT (PRINT) FILE. (INPUT) C XDATA(K) = THE DATA TO SCALE (K=1,NVAL). (INPUT-OUTPUT) C NVAL = THE NUMBER OF VALUES IN XDATA( ) BEING DEALT C WITH. (INPUT) C TLO = LOW THRESHOLD. WHEN A LAST PASS GRIDPOINT IS C LT TLOD, IT IS SET TO SETLOD, THEN CONST C AND NSCAL APPLIED. (INPUT) C SETLO = SEE TLOD. (INPUT) C THI = HIGH THRESHOLD. WHEN A LAST PASS GRIDPOINT IS C GT THID, IT IS SET TO SETHID, THEN CONST C AND NSCAL APPLIED. (INPUT) C SETHI = SEE THID. (INPUT) C CONST = ADDITIVE CONSTANT TO FURNISH TO THRESHOLDING C AND SCALING SUBROUTINE. (INPUT) C NSCAL = SCALING CONSTANT TO FURNISH TO THRESHOLDING C AND SCALING SUBROUTINE. (INPUT) C SET = SPECIFIC VALUE TO EMPHASIZE. ALL VALUES WITHIN C PM OF SET WILL BE SET TO SET. (INPUT) C PM = SEE SET. (INPUT) C IER = ERROR RETURN. C 0 = GOOD RETURN. C (OUTPUT) C 1 2 3 4 5 6 7 X C C NONSYSTEM SUBROUTINES USED C NONE C DIMENSION XDATA(NVAL) C CALL TIMPR(KFILDO,KFILDO,'START POSTPM ') IER=0 C D WRITE(KFILDO,102)TLO,SETLO,THI,SETHI,CONST,NSCAL,SET,PM D102 FORMAT(/' AT 102 IN POSTPM--TLO,SETLO,THI,SETHI,CONST,NSCAL,', D 1 'SET,PM',5F10.4,I4,2F10.4) C FACTOR=CONST*10.**NSCAL SETLOF=SETLO*FACTOR SETHIF=SETHI*FACTOR C CCC IF(TLO.LE.-99999.5.AND. CCC 1 THI.GE.+99998.5)THEN C ABOVE MODIFIED AS BELOW 7/27/08. C IF(TLO.LE.-9998.5.AND. 1 THI.GE.+9998.5)THEN C IF(CONST.EQ.1..AND. 1 NSCAL.EQ.0)THEN C THERE IS NO CHANGE TO BE MADE TO XDATA( ). GO TO 125 C ELSE C C ONLY SCALING IS NECESSARY. C DO 110 K=1,NVAL C IF(NINT(XDATA(K)).NE.9999)THEN XDATA(K)=XDATA(K)*FACTOR ENDIF C 110 CONTINUE C ENDIF C ELSE C C FULL TREATMENT NECESSARY. C DO 120 K=1,NVAL C IF(NINT(XDATA(K)).NE.9999)THEN C IF(XDATA(K).LT.TLO)THEN XDATA(K)=SETLOF ELSEIF(XDATA(K).GT.THI)THEN XDATA(K)=SETHIF ELSE XDATA(K)=XDATA(K)*FACTOR ENDIF C ENDIF C 120 CONTINUE C ENDIF C 125 DO 130 K=1,NVAL C CCCCC IF(XDATA(K).LT.SET+PM.AND.XDATA(K).GT.SET-PM)THEN CCCCC THE ABOVE WAS THE ORIGINAL CODE. IF(XDATA(K).GT.SET-PM)THEN XDATA(K)=SET ENDIF C 130 CONTINUE C D WRITE(KFILDO,135)(XDATA(K),K=1,NVAL) D135 FORMAT(/,' IN POSTPM--XDATA(K)',/,(15F8.2)) CALL TIMPR(KFILDO,KFILDO,'END POSTPM ') C 150 RETURN END