SUBROUTINE CLOSLW(XP,YP,LTAG,QUALST,LNDSEA,NSTA,K,LS1,LS2) C C MAY 1993 GLAHN TDL HP9000 C OCTOBER 2013 GLAHN REVISED TO INCLLUDE DATA TYPE C MAY 2015 GLAHN REVISED TO INCLUDE STATION WEIGHT C JULY 2015 GLAHN CHANGED TEST OF QUALST ..995 C VICE .99 C C PURPOSE C TO FIND 2 CLOSEST NEIGHBORS OF STATION K FOR U405A. C TO BE "CLOSE,", THE NEIGHBOR HAS TO BE OF THE SAME C DATA TYPE, 0=OCEAN, 3=LAKE, OR 9=LAND. TYPE 6, FOR C BOTH LAND AND LAKE, CAN HAVE A NEIGHBOR OF TYPE 3 OR C OR 6. THE VALUES OF TYPE 6 CAN DO MORE DAMAGE TO LAKE C THAN LAND. CALLED FROM ESP. C C IN ADDITION, SINCE MAY 19, 2015, A STATION WITH FULL C WEIGHT [QUALST( ) = 1.] WILL ONLY BE A NEIGHBOR WITH C A STATION WITH FULL WEIGHT. THIS KEEPS MESONET WIND C OBS FROM TOSSING METAR WIND OBS IN ESP5. C C DATA SET USE C NONE. C C VARIABLES C INPUT C XP(J) = X-POSITION OF STATION J ON GRID (J=1,NSTA). C YP(J) = Y-POSITION OF STATION J ON GRID (J=1,NSTA). C LTAG(J) = DON'T USE THIS STATION IF LTAG( ) GT 0 C (J=1,NSTA). C QUALST(K) = THE QUALITY WEIGHTS TO APPLY FOR THIS VARIABLE C (K=1,KSTA). (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 NSTA = NUMBER OF STATIONS IN LIST. C K = POSITION OF STATION IN LIST FOR WHICH CLOSEST C STATIONS ARE NEEDED. C C OUTPUT C LS1 = POSITION IN LIST OF CLOSEST STATION. C LS2 = POSITION IN LIST OF 2ND CLOSEST STATION. C C INTERNAL C SAV1 = DISTANCE TO CLOSEST STATION. C SAV2 = DISTANCE TO 2ND CLOSEST STATION. C DISTSQ = DISTANCE (IN GRID UNITS) SQUARED BETWEEN C TWO STATIONS. C C NONSYSTEM SUBROUTINES CALLED C NONE. C 1 2 3 4 5 6 7 X C DIMENSION XP(NSTA),YP(NSTA),LTAG(NSTA),LNDSEA(NSTA),QUALST(NSTA) C SAV1=999999. SAV2=999999. C DO 162 L=1,NSTA IF(LTAG(L).GT.0)GO TO 162 IF(K.EQ.L)GO TO 162 C IF(LNDSEA(K).EQ.9)THEN IF(LNDSEA(L).NE.9)GO TO 162 ELSEIF(LNDSEA(K).EQ.0)THEN IF(LNDSEA(L).NE.0)GO TO 162 ELSEIF(LNDSEA(K).EQ.3)THEN IF(LNDSEA(L).NE.3)GO TO 162 ELSE IF(LNDSEA(L).EQ.0.OR.LNDSEA(L).EQ.9)GO TO 162 C AT THIS POINT, LNDSEA(K) = 6, SO DON'T HAVE TO CHECK. C LET IT PAIR WITH 3 AND 6. ENDIF C C IF A STATION HAS FULL WEIGHT (E.G., METAR), A NEIGHBOR C WILL ONLY BE A STATION WITH FULL WEIGHT. THIS ALLOWS C MESONET STATIONS TO BE CHECKED WITH MESONET OR METAR C STATIONS. AUGMT2 SETS QUALST( ) FOR AUGMENTING STATIONS C LT 1, THE LOWEST VALUE CURRENTLY BEING .99. TEST BELOW C CHANGED TO ..995 VICE .99 7/12'15. LIKLEY NO IMPACT. C IF(QUALST(K).GT..995)THEN C IF(QUALST(L).LE..995)THEN GO TO 162 ENDIF C ENDIF C DISTSQ=(XP(K)-XP(L))**2+(YP(K)-YP(L))**2 IF(SAV2.LE.DISTSQ)GO TO 162 IF(SAV1.GT.DISTSQ)GO TO 1611 SAV2=DISTSQ LS2=L GO TO 162 C 1611 SAV2=SAV1 SAV1=DISTSQ LS2=LS1 LS1=L 162 CONTINUE C RETURN END