SUBROUTINE RCMQC(KFILDO,NDATE,DATA,RADTMP,FLT,FLTPT,RADMSK, 1 STALAT,STALON,ICHECK,IP,NX,NY) C C MARCH 2000 CHARBA MDL MOS/LAMP-2000 C AUGUST 2000 CHARBA MODIFIED SUCH THAT THE IP( ) ARRAY IS C PASSED IN THE ARGUMENT LIST. THE ARRAY C ELEMENTS IP(20) AND IP(21) ARE USED AS C UNIT NUMBERS FOR WRITING PRINT OUTPUT C IN SUBROUTINE RQCRCM. IP(22) IS USED C FOR THE SAME PURPOSE IN SUBROUTINE C RFLTNG. C AUGUST 2005 WIEDENFELD REMOVED SAVE NCALL AND INTIAL DIAGNOSTIC C FOR OPERATIONAL USE. C C C PURPOSE C PERFORMS QC ON RCM RADAR REFLECTIVITY DATA ON A 10-KM PS C GRID. THE QC ANALYSIS IS BASED ON AN RCM NOMINAL TIME OF C :15 OR :45, GRIDDED CTG LIGHTNING DATA FOR A 15-MIN PERIOD C THAT MATCHES THE RADAR NOMINAL TIME, AND GRIDDED LIGHTNING C DATA FOR THE PREVIOUS 15-MIN PERIOD. SEPARATE CALLS TO C RCMQC ARE REQUIRED TO PERFORM THE QC AT :15 AND :45. THE C QC INVOLVES TWO SERIAL QC PROCESSES. THE FIRST ("MASK") C PROCESS INVOLVES REMOVING (SETTING TO 9999) A FIXED (INPUT) C SET OF GRIDPOINTS. THE SECOND ("DECISION TREE") PROCESS C INVOLVES REMOVING OR MODIFYING REFLECTIVITY VALUES BASED ON C RADAR SPATIAL CONTINUITY, AND SPATIAL AND TEMPORAL CONSIS- C TENCY WITH LIGHTNING DATA. THE STATISTICAL RELATIONSHIP C BETWEEN LIGHTNING RELATIVE FREQUENCY AND RADAR REFLECTIVITY C IS DERIVED (AND OUTPUT) BEFORE AND AFTER THE SECOND QC PRO- C CESS FOR EACH OF :15 AND :45. 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. C (INPUT) C NDATE = LAMP CYCLE DATE-TIME. (INPUT) C NX = OUTPUT GRID SIZE IN X-DIRECTION (=481). (INPUT) C NY = OUTPUT GRID SIZE IN Y-DIRECTION (=385). (INPUT) C IP(J) = EACH VALUE (J=1,25) INDICATES WHETHER (>1) C OR NOT (=0) CERTAIN INFORMATION WILL BE WRITTEN. C WHEN IP( ) > 0, THE VALUE INDICATES THE UNIT C NUMBER FOR OUTPUT. THESE VALUES SHOULD NOT BE THE C SAME AS ANY KFILX VALUES EXCEPT POSSIBLY C KFILDO, WHICH IS THE DEFAULT OUTPUT FILE. THIS IS C ASCII OUTPUT, GENERALLY FOR DIAGNOSTIC PURPOSES. C THE FILE NAMES WILL BE 4 CHARACTERS 'RADPREP', C THEN 4 CHARACTERS FROM IPINIT, THEN 2 CHARACTERS C FROM IP(J) (E.G., 'U140HRG140'). THE ARRAY IS C INITIALIZED TO ZERO IN CASE LESS THAN THE EXPECTED C NUMBER OF VALUES ARE READ IN. EACH OUTPUT ASCII C FILE WILL BE TIME STAMPED. NOTE THAT THE TIME C ON EACH FILE SHOULD BE VERY NEARLY THE SAME, BUT C COULD VARY BY A FRACTION OF A SECOND. IT IS C INTENDED THAT ALL ERRORS BE INDICATED ON THE C DEFAULT, SOMETIMES IN ADDITION TO BEING INDICATED C ON A FILE WITH A SPECIFIC IP( ) NUMBER, SO THAT C THE USER WILL NOT MISS AN ERROR. C (1) = ALL ERRORS AND OTHER INFORMATION NOT C SPECIFICALLY IDENTIFIED WITH OTHER IP( ) C NUMBERS. WHEN IP(1) IS READ AS NONZERO, C KFILDO, THE DEFAULT OUTPUT FILE UNIT NUMBER, C WILL BE SET TO IP(1). WHEN IP(1) IS READ C AS ZERO, KFILDO WILL BE USED UNCHANGED. C (2) = THE INPUT DATES IN IDATE( ). WHEN THERE C ARE ERRORS, PRINT WILL BE TO UNIT KFILDO AS C WELL AS TO UNIT IP(2). C (3) = THE OUTPUT DATES IN IDATE( ). WHEN THERE C ARE ERRORS, OUTPUT WILL BE TO UNIT KFILDO AS C WELL AS TO UNIT IP(3). C (4) = THE INPUT DK RADAR SEQUENTIAL FILE(S). IF C THERE ARE NO INPUT SEQUENTIAL FILES, A C MESSAGE WILL BE WRITTEN TO THE DEFAULT OUTPUT C FILE UNIT KFILDO AS WELL AS TO UNIT IP(4). C (5) = THE INPUT GRIDDED MASK RANDOM ACCESS FILE. C IF THERE ARE NO INPUT RANDOM ACCESS FILES, A C MESSAGE WILL BE WRITTEN TO THE DEFAULT OUTPUT C FILE UNIT KFILDO AS WELL AS TO UNIT IP(5). C (6) = THE OUTPUT JC QC RADAR RADSEQUENTIAL FILE C IF ANY OF THE OUTPUT FILES ARE MISSING, A C MESSAGE WILL BE WRITTEN TO THE DEFAULT OUTPUT C FILE UNIT KFILDO AS WELL AS TO UNIT IP(6). C (9) = THE OUTPUT VARIABLE IDS ARE WRITTEN TO C UNIT IP9 AS THE VARIABLES ARE READ IN. C THIS SHOULD BE USEFUL FOR CHECKOUT. C CHECKOUT. C (10) = THE VARIABLE LIST WILL BE WRITTEN TO UNIT C IP10 PARSED INTO ITS 15 INTEGER COMPONENTS. C 15 INTEGER COMPONENTS. IF THERE ARE INPUT C ERRORS, THE VARIABLE LIST WILL BE WRITTEN C TO THE DEFAULT OUTPUT FILE UNIT KFILDO AS WELL AS C TO UNIT IP10 IF THEY ARE DIFFERENT. C (16) = A STATEMENT WILL BE OUTPUT TO IP(16) C WHEN A SEQUENTIAL FILE IS WRITTEN THROUGH C PWOTGM. C (20) = CONTAINS A LISTING OF RCM GRIDBOXES WITH C CATEGORY 5 AND 6 VALUES AND THE CORRESPOND- C ING LIGHTNING VALUES. C (21) = CONTAINS DIAGNOSTIC INFORMATION FOR GRID C BOXES IN WHICH THE RCM VALUES ARE CHECKED C AND POSSIBLY CORRECTED. C (22) = CONTAINS A TABLE OF STATISTICS THAT SHOWS C THE RELATIONSHIP BETWEEN LIGHTNING RELATIVE C FREQUENCY AND RCM RADAR REFLECTIVITY. FOR C EACH OF THE TWO RCM VARIABLES, A SEPARATE C TABLE IS OUTPUT THAT APPLIES BEFORE THE QC C AND AFTER THE QC. C RADTMP(I,J) = RAW RCM DATA FOR :15 OR :45 NOMINAL TIME ON c 460x360 GRID (I=1,NX,J=1,NY). (INPUT) C DATA(I,J) = CONTAINS QC'D RCM RADAR DATA FOR :15 OR :45 C NOMINAL TIME ON 481X385 OUTPUT GRID C (I=1,NX,J=1,NY). (OUTPUT) C FLT(I,J) = CONTAINS LIGHTNING GRID AT "CONCURRENT TIME" C WITH RCM NOMINAL TIME. THE "CONCURRENT TIME" IS C A 15-MIN PERIOD THAT BEGINS 10 MIN BEFORE THE C RADAR NOMINAL TIME AND ENDS 5 MIN AFTERWARD. C (I=1,NX,J=1,NY). (INPUT) C FLTPT(I,J) = SAME AS FLT( , ), BUT FOR PREVIOUS 15-MIN PERI- C OD (I=1,NX,J=1,NY). (INPUT) C ICHECK = SET TO 0 WHEN INPUT LIGHTNING GRIDS CONTAIN ALL C MISSING VALUES, IN WHICH CASE ONLY THE "MASK" C QC CHECK (THE FIRST OF TWO QC PROCESSES) IS C APPLIED; =1 OTHERWISE. (INPUT) C RADMSK(I,J) = CONTAINS "YES"/"NO" INDICATORS THAT DETERMINE C WHETHER (1) OR NOT (0) A RADAR GRIDPOINT IS SET C TO MISSING (9999.) IN THE FIRST QC CHECK C (I=1,NX,J=1,NY). (INPUT) C STALAT(I,J) = CONTAINS LATITUDES OF GRIDPOINTS (LOWER-LEFT C CORNERS OF 10-KM GRIDBOXES) (I=1,NX,J=1,NY). C (INPUT) C STALON(I,J) = CONTAINS LONGITUDES OF GRIDPOINTS (LOWER-LEFT C CORNERS OF 10-KM GRIDBOXES) (I=1,NX,J=1,NY). C (INPUT) C FLT33(I,J) = CONTAINS LIGHTNING DATA SUMMED WITHIN C (OVERLAPPING) 3X3 WINDOWS (I=1,NX,J=1,NY). C (INTERNAL) C FLTPT33(I,J) = CONTAINS 3X3 SUMS OF LIGHTNING DATA AT PREVIOUS C (15-MIN) TIME (I=1,NX,J=1,NY). (INTERNAL) C C NONSYSTEM SUBROUTINES CALLED C LTGSUM, RADQC, RFLTNG C DIMENSION DATA(NX,NY),RAD(NX,NY),RADTMP(NX,NY),FLT(NX,NY), 1 FLT33(NX,NY),FLTPT(NX,NY),FLTPT33(NX,NY),STALAT(NX,NY), 2 STALON(NX,NY) DIMENSION RADMSK(NX,NY),IP(25) C DATA NCALL/1/ C C23456789012345678901234567890123456789012345678901234567890123456789012 C C PERFORM INITIALIZATIONS. C NXNY=NX*NY DO J=1,NY DO I=1,NX RAD(I,J)=9999. ENDDO ENDDO C C TRANSFER DATA FROM NATIVE RCM GRID TO LAMP RADAR ARCHIVE GRID. C NOTE: RCM(1,1) CORESPONDS TO LAMP(17,17). C DO JJ=1,360 DO II=1,460 RAD(II+16,JJ+16)=RADTMP(II,JJ) ENDDO ENDDO C C SET RCM DATA TO 9999. AT SPECIFIED GRIDPOINTS IN RADMSK( , ). C NMASK=0 DO J=1,NY DO I=1,NX IF(RADMSK(I,J).EQ.1) THEN RAD(I,J)=9999. NMASK=NMASK+1 ENDIF ENDDO ENDDO C WRITE(KFILDO,35) NMASK 35 FORMAT(/,'RCM MASK REMOVED ',I7,' GRIDPOINTS OVER RCM COVERAGE ', 1 'AREA.') C C IF ICHECK=0, ABORT THE REMAINDER OF RADAR QC. C IF(ICHECK.EQ.0) THEN DO J=1,NY DO I=1,NX DATA(I,J)=RAD(I,J) ENDDO ENDDO WRITE(KFILDO,40) 40 FORMAT(/,'RCM QC BEING ABORTED AFTER GRID MASK APPLICATION.') RETURN ENDIF C C SUM THE LIGHTNING FLASH COUNTS OVER 3X3 GRID WINDOWS. C CALL LTGSUM(KFILDO,FLT,FLT33,NX,NY) CALL LTGSUM(KFILDO,FLTPT,FLTPT33,NX,NY) C C PERFORM DYNAMIC QC PROCESSING OF THE RCM RADAR DATA. QC'D C RCM DATA RETURNED IN DATA( , ). C CALL RQCRCM(KFILDO,NDATE,RAD,FLT,DATA,FLT33,FLTPT33, 1 IP(20),IP(21),NX,NY,STALAT,STALON,GCHECK,GNOCH) NUMCK=GCHECK NCHG=GCHECK-GNOCH C WRITE(KFILDO,60) NUMCK,NCHG 60 FORMAT(//,'FOR ABOVE RCM QC ',I8,' GRIDPOINTS WERE CHECKED AND ', 1 I5,' REFLECTIVITIES WERE CHANGED.') C C COMPUTE RELATIVE FREQUENCY OF LIGHTNING OCCURRENCE C IN GRIDBOXES AS A FUNCTION OF THE RCM REFLECTIVITY CATEGORIES. C PERFORM THIS ANALYSIS FIRST FOR RAW AND THEN QC'D RCM DATA. C CALL RFLTNG(KFILDO,NDATE,FLT,RAD,NXNY,IP(22),0) CALL RFLTNG(KFILDO,NDATE,FLT,DATA,NXNY,IP(22),1) C RETURN END