Skip to content

Commit

Permalink
Introducing blowing snow impact on visibility (#823)
Browse files Browse the repository at this point in the history
* Introducing blowing snow effect on GSL visibility diagnostic.

* Reverting change to compile_upp.sh

* Changing "method_blsn" to a namelist option, set to "true" by default.

* Adding change log entry to WRFPOST.f
  • Loading branch information
EricJames-NOAA authored Nov 30, 2023
1 parent 78f369b commit b469e27
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 4 deletions.
52 changes: 50 additions & 2 deletions sorc/ncep_post.fd/CALVIS_GSD.f
Original file line number Diff line number Diff line change
Expand Up @@ -91,13 +91,15 @@ SUBROUTINE CALVIS_GSD(CZEN,VIS)
! 2021-05 Wen Meng - Add checking for undefined points invloved in computation
! 2021-08 Wen Meng - Restrict divided by 0.
! 2021-10 Jesse Meng - 2D DECOMPOSITION
! 2023-11 Tim Corrie, Eric James - addition of attenuation for blowing snow
!
!------------------------------------------------------------------
!
use vrbls2d, only: sno, si, ustar
use vrbls3d, only: qqw, qqi, qqs, qqr, qqg, t, pmid, q, u, v, extcof55, aextc55
use params_mod, only: h1, d608, rd
use ctlblk_mod, only: jm, im, jsta_2l, jend_2u, lm, modelname, spval,&
use params_mod, only: h1, d608, rd, g
use ctlblk_mod, only: jm, im, jsta_2l, jend_2u, lm, modelname, spval, method_blsn,&
ista_2l, iend_2u
implicit none
Expand All @@ -109,6 +111,10 @@ SUBROUTINE CALVIS_GSD(CZEN,VIS)
REAL RHB(ista_2l:iend_2u,jsta_2l:jend_2u,LM)
REAL CZEN(ista_2l:iend_2u,jsta_2l:jend_2u)
real :: z, ustar_t, u_p, lamda, r_bar, alpha
real :: rho_sno
real :: z_r, Q_s, C_r, c_z, c_alpha, vis_blsn, BETABLSN
real celkel,tice,coeflc,coeflp,coeffc,coeffp,coeffg
real exponlc,exponlp,exponfc,exponfp,exponfg,const1
real rhoice,rhowat,qrain,qsnow,qgraupel,qclw,qclice,tv,rhoair, &
Expand Down Expand Up @@ -300,6 +306,45 @@ SUBROUTINE CALVIS_GSD(CZEN,VIS)
if (t(i,j,lm)< 270. .and. temp_fac==1.) &
write (6,*) 'Problem w/ temp_fac - calvis'

! Key calculation of attenuation from blowing snow -- updated 5 August 2022 by Tim Corrie
! Framework is from Letcher et al (2021)

ustar_t = 0.2
u_p = 2.8*ustar_t
lamda = 0.45
z = 2.0
alpha = 15.0
r_bar = 0.0002

! print *, i,j


if (si(i,j)<spval .and. si(i,j) .ge. 1.0) then
z_r = 1.6*(ustar(i,j)**2./(2.*g))
Q_s = max((0.68/ustar(i,j))*(RHOAIR/g)*(ustar(i,j)**2.-ustar_t**2.),0.0)
C_r = (Q_s/u_p)*(lamda*g/ustar(i,j)**2.)*exp(-lamda*z_r*g/ustar(i,j)**2.)
c_z = max(C_r * exp(-1.55*((0.05628*ustar(i,j))**-0.544 - z**-0.544)),1e-15)
c_alpha = alpha/(alpha+2) !simplified version of (6) in Letcher et al (2021)
rho_sno = sno(i,j)/(si(i,j)/1.0e3)
rho_sno = rho_sno*2. + 10.*max(0.,rho_sno-0.15)
vis_blsn = (5.217*rho_sno*r_bar**1.011)/(1.82*c_z*c_alpha)
BETABLSN = 3.912/(vis_blsn/1000.0)
! print to ensure quality
!print *, "z_r", z_r
!print *, "Q_s", Q_s
!print *, "C_r", C_r
!print *, "c_z", c_z
!print *, "c_alpha", c_alpha
!print *, "sno/SWE", sno(i,j)
!print *, "si/SNOD", si(i,j)/1.0e3
!print *, "rho_sno", rho_sno
!print *, "vis_blsn", vis_blsn
!print *, "BETABLSN", BETABLSN
else
BETABLSN = 0
!print *, "BETABLSN", BETABLSN
end if

! Key calculation of attenuation from each hydrometeor type (cloud, snow, graupel, rain, ice)
BETAV=COEFFC*CONCFC**EXPONFC &
+ coef_SNOW*CONCFP**EXPONFP &
Expand All @@ -309,6 +354,9 @@ SUBROUTINE CALVIS_GSD(CZEN,VIS)
! Addition of attenuation from aerosols if option selected
if(method == 2 .or. method == 3)then ! aerosol method
BETAV = BETAV + aextc55(i,j,lm)*1000.
if(method_blsn) then ! BLSN method, updated 8 August 2022 by Tim Corrie
BETAV = BETAV + BETABLSN
endif
endif

! Calculation of visibility based on hydrometeor and aerosols. (RH effect not yet included.)
Expand Down
2 changes: 2 additions & 0 deletions sorc/ncep_post.fd/CTLBLK.f
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
!> 2023-04-04 | Li(Kate Zhang) | Add namelist optoin for CCPP-Chem (UFS-Chem) and 2D diag. output (d2d_chem) for GEFS-Aerosols and CCPP-Chem model.
!> 2023-04-17 | Eric James | Adding 160 and 320 m above ground to HTFD for RRFS output.
!> 2023-08-16 | Yali Mao | Add gtg_on logical option
!> 2023-11-24 | Eric James | Add method_blsn logical option
!-----------------------------------------------------------------------
!> @defgroup CTLBLK_mod Sets default parameters that are used throughout the UPP code
!-----------------------------------------------------------------------
Expand Down Expand Up @@ -73,6 +74,7 @@ module CTLBLK_mod
logical :: aqf_on !< Turn on Air Quality Forecasting (CMAQ-based).
logical :: slrutah_on !< Calculate snow to liquid ratio (SLR) using method from University of Utah.
logical :: gtg_on !< Turn on GTG (Graphical Turbulence Guidance)
logical :: method_blsn !< Turn on blowing snow effect on visibility diagnostic
!
logical :: SIGMA !< No longer used/supported.
logical :: RUN !< No longer used/supported.
Expand Down
6 changes: 4 additions & 2 deletions sorc/ncep_post.fd/WRFPOST.f
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
! and 2D diag. output (d2d_chem) for GEFS-Aerosols and CCPP-Chem model.
!> 2023-05-20 | Rahul Mahajan | Bug fix for fileNameFlat as namelist configurable
!> 2023-08-16 | Yali Mao | Add gtg_on logical option
!> 2023-11-29 | Eric James | Add method_blsn logical option
!> @author Mike Bladwin NSSL/SPC @date 2002-06-18
!---------------------------------------------------------------------
!> @return wrfpost
Expand Down Expand Up @@ -127,7 +128,7 @@ PROGRAM WRFPOST
mdl2agl_tim, mdl2std_tim, mdl2thandpv_tim, calrad_wcloud_tim,nasa_on,gccpp_on, &
fixed_tim, time_output, imin, surfce2_tim, komax, ivegsrc, d3d_on, gocart_on,rdaod, &
readxml_tim, spval, fullmodelname, submodelname, hyb_sigp, filenameflat, aqf_on,numx, &
run_ifi_tim, slrutah_on, d2d_chem, gtg_on
run_ifi_tim, slrutah_on, d2d_chem, gtg_on, method_blsn
use grib2_module, only: gribit2,num_pset,nrecout,first_grbtbl,grib_info_finalize
use upp_ifi_mod, only: write_ifi_debug_files
!- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Expand All @@ -153,7 +154,7 @@ PROGRAM WRFPOST
!
integer :: kpo,kth,kpv
real,dimension(komax) :: po,th,pv
namelist/nampgb/kpo,po,kth,th,kpv,pv,fileNameAER,d3d_on,gocart_on,gccpp_on, nasa_on,gtg_on,popascal &
namelist/nampgb/kpo,po,kth,th,kpv,pv,fileNameAER,d3d_on,gocart_on,gccpp_on, nasa_on,gtg_on,method_blsn,popascal &
,hyb_sigp,rdaod,d2d_chem, aqf_on,slrutah_on, vtimeunits,numx,write_ifi_debug_files
integer :: itag_ierr
namelist/model_inputs/fileName,IOFORM,grib,DateStr,MODELNAME,SUBMODELNAME &
Expand Down Expand Up @@ -261,6 +262,7 @@ PROGRAM WRFPOST
aqf_on = .false.
slrutah_on = .false.
gtg_on = .false.
method_blsn = .true.
popascal = .false.
fileNameAER = ''
rdaod = .false.
Expand Down

0 comments on commit b469e27

Please sign in to comment.