SUBROUTINE GRADCK(KFILDO,P,NX,NY,DATA,XP,YP,U,V,K,LS1,LS2, 1 NSTA,ER1,ESTP,IACCPT) C C APRIL 2001 GLAHN MDL LAMP-2000 C DECEMBER 2002 RUDACK MODIFIED FORMAT STATEMENTS TO ADHERE C TO THE F90 COMPILER STANDARDS FOUND ON C THE IBM SYSTEM C JUNE 2002 GLAHN MODIFIED DEFINITIONS OF U( ) AND V( ) C DECEMBER 2007 GLAHN SPELL CHECK C C PURPOSE C USED ONLY WHEN ANALYZING SLP; CALLED BY ESP. C JUST BEFORE A STATION IS NOT ACCEPTED (TOSSED) BY C SUBROUTINE ESP, AN ESTIMATE OF ITS PRESSURE IS MADE C FROM ITS TWO CLOSEST NEIGHBORS BY USING THE NEIGHBOR'S C PRESSURE AND WIND AND THE GEOSTROPHIC RELATIONSHIP. C IF THE ESTIMATE IS WITHIN ER1 MB, THE STATION IS KEPT. C THIS DOES NOT AFFECT THE KEEPING OF A NEIGHBOR. C GRADCK IS CALLED ONLY WHEN THE PRESSURE IS BELOW 1013. C A MAIN PURPOSE IS TO KEEP OBS NEAR THE CENTER OF C HURRICANES. THE U( ) AND V( ) COMPONENTS C HAVE NOT BEEN INTENTIONALLY ADJUSTED FOR LARGE C FRICTIONAL EFFECTS. BECAUSE OF THIS, THE "EFFECTIVE" C EFFECTIVE SPEED OF THE WINDS IS DOUBLED. C C DATA SET USE C KFILDO - UNIT NUMBER FOR OUTPUT (PRINT) FILE. (OUTPUT) C C VARIABLES C KFILDO = UNIT NUMBER FOR OUTPUT (PRINT) FILE. C DIAGNOSTICS. (INPUT) C P(IX,JY) = FIELD HOLDING FIRST GUESS AND ANALYSIS C (IX=1,NY) (JY=1,NY). (INPUT) C NX,NY = FIRST AND SECOND DIMENSIONS, RESPECTIVELY, C OF P( , ). (INPUT) C DATA(J) = DATA BEING ANALYZED (J=1,NSTA). (INPUT) C XP(J) = HORIZONTAL GRID POSITION OF STATION J C (J=1,NSTA). (INPUT) C YP(J) = VERTICAL GRID POSITION OF STATION J C (J=1,NSTA). (INPUT) C U(K) = THE FACTOR TO USE IN CONVERTING U-WINDS C TO CHANGE IN MB PER MESH LENGTH (K=1,NSTA). C U(K) HAS BEEN SET TO 9999 FOR OBS C TOSSED BY U400B AS WELL AS WIND SPEEDS LT C WNDTHR. (INPUT) C V(J) = SAME AS U(K) EXCEPT FOR V-WINDS (J=1,NSTA). C (INPUT) C K = THE LOCATION IN DATA( ) OF THE STATION BEING C CHECKED. (INPUT) C LS1, LS2 = INDEX IN DATA( ) OF NEAREST AND NEXT NEAREST C NEIGHBOR, RESPECTIVELY. (INPUT) C NSTA = NUMBER OF STATIONS FOR WHICH DATA ARE C AVAILABLE. (INPUT) C ER1 = ERROR CRITERIA FOR THIS PASS. IF ESTIMATE C FOR OBSERVATION IS DIFFERENT FROM THE C OBSERVATION BY MORE THAN ER1, IT IS NOT USED C ON THIS PASS. C (INPUT) C ESTP = THE PRESSURE FROM ONE OF THE NEIGHBOR STATIONS. C IF IACCPT = 0, THIS WILL NOT BE USEFUL. C IACCPT = LS1 OR LS2 IF STATION K IS ACCEPTED BECAUSE OF C NEIGHBOR LS1 OR LS2, RESPECTIVELY; C 0 OTHERWISE. C F = THE FACTOR TO INCREASE THE EFFECT OF WINDS C IN ESTIMATING THE PRESSURE AT ANOTHER STATION. C 1 2 3 4 5 6 7 X C C NONSYSTEM SUBROUTINES CALLED C NONE C DIMENSION P(NX,NY) DIMENSION DATA(NSTA),XP(NSTA),YP(NSTA),U(NSTA),V(NSTA) C D WRITE(KFILDO,100)(K,DATA(K),XP(K),YP(K),U(K),V(K),K=1,NSTA) D100 FORMAT(' IN GRADCK--(K,DATA(K),XP(K),YP(K),U(K),V(K),K=1,NSTA)', D 1 (I4,5F10.4)) C IACCPT=0 F=2. C F = THE FACTOR TO INCREASE THE EFFECT OF WINDS C IN ESTIMATING THE PRESSURE AT ANOTHER STATION. C IF(V(LS1).EQ.9999.)GO TO 119 C IF ONE WIND COMPONENT IS MISSING, BOTH WILL BE. C IF(DATA(LS1).NE.9999.)THEN ESTP=DATA(LS1)+F*((XP(K)-XP(LS1))*V(LS1)+ 1 (YP(K)-YP(LS1))*U(LS1)) D WRITE(KFILDO,110)K,LS1,DATA(K),DATA(LS1), D 1 XP(K),YP(K),XP(LS1),YP(LS1),ESTP,ER1,F D110 FORMAT(/' AT 110 IN GRADCK--K,LS1,DATA(K),DATA(LS1),', D 1 'XP(K),YP(K),XP(LS1),YP(LS1),ESTP,ER1'/ D 2 ' ',2I5,9F8.1) ELSE C C THE PRESSURE FOR STATION LS1 IS MISSING, SO USE THE C INTERPOLATED VALUE. C CALL ITRP(P,NX,NY,XP(LS1),YP(LS1),B) ESTP=B+F*((XP(K)-XP(LS1))*V(LS1)+ 1 (YP(K)-YP(LS1))*U(LS1)) D WRITE(KFILDO,115)K,LS1,B,DATA(LS1), D 1 XP(K),YP(K),XP(LS1),YP(LS1),ESTP,ER1,F D115 FORMAT(/' AT 115 IN GRADCK--K,LS1,B,DATA(LS1),', D 1 'XP(K),YP(K),XP(LS1),YP(LS1),ESTP,ER1,F'/ D 2 ' ',2I5,9F8.1) ENDIF C IF(ABS(ESTP-DATA(K)).LT.ER1)THEN IACCPT=LS1 GO TO 150 ENDIF C 119 IF(V(LS2).EQ.9999.)GO TO 150 C IF ONE WIND COMPONENT IS MISSING, BOTH WILL BE. C IF(DATA(LS2).NE.9999.)THEN ESTP=DATA(LS2)+F*((XP(K)-XP(LS2))*V(LS2)+ 1 (YP(K)-YP(LS2))*U(LS2)) D WRITE(KFILDO,120)K,LS2,DATA(K),DATA(LS2), D 1 XP(K),YP(K),XP(LS2),YP(LS2),ESTP,ER1,F D120 FORMAT(/' AT 120 IN GRADCK--K,LS2,DATA(K),DATA(LS2),', D 1 'XP(K),YP(K),XP(LS2),YP(LS2),ESTP,ER1,F'/ D 2 ' ',2I5,9F8.1) ELSE C C THE PRESSURE FOR STATION LS2 IS MISSING, SO USE THE C INTERPOLATED VALUE. C CALL ITRP(P,NX,NY,XP(LS2),YP(LS2),B) ESTP=B+F*((XP(K)-XP(LS2))*V(LS2)+ 1 (YP(K)-YP(LS2))*U(LS2)) D WRITE(KFILDO,125)K,LS2,B,DATA(LS2), D 1 XP(K),YP(K),XP(LS2),YP(LS2),ESTP,ER1,F D125 FORMAT(/' AT 125 IN GRADCK--K,LS2,B,DATA(LS2),', D 1 'XP(K),YP(K),XP(LS2),YP(LS2),ESTP,ER1,F'/ D 2 ' ',2I5,9F8.1) ENDIF IF(ABS(ESTP-DATA(K)).LT.ER1)THEN IACCPT=LS2 ENDIF C 150 RETURN END