diff --git a/parm/fv3lam_rrfs.xml b/parm/fv3lam_rrfs.xml index d5b68a93c..fd384ad89 100755 --- a/parm/fv3lam_rrfs.xml +++ b/parm/fv3lam_rrfs.xml @@ -1790,7 +1790,7 @@ VIL_ON_ENTIRE_ATMOS VIL - 4.0 + 7.0 diff --git a/parm/postxconfig-NT-fv3lam_rrfs.txt b/parm/postxconfig-NT-fv3lam_rrfs.txt index 37bbec810..034aa0234 100644 --- a/parm/postxconfig-NT-fv3lam_rrfs.txt +++ b/parm/postxconfig-NT-fv3lam_rrfs.txt @@ -9742,7 +9742,7 @@ entire_atmos_single_lyr 0 0.0 1 -4.0 +7.0 0 0 0 diff --git a/sorc/ncep_post.fd/CLDRAD.f b/sorc/ncep_post.fd/CLDRAD.f index 58bf95eb6..ed0aeb3c3 100644 --- a/sorc/ncep_post.fd/CLDRAD.f +++ b/sorc/ncep_post.fd/CLDRAD.f @@ -68,6 +68,7 @@ !> 2022-10-20 | Li(Kate Zhang) | Add nitrate look-up table and nitrate AOD for NASA GOCART (UFS-Aerosols). !> 2022-11-16 | Eric James | Adding total column dust, biomass burning emissions, hourly wildfire potential from RRFS !> 2022-1207 | Wen Meng | Add AOD for AQM +!> 2022-12-15 | Eric James | experimental cloud base height diagnostic from HRRR, to correct a low bias in cloud cover !> !> @author Russ Treadon W/NP2 @date 1993-08-30 SUBROUTINE CLDRAD @@ -2098,11 +2099,18 @@ SUBROUTINE CLDRAD ! However, for RAPv5/HRRRv4, paramater 711 will be supplied as ! the GSD cloud-base height, and parameter 798 will be the ! corresponding cloud-base pressure. (J. Kenyon, 4 Nov 2019) +! -- E. James, 15 Dec 2022 +! The above experimental diagnostic, developed for the HRRR with +! lots of "add-ons" to correct for the HRRR's low bias in cloud +! cover, needs to be revised for the RRFS with its more extensive +! cloudiness. For an FAA deliverable due Feb 2023, the diagnostic +! is being modified to get rid of some of the add ons. ! Parameters 711/798: experimental ceiling diagnostic #2 (height and pressure, respectively) IF ((IGET(711)>0) .OR. (IGET(798)>0)) THEN ! set minimum cloud fraction to represent a ceiling - ceiling_thresh_cldfra = 0.4 +! ceiling_thresh_cldfra = 0.4 + ceiling_thresh_cldfra = 0.5 ! set some constants for ceiling adjustment in snow (retained from legacy algorithm, also in calvis.f) rhoice = 970. coeffp = 10.36 @@ -2192,23 +2200,24 @@ SUBROUTINE CLDRAD end do !-- end of search 2 - zceil = min(zceil1,zceil2) ! choose lower of zceil1 and zceil2 +! zceil = min(zceil1,zceil2) ! choose lower of zceil1 and zceil2 + zceil = zceil1 !-- Search for "indefinite ceiling" (vertical visibility) conditions: consider ! lowering of apparent ceiling due to falling snow (retained from legacy ! diagnostic); this is extracted from calvis.f (visibility diagnostic) - if (QQS(i,j,LM)>1.e-10) then - TV=T(I,J,lm)*(H1+D608*Q(I,J,lm)) - RHOAIR=PMID(I,J,lm)/(RD*TV) - vovermd = (1.+Q(i,j,LM))/rhoair + QQS(i,j,LM)/rhoice - concfp = QQS(i,j,LM)/vovermd*1000. - betav = coeffp*concfp**exponfp + 1.e-10 - vertvis = 1000.*min(90., const1/betav) - if (vertvis < zceil-FIS(I,J)*GI ) then ! if vertvis is more restictive than zceil found above; set zceil to vertvis - ! note that FIS is geopotential of the surface (ground), and GI is 1/g - zceil = FIS(I,J)*GI + vertvis - end if - end if +! if (QQS(i,j,LM)>1.e-10) then +! TV=T(I,J,lm)*(H1+D608*Q(I,J,lm)) +! RHOAIR=PMID(I,J,lm)/(RD*TV) +! vovermd = (1.+Q(i,j,LM))/rhoair + QQS(i,j,LM)/rhoice +! concfp = QQS(i,j,LM)/vovermd*1000. +! betav = coeffp*concfp**exponfp + 1.e-10 +! vertvis = 1000.*min(90., const1/betav) +! if (vertvis < zceil-FIS(I,J)*GI ) then ! if vertvis is more restictive than zceil found above; set zceil to vertvis +! ! note that FIS is geopotential of the surface (ground), and GI is 1/g +! zceil = FIS(I,J)*GI + vertvis +! end if +! end if ceil(I,J) = zceil ENDDO ! i loop diff --git a/sorc/ncep_post.fd/INITPOST_NETCDF.f b/sorc/ncep_post.fd/INITPOST_NETCDF.f index 046753a84..e6220ff87 100644 --- a/sorc/ncep_post.fd/INITPOST_NETCDF.f +++ b/sorc/ncep_post.fd/INITPOST_NETCDF.f @@ -27,6 +27,7 @@ !> 2022-11-16 | Eric James | Read smoke, dust, biomass burning, and hourly wildfire potential from RRFS !> 2022-12-07 | Wen Meng | Read AOD from AQM model !> 2022-12-23 | Eric Aligo | Read six winter weather diagnostics from model +!> 2023-01-30 | Sam Trahan | Read cldfra or cldfra_bl, whichever is available !> !> @author Hui-Ya Chuang @date 2016-03-04 SUBROUTINE INITPOST_NETCDF(ncid2d,ncid3d) @@ -153,7 +154,7 @@ SUBROUTINE INITPOST_NETCDF(ncid2d,ncid3d) integer ii,jj,js,je,iyear,imn,iday,itmp,ioutcount,istatus, & I,J,L,ll,k,kf,irtn,igdout,n,Index,nframe, & nframed2,iunitd3d,ierr,idum,iret,nrec,idrt - integer ncid3d,ncid2d,varid,nhcas + integer ncid3d,ncid2d,varid,nhcas,varid_bl,iret_bl real TSTART,TLMH,TSPH,ES,FACT,soilayert,soilayerb,zhour,dum, & tvll,pmll,tv, tx1, tx2 @@ -889,9 +890,25 @@ SUBROUTINE INITPOST_NETCDF(ncid2d,ncid3d) call read_netcdf_3d_para(ncid3d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, & spval,VarName,cfr(ista_2l,jsta_2l,1),lm) else - VarName='cldfra' - call read_netcdf_3d_para(ncid2d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, & - spval,VarName,cfr(ista_2l,jsta_2l,1),lm) + + iret_bl = nf90_inq_varid(ncid2d,'cldfra_bl',varid_bl) + iret = nf90_inq_varid(ncid2d,'cldfra',varid) + + if(iret_bl==NF90_NOERR .and. iret==NF90_NOERR) then + write(0,*) 'WARNING: BOTH cldfra_bl AND cldfra ARE AVAILABLE. USING cldfra.' + VarName='cldfra' + else if(iret_bl==NF90_NOERR) then + VarName='cldfra_bl' + else if(iret==NF90_NOERR) then + VarName='cldfra' + else + VarName='nope' + endif + + if(VarName /= 'nope') then + call read_netcdf_3d_para(ncid2d,im,jm,ista,ista_2l,iend,iend_2u,jsta,jsta_2l,jend,jend_2u, & + spval,VarName,cfr(ista_2l,jsta_2l,1),lm) + endif endif ! do l=1,lm ! if(debugprint)print*,'sample ',VarName,'isa,jsa,l =' &