! SUBROUTINE MAPSSLP(TPRES) !$$$ SUBPROGRAM DOCUMENTATION BLOCK ! . . . ! INPUT ARGUMENT LIST: ! TPRES - TEMPERATURE at pressure levels ! ! OUTPUT ARGUMENT LIST: ! PSLP - THE FINAL REDUCED SEA LEVEL PRESSURE ARRAY ! !----------------------------------------------------------------------- use ctlblk_mod, only: jsta, jend, spl, smflag, lm, im, jsta_2l, jend_2u, & lsm, jm, grib, spval, & ista, iend, ista_2l, iend_2u use gridspec_mod, only: maptype, dxval use vrbls3d, only: pmid, t, pint use vrbls2d, only: pslp, fis use masks, only: lmh use params_mod, only: rog, p1000, capa, erad, pi ,gi implicit none ! INCLUDE "mpif.h" ! REAL TPRES(ISTA_2L:IEND_2U,JSTA_2L:JEND_2U,LSM) real LAPSES, EXPo,EXPINV,TSFCNEW REAL,dimension(ista_2l:iend_2u, jsta_2l:jend_2u) :: T700 real,dimension(im,2) :: sdummy REAL,dimension(im,jm) :: GRID1, TH700 INTEGER NSMOOTH integer l, j, i, k, ii, jj real dxm !----------------------------------------------------------------------- !*** LAPSES = 0.0065 ! deg K / meter EXPo = ROG*LAPSES EXPINV = 1./EXPo DO L=1,LSM !$omp parallel do private(i,j) DO J=JSTA,JEND DO I=ISTA,IEND if(SPL(L) == 70000.)THEN if(TPRES(I,J,L) 100.) THEN TSFCNEW = T700(I,J)*(PMID(I,J,LM)/70000.)**EXPo ! effective sfc T based on 700 mb temp ELSE TSFCNEW = T(I,J,LM) ENDIF PSLP(I,J) = PINT(I,J,NINT(LMH(I,J))+1)* & ((TSFCNEW+LAPSES*FIS(I,J)*GI)/TSFCNEW)**EXPINV ! print*,'PSLP(I,J),I,J',PSLP(I,J),I,J GRID1(I,J)=PSLP(I,J) else PSLP(I,J) = spval grid1(I,J) = spval endif ENDDO ENDDO IF (SMFLAG) THEN ! - in WRF number of passes depends on the resolution: nsmooth=int(15*(13/dxval)) NSMOOTH=nint(15.*(13500./dxm)) call AllGETHERV(GRID1) do k=1,NSMOOTH CALL SMOOTH(GRID1,SDUMMY,IM,JM,0.5) end do DO J=JSTA,JEND DO I=ISTA,IEND PSLP(I,J)=GRID1(I,J) ENDDO ENDDO ENDIF ! RETURN END