PROGRAM VECT2GRID C C$$$ MAIN PROGRAM DOCUMENTATION BLOCK *** C C MAIN PROGRAM: MDL_U140 C PRGMMR: MALONEY ORG: W/OST22 DATE: 2005-03-07 C C ABSTRACT: DRIVER FOR PROGRAM U140. SEE U140 COMMENTS OR PROGRAM C WRITEUP FOR VARIABLE DEFINITIONS. AN ATTEMPT HAS BEEN C MADE TO INCLUDE ALL INFORMATION IN THIS DRIVER THAT C THE USER OF U140 MIGHT HAVE TO CHANGE. THE OPEN TO C THE CONTROL FILE 'U140.CN' IS HERE SO THAT ACCESS TO THE C CONTROL FILE CAN BE MODIFIED FOR CRAY OR BATCH HP JOBS. C C PROGRAM HISTORY LOG: C 04-09-01 WIEDENFELD C 05-01-01 WEISS C 05-01-27 MALONEY ADDED NCEP DOCBLOCK. ADDED CALLS TO W3TAGB C AND W3TAGE. CHANGED THE VALUE OF KFILDO FROM C 12 TO 6. C 05-10-17 RLC MADE CHANGES TO U140.F TO LESSEN THE PRINTING, C MAKE THE CORNER CHECKS MORE CLEAR, AND ALLOW C THE USER TO SET THE OUTPUT IDS TO ANYTHING. C 18-07-09 SCHNAPP INCREASE ND1,ND2,ND3 TO 3744968,2400,1600 C FOR NBM GRID 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 C OUTPUT FILES: (INCLUDING WORK 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 FORT.KFILIN(J) - UNIT NUMBERS FOR VECTOR SEQUENTIAL INPUT DATA, C ALL IN TDLPACK FORMAT. INPUT CAN INCLUDE C PREDICTAND (OBSERVATIONS) DATA, VARIOUS C CONSTANTS, OR MOS FORECASTS. C (J=1,NUMIN). C C VARIABLES C DATA(J) = REAL WORK ARRAY (J=1,ND5). C FD1(J) = REAL WORK ARRAY (J=1,ND5). C FD2(J) = REAL WORK ARRAY (J=1,ND5). C JFOPEN(J) = FOR EACH FILE IN KFILIN(J), JFOPEN(J) IS 1 WHEN C THE FILE IS OPEN, IS 0 WHEN IT HAS ALREADY BEEN C USED AND IS 2 WHEN THE FILE HAS NOT BEEN OPENED C (J=1,NUMIN). C GIS_DATA(I,J) = GIS ASCII FILE OUTPUT ARRAY (I=1,ND5), C (J=1,ND4). 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 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 MODNUM(J) = THE "MODEL" NUMBER CORRESPONDING TO KFILIN(J), C AND NAMIN(J) (J=1,NUMIN). THIS MAY NOT HAVE C MEANING FOR SOME INPUTS, BUT IS NEEDED FOR THE C MODEL DATA. C NAME(K) = NAMES OF STATIONS (K=1,ND1) (CHARACTER*20) C NAMIN(J) = HOLDS DATA SET NAMES FOR THE UNIT NUMBERS IN C KFILIN(J) (J=1,NUMIN). (CHARACTER*60) C 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 U140. 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 ND6 = MAXIMUM NUMBER OF MODELS THAT CAN BE DEALT WITH. 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 U140) 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: U140, W3TAGB, W3TAGE C UNIQUE: - U140 C LIBRARY: C W3LIB - W3TAGB, W3TAGE C C EXIT STATES: C COND = 0 - SUCCESSFUL RUN C C REMARKS: NONE C C ATTRIBUTES: C LANGUAGE: FORTRAN 90 (xlf90 compiler) C MACHINE: IBM SP C C$$$ C PARAMETER (L3264B=32) PARAMETER (L3264W=64/L3264B) PARAMETER (NBLOCK=6400/L3264B) CCC PARAMETER (ND1=600000) PARAMETER (ND1=3744968) C CCC PARAMETER (ND2=925, CCC 1 ND3=455) CCC PARAMETER (ND2=301, CCC 1 ND3=225) PARAMETER (ND2=2400, 1 ND3=1600) PARAMETER (ND4=700) PARAMETER (ND6=8) PARAMETER (ND7=54) PARAMETER (ND8=200) PARAMETER (ND11=4) PARAMETER (ND2X3=ND2*ND3) PARAMETER (ND5=MAX(ND1,1200000)) CCCC* CHARACTER*1 PLAIN(ND4) CHARACTER*32 PLAIN2 CHARACTER*8 CCALLD(ND1),CCALLD_S(ND1) CHARACTER*20 NAME(ND1) CHARACTER*60 NAMIN(ND6) 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) DIMENSION FD1(ND5),FD2(ND5) DIMENSION KFILIN(ND6),MODNUM(ND6),JFOPEN(ND6) DIMENSION GIS_DATA(ND5,ND7) C EQUIVALENCE (PLAIN2,IPLAIN) C DATA KFILDI/5/, 1 KFILDO/6/ CCCC* DATA PLAIN/ND4*' '/ DATA PLAIN2/' '/ C CALL W3TAGB('MDL_U140',2000,0258,0065,'OSD211') CALL TIMPR(KFILDO,KFILDO,'START U140 ') CCC OPEN(UNIT=KFILDI,FILE='U140.CN',STATUS='OLD',IOSTAT=IOS,ERR=900) C CALL U140(KFILDI,KFILDO,KFILIN, 1 ND1,ND2,ND3,ND2X3,ND4,ND5, 2 ND6,ND7,ND8, 3 ISCALD,PLAIN2,IPLAIN,L3264B,L3264W, 4 IPACK,DATA,FD1,FD2,IWORK,GIS_DATA, 5 NAME,NAMIN,JFOPEN,MODNUM, 6 IS0,IS1,IS2,IS4, 7 IDATE,NWORK) C CALL TIMPR(KFILDO,KFILDO,'END U140 ') CALL W3TAGE('MDL_U140') STOP C CCC 900 CALL IERX(KFILDO,KFILDO,IOS,'DRU140','900 ') CCC STOP 900 C END