SUBROUTINE RESQ(DRPTPS,DPRES,DQ, * RTYPES,RSPRES,MQDAT,RMAXERR,RBQS) C$$$ SUBPROGRAM DOCUMENTATION BLOCK C . . . . C SUBPROGRAM: RESQ COMPUTE MOISTURE RESIDUALS. C PRGMMR: PARRISH ORG: W/NMC22 DATE: 90-10-11 C C ABSTRACT: FORM TEMP RESIDUALS, GET OBS ERROR, AND PRINT STATS. C C PROGRAM HISTORY LOG: C 90-10-11 PARRISH C C INPUT ARGUMENT LIST: C DRPTPS - OBS TYPE IN, OBS ERROR OUT (LN(PS) UNITS) C DPRES - PRES (MB*10+QM IN, GRID COORDS IN SIGMA OUT) C DQ - WETS IN, RESIDUAL OUT C RTYPES - PREPDA OBSERVATION TYPES C RSPRES - OBSERVATION PRESSURES C MQDAT - NUMBER OF OBSERVATIONS C RMAXERR - MAXIMUM ALLOWED ERRORS C RBQS - SATURATION SPECIFIC HUMIDITY C C OUTPUT ARGUMENT LIST: C AS INDICATED ABOVE C C ATTRIBUTES: C LANGUAGE: CFT77 C MACHINE: CRAY YMP C C$$$ C-------- DIMENSION DRPTPS(MQDAT) DIMENSION DPRES(MQDAT) DIMENSION DQ(MQDAT) DIMENSION RTYPES(MQDAT) DIMENSION RSPRES(MQDAT) DIMENSION RMAXERR(MQDAT) DIMENSION RBQS(MQDAT) C C CALCULATE SATURATION SPECIFIC HUMIDITY C GRSMLT=5. NGROSS=0 DO 49 I=1,MQDAT C-------- C-------- CHECK FOR GROSS ERRORS C-------- IF(DPRES(I) .LT. 1.) DPRES(I)=1. IF(ABS(DQ(I)).GT.GRSMLT*RMAXERR(I)) THEN C WRITE(6,*)' RMAXERR OF Q= ',RMAXERR(I) DRPTPS(I)=0. NGROSS=NGROSS+1 END IF 49 CONTINUE WRITE(6,901)GRSMLT,NGROSS 901 FORMAT(' GRSMLT=',F7.1,' NUM BAD QS=',I8) C-------- C-------- NOW DO STATISTICS SUMMARY C-------- (SCALE RESIDUALS BY GUESS QSAT) C-------- DO 2048 I=1,MQDAT RBQS(I)=DQ(I)*100./RBQS(I) 2048 CONTINUE SCALE=1. PBOT=2000. PTOP=0. CALL DTAST(RTYPES,RBQS,SCALE,MQDAT,RSPRES,PBOT,PTOP, * 'CURRENT FIT OF Q DATA, UNITS IN PER-CENT OF GUESS Q-SAT$') RETURN END