PROGRAM LMP_RADPREP C C$$$ MAIN PROGRAM DOCUMENTATION BLOCK *** C C MAIN PROGRAM: LMP_RADPREP C PRGMMR: WIEDENFELD ORG: OST21 DATE: 2005-08-15 C C ABSTRACT: DRIVER FOR PROGRAM RADPREP. SEE RADPREP COMMENTS OR PROGRAM C WRITEUP FOR VARIABLE DEFINITIONS. THIS PROGRAM WILL C GENERATE QC'D RADAR DATA SET. IT READS A TDLPACKED RADAR MOSAIC C ALONG WITH OTHER NECESSARY INPUT FILES, AND SETUPS THE C CALL TO RCMQC. AN ATTEMPT HAS BEEN MADE TO INCLUDE ALL C INFORMATION IN THIS DRIVER THAT THE USER OF RADPREP C MIGHT HAVE TO CHANGE. C C PROGRAM HISTORY LOG: C C MAY WEISS MDL MOS/LAMP-2000 C AUGUST WEISS MDL CHANGED STOP 140 STATEMENT C TO STOP RADPREP (GOOD CODE C COMPLETION). ELIMINATED NEED C TO HAVE ND6, KFILIN, NAMIN, C AND MODNUM AS ARGUMENTS. C AUGUST WIEDENFELD MDL MODIFIED FOR USE IN OPERATIONS. C C DATA SET USE C INPUT FILES: C FORT.KFILDI - UNIT NUMBER OF DEFAULT INPUT FILE. C THIS IS PROBABLY SPECIFIED FOR THE SYSTEM C BEING USED. SET IN DATA STATEMENT. C OUTPUT FILES: C FORT.KFILDO - UNIT NUMBER OF DEFAULT OUTPUT (PRINT) FILE. C THIS IS PROBABLY SPECIFIED FOR THE SYSTEM C BEING USED. SET IN DATA STATEMENT. C C VARIABLES: C C DATA(J) = REAL WORK ARRAY (J=1,ND5). C FD1(J) = REAL WORK ARRAY (J=1,ND5). C IDATE(J) = INITIAL DATE LIST (J=1,NDATES) WHICH MAY CONTAIN C NEGATIVE VALUES INDICATING A DATE SPAN. C THIS IS MODIFIED IN DATPRO TO CONTAIN THE COMPLETE C DATE LIST WITH THE DATES IN THE SPANS FILLED IN C (J=1,NDATES), WHERE NDATES HAS BEEN INCREASED C IF NECESSARY. DATES ARE INPUT AS YYMMDDHH AND C MODIFIED TO YYYYMMDDHH. ZEROS IN THE INPUT ARE C ELIMINATED. TERMINATOR IS 99999999. MAXIMUM C NUMBER OF DATES IS ND8. C IPACK(J) = INTEGER WORK ARRAY (J=1,ND5). C ISCALD(N) = THE DECIMAL SCALING CONSTANT TO USE WHEN PACKING C THE GRIDDED DATA (N=1,ND4). NO BINARY SCALING IS C PROVIDED FOR. C IWORK(J) = INTEGER WORK ARRAY (J=1,ND5). C OUT_DATA(I,J,2) = CONTAINS THE JC QC RCM RADAR DATA C FOR THE :15 AND :45 TIME PERIODS FOR A GIVEN HOUR. C (I=1,ND2,J=1,ND3; NX AND NY) C DATA_RAD(I,J,2) = CONTAINS THE DK RCM MOSAIC TDLPACKED RADAR DATA C FOR THE :15 AND :45 TIME PERIODS FOR A GIVEN HOUR. C (I=1,ND2,J=1,ND3; NX AND NY) C RADMSK(I,J) = CONTAINS "YES"/"NO" BINARY VALUE OF WHETHER A C RADAR GRIDPOINT IS SET TO MISSING (9999.), WHEN C THE REFLECTIVITY IS ZERO. FOR THESE GRIDPOINTS C THE BINAUY VALUE IS ONE, ZERO OTHERWISE. C (I=1,ND2,J=1,ND3; NX AND NY) C FLT(I,J,2) = CONTAINS LIGHTNING GRID AT "CONCURRENT TIME" C WITH RCM NOMINAL TIME AND ENDS 5 MINUTES AFTERWARD. C (I=1,ND2,J=1,ND3; NX AND NY) C FLTPT(I,J,2) = SAME ANS FLT( , ), BUT FOR PREVIOUS 15-MINUTE C PERIOD. (I=1,ND2,J=1,ND3; NX AND NY) C WITH RCM NOMINAL TIME AND ENDS 5 MINUTES AFTERWARD. C (I=1,ND2,J=1,ND3; NX AND NY) C STALAT(I,J) = CONTAINS THE LATITUDES OF GRIDPOINTS (CENTERS OF C 10 KM GRID BOXES. (I=1,ND2,J=1,ND3; NX AND NY) C STALON(I,J) = CONTAINS THE LONGITUDES OF GRIDPOINTS (CENTERS OF C 10 KM GRID BOXES. (I=1,ND2,J=1,ND3; NX AND NY) C L3264B = INTEGER WORD LENGTH IN BITS OF MACHINE BEING C USED (EITHER 32 OR 64). SET BY PARAMETER. C L3264W = NUMBER OF WORDS IN 64 BITS (EITHER 1 OR 2). C CALCULATED BY PARAMETER, BASED ON L3464B. C C LET ND1 = THE MAXIMUM NUMBER OF STATIONS THAT CAN BE DEALT WITH. C ALSO, IT MUST BE GE NBLOCK IN LINEARIZATION ROUTINES. C ND2 = ND2*ND3 IS THE MAXIMUM SIZE OF THE GRID THAT CAN C BE DEALT WITH. C ND3 = ND2*ND3 IS THE MAXIMUM SIZE OF THE GRID THAT CAN C BE DEALT WITH. SEE ND2. BECAUSE ND5 = ND2X3, C AND ND5 MAY NEED TO BE LARGER THAN ND2X3, ND2 C OR ND3 MAY NEED TO BE SET LARGER THAN NECESSARY. C SINCE THE INDIVIDUAL VALUES OF ND2 AND ND3 ARE C NOT USED, THIS IS OK. C ND4 = THE MAXIMUM NUMBER OF VARIABLES IN A RUN OF C RADPREP. C ND5 = DIMENSION OF IPACK( ), IWORK( ), AND DATA( ). C THESE ARE GENERAL PURPOSE ARRAYS, SOMETIMES USED C FOR GRIDS. TO AVIOD ERRORS IN CERTAIN ROUTINES, C AND TO AVOID CONFUSION, ND5 SHOULD BE SET EQUAL TO C ND2X3. ALSO, BECAUSE IPACK( ) AND IWORK( ) ARE C USED AS WORK ARRAYS IN RDSNAM, ND5 SHOULD NOT BE C LT ND12. C ND7 = DIMENSION OF IS0( ), IS1( ), IS2( ), AND IS4( ). C SHOULD BE GE 54. C ND8 = MAXIMUM NUMBER OF DATES THAT CAN BE DEALT WITH. C ND9 = MAXIMUM NUMBER OF FIELDS THAT CAN BE DEALT WITH. C EFFECTIVELY, THIS IS THE TOTAL NUMBER OF FIELDS C IN ALL MODELS USED FOR DAY 1. C ND10 = THE MEMORY IN WORDS ALLOCATED TO THE SAVING OF C PACKED GRIDPOINT FIELDS AND UNPACKED VECTOR DATA. C WHEN THIS SPACE IS EXHAUSTED, SCRATCH DISK WILL C BE USED. C ND11 = MAXIMUM NUMBER OF GRID COMBINATIONS THAT CAN BE C DEALT WITH ON THIS RUN. C ND12 = THE NUMBER OF MOS-2000 EXTERNAL RANDOM ACCESS C FILES THAT CAN BE USE ON THIS RUN. C NBLOCK = BLOCK SIZE IN WORDS OF INTERNAL MOS-2000 DISK C STORAGE. SINCE MUCH, IF NOT ALL, INTERNAL C STORAGE WILL BE OF PACKED DATA, THE NUMBER OF C BYTES WILL BE THE SAME FOR EITHER A 32- OR C 64-BIT MACHINE. THEREFORE, THE BLOCK SIZE IS C SET BY PARAMETER TO VARY WITH L3264B. IN THE C PARAMETER STATEMENT, THE 6400 IS ARBITRARY, AND C CAN BE CHANGED. PERFORMANCE SHOULD NOT BE C HIGHLY DEPENDENT ON THIS. HOWEVER, IF TOO C LARGE, SPACE WILL BE WASTED, AND IF TOO SMALL C MANY RECORDS WILL BE NECESSARY TO HOLD EACH C RECORD. THE 6400 ACCOMMODATES 800 BYTES ON C EITHER A 32- OR 64-BIT MACHINE. SET BY C PARAMETER. (NOTE: NOT USED IN RADPREP) C PLAIN2 = THE PLAIN LANGUAGE CHARACTER STRING EQUIVALENCED C TO ARRAY IPLAIN. (CHARACTER*32) C IPLAIN(L,J) = 32 CHARACTERS (L=1,L3264W) (J=1,4) OF PLAIN C LANGUAGE DESCRIPTION OF VARIABLES. C NOTE: THAT THIS REQUIRES TWO 32-BIT WORDS TO C HOLD THE DESCRIPTION BUT ONLY ONE 64-BIT WORD. C EQUIVALENCED TO PLAIN2. C C SUBPROGRAMS CALLED: C RADPREP, TIMPR, W3TAGB, W3TAGE C UNIQUE: RADPREP C MDLLIB: TIMPR C W3LIB: W3TAGB, W3TAGE C C EXIT STATES: C COND = 0 - SUCCESSFUL RUN C C 1 2 3 4 5 6 7 X C THEN IT IS SUFFICIENT THAT THE DIMENSIONS OF VARIABLES BE C AS INDICATED BELOW IN THIS EXAMPLE DRIVER. NOTE THAT THE C VARIABLE L3264B IS SET TO 32 FOR A 32-BIT MACHINE AND TO C 64 FOR A 64-BIT MACHINE. L3264W AND NBLOCK WILL C AUTOMATICALLY ADJUST ACCORDINGLY. C PARAMETER (L3264B=32) PARAMETER (L3264W=64/L3264B) PARAMETER (NBLOCK=6400/L3264B) CCC PARAMETER (ND1=600000) PARAMETER (ND1=120000) C PARAMETER (ND2=481, 1 ND3=385) ccc PARAMETER (ND2=1073, ccc 1 ND3=689) PARAMETER (ND4=500) PARAMETER (ND7=54) PARAMETER (ND8=20) PARAMETER (ND11=4) PARAMETER (ND2X3=ND2*ND3) PARAMETER (ND5=200000) CCCC* CHARACTER*1 PLAIN(ND4) CHARACTER*32 PLAIN2 CHARACTER*8 CCALLD(ND1),CCALLD_S(ND1) C DIMENSION ISCALD(ND4),IPLAIN(L3264W,4) DIMENSION IS0(ND7),IS1(ND7),IS2(ND7),IS4(ND7) DIMENSION IDATE(ND8),NWORK(ND8) DIMENSION IPACK(ND5),IWORK(ND5),DATA(ND5),OUT_DATA(ND2,ND3,2) DIMENSION FD1(ND5),DATA_RAD(ND2,ND3,2) DIMENSION RADMSK(ND2,ND3),FLT(ND2,ND3,2),FLTPT(ND2,ND3,2) DIMENSION STALAT(ND2,ND3),STALON(ND2,ND3) EQUIVALENCE (PLAIN2,IPLAIN) C DATA KFILDI/5/, 1 KFILDO/6/ CCCC* DATA PLAIN/ND4*' '/ DATA PLAIN2/' '/ C CALL TIMPR(KFILDO,KFILDO,'START LMP_RADPREP ') C OPEN(UNIT=KFILDI,FILE='RADPREP.CN',STATUS='OLD',IOSTAT=IOS, C 1 ERR=900) CALL W3TAGB('LMP_RADPREP',2005,0100,0050,'OST21') C CALL RADPREP(KFILDI,KFILDO, 1 ND1,ND2,ND3,ND2X3,ND4,ND5, 2 ND7,ND8, 3 ISCALD,PLAIN2,IPLAIN,L3264B,L3264W, 4 IPACK,DATA,FD1,IWORK,DATA_RAD,OUT_DATA, 5 RADMSK,FLT,FLTPT,STALAT,STALON, 6 IS0,IS1,IS2,IS4, 7 IDATE,NWORK) C CALL TIMPR(KFILDO,KFILDO,'END LMP_RADPREP ') CALL W3TAGE('LMP_RADPREP') STOP C C 900 CALL IERX(KFILDO,KFILDO,IOS,'DRU_RADPREP','900 ') C STOP 900 C END