SUBROUTINE FILPOT(POT,POTF,NUM,IFLGAP,RPOT) C This subroutine filters the potential across NUM consecutive hours C and stores the filtered potentials in POTF C IFLGAP = 0,1 If do,not have filled gaps in IMF POT (If = 1, need to C examine RPOT as well as POT) C All of the following variables should be dimensioned to MXNBY C in the calling routine DIMENSION POT(*),POTF(*),RPOT(*) DATA TMISS/-32766.9/ POTF(1)=POT(1) IF (NUM .EQ. 1) RETURN POTF(2)=POT(2) IF (POT(2) .GT. TMISS .AND. POT(1) .GT. TMISS) | POTF(2) = POT(2)*0.57 + POT(1)*0.43 IF (NUM .EQ. 2) GO TO 101 DO 100 I=3,NUM IF ((POT(I-2) .GT. TMISS) .AND. (POT(I-1) .GT. TMISS) + .AND. (POT(I) .GT. TMISS)) THEN POTF(I)=POT(I)*0.57+POT(I-1)*0.29+POT(I-2)*0.14 ELSE IF ((POT(I-2) .GT. TMISS) .AND. (POT(I) .GT. TMISS)) + THEN POTF(I)=POT(I)*0.57+POT(I-2)*0.43 ELSE IF ((POT(I-1) .GT. TMISS) .AND. (POT(I) .GT. TMISS)) + THEN POTF(I)=POT(I)*0.57+POT(I-1)*0.43 ELSE POTF(I)=POT(I) ENDIF 100 CONTINUE 101 IF (IFLGAP .NE. 1) RETURN C Have filled in gaps --- do not blend over original data when it C comes out of a gap IF (RPOT(2) .LT. TMISS) GO TO 150 POTF(2)=POT(2) IF (RPOT(2) .GT. TMISS .AND. RPOT(1) .GT. TMISS) | POTF(2) = POT(2)*0.57 + POT(1)*0.43 150 CONTINUE IF (NUM .EQ. 2) RETURN DO 200 I=3,NUM IF (RPOT(I) .LT. TMISS) GO TO 200 C IF ((RPOT(I-2) .GT. TMISS) .AND. (RPOT(I-1) .GT. TMISS) + .AND. (RPOT(I) .GT. TMISS)) THEN POTF(I)=POT(I)*0.57+POT(I-1)*0.29+POT(I-2)*0.14 ELSE IF ((RPOT(I-2) .GT. TMISS) .AND. (RPOT(I) .GT. TMISS)) + THEN POTF(I)=POT(I)*0.57+POT(I-2)*0.43 ELSE IF ((RPOT(I-1) .GT. TMISS) .AND. (RPOT(I) .GT. TMISS)) + THEN POTF(I)=POT(I)*0.57+POT(I-1)*0.43 ELSE POTF(I)=POT(I) ENDIF 200 CONTINUE RETURN END