SUBROUTINE CLOSO(XPL,YPL,LNDSEA,OTEMP,NSTA,ND1,TEMP,K, 1 LS1,LS2) C C MAY 1993 GLAHN TDL MOS-2000 C OCTOBER 2013 GLAHN REVISED TO INCLUDE DATA TYPE C NOVEMBER 2013 GLAHN REVISED FROM CLOSLW C NOVEMBER 2013 GLAHN ELIMINATED CHECK OF K WITH L C NOVEMBER 2013 GLAHN EXPANDED TO INCLUDE PAIRS OF C ANY TYPE, 0, 3, 6, OR 9 C DECEMBER 2013 GLAHN CHANGED OTEMP( , ) TO OTEMP( ) C DECEMBER 2013 GLAHN ALLOWED MATCHING LAKE WITH LAKE C OR OCEAN C JANUARY 2014 IM, GLAHN CORRECTED FOR CORRECT MATCHES C APRIL 2014 GLAHN CHANGED DIMENSION OF TEMP(IALL,3,2) TO C TEMP(NSTA,4,2); REMOVED IALL FROM CALL C C PURPOSE C TO FIND 2 CLOSEST NEIGHBORS OF STATION K THAT C HAVE NON-MISSING DATA IN BOTH TEMP( ) AND OTEMP( ). C FOR THIS PURPOSE, A "CLOSE" STATION CAN BE STATION C K ITSELF. TO BE "CLOSE,", THE NEIGHBOR HAS TO BE OF C THE SAME DATA TYPE, 0=OCEAN, 3=LAKE, 6=LAKE/LAND, OR C 9=LAND, EXCEPT THAT LAKE IS ALSO USED WITH OCEAN. C CLOSO WON'T BE CALLED UNLESS IT IS NECESSARY. C FOR THIS PURPOSE, THE STATION CAN PAIR WITH ITSELF. C THAT IS, IF BOTH OBS AND MOS ARE AVAILABLE, THESE C VALUES FROM THE SAME STATION ARE EVEN MORE APPROPRIATE C THAN VALUES FROM NEIGHBORING STATIONS. C C NOTE THAT THERE IS NO MIX OF TYPE 6 WITH OTHER TYPES, C AND IT IS NOT EXPECTED THAT CLOSO WILL BE ENTERED C FOR TYPE 6. C C DATA SET USE C NONE. C C VARIABLES C INPUT C XPL(K) = X-POSITION OF STATION K ON GRID (K=1,NSTA). C YPL(K) = Y-POSITION OF STATION K ON GRID (J=1,NSTA). 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 OTEMP(K) = THE VALUES OF MOS FOR THE FIRST PROJECTION C (K=1,NSTA). (INPUT) C NSTA = NUMBER OF STATIONS IN LIST. C ND1 = FIRST DIMENSION OF TEMP( , ) AND DIMENSION C OF XPL( ), YPL( ), AND LNDSEA( ). (INPUT) C TEMP(K,J) = ARRAY FOR AUGMENTING DATA (J=1,3) C (K=1,NSTA). THE THREE VALUES OF J ARE FOR C VALUES FROM THE 1ST, 2ND, AND 3RD LEVELS OF C AUGMENTATION, RESPECTIVELY. (INPUT) 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 XPL(ND1),YPL(ND1),LNDSEA(ND1),OTEMP(ND1) DIMENSION TEMP(NSTA,4) C SAV1=9.*10**8 C A LARGE GRID CAN CREATE A LARGE SQUARE DISTANCE. SAV2=SAV1 LS1=-9999 LS2=-9999 C NOTE THAT +9999 COULD BE A LEGITIMATE VALUE FOR A VERY C LARGE GRID. C DO 162 L=1,NSTA C IF(LNDSEA(K).EQ.9.AND.LNDSEA(L).NE.9)GO TO 162 C LAND STATION HAS TO PAIR WITH LAND STATION. NORMALLY, C CLOSO IS ONLY ENTERED FOR LAND STATIONS OVER CANADA. C IF(LNDSEA(K).EQ.0.AND.LNDSEA(L).NE.0)GO TO 162 C OCEAN STATION HAS TO PAIR WITH OCEAN STATION. C IF(LNDSEA(K).EQ.3.AND. 1 (LNDSEA(L).NE.3.AND.LNDSEA(L).NE.0))GO TO 162 C LAKE STATION HAS TO PAIR WITH LAKE OR OCEAN STATION. OCEAN C IS INCLUDED BECAUSE LAKE OKEECHOBEE HAS NO MATCHES INTERNALLY. C GREAT SALT LAKE MAY BE A PROBLEM. MAY HAVE TO INCLUDE C TYPE 6 WITH AN AREA LIMIT WITH XPL AND YPL. C IF(LNDSEA(K).EQ.6)GO TO 162 C NORMALLY, CLOSO IS NOT ENTERED FOR TYPE 6. C IF(TEMP(L,1).GT.9998.5)GO TO 162 C ABOVE INDICATES CURRENT MOS IS MISSING, SO NOT A VIABLE C PARTNER. C IF(OTEMP(L).GT.9998.5)GO TO 162 C ABOVE INDICATES MOS FOR PROJECTION 1 IS MISSING, SO NOT A C VIABLE PARTNER. C DISTSQ=(XPL(K)-XPL(L))**2+(YPL(K)-YPL(L))**2 IF(DISTSQ.GT.360000.)GO TO 162 C THIS KEEPS GREAT SALT LAKE, GREAT LAKES, AND LAKE OKEECHOBEE C SEPARATE. 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