Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GSL UPP developments up to January 2023 #620

Merged
merged 7 commits into from
Jan 31, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion parm/fv3lam_rrfs.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1790,7 +1790,7 @@
<param>
<shortname>VIL_ON_ENTIRE_ATMOS</shortname>
<pname>VIL</pname>
<scale>4.0</scale>
<scale>7.0</scale>
</param>

<param>
Expand Down
2 changes: 1 addition & 1 deletion parm/postxconfig-NT-fv3lam_rrfs.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9742,7 +9742,7 @@ entire_atmos_single_lyr
0
0.0
1
4.0
7.0
0
0
0
Expand Down
37 changes: 23 additions & 14 deletions sorc/ncep_post.fd/CLDRAD.f
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
25 changes: 21 additions & 4 deletions sorc/ncep_post.fd/INITPOST_NETCDF.f
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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

Expand Down Expand Up @@ -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 =' &
Expand Down