!> @file !> @brief Subroutine that computes PBL height based on bulk RCH number. !> !> This routine computes the bulk Richardson number !> and PBL height above surface. !> !> @param[out] PBLRI PBL height above ground. !> !> ### Program history log: !> Date | Programmer | Comments !> -----|------------|--------- !> 2006-05-04 | M Tsidulko | Initial !> 2021-09-02 | Bo Cui | Decompose UPP in X direction !> !> @author M Tsidulko @date 2006-05-04 SUBROUTINE CALPBL(PBLRI) ! use vrbls3d, only: pmid, q, t, uh, vh, zmid use vrbls2d, only: fis use masks, only: vtm use params_mod, only: h10e5, capa, d608, h1, g, gi use ctlblk_mod, only: lm, im, jsta, jend, spval, jsta_m, jsta_2l, jend_2u, jend_m, & ista, iend, ista_m, ista_2l, iend_2u, iend_m use gridspec_mod, only: gridtype !- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - implicit none ! ! DECLARE VARIABLES. ! real,dimension(ista_2l:iend_2u,jsta_2l:jend_2u),intent(inout) :: PBLRI REAL, ALLOCATABLE :: THV(:,:,:) INTEGER IFRSTLEV(ista_2l:iend_2u,jsta_2l:jend_2u),ICALPBL(ista_2l:iend_2u,jsta_2l:jend_2u) & ,LVLP(ista_2l:iend_2u,jsta_2l:jend_2u) REAL RIF(ista_2l:iend_2u,jsta_2l:jend_2u) & ,RIBP(ista_2l:iend_2u,jsta_2l:jend_2u),UBOT1(ista_2l:iend_2u,jsta_2l:jend_2u) & ,VBOT1(ista_2l:iend_2u,jsta_2l:jend_2u),ZBOT1(ista_2l:iend_2u,jsta_2l:jend_2u) & ,THVBOT1(ista_2l:iend_2u,jsta_2l:jend_2u) integer I,J,L,IE,IW real APE,BETTA,RICR,USTARR,WMIN,UHKL,ULKL,VHKL,VLKL,WNDSL,WNDSLP, & UBOT,VBOT,VTOP,UTOP,THVTOP,ZTOP,WDL2,RIB ! !************************************************************************* ! START CALRCHB HERE. ! ALLOCATE ( THV(ISTA_2L:IEND_2U,JSTA_2L:JEND_2U,LM) ) ! INITIALIZE ARRAYS. ! !$omp parallel do private(i,j) DO J=JSTA,JEND DO I=ISTA,IEND PBLRI(I,J) = SPVAL ENDDO ENDDO ! ! COMPUTE VIRTUAL POTENTIAL TEMPERATURE. ! !$omp parallel do private(i,j,l,ape) DO L=LM,1,-1 DO J=JSTA,JEND DO I=ISTA,IEND if( PMID(I,J,L)=RICR.AND.ICALPBL(I,J)==0) THEN PBLRI(I,J) = ZMID(I,J,L)+(ZMID(I,J,L-1)-ZMID(I,J,L))* & (RICR-RIBP(I,J))/(RIB-RIBP(I,J)) ICALPBL(I,J) = 1 !-------- Extract surface height ----------------------------------- PBLRI(I,J) = PBLRI(I,J)-FIS(I,J)*GI ENDIF RIBP(I,J) = RIB LVLP(I,J) = L-1 ! 10 CONTINUE endif !spval ENDDO ENDDO ENDDO ! DEALLOCATE (THV) ! END OF ROUTINE. ! RETURN END