Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 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
15 changes: 7 additions & 8 deletions physics/GFS_MP_generic_post.F90
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,11 @@ module GFS_MP_generic_post
!> @{
subroutine GFS_MP_generic_post_run( &
im, levs, kdt, nrcm, nncl, ntcw, ntrac, imp_physics, imp_physics_gfdl, imp_physics_thompson, imp_physics_nssl, &
imp_physics_mg, imp_physics_fer_hires, cal_pre, cplflx, cplchm, cpllnd, progsigma, con_g, rainmin, dtf, frain, rainc, &
rain1, rann, xlat, xlon, gt0, gq0, prsl, prsi, phii, tsfc, ice, snow, graupel, save_t, save_q, rain0, ice0, snow0,&
graupel0, del, rain, domr_diag, domzr_diag, domip_diag, doms_diag, tprcp, srflag, sr, cnvprcp, totprcp, totice, &
totsnw, totgrp, cnvprcpb, totprcpb, toticeb, totsnwb, totgrpb, rain_cpl, rainc_cpl, snow_cpl, pwat, &
frzr, frzrb, frozr, frozrb, tsnowp, tsnowpb, rhonewsn1, vrbliceden_noah, iopt_snf, &
imp_physics_mg, imp_physics_fer_hires, cal_pre, cplflx, cplchm, cpllnd, progsigma, con_g, rhowater, rainmin, dtf, &
frain, rainc, rain1, rann, xlat, xlon, gt0, gq0, prsl, prsi, phii, tsfc, ice, snow, graupel, save_t, save_q, &
rain0, ice0, snow0, graupel0, del, rain, domr_diag, domzr_diag, domip_diag, doms_diag, tprcp, srflag, sr, cnvprcp,&
totprcp, totice, totsnw, totgrp, cnvprcpb, totprcpb, toticeb, totsnwb, totgrpb, rain_cpl, rainc_cpl, snow_cpl, &
pwat, frzr, frzrb, frozr, frozrb, tsnowp, tsnowpb, rhonewsn1, vrbliceden_noah, iopt_snf, &
drain_cpl, dsnow_cpl, lsm, lsm_ruc, lsm_noahmp, raincprv, rainncprv, iceprv, snowprv, &
graupelprv, draincprv, drainncprv, diceprv, dsnowprv, dgraupelprv, dtp, dfi_radar_max_intervals, &
dtend, dtidx, index_of_temperature, index_of_process_mp,ldiag3d, qdiag3d,dqdt_qmicro, lssav, num_dfi_radar, &
Expand All @@ -47,7 +47,7 @@ subroutine GFS_MP_generic_post_run(
integer :: ix_dfi_radar(:)
real(kind=kind_phys), dimension(:,:), intent(inout) :: gt0

real(kind=kind_phys), intent(in) :: dtf, frain, con_g, rainmin
real(kind=kind_phys), intent(in) :: dtf, frain, con_g, rainmin, rhowater
real(kind=kind_phys), dimension(:), intent(in) :: rain1, xlat, xlon, tsfc
real(kind=kind_phys), dimension(:), intent(inout) :: ice, snow, graupel, rainc
real(kind=kind_phys), dimension(:), intent(in) :: rain0, ice0, snow0, graupel0
Expand Down Expand Up @@ -111,7 +111,6 @@ subroutine GFS_MP_generic_post_run(

real :: snowrat,grauprat,icerat,curat,prcpncfr,prcpcufr
real :: rhonewsnow,rhoprcpice,rhonewgr,rhonewice
real(kind=kind_phys), parameter :: rhowater = 1000.0_kind_phys

! Initialize CCPP error handling variables
errmsg = ''
Expand All @@ -136,7 +135,7 @@ subroutine GFS_MP_generic_post_run(
frozrb(i) = frozrb(i) + graupel0(i)
enddo
!Compute the variable precip ice density for specific LSM schemes and options
if ( lsm == lsm_ruc .or. lsm == lsm_noahmp .and. iopt_snf == 5 .or. vrbliceden_noah == .true.) then
if ( lsm == lsm_ruc .or. (lsm == lsm_noahmp .and. iopt_snf == 5) .or. vrbliceden_noah == .true.) then
snowrat = 0.
grauprat = 0.
icerat = 0.
Expand Down
24 changes: 16 additions & 8 deletions physics/GFS_MP_generic_post.meta
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,14 @@
type = real
kind = kind_phys
intent = in
[rhowater]
standard_name = fresh_liquid_water_density_at_0c
long_name = density of liquid water
units = kg m-3
dimensions = ()
type = real
kind = kind_phys
intent = in
[dtf]
standard_name = timestep_for_dynamics
long_name = dynamics timestep
Expand Down Expand Up @@ -279,63 +287,63 @@
kind = kind_phys
intent = inout
[frzr]
standard_name = lwe_thickness_of_sfc_freezing_rain_amount
standard_name = cumulative_lwe_thickness_of_surface_freezing_rain_amount
long_name = accumulated surface freezing rain
units = m
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
intent = inout
[frzrb]
standard_name = lwe_thickness_of_sfc_freezing_rain_amount_in_bucket
standard_name = cumulative_lwe_thickness_of_surface_freezing_rain_amount_in_bucket
long_name = accumulated surface freezing rain in bucket
units = m
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
intent = inout
[frozr]
standard_name = lwe_thickness_of_sfc_graupel_amount
standard_name = cumulative_lwe_thickness_of_surface_graupel_amount
long_name = accumulated surface graupel
units = m
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
intent = inout
[frozrb]
standard_name = lwe_thickness_of_sfc_graupel_amount_in_bucket
standard_name = cumulative_lwe_thickness_of_surface_graupel_amount_in_bucket
long_name = accumulated surface graupel in bucket
units = m
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
intent = inout
[tsnowp]
standard_name = lwe_thickness_of_sfc_snow_amount
standard_name = cumulative_lwe_thickness_of_surface_snow_amount
long_name = accumulated surface snow
units = m
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
intent = inout
[tsnowpb]
standard_name = lwe_thickness_of_sfc_snow_amount_in_bucket
standard_name = cumulative_lwe_thickness_of_surface_snow_amount_in_bucket
long_name = accumulated surface snow in bucket
units = m
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
intent = inout
[rhonewsn1]
standard_name = lwe_density_of_precip_ice
standard_name = surface_frozen_precipitation_density
long_name = density of precipitation ice
units = kg m-3
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
intent = inout
[vrbliceden_noah]
standard_name = flag_for_vrbl_prcp_ice_den
standard_name = do_variable_surface_frozen_precipitation_density
long_name = flag for variable precip ice density
units = flag
dimensions = ()
Expand Down
4 changes: 2 additions & 2 deletions physics/lsm_noah.meta
Original file line number Diff line number Diff line change
Expand Up @@ -487,15 +487,15 @@
kind = kind_phys
intent = in
[rhonewsn1]
standard_name = lwe_density_of_precip_ice
standard_name = surface_frozen_precipitation_density
long_name = density of precipitation ice
units = kg m-3
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
intent = in
[vrbliceden_noah]
standard_name = flag_for_vrbl_prcp_ice_den
standard_name = do_variable_surface_frozen_precipitation_density
long_name = flag for variable precip ice density
units = flag
dimensions = ()
Expand Down
9 changes: 5 additions & 4 deletions physics/lsm_ruc.F90
Original file line number Diff line number Diff line change
Expand Up @@ -323,8 +323,8 @@ end subroutine lsm_ruc_finalize
subroutine lsm_ruc_run & ! inputs
& ( iter, me, master, delt, kdt, im, nlev, lsm_ruc, lsm, &
& imp_physics, imp_physics_gfdl, imp_physics_thompson, &
& imp_physics_nssl, &
& do_mynnsfclay, lsoil_ruc, lsoil, rdlai, xlat_d, xlon_d, zs,&
& imp_physics_nssl, do_mynnsfclay, vrbliceden, &
& lsoil_ruc, lsoil, rdlai, xlat_d, xlon_d, zs, &
& t1, q1, qc, stype, vtype, sigmaf, laixy, &
& dlwflx, dswsfc, tg3, coszen, land, icy, use_lake, &
& rainnc, rainc, ice, snow, graupel, &
Expand Down Expand Up @@ -397,6 +397,7 @@ subroutine lsm_ruc_run & ! inputs
logical, dimension(:), intent(in) :: flag_cice
logical, intent(in) :: frac_grid
logical, intent(in) :: do_mynnsfclay
logical, intent(in) :: vrbliceden

logical, intent(in) :: rdlai

Expand Down Expand Up @@ -1122,7 +1123,7 @@ subroutine lsm_ruc_run & ! inputs
& zs, prcp(i,j), sneqv_lnd(i,j), snowh_lnd(i,j), &
& sncovr_lnd(i,j), &
& ffrozp(i,j), frpcpn, &
& rhosnfr(i,j), precipfr(i,j), &
& rhosnfr(i,j), precipfr(i,j), vrbliceden, &
! --- inputs:
& conflx2(i,1,j), sfcprs(i,1,j), sfctmp(i,1,j), q2(i,1,j), &
& qcatm(i,1,j), rho2(i,1,j), semis_bck(i,j), lwdn(i,j), &
Expand Down Expand Up @@ -1396,7 +1397,7 @@ subroutine lsm_ruc_run & ! inputs
& zs, prcp(i,j), sneqv_ice(i,j), snowh_ice(i,j), &
& sncovr_ice(i,j), &
& ffrozp(i,j), frpcpn, &
& rhosnfr(i,j), precipfr(i,j), &
& rhosnfr(i,j), precipfr(i,j), vrbliceden, &
! --- inputs:
& conflx2(i,1,j), sfcprs(i,1,j), sfctmp(i,1,j), q2(i,1,j), &
& qcatm(i,1,j), rho2(i,1,j), semis_bck(i,j), lwdn(i,j), &
Expand Down
11 changes: 9 additions & 2 deletions physics/lsm_ruc.meta
Original file line number Diff line number Diff line change
Expand Up @@ -634,6 +634,13 @@
dimensions = ()
type = logical
intent = in
[vrbliceden]
standard_name = do_variable_surface_frozen_precipitation_density
long_name = flag for variable precip ice density
units = flag
dimensions = ()
type = logical
intent = in
[lsoil_ruc]
standard_name = vertical_dimension_of_soil_internal_to_land_surface_scheme
long_name = number of soil layers internal to land surface model
Expand Down Expand Up @@ -953,7 +960,7 @@
kind = kind_phys
intent = in
[rhonewsn1]
standard_name = lwe_density_of_precip_ice
standard_name = surface_frozen_precipitation_density
long_name = density of precipitation ice
units = kg m-3
dimensions = (horizontal_loop_extent)
Expand Down Expand Up @@ -1513,7 +1520,7 @@
kind = kind_phys
intent = out
[rhosnf]
standard_name = frozen_precipitation_density
standard_name = lsm_internal_surface_frozen_precipitation_density
long_name = density of frozen precipitation
units = kg m-3
dimensions = (horizontal_loop_extent)
Expand Down
38 changes: 25 additions & 13 deletions physics/module_sf_ruclsm.F90
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,11 @@ SUBROUTINE LSMRUC( &
DT,init,lsm_cold_start,KTAU,iter,NSL, &
graupelncv,snowncv,rainncv,raincv, &
ZS,RAINBL,SNOW,SNOWH,SNOWC,FRZFRAC,frpcpn, &
rhosnf,precipfr, &
rhosnf,precipfr,vrbliceden, &
Z3D,P8W,T3D,QV3D,QC3D,RHO3D,EMISBCK, &
GLW,GSWdn,GSW,EMISS,CHKLOWQ, CHS, &
FLQC,FLHC,rhonewsn,MAVAIL,CANWAT,VEGFRA,ALB, &
ZNT,Z0,SNOALB,ALBBCK,LAI, &
FLQC,FLHC,rhonewsn_ex,MAVAIL,CANWAT,VEGFRA, &
ALB, ZNT,Z0,SNOALB,ALBBCK,LAI, &
landusef, nlcat, & ! mosaic_lu, mosaic_soil, &
soilctop, nscat, &
QSFC,QSG,QVG,QCG,DEW,SOILT1,TSNAV, &
Expand Down Expand Up @@ -157,7 +157,7 @@ SUBROUTINE LSMRUC( &
! INTEGER, PARAMETER :: nddzs=2*(nzss-2)

REAL, INTENT(IN ) :: DT
LOGICAL, INTENT(IN ) :: myj,frpcpn,init,lsm_cold_start
LOGICAL, INTENT(IN ) :: myj,frpcpn,init,lsm_cold_start,vrbliceden
INTEGER, INTENT(IN ) :: NLCAT, NSCAT ! , mosaic_lu, mosaic_soil
INTEGER, INTENT(IN ) :: ktau, iter, nsl, isice, iswater, &
ims,ime, jms,jme, kms,kme, &
Expand Down Expand Up @@ -192,7 +192,7 @@ SUBROUTINE LSMRUC( &
SNOWNCV, &
RAINCV, &
RAINNCV, &
RHONEWSN
RHONEWSN_ex !externally-calculated srf frz precip density
! REAL, DIMENSION( ims:ime , jms:jme ), &
! INTENT(IN ) :: lakemask
! INTEGER, INTENT(IN ) :: LakeModel
Expand Down Expand Up @@ -302,6 +302,7 @@ SUBROUTINE LSMRUC( &
!--- soil/snow properties
REAL &
:: RHOCS, &
RHONEWSN, &
RHOSN, &
RHOSNFALL, &
BCLH, &
Expand Down Expand Up @@ -684,6 +685,7 @@ SUBROUTINE LSMRUC( &
NROOT= 4
! ! rooting depth

RHONEWSN = 200.
if(SNOW(i,j).gt.0. .and. SNOWH(i,j).gt.0.) then
RHOSN = SNOW(i,j)/SNOWH(i,j)
else
Expand Down Expand Up @@ -894,8 +896,8 @@ SUBROUTINE LSMRUC( &
nzs,nddzs,nroot,meltfactor, & !added meltfactor
iland,isoil,ivgtyp(i,j),isltyp(i,j), &
PRCPMS, NEWSNMS,SNWE,SNHEI,SNOWFRAC, &
RHOSN,RHONEWSN(I,J),RHOSNFALL, &
snowrat,grauprat,icerat,curat, &
vrbliceden,RHOSN,RHONEWSN_ex(I,J),RHONEWSN, &
RHOSNFALL,snowrat,grauprat,icerat,curat, &
PATM,TABS,QVATM,QCATM,RHO, &
GLW(I,J),GSWdn(i,j),GSW(I,J), &
EMISSL(I,J),EMISBCK(I,J), &
Expand Down Expand Up @@ -1161,7 +1163,7 @@ SUBROUTINE SFCTMP (debug_print, delt,ktau,conflx,i,j, & !--- input varia
nzs,nddzs,nroot,meltfactor, &
ILAND,ISOIL,IVGTYP,ISLTYP,PRCPMS, &
NEWSNMS,SNWE,SNHEI,SNOWFRAC, &
RHOSN,RHONEWSN,RHOSNFALL, &
vrbliceden,RHOSN,RHONEWSN_ex,RHONEWSN,RHOSNFALL, &
snowrat,grauprat,icerat,curat, &
PATM,TABS,QVATM,QCATM,rho, &
GLW,GSWdn,GSW,EMISS,EMISBCK,QKMS,TKMS,PC, &
Expand Down Expand Up @@ -1189,8 +1191,8 @@ SUBROUTINE SFCTMP (debug_print, delt,ktau,conflx,i,j, & !--- input varia
nddzs !nddzs=2*(nzs-2)

REAL, INTENT(IN ) :: DELT,CONFLX,meltfactor
REAL, INTENT(IN ) :: C1SN,C2SN,RHONEWSN
LOGICAL, INTENT(IN ) :: myj, debug_print
REAL, INTENT(IN ) :: C1SN,C2SN,RHONEWSN_ex
LOGICAL, INTENT(IN ) :: myj, debug_print, vrbliceden
!--- 3-D Atmospheric variables
REAL , &
INTENT(IN ) :: PATM, &
Expand Down Expand Up @@ -1280,8 +1282,9 @@ SUBROUTINE SFCTMP (debug_print, delt,ktau,conflx,i,j, & !--- input varia
EETA, &
EVAPL, &
INFILTR, &
RHOSN, &
rhosnfall, &
RHOSN, &
RHONEWSN, &
rhosnfall, &
snowrat, &
grauprat, &
icerat, &
Expand Down Expand Up @@ -1492,13 +1495,22 @@ SUBROUTINE SFCTMP (debug_print, delt,ktau,conflx,i,j, & !--- input varia
!--- 27 Feb 2014 - empirical formulations from John M. Brown
! rhonewsn=min(250.,rhowater/max(4.179,(13.*tanh((274.15-Tabs)*0.3333))))
!--- 13 Mar 2018 - formulation from Trevor Elcott

if (vrbliceden) then
rhonewsn = rhonewsn_ex
else
rhonewsn=min(125.,1000.0/max(8.,(17.*tanh((276.65-Tabs)*0.15))))
rhonewgr=min(500.,rhowater/max(2.,(3.5*tanh((274.15-Tabs)*0.3333))))
rhonewice=rhonewsn
!--- compute density of "snowfall" from weighted contribution
! of snow, graupel and ice fractions

rhosnfall = min(500.,max(58.8,(rhonewsn*snowrat + &
!13mar18 rhosnfall = min(500.,max(76.9,(rhonewsn*snowrat + &
rhonewgr*grauprat + rhonewice*icerat + rhonewgr*curat)))

! from now on rhonewsn is the density of falling frozen precipitation
rhonewsn=rhosnfall
end if

!*** Define average snow density of the snow pack considering
!*** the amount of fresh snow (eq. 9 in Koren et al.(1999)
Expand Down
2 changes: 1 addition & 1 deletion physics/mp_thompson.meta
Original file line number Diff line number Diff line change
Expand Up @@ -611,7 +611,7 @@
kind = kind_phys
intent = out
[fullradar_diag]
standard_name = flag_for_computing_full_radar_reflectivity
standard_name = do_full_radar_reflectivity
long_name = flag for computing full radar reflectivity
units = flag
dimensions = ()
Expand Down
2 changes: 1 addition & 1 deletion physics/noahmpdrv.meta
Original file line number Diff line number Diff line change
Expand Up @@ -533,7 +533,7 @@
kind = kind_phys
intent = in
[rhonewsn1]
standard_name = lwe_density_of_precip_ice
standard_name = surface_frozen_precipitation_density
long_name = density of precipitation ice
units = kg m-3
dimensions = (horizontal_loop_extent)
Expand Down