SUBROUTINE PREPW(DRPTPS,DLONS,DLATS,DPRES, * RTYPES,RSPRES, * MWDAT,PSG,FACT,FACTOR,NLAT,NLON,NSIG,GLATS,GLONS,SIGL) C$$$ SUBPROGRAM DOCUMENTATION BLOCK C . . . . C SUBPROGRAM: PREPW PRELIMINARY STUFF BEFORE RES. CALC. W C PRGMMR: PARRISH ORG: W/NMC22 DATE: 90-10-11 C C ABSTRACT: PRELIMINARY STUFF BEFORE RESIDUAL CALCULATION FOR WINDS C C PROGRAM HISTORY LOG: C 90-10-11 PARRISH C C INPUT ARGUMENT LIST: C DRPTPS - OBS TYPE IN, OBS ERROR OUT (LN(PS) UNITS) C DLONS,DLATS - OBS LONGITUDES AND LATITUDES (RADIANS IN AND OUT) C DPRES - PRES (MB*10+QM IN, GRID COORDS IN SIGMA OUT) C RTYPES - PREPDA OBSERVATION TYPES C MWDAT - NUMBER OF OBSERVATIONS C PSG - MODEL GUESS LOG(PSFC), P IN CB C FACTOR - ARRAY OF 10M WIND FACTORS C NLAT - NUMBER OF GAUSSIAN LATS POLE TO POLE C NLON - NUMBER OF LONGITUDES C NSIG - NUMBER OF SIGMA LEVELS C GLATS,GLONS - GRID LATITUDES C SIGL - SIGMA LAYER MIDPOINT VALUES C C OUTPUT ARGUMENT LIST: C RSPRES - OBSERVATION PRESSURES C FACT - NEAR SURFACE REDUCTION IN WIND FACTOR AT OBS. C AND AS INDICATED ABOVE C C ATTRIBUTES: C LANGUAGE: CFT77 C MACHINE: CRAY YMP C C$$$ C-------- C C-CRA DIMENSION DRPTPS(MWDAT),DLONS(MWDAT),DLATS(MWDAT),DPRES(MWDAT) C-CRA DIMENSION PSG(NLAT+1,NLON+2) C-CRA DIMENSION GLATS(NLAT),GLONS(NLON),SIGL(NSIG) C-CRA DIMENSION RTYPES(MWDAT) C-CRA DIMENSION RSPRES(MWDAT),FACT(MWDAT) C-CRA DIMENSION RBPRES(MWDAT) C-CRA DIMENSION RLOW(MWDAT),RHGH(MWDAT) C-CRA DIMENSION SIGLL(NSIG+1) C DIMENSION DRPTPS(_MWDAT_),DLONS(_MWDAT_) DIMENSION DRPTPS(85000),DLONS(85000) C DIMENSION DLATS(_MWDAT_),DPRES(_MWDAT_) DIMENSION DLATS(85000),DPRES(85000) DIMENSION PSG(96+1,192+2) DIMENSION GLATS(96),GLONS(192),SIGL(28) C DIMENSION RTYPES(_MWDAT_) DIMENSION RTYPES(85000) C DIMENSION RSPRES(_MWDAT_),FACT(_MWDAT_) DIMENSION RSPRES(85000),FACT(85000) C DIMENSION RBPRES(_MWDAT_) DIMENSION RBPRES(85000) C DIMENSION RLOW(_MWDAT_),RHGH(_MWDAT_) DIMENSION RLOW(85000),RHGH(85000) DIMENSION SIGLL(28+1) C------- C-------- LOCAL SPACE C-------- C-------- C-------- GET LOG(SIG) C-------- SIGLL(1)=0. DO 100 K=1,NSIG SIGLL(K+1)=LOG(SIGL(K)) 100 CONTINUE C-------- C-------- CONVERT OBS LATS AND LONS TO GRID COORDINATES C-------- CALL GDCRDP(DLATS,MWDAT,GLATS,NLAT) CALL GDCRDP(DLONS,MWDAT,GLONS,NLON) C------- C-------- 3. INTERPOLATE SURFACE PRESSURE C-------- C-------- OBTAIN GUESS SURFACE PRESSURE AT OBS LOCATIONS C-------- CALL INTRP2(PSG,RBPRES,DLATS,DLONS,NLAT,NLON,MWDAT) CALL INTRP2(FACTOR,FACT,DLATS,DLONS,NLAT,NLON,MWDAT) C-------- C-------- CONVERT OBS PRESSURE TO SIGMA, THEN GET GRID COORDINATES C-------- C-CRA RSPRES=10.*EXP(DPRES) C DIMENSION RSPRES(MWDAT),FACT(MWDAT) DO ITMP=1,MWDAT RSPRES(ITMP)=10.*EXP(DPRES(ITMP)) ENDDO C-CRA DPRES=DPRES-RBPRES C DIMENSION DRPTPS(MWDAT),DLONS(MWDAT),DLATS(MWDAT),DPRES(MWDAT) DO ITMP=1,MWDAT DPRES(ITMP)=DPRES(ITMP)-RBPRES(ITMP) ENDDO C-------- C-------- FOR SSMI WIND SPEEDS, SET VERT POS TO 10M C-------- ALOG20=ALOG(.9976) ALOG10=ALOG(.9988) DO 45 I=1,MWDAT IF(NINT(RTYPES(I)).EQ.280) DPRES(I)=ALOG20 IF(NINT(RTYPES(I)).EQ.281) DPRES(I)=ALOG10 IF(NINT(RTYPES(I)).EQ.282) DPRES(I)=ALOG20 IF(NINT(RTYPES(I)).EQ.283) DPRES(I)=ALOG20 IF(NINT(RTYPES(I)).EQ.284) DPRES(I)=ALOG10 IF(NINT(RTYPES(I)).EQ.285) DPRES(I)=ALOG10 IF(NINT(RTYPES(I)).EQ.286) DPRES(I)=ALOG10 45 CONTINUE DO 46 I=1,MWDAT IF(DPRES(I) .LT. ALOG10 .AND. DPRES(I) .GT. SIGLL(2)) * FACT(I)=(DPRES(I)-ALOG10+FACT(I)*(SIGLL(2)- * DPRES(I)))/ * (SIGLL(2)-ALOG10) IF(DPRES(I) .LT. SIGLL(2))FACT(I)=1. 46 CONTINUE CALL GDCRDN(DPRES,MWDAT,SIGLL,NSIG+1) NUMHGH=0 NUMLOW=0 HGH=-1.E9 XLOW=-1.E9 RSIG=NSIG DO 58 I=1,MWDAT RLOW(I)=MIN(DPRES(I),0.) DPRES(I)=DPRES(I)-1. RHGH(I)=MAX(DPRES(I)-.001-RSIG,0.) RHGH(I)=ABS(RHGH(I)) RLOW(I)=ABS(RLOW(I)) IF(RHGH(I).NE.0.) NUMHGH=NUMHGH+1 IF(RLOW(I).NE.0.) NUMLOW=NUMLOW+1 HGH=MAX(RHGH(I),HGH) XLOW=MAX(RLOW(I),XLOW) 58 CONTINUE WRITE(6,900)MWDAT,NUMHGH,NUMLOW,HGH,XLOW 900 FORMAT(' NUMBER OF WINDS=',I8,' NUMBER EXTRAPOLATED ABOVE', * ' TOP SIGMA LAYER=',I8,/,' NUMBER EXTRAPOLATED BELOW', * ' BOTTOM SIGMA LAYER=',I8,/,' LARGEST EXTRAPOLATION', * ' ABOVE=',F12.2,/,' LARGEST EXTRAPOLATION BELOW=',F12.2) DO 908 I=1,MWDAT DRPTPS(I)=1./(DRPTPS(I) * +1.E6*RHGH(I)+4.*RLOW(I))**2 908 CONTINUE RETURN END