Skip to content

Commit

Permalink
Added the capability to use a Leaf Area Index (LAI) climatology in RU…
Browse files Browse the repository at this point in the history
…C LSM.

Variables xlaixy and rdlai are added to the argument list of lsm_ruc_run.
If rdlai=.true. in the physics namelist, then the LAI climatology will be passed into
the RUC LSM and used instead of look-up table value for a given vegetation type.
  • Loading branch information
tanyasmirnova committed Nov 20, 2019
1 parent e4d291e commit bd32702
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 10 deletions.
4 changes: 2 additions & 2 deletions physics/module_sf_ruclsm.F90
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ SUBROUTINE LSMRUC( &
Z3D,P8W,T3D,QV3D,QC3D,RHO3D, &
GLW,GSW,EMISS,CHKLOWQ, CHS, &
FLQC,FLHC,MAVAIL,CANWAT,VEGFRA,ALB,ZNT, &
Z0,SNOALB,ALBBCK, & !Z0,SNOALB,ALBBCK,LAI, &
Z0,SNOALB,ALBBCK,LAI, &
landusef, nlcat, & ! mosaic_lu, mosaic_soil, &
soilctop, nscat, &
QSFC,QSG,QVG,QCG,DEW,SOILT1,TSNAV, &
Expand Down Expand Up @@ -218,6 +218,7 @@ SUBROUTINE LSMRUC( &
CANWAT, & ! new
SNOALB, &
ALB, &
LAI, &
EMISS, &
MAVAIL, &
SFCEXC, &
Expand Down Expand Up @@ -269,7 +270,6 @@ SUBROUTINE LSMRUC( &
PC, &
SFCRUNOFF, &
UDRUNOFF, &
LAI, &
EMISSL, &
ZNTL, &
LMAVAIL, &
Expand Down
23 changes: 15 additions & 8 deletions physics/sfc_drv_ruc.F90
Original file line number Diff line number Diff line change
Expand Up @@ -139,11 +139,11 @@ end subroutine lsm_ruc_finalize
! DH* TODO - make order of arguments the same as in the metadata table
subroutine lsm_ruc_run & ! inputs
& ( iter, me, master, kdt, im, nlev, lsoil_ruc, lsoil, zs, &
& u1, v1, t1, q1, qc, soiltyp, vegtype, sigmaf, &
& u1, v1, t1, q1, qc, soiltyp, vegtype, sigmaf, laixy, &
& sfcemis, dlwflx, dswsfc, snet, delt, tg3, cm, ch, &
& prsl1, zf, ddvel, shdmin, shdmax, alvwf, alnwf, &
& snoalb, sfalb, flag_iter, flag_guess, isot, ivegsrc, fice, &
& smc, stc, slc, lsm_ruc, lsm, land, islimsk, &
& smc, stc, slc, lsm_ruc, lsm, land, islimsk, rdlai, &
& imp_physics, imp_physics_gfdl, imp_physics_thompson, &
& smcwlt2, smcref2, wspd, do_mynnsfclay, &
& con_cp, con_rv, con_rd, con_g, con_pi, con_hvap, con_fvirt,& ! constants
Expand Down Expand Up @@ -178,6 +178,8 @@ subroutine lsm_ruc_run & ! inputs
& ch, prsl1, ddvel, shdmin, shdmax, &
& snoalb, alvwf, alnwf, zf, qc, q1, wspd

real (kind=kind_phys), dimension(:), intent(in) :: laixy

real (kind=kind_phys), intent(in) :: delt
real (kind=kind_phys), intent(in) :: con_cp, con_rv, con_g, &
con_pi, con_rd, &
Expand All @@ -187,6 +189,8 @@ subroutine lsm_ruc_run & ! inputs
integer, dimension(im), intent(in) :: islimsk ! sea/land/ice mask (=0/1/2)
logical, intent(in) :: do_mynnsfclay

logical, intent(in) :: rdlai

! --- in/out:
integer, dimension(im), intent(inout) :: soiltyp, vegtype
real (kind=kind_phys), dimension(lsoil_ruc) :: dzs
Expand Down Expand Up @@ -317,6 +321,8 @@ subroutine lsm_ruc_run & ! inputs
zs, sh2o, smfrkeep, tslb, smois, wetness, & ! out
me, master, errmsg, errflg)

xlai = 0.

endif ! flag_init=.true.,iter=1
!-- end of initialization

Expand Down Expand Up @@ -516,10 +522,10 @@ subroutine lsm_ruc_run & ! inputs
ffrozp(i,j) = real(nint(srflag(i)),kind_phys)
endif

!tgs - for now set rdlai2d to .false., WRF has LAI maps, and RUC LSM
! uses rdlai2d = .true.
rdlai2d = .false.
!if( .not. rdlai2d) xlai = lai_data(vtype)
!tgs - rdlai is .false. when the LAI data is not available in the
! - INPUT/sfc_data.nc

rdlai2d = rdlai

conflx2(i,1,j) = zf(i) * 2. ! factor 2. is needed to get the height of
! atm. forcing inside RUC LSM (inherited
Expand Down Expand Up @@ -611,6 +617,8 @@ subroutine lsm_ruc_run & ! inputs
albbck(i,j) = max(0.01, 0.5 * (alvwf(i) + alnwf(i)))
alb(i,j) = sfalb(i)

if(rdlai2d) xlai(i,j) = laixy(i)

tbot(i,j) = tg3(i)

!> - 4. history (state) variables (h):
Expand Down Expand Up @@ -806,8 +814,7 @@ subroutine lsm_ruc_run & ! inputs
& chs(i,j), flqc(i,j), flhc(i,j), &
! --- input/outputs:
& wet(i,j), cmc(i,j), shdfac(i,j), alb(i,j), znt(i,j), &
& z0(i,j), snoalb1d(i,j), albbck(i,j), &
! & z0, snoalb1d, alb, xlai, &
& z0(i,j), snoalb1d(i,j), albbck(i,j), xlai(i,j), &
& landusef(i,:,j), nlcat, &
! --- mosaic_lu and mosaic_soil are moved to the namelist
! & mosaic_lu, mosaic_soil, &
Expand Down
14 changes: 14 additions & 0 deletions physics/sfc_drv_ruc.meta
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,12 @@
type = integer
intent = in
optional = F
[rdlai]
standard_name = flag_for_reading_leaf_area_index_from_input
long_name = flag for reading leaf area index from initial conditions for RUC LSM
units = flag
dimensions = ()
type = logical
[zs]
standard_name = depth_of_soil_levels_for_land_surface_model
long_name = depth of soil levels for land surface model
Expand Down Expand Up @@ -556,6 +562,14 @@
kind = kind_phys
intent = in
optional = F
[laixy]
standard_name = leaf_area_index
long_name = leaf area index
units = none
dimensions = (horizontal_dimension)
type = real
kind = kind_phys
optional = F
[sfalb]
standard_name = surface_diffused_shortwave_albedo
long_name = mean surface diffused sw albedo
Expand Down

0 comments on commit bd32702

Please sign in to comment.