SUBROUTINE SPOTWT(KFILDO,KFILOG,IP16, 1 CCALL,XP,YP,LNDSEA,NOPTN,LTAG,LTAGPT,NSTA, 2 ID,IDPARS,DIST,WT,MESH,NX,NY, 3 SEALND,NXE,NYE,MESHE, 4 IPACK,DATA,IWORK,ND5, 5 MODNO,NDATE, 6 ALATL,ALONL,NPROJ,ORIENT,XLAT,ISCALD, 7 DPOWER,MAXDST, 8 IS0,IS1,IS2,IS4,ND7, 9 JTOTBY,JTOTRC,PLAINT,IPLANT, A L3264B,L3264W,MINPK,ISTOP,IER) C C JUNE 2011 GLAHN MDL MOS-2000 C ADAPTED FGBS SPOTWT C JULY 2011 GLAHN ADDED LTAGBS C JULY 2011 GLAHN ADDED "1" TO WORD 2 IN THE "B" C POSITION OF THE ID FOR WRITING C TO KFILOG C JULY 2011 GLAHN REMOVED JFIRST C JULY 2011 GLAHN REMOVED OPEN MP C AUGUST 2011 GLAHN CHANGED LTAGBS( ) TO LTAGPT( ) C SEPTEMBER 2016 GLAHN CHANGED ND5 TO NX*NY IN CALL TO PAWGTS C C PURPOSE C TO CALCULATE THE WEIGHTS AND DISTANCES FOR A WATER C SMOOTHER. THE WEIGHTS AND DISTANCES ARE CALCULATED C SIMILAR TO SPOTRM. HOWEVER, HERE THE BOGUS VALUES C ARE NOT INCLUDED IN THE DISTANCE CALCULATIONS. THAT C IS, SPOTRM USES ALL STATIONS WITH DATA TO CALCULATE C THE DISTANCES (DEPENDING ON THE NOCEAN/LAKE VALUES C IN U405A.CN), WHILE THIS SPOTWT DOES NOT USE BOGUS C VALUES. THE BOGUS VALUES AFFECT THE ANALYSIS, BUT C THE EXACT VALUES ARE NOT RETAINED LIKE THEY ARE FOR C REAL (BUOY) VALUES. TO DIFFERENTIATE THIS DISTANCE C GRID WHEN WRITTEN TO THE DISPOSABLE (KFILOG) FILE, C A "1" IS ADDED TO WORD 2 OF THE ID. SPOTWT IS CALLED C BY ORSMTW, WHICH IS AN ADAPTION TO ORSMTH. C C NOTE THAT OCEAN AND INLAND WATER ARE TREATED SEPARATELY. C THERE IS NO MIX. IT MAY BE DESIRABLE TO DO THIS. C C IF SPOTWT IS ENTERED MORE THAN ONCE FOR THE SAME DATE C AND VARIABLE, WT( , ) AND DIST( , ) DO NOT HAVE TO BE C RECALCULATED. HOWEVER, THIS PART OF THE PROCESS IS NOT C WHAT TAKES THE HEAVY CP TIME. ALSO, IT WOULD BE BE C UNUSUAL TO DO THIS. C C DATA SET USE C KFILDO - UNIT NUMBER FOR OUTPUT (PRINT) FILE. (OUTPUT) C KFILOG - UNIT NUMBER FOR DISPOSABLE TDLPACK GRIDPOINT C OUTPUT. (OUTPUT) C KFILRA(J) - HOLDS THE UNIT NUMBERS FOR ACCESSING THE C MOS-2000 EXTERNAL RANDOM ACCESS FILES (J=1,6). C (INPUT) C IP16 - UNIT NUMBER FOR INDICATING WHEN A RECORD IS C WRITTEN TO THE SEQUENTIAL FILE. (OUTPUT) C C VARIABLES C KFILDO = UNIT NUMBER FOR OUTPUT (PRINT) FILE. (INPUT) C KFILOG = UNIT NUMBER FOR DISPOSABLE TDLPACK GRIDPOINT C OUTPUT. THIS IS FOR DIFFERENT PASSES OF THE C ANALYSES AND THEIR SMOOTHINGS. USED HERE C FOR DISTANCE MAP. (INPUT) C IP16 = INDICATES WHETHER (>0) OR NOT (=0) C A STATEMENT WILL BE OUTPUT TO IP(16) C WHEN A SEQUENTIAL FILE IS WRITTEN THROUGH C PAWGTS. (INPUT)) C CCALL(J) = STATION CALL LETTERS (J=1,NSTA). (CHARACTER*8) C (INPUT) C XP(K) = THE X POSITION FOR STATION K (K=1,NSTA) ON C THE ANALYSIS GRID AREA AT THE CURRENT GRID MESH C LENGTH MESH. (INPUT) C YP(K) = THE Y POSITION FOR STATION K (K=1,NSTA) ON C THE ANALYSIS GRID AREA AT THE CURRENT GRID MESH C LENGTH MESH. (INPUT) C LNDSEA(K) = LAND/SEA INFLUENCE FLAG FOR EACH STATION C (K=1,ND1). C 0 = WILL BE USED FOR ONLY OCEAN WATER (=0) C GRIDPOINTS. C 3 = WILL BE USED FOR ONLY INLAND WATER (=3) C GRIDPOINTS. C 6 = WILL BE USED FOR BOTH INLAND WATER (=3) C AND LAND (=9) GRIDPOINTS. C 9 = WILL BE USED FOR ONLY LAND (=9) GRIDPOINTS. C (INPUT) C NOPTN = INCICATES OPTION FOR WHICH DATA TO SMOOTH OUT. C COMES FROM U405A.CN IN CALL TO SPOTRM CONST( ). C 1 = SMOOTH OUT BOGUS ONLY C 2 = SMOOHT OUT BOGUS AND 2ND LEVE AUGMENTATION. C 3 = SMOOTH OUT BOGUS AND ALL AUGMENTATION C 4 = KEEP ALL. C (INPUT) C LTAG(K) = DENOTES USE OF DATA CORRESPONDING TO CCALL(K) C (K=1,NSTA). C +4 = TOSSED IN A PREVIOUS OBS RUN AND C MAINTAINED DOWNSTREAM. C +3 = TOSSED IN A PREVIOUS LAMP RUN, AND C MAINTAINED DOWNSTREAM. C +2 = STATION LOCATION UNKNOWN. NOT USED FOR ANY C PURPOSE. C +1 = STATION OUTSIDE RADIUS OF INFLUENCE FOR C AREA BEING ANALYZED OR MISSING DATUM. C PERMANENTLY DISCARDED. C 0 = USE ON CURRENT PASS THROUGH DATA IN BCD. C -1 = ON RETURN FROM BCD, THE DATUM WAS NOT C USED ON THE LAST PASS. C -3 = ACCEPT THIS STATION ON EVERY PASS IN BCD. C (NOT IMPLEMENTED IN U405A) C (INPUT) C LTAGPT(K) = FOR STATION K (K=1NSTA), C 1 = AUGMETNED DATA (FIRST PASS) C 2 = AUGMENTED DATA (2ND PASS) C 3 = BOGUS DATA C 0 = EVERYTHING ELSE C (INPUT) C NSTA = NUMBER OF STATIONS IN CCALL( ). (INPUT) C ID(J) = 4 WORD ID OF VARIABLE BEING ANALYZED. (INPUT) C IDPARS(J) = THE PARSED, INDIVIDUAL COMPONENTS OF THE C PREDICTOR ID'S CORRESPONDING TO ID( ,N) C (J=1,15), (N=1,ND4). C J=1--CCC (CLASS OF VARIABLE), C J=2--FFF (SUBCLASS OF VARIABLE), C J=3--B (BINARY INDICATOR), C J=4--DD (DATA SOURCE, MODEL NUMBER), C J=5--V (VERTICAL APPLICATION), C J=6--LBLBLBLB (BOTTOM OF LAYER, 0 IF ONLY C 1 LAYER), C J=7--LTLTLTLT (TOP OF LAYER), C J=8--T (TRANSFORMATION), C J=9--RR (RUN TIME OFFSET, ALWAYS + AND BACK C IN TIME), C J=10--OT (TIME APPLICATION), C J=11--OH (TIME PERIOD IN HOURS), C J=12--TAU (PROJECTION IN HOURS), C J=13--I (INTERPOLATION TYPE), C J=14--S (SMOOTHING INDICATOR), AND C J=15--G (GRID INDICATOR). C (INPUT) C DIST(IX,JY) = THE FIELD OF DISTANCES TO THE NEAREST C GRIDPOINT (IX=1,NX) (JY=1,NY). C (OUTPUT) C WT(IX,JY) = WEIGHTS FOR SMOOTHING (IX=1,NS) (JY=1,NY). C (OUTPUT) C MESH = NOMINAL MESH LENGTH OF GRID IN P( , ). C (INPUT) C NX = SIZE OF P( , ) IN X DIRECTION. (INPUT) C NY = SIZE OF P( , ) IN Y DIRECTION. (INPUT) C SEALND(IX,JY) = THE LAND/SEA MASK (IX=1,NX) (JY=1,NY). C 0 = OCEAN WATER GRIDPOINTS; C 3 = INLAND WATER GRIDPOINTS. C 9 = LAND GRIDPOINTS. C (INPUT) C NXE = X-EXTENT OF SEALND( , ) AT MESH LENGTH MESHE. C (INPUT) C NYE = Y-EXTENT OF SEALND( , ) AT MESH LENGTH MESHE. C (INPUT) C MESHE = NOMINAL MESH LENGTH OF GRID IN SEALND( , ). C (INPUT) C IPACK(J) = WORK ARRAY (J=1,ND5). (INTERNAL) C DATA(J) = WORK ARRAY (J=1,ND5). (INTERNAL) C IWORK(J) = WORK ARRAY (J=1,ND5). (INTERNAL) C ND5 = DIMENSION OF IPACK( ), IWORK( ), AND DATA( ). C (INPUT) C MODNO = OUTPUT MODEL NUMBER. (INPUT) C NDATE = DATE/TIME, YYYYMMDDHH. THIS IS THE ANALYSIS C RUN TIME, INCLUDING HH. (INPUT) C ALATL = NORTH LATITUDE OF LOWER LEFT CORNER POINT C OF A GRID OF THE SIZE NXL, NYL. TRUNCATED C TO TEN THOUSANDTHS OF DEGREES. NOTE THAT THE C MOS-2000 ARCHIVE IS ONLY TO THOUSANDTHS OF C DEGREES. (INPUT) C ALONL = WEST LONGITUDE OF LOWER LEFT CORNER POINT C OF A GRID OF THE SIZE NXL, NYL. TRUNCATED C TO TEN THOUSANDTHS OF DEGREES. NOTE THAT THE C MOS-2000 ARCHIVE IS ONLY TO THOUSANDTHS OF C DEGREES. (INPUT) C NPROJ = NUMBER OF MAP PROJECTION TO WHICH THIS GRID C APPLIES. C 3 = LAMBERT. C 5 = POLAR STEREOGRAPHIC. C 7 = MERCATOR. C (INPUT) C ORIENT = ORIENTATION OF GRID IN WEST LONGITUDE. (INPUT) C XLAT = NORTH LATITUDE AT WHICH GRIDLENGTH IS SPECIFIED C IN DEGREES. (INPUT) C ISCALD = DECIMAL SCALING FOR TDLPACKING. (INPUT) C DPOWER = THE POWER OF THE DISTANCE TO USE IN WEIGHTING. C WT(IX,JY)=1/DIST(IX,JY)**POWER. (INPUT) C MAXDST = MAXIMUM DISTANCE TO SEARCH FOR CLOSEST GRIDPOINT. C GRIDPOINTS OUTSIDE THIS RANGE WILL BE GIVEN THE C VALUE MAXDST. TAKEN FROM THE U405A.CN FILE. C (INPUT) C IS0(J) = MOS-2000 GRIB SECTION 0 ID'S (J=1,4). C (INTERNAL) C IS1(J) = MOS-2000 GRIB SECTION 1 ID'S (J=1,21+). C (INTERNAL) C IS2(J) = MOS-2000 GRIB SECTION 2 ID'S (J=1,12). C (INTERNAL) C IS4(J) = MOS-2000 GRIB SECTION 4 ID'S (J=1,4). C (INTERNAL) C ND7 = DIMENSION OF IS0( ), IS1( ), IS2( ), AND C IS4( ). (INPUT) C JTOTBY = THE TOTAL NUMBER OF BYTES ON THE FILE ASSOCIATED C WITH UNIT NO. KFILOG. (INPUT/OUTPUT) C JTOTRC = THE TOTAL NUMBER OF RECORDS IN THE FILE ON UNIT C NUMBER KFILOG. (INPUT/OUTPUT) C PLAINT = THE PLAIN LANGUAGE DESCRIPTION TO FURNISH TO C GTHRES. EQUIVALENCED TO IPLANT IN CALLING C ROUTINE. (INPUT) C IPLANT(I,J) = EQUIVALENCED TO PLAINT IN CALLING ROUTINE C (I=1,L3264W) (J=1,4). (INPUT) C L3264B = INTEGER WORD LENGTH IN BITS OF MACHINE BEING C USED (EITHER 32 OR 64). (INPUT). C L3264W = NUMBER OF WORDS IN 64 BITS (EITHER 1 OR 2). C (INPUT) C MINPK = MINIMUM GROUP SIZE WHEN PACKING THE DATA. C (INPUT) C ISTOP = INCREMENTED BY 1 IF THERE IS AN ERROR. C (INPUT/OUTPUT) C IER = RETURN CODE. C 0 = GOOD RETURN. C 777 = ANY ERROR IS RETURNED WITH A 777, BUT C CALLING PROGRAM WILL PROBABLY IGNORE IT. C (OUTPUT) C ITABLE(J,L) = CORRESPONDENCE BETWEEN NOMINAL MESH LENGTH C (L=1) AND VALUE FOR X IN 408CX0000 (L=2), C (J=1,7). C IPRTEL = 1 TO WRITE THE RETRIEVED DISTANCE GRID TO THE C OUTPUT FILE VIA GTHRES. (INTERNAL) C ODIST = DISTANCE IN GRID UNITS OUTSIDE THE GRID A C STATION IS USED FOR THIS PURPOSE. SET BY C DATA STATEMENT TO 1. (INTERNAL) C 1 2 3 4 5 6 7 X C CHARACTER*6 RACESS(6) CHARACTER*8 CCALL(NSTA) CHARACTER*32 PLAINT C DIMENSION ID(4),LD(4),IDPARS(15) DIMENSION XP(NSTA),YP(NSTA),LNDSEA(NSTA),LTAG(NSTA),LTAGPT(NSTA) DIMENSION DIST(NX,NY),WT(NX,NY) DIMENSION SEALND(NXE,NYE) DIMENSION IPLANT(L3264W,4) C EQUIVALENCED TO PLAINT IN DRIVER. DIMENSION IPACK(ND5),IWORK(ND5),DATA(ND5) DIMENSION IS0(ND7),IS1(ND7),IS2(ND7),IS4(ND7) DIMENSION ITABLE(7,2),IDSAVE(4) C SAVE IDSAVE,NDTSAV DATA ITABLE/80, 40, 20, 10, 5, 3, 1, 1 0, 1, 2, 3, 4, 5, 6/ DATA IPRTEL/1/ C THIS WRITES THE CLOSEST INSTANCE GRID TO THE OUTPUT FILE C LFILOG. AFTER CHECKOUT, THIS CAN GE CHANGED TO 0. DATA ODIST/1/ DATA IDSAVE/4*0/ DATA NDTSAV/0/ C CALL TIMPR(KFILDO,KFILDO,'START SPOTWT ') C IER=0 C D WRITE(KFILDO,100)DPOWER,MAXDST,NSTA D100 FORMAT(/' AT 100 IN SPOTWT--DPOWER,MAXDST,NSTA',F8.2,2I6) D WRITE(KFILDO,1000)JTOTBY,JTOTRC,L3264B,L3264W, D 1 MINPK,ISCALD,ND7,ND5,KFILOG D1000 FORMAT(/' AT 100 IN SPOTWT--JTOTBY,JTOTRC,L3264B,L3264W,', D 1 'MINPK,ISCALD,ND7,ND5,KFILOG',9I8) C C CHECK WHETHER THIS IS THE SAME ID AND DATA. IF SO, THE C DISTANCE AND WEIGHT DO NOT HAVE TO BE COMPUTED. THIS C LIMITS REUSE TO DIFFERENT PASSES OF THE SAME VARIABLE, C ALLOWING THAT DIFFERENT PROJECTIONS OR EVEN DIFFERENT C LEVELS OF PROBABILITY COULD HAVE DIFFERENT NUMBERS OF C STATIONS. C 101 DO 102 J=1,4 C D WRITE(KFILDO,1015)J,ID(J),IDSAVE(J) D1015 FORMAT(' AT 1015 IN SPOTWT--J,ID(J),IDSAVE(J)',3I12) C IF(ID(J).NE.IDSAVE(J))GO TO 104 102 CONTINUE C C THE ID IS THE SAME. THIS IS AN ANALYSIS PASS AFTER THE C FIRST SMOOTHING, SO THE DISTANCE AND WEIGHTS DO NOT HAVE C BE COMPUTED. USUALLY THIS SMOOTHING IS DONE ONLY ONCE C PER VARIABLE/PASS/DATE, SO ITS REUSE IS RARE. C IF(NDATE.NE.NDTSAV)GO TO 104 C IF ONE VARIABLE WERE ANALYZED FOR MULTIPLE DATES, THE C ID( ) COULD MATCH, BUT THE DATE WOULD BE DIFFERENT. C WRITE(KFILDO,103)(ID(J),J=1,4) 103 FORMAT(/' SPOTWT BEING REPEATED FOR VARIABLE ',4I11) C GO TO 400 C C THE DISTANCES AND WEIGHTS HAVE TO BE COMPUTED. C CHECK THE SIZE OF P( , ) AND SEALND( , ). C 104 IF(NX.NE.NXE.OR.NY.NE.NYE)THEN WRITE(KFILDO,105)NX,NY,NXE,NYE 105 FORMAT(/' ****THE GRID P( , ) OF SIZE',I5,' X',I5, 1 ' IS NOT THE SAME SIZE OF SEALND',I5,' X',I5, 2 '. SMOOTHING IN SPOTWT NOT DONE. CONTINUING.') ISTOP=ISTOP+1 IER=777 GO TO 400 ENDIF C C CHECK THE MESH LENGTHS OF P( , ) AND SEALND( , ). C IF(MESH.NE.MESHE)THEN WRITE(KFILDO,107)MESH,MESHE 107 FORMAT(/' ****THE GRID P( , ) HAS A DIFFERENT NOMINAL', 1 ' MESH LENGTH =',I3,' THAN SEALND( , ) =',I3, 2 '. SMOOTHING IN SPOTWT NOT DONE. CONTINUING.') ISTOP=ISTOP+1 IER=777 GO TO 400 ENDIF C C SET THE DISTANCES TO A LARGE NUMBER. C DO 139 JY=1,NY DO 138 IX=1,NX DIST(IX,JY)=99999999. 138 CONTINUE 139 CONTINUE C C SQUARE MAXDST TO LIMIT THE SEARCH TO A CIRCLE. C DMAXSQ=MAXDST*MAXDST DMAX=MAXDST C DO 250 K=1,NSTA C C SCREEN OUT LAND STATIONS. C IF(LNDSEA(K).EQ.9)GO TO 250 C C MAKE SURE STATION LOCATION IS PRESENT. C IF(XP(K).GT.9998..OR.YP(K).GT.9998.)THEN WRITE(KFILDO,143)CCALL(K) 143 FORMAT(/' ****THE LOCATION OF STATION ',A8,' MISSING.', 1 ' IN SPOTWT. STATION COULD NOT BE USED.') ISTOP=ISTOP+1 IER=777 GO TO 250 ENDIF C C CHECK FOR GOOD DATA AND EXERCISE NOPTN OPTIONS FOR C WHICH DATA TO SMOOTH OUT. IF NOPTN WERE MISTAKENLY C 0, LTAGPT( ) WOULD NOT LIMIT THE WEIGHTS. C IF(LTAG(K).NE.0)GO TO 250 C ONLY GOOD DATA USED ON LAST PASS ARE NOT SMOOTHED OUT. IF(NOPTN.EQ.1.AND.LTAGPT(K).EQ.3)GO TO 250 C WHEN NOPTN = 1, BOGUS ARE SMOOTHED OUT; AUGMENTED NOT. IF(NOPTN.EQ.2.AND.LTAGPT(K).GE.2)GO TO 250 C WHEN NOPTN = 2, BOGUS AND 2ND LEVEL AUGMENTED SMOOTHED OUT. IF(NOPTN.EQ.3.AND.LTAGPT(K).NE.0)GO TO 250 C WHEN NOPTN = 3, BOGUS AND ALL AUGMENTED SMOOTHED OUT. C D WRITE(KFILDO,145)K,XP(K),YP(K),ODIST,NX,NY D145 FORMAT(' AT 145 IN SPOTWT--K,XP(K),YP(K),ODIST,NX,NY', D 1 I6,3F8.2,2I5) C IF(XP(K).LT.1.-ODIST.OR.XP(K).GT.NX+ODIST)GO TO 250 IF(YP(K).LT.1.-ODIST.OR.YP(K).GT.NY+ODIST)GO TO 250 C STATION HAS TO BE WITHIN ODIST OF GRID. THIS VALUE SHOULD C AGREE WITH PARAMETERS USED IN U155, GENERALLY ONLY 1 OR 2 C GRIDPOINTS. AS LONG AS A LOW VALUE IS USED, IT WON'T BE C VERY SENSITIVE TO THE EXACT VALUE. IXK=NINT(XP(K)) JYK=NINT(YP(K)) C IF(LNDSEA(K).EQ.0)THEN C THIS IS AN OCEAN STATION. C DO 180 JY=MAX(1,JYK-MAXDST),MIN(NY,JYK+MAXDST) DO 179 IX=MAX(1,IXK-MAXDST),MIN(NX,IXK+MAXDST) C IN THE ABOVE, IF THE INITIAL VALUE IS GT THE TERMINAL C VALUE, IT WILL NOT BE EXECUTED. C IF(SEALND(IX,JY).EQ.0.)THEN DISTSQ=(IX-XP(K))**2+(JY-YP(K))**2 C IF(DISTSQ.LE.DMAXSQ)THEN C IF(DISTSQ.LT.DIST(IX,JY))THEN DIST(IX,JY)=DISTSQ ENDIF C ENDIF C ENDIF C 179 CONTINUE 180 CONTINUE C ELSE C THE LAND STATIONS HAVE ALREADY BEEN FILTERED OUT, SO C ALL THAT IS LEFT IS LAKE = 3 AND LAKE AND LAND = 6. C THESE ARE INCLUDED IN THE LAKE (INLAND WATER) C COMPUTATIONS. C DO 200 JY=MAX(1,JYK-MAXDST),MIN(NY,JYK+MAXDST) DO 199 IX=MAX(1,IXK-MAXDST),MIN(NX,IXK+MAXDST) C IN THE ABOVE, IF THE INITIAL VALUE IS GT THE TERMINAL C VALUE, IT WILL NOT BE EXECUTED. C IF(SEALND(IX,JY).LT.3.5)THEN DISTSQ=(IX-XP(K))**2+(JY-YP(K))**2 C IF(DISTSQ.LE.DMAXSQ)THEN C IF(DISTSQ.LT.DIST(IX,JY))THEN DIST(IX,JY)=DISTSQ ENDIF C ENDIF C ENDIF C 199 CONTINUE 200 CONTINUE C ENDIF C 250 CONTINUE C C FIND DISTANCE FROM SQUARE OF DISTANCE. C DO 259 JY=1,NY DO 258 IX=1,NX C IF(DIST(IX,JY).LT.99999998.9)THEN DIST(IX,JY)=SQRT(DIST(IX,JY)) ELSE DIST(IX,JY)=DMAX C THIS WILL GIVE A DISTANCE FOR ALL GRIDPOINTS, EVEN C LAND. THEY WON'T BE USED. ENDIF C 258 CONTINUE 259 CONTINUE C DO 270 JY=1,NY DO 269 IX=1,NX C IF(DIST(IX,JY).GT.1..OR.DPOWER.GT..001)THEN C WHEN DPOWER = 0, THE WEIGHT IS ALWAYS UNITY, C AND THE POWER COMPUTATION CAN BE BYPASSED. C WT(IX,JY)=1./(DIST(IX,JY)**DPOWER) C NOTE THAT DIST(IX,JY) CAN BE MISSING = 9999., WHICH C WILL MAKE THE WT( , ) ESSENTIALLY ZERO. ELSE WT(IX,JY)=1. ENDIF C 269 CONTINUE 270 CONTINUE C C SAVE THE DATE AND ID( ). C NDTSAV=NDATE C DO 312 J=1,4 IDSAVE(J)=ID(J) 312 CONTINUE C IF(IPRTEL.EQ.0.OR.KFILOG.EQ.0)GO TO 400 C IPRTEL SET TO 1 FOR CHECKOUT, THEN CAN BE CHANGED TO ZERO. C C PREPARING TO WRITE THE DISTANCE GRID TO THE DISPOSABLE FILE. C C DEFINE THE ID FOR THE DISTANCE GRID, WHICH DEPENDS ON MESH C LENGTH. VARIABLE ID(1) IS USED IN WORD 2. THIS ALLOWS A DISTANCE C GRID TO BE IN THE RA FILE FOR DIFFERENT SETS OF STATIONS. C DO 319 J=1,7 C IF(MESHE.EQ.ITABLE(J,1))THEN LD(1)=408000000+NPROJ*100000+ITABLE(J,2)*10000 LD(2)=ID(1)+100 C THIS MAKES THE GRID SPECIFIC TO A VARIABLE THE ONLY C PART OF THE ID( ) THAT IS NOT HERE IS WORD 2, WHICH IS C HARDLY EVER USED FOR SURFACE VARIABLES. THE ADDITION OF C THE "1" IN THE "B" LOCATION IS TO DISTINGUISH THIS FROM C THE DISTANCE MAP COMPUTED IN SPOTRM AND WRITTEN. THE LD(3)=ID(3) LD(4)=ID(4) D WRITE(KFILDO,318)NDATE,(LD(JJJ),JJJ=1,4) D318 FORMAT(' AT 318 IN U155--NDATE,,(LD(JJJ),JJJ=1,4)',5I11) GO TO 330 ENDIF C 319 CONTINUE C WRITE(KFILDO,320) 320 FORMAT(' ****COULD NOT FIND MESH VALUE IN TABLE AT 320', 1 ' IN SPOTRM. SMOOTHING DONE, BUT THE GRID NOT', 2 ' WRITTEN TO THE DISPOSABLE FILE.') ISTOP=ISTOP+1 IER=777 GO TO 400 C C PACK AND WRITE TO THE DISPOSABLE FILE. C 330 ITAUM=0 NSEQ=0 NCHAR=32 C 32 CHARACTERS OF PLAIN LANGUAGE ARE PACKED. XMISSP=9999. XMISSS=0. PLAINT='NEAREST DISTANCE TO STATION-SWT ' C C THE DISTANCE GRID IS ON A CLIPPED GRID, SO THERE C WILL BE MISSING VALUES. THE FIRST (CLOSEST) DISTANCE C IS WRITTEN. C CCCC DO 333 JY=1,1 CCCC WRITE(KFILDO,332)(DIST(IX,JY),IX=1,NX) CCCC 332 FORMAT(/20F6.0/(20F6.0)) CCCC 333 CONTINUE C CALL PAWGTS(KFILDO,KFILOG,'KFILOG',IP16,NDATE, 1 LD,IDPARS(12),ITAUM,MODNO,NSEQ,ISCALD, 2 NPROJ,ALATL,ALONL,ORIENT,MESH,XLAT,NX,NY, 3 DIST,DATA,IWORK,IPACK,NX*NY,MINPK, 4 IS0,IS1,IS2,IS4,ND7, 5 IPLANT,PLAINT,NCHAR, 6 XMISSP,XMISSS,LX,IOCTET, 7 JTOTBY,JTOTRC,L3264B,L3264W,IER) C PAWGTS WRITES DIAGNOSTIC TO IP16. C IF(IER.NE.0)THEN IER=777 ISTOP=ISTOP+1 ENDIF C CALL TIMPR(KFILDO,KFILDO,'END SPOTWT ') C 400 RETURN END