SUBROUTINE TTBLEX(TREF,TTBL,ITB,JTB,KARR,PMIDL & ,PL,QQ,PP,RDP,THE0,STHE,RDTHE,THESP & , IPTB,ITHTB) !FPP$ NOCONCUR R !$$$ SUBPROGRAM DOCUMENTATION BLOCK ! . . . ! SUBPROGRAM: TTBLEX COMPUTES T ALONG A MOIST ADIABAT ! PRGRMMR: BLACK ORG: W/NP2 DATE: ??-??-?? ! ! ABSTRACT: ! THIS ROUTINE COMPUTES THE TEMPERATURE ALONG A MOIST ! ADIABAT GIVEN THE SATURATION POTENTIAL TEMPERATURE ! AND THE PRESSURE ! . ! ! PROGRAM HISTORY LOG: ! ??-??-?? T BLACK - ORIGINATOR ! 98-06-12 T BLACK - CONVERSION FROM 1-D TO 2-D ! 00-01-04 JIM TUCCILLO - MPI VERSION ! 01-10-22 H CHUANG - MODIFIED TO PROCESS HYBRID MODEL OUTPUT ! 02-01-15 MIKE BALDWIN - WRF VERSION ! ! OUTPUT FILES: ! NONE ! ! SUBPROGRAMS CALLED: ! UTILITIES: ! NONE ! ! ATTRIBUTES: ! LANGUAGE: FORTRAN !---------------------------------------------------------------------- use ctlblk_mod, only: jsta, jend, im, jsta_2l, jend_2u, jm !- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - implicit none !---------------------------------------------------------------------- integer,intent(in) :: ITB,JTB integer,intent(in) :: KARR(IM,JM) real,dimension(JTB,ITB),intent(in) :: TTBL real,dimension(IM,JSTA_2L:JEND_2U),intent(in) :: PMIDL real,dimension(IM,JSTA_2L:JEND_2U),intent(out) :: TREF real,dimension(IM,JM),intent(out) :: QQ,PP real,dimension(IM,JM),intent(in) :: THESP real,dimension(ITB),intent(in) :: THE0,STHE integer,dimension(IM,JM),intent(out) :: IPTB,ITHTB real,intent(in) :: PL,RDP,RDTHE ! integer I,J,ITH,IP,IPTBK real PK,TPK,T00K,T10K,T01K,T11K,BTHE00K,STHE00K,BTHK,STHK, & TTHK,BTHE10K,STHE10K !----------------------------------------------------------------------- !$omp parallel do !$omp& private(bthe00k,bthe10k,bthk,ip,iptbk,ith,pk,sthe00k,sthe10k, !$omp& sthk,t00k,t01k,t10k,t11k,tpk,tthk) DO J=JSTA,JEND DO I=1,IM IF(KARR(I,J).GT.0)THEN !--------------SCALING PRESSURE & TT TABLE INDEX------------------------ PK=PMIDL(I,J) TPK=(PK-PL)*RDP QQ(I,J)=TPK-AINT(TPK) IPTB(I,J)=INT(TPK)+1 !--------------KEEPING INDICES WITHIN THE TABLE------------------------- IF(IPTB(I,J).LT.1)THEN IPTB(I,J)=1 QQ(I,J)=0. ENDIF ! IF(IPTB(I,J).GE.ITB)THEN IPTB(I,J)=ITB-1 QQ(I,J)=0. ENDIF !--------------BASE AND SCALING FACTOR FOR THE-------------------------- IPTBK=IPTB(I,J) BTHE00K=THE0(IPTBK) STHE00K=STHE(IPTBK) BTHE10K=THE0(IPTBK+1) STHE10K=STHE(IPTBK+1) !--------------SCALING THE & TT TABLE INDEX----------------------------- BTHK=(BTHE10K-BTHE00K)*QQ(I,J)+BTHE00K STHK=(STHE10K-STHE00K)*QQ(I,J)+STHE00K TTHK=(THESP(I,J)-BTHK)/STHK*RDTHE PP(I,J)=TTHK-AINT(TTHK) ITHTB(I,J)=INT(TTHK)+1 !--------------KEEPING INDICES WITHIN THE TABLE------------------------- IF(ITHTB(I,J).LT.1)THEN ITHTB(I,J)=1 PP(I,J)=0. ENDIF ! IF(ITHTB(I,J).GE.JTB)THEN ITHTB(I,J)=JTB-1 PP(I,J)=0. ENDIF !--------------TEMPERATURE AT FOUR SURROUNDING TT TABLE PTS.------------ ITH=ITHTB(I,J) IP=IPTB(I,J) T00K=TTBL(ITH ,IP ) T10K=TTBL(ITH+1,IP ) T01K=TTBL(ITH ,IP+1) T11K=TTBL(ITH+1,IP+1) !--------------PARCEL TEMPERATURE------------------------------------- TREF(I,J)=(T00K+(T10K-T00K)*PP(I,J)+(T01K-T00K)*QQ(I,J) & +(T00K-T10K-T01K+T11K)*PP(I,J)*QQ(I,J)) ENDIF ENDDO ENDDO ! RETURN END !&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&