From f9f34e6862d75d8b3cc6d0fc6776f1e1ddeef716 Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Wed, 1 Apr 2020 13:46:23 +0000 Subject: [PATCH 1/9] updates to old sfc pert team - does not compile --- physics/GFS_MP_generic.meta | 4 +- physics/GFS_debug.F90 | 2 +- physics/GFS_rrtmg_pre.F90 | 13 +++--- physics/GFS_surface_generic.F90 | 74 ++++++++++++++----------------- physics/GFS_surface_generic.meta | 75 ++++++++++---------------------- physics/radiation_surface.f | 6 +-- physics/rrtmg_sw_pre.F90 | 14 +++++- physics/sfc_drv.f | 6 +-- physics/sfc_drv.meta | 4 +- 9 files changed, 87 insertions(+), 111 deletions(-) diff --git a/physics/GFS_MP_generic.meta b/physics/GFS_MP_generic.meta index ddf8cb813..933ba96fe 100644 --- a/physics/GFS_MP_generic.meta +++ b/physics/GFS_MP_generic.meta @@ -715,8 +715,8 @@ intent = inout optional = F [do_sppt] - standard_name = flag_for_stochastic_surface_physics_perturbations - long_name = flag for stochastic surface physics perturbations + standard_name = flag_for_stochastic_physics_perturbations + long_name = flag for stochastic physics perturbations units = flag dimensions = () type = logical diff --git a/physics/GFS_debug.F90 b/physics/GFS_debug.F90 index 6bf39d491..326a4ff57 100644 --- a/physics/GFS_debug.F90 +++ b/physics/GFS_debug.F90 @@ -474,7 +474,7 @@ subroutine GFS_diagtoscreen_run (Model, Statein, Stateout, Sfcprop, Coupling, call print_var(mpirank,omprank, blkno, 'Coupling%skebu_wts', Coupling%skebu_wts ) call print_var(mpirank,omprank, blkno, 'Coupling%skebv_wts', Coupling%skebv_wts ) end if - if (Model%do_sfcperts) then + if (Model%lndp_type .NE. 0) then call print_var(mpirank,omprank, blkno, 'Coupling%sfc_wts' , Coupling%sfc_wts ) end if if (Model%do_ca) then diff --git a/physics/GFS_rrtmg_pre.F90 b/physics/GFS_rrtmg_pre.F90 index 381930d49..494dc24b8 100644 --- a/physics/GFS_rrtmg_pre.F90 +++ b/physics/GFS_rrtmg_pre.F90 @@ -790,12 +790,15 @@ subroutine GFS_rrtmg_pre_run (Model, Grid, Sfcprop, Statein, & ! input ! perturbation size ! --- turn vegetation fraction pattern into percentile pattern alb1d(:) = 0. - if (Model%do_sfcperts) then - if (Model%pertalb(1) > 0.) then - do i=1,im - call cdfnor(Coupling%sfc_wts(i,5),alb1d(i)) + if (Model%lndp_type==1) then + do k =1,Model%n_var_lndp + if (Model%lndp_var_list(k) == 'alb') then + do i=1,im + call cdfnor(Coupling%sfc_wts(i,k),alb1d(i)) + !lndp_alb = Model%lndp_prt_list(k) + enddo + endif enddo - endif endif ! mg, sfc-perts diff --git a/physics/GFS_surface_generic.F90 b/physics/GFS_surface_generic.F90 index ac366ae54..e303b010f 100644 --- a/physics/GFS_surface_generic.F90 +++ b/physics/GFS_surface_generic.F90 @@ -28,14 +28,15 @@ end subroutine GFS_surface_generic_pre_finalize subroutine GFS_surface_generic_pre_run (im, levs, vfrac, islmsk, isot, ivegsrc, stype, vtype, slope, & prsik_1, prslk_1, tsfc, phil, con_g, & sigmaf, soiltyp, vegtype, slopetyp, work3, tsurf, zlvl, do_sppt, dtdtr, & - drain_cpl, dsnow_cpl, rain_cpl, snow_cpl, do_sfcperts, nsfcpert, sfc_wts, & - pertz0, pertzt, pertshc, pertlai, pertvegf, z01d, zt1d, bexp1d, xlai1d, vegf1d, & + drain_cpl, dsnow_cpl, rain_cpl, snow_cpl, lndp_type, n_var_lndp, sfc_wts, & + lndp_var_list, lndp_prt_list, & + z01d, zt1d, bexp1d, xlai1d, vegf1d, & cplflx, flag_cice, islmsk_cice, slimskin_cpl, tisfc, tsfco, fice, hice, & wind, u1, v1, cnvwind, smcwlt2, smcref2, errmsg, errflg) - use surface_perturbation, only: cdfnor + use surface_perturbation, only: cdfnor - implicit none + implicit none ! Interface variables integer, intent(in) :: im, levs, isot, ivegsrc @@ -57,14 +58,11 @@ subroutine GFS_surface_generic_pre_run (im, levs, vfrac, islmsk, isot, ivegsrc, real(kind=kind_phys), dimension(im), intent(out) :: dsnow_cpl real(kind=kind_phys), dimension(im), intent(in) :: rain_cpl real(kind=kind_phys), dimension(im), intent(in) :: snow_cpl - logical, intent(in) :: do_sfcperts - integer, intent(in) :: nsfcpert + integer, intent(in) :: lndp_type + integer, intent(in) :: n_var_lndp + character(len=3), dimension(n_var_lndp), intent(in) :: lndp_var_list + real(kind=kind_phys), dimension(n_var_lndp), intent(in) :: lndp_prt_list real(kind=kind_phys), dimension(im,nsfcpert), intent(in) :: sfc_wts - real(kind=kind_phys), dimension(:), intent(in) :: pertz0 - real(kind=kind_phys), dimension(:), intent(in) :: pertzt - real(kind=kind_phys), dimension(:), intent(in) :: pertshc - real(kind=kind_phys), dimension(:), intent(in) :: pertlai - real(kind=kind_phys), dimension(:), intent(in) :: pertvegf real(kind=kind_phys), dimension(im), intent(out) :: z01d real(kind=kind_phys), dimension(im), intent(out) :: zt1d real(kind=kind_phys), dimension(im), intent(out) :: bexp1d @@ -90,9 +88,9 @@ subroutine GFS_surface_generic_pre_run (im, levs, vfrac, islmsk, isot, ivegsrc, integer, intent(out) :: errflg ! Local variables - integer :: i + integer :: i, k real(kind=kind_phys) :: onebg - real(kind=kind_phys) :: cdfz + real(kind=kind_phys) :: cdfz, lndp_vgf ! Set constants onebg = 1.0/con_g @@ -108,34 +106,28 @@ subroutine GFS_surface_generic_pre_run (im, levs, vfrac, islmsk, isot, ivegsrc, ! Scale random patterns for surface perturbations with perturbation size ! Turn vegetation fraction pattern into percentile pattern - if (do_sfcperts) then - if (pertz0(1) > 0.) then - z01d(:) = pertz0(1) * sfc_wts(:,1) -! if (me == 0) print*,'sfc_wts(:,1) min and max',minval(sfc_wts(:,1)),maxval(sfc_wts(:,1)) -! if (me == 0) print*,'z01d min and max ',minval(z01d),maxval(z01d) - endif - if (pertzt(1) > 0.) then - zt1d(:) = pertzt(1) * sfc_wts(:,2) - endif - if (pertshc(1) > 0.) then - bexp1d(:) = pertshc(1) * sfc_wts(:,3) - endif - if (pertlai(1) > 0.) then - xlai1d(:) = pertlai(1) * sfc_wts(:,4) - endif -! --- do the albedo percentile calculation in GFS_radiation_driver instead --- ! -! if (pertalb(1) > 0.) then -! do i=1,im -! call cdfnor(sfc_wts(i,5),cdfz) -! alb1d(i) = cdfz -! enddo -! endif - if (pertvegf(1) > 0.) then - do i=1,im - call cdfnor(sfc_wts(i,6),cdfz) - vegf1d(i) = cdfz - enddo - endif + lndp_vgf=-999. + + if (lndp_type==1) then + do k =1,n_var_lndp + select case(lndp_var_list(k)) + case ('rz0') + z01d(:) = lndp_prt_list(k)* sfc_wts(:,k) + case ('rzt') + zt1d(:) = lndp_prt_list(k)* sfc_wts(:,k) + case ('shc') + bexp1d(:) = lndp_prt_list(k) * sfc_wts(:,k) + case ('lai') + xlai1d(:) = lndp_prt_list(k)* sfc_wts(:,k) + case ('vgf') + ! note that the pertrubed vegfrac is being used in sfc_drv, but not sfc_diff + do i=1,im + call cdfnor(sfc_wts(i,k),cdfz) + vegf1d(i) = cdfz + enddo + lndp_vgf = Model%lndp_prt_list(k) + end select + enddo endif ! End of stochastic physics / surface perturbation diff --git a/physics/GFS_surface_generic.meta b/physics/GFS_surface_generic.meta index 250f7a2bd..cb90b0c8b 100644 --- a/physics/GFS_surface_generic.meta +++ b/physics/GFS_surface_generic.meta @@ -183,8 +183,8 @@ intent = inout optional = F [do_sppt] - standard_name = flag_for_stochastic_surface_physics_perturbations - long_name = flag for stochastic surface physics perturbations + standard_name = flag_for_stochastic_physics_perturbations + long_name = flag for stochastic physics perturbations units = flag dimensions = () type = logical @@ -235,17 +235,17 @@ kind = kind_phys intent = in optional = F -[do_sfcperts] - standard_name = flag_for_stochastic_surface_perturbations - long_name = flag for stochastic surface perturbations option - units = flag +[lndp_type] + standard_name = index_for_stochastic_land_surface_perturbation_type + long_name = index for stochastic land surface perturbations type + units = index dimensions = () - type = logical + type = integer intent = in optional = F -[nsfcpert] - standard_name = number_of_surface_perturbations - long_name = number of surface perturbations +[n_var_lndp] + standard_name = number_of_land_surface_variables_perturbed + long_name = number of land surface perturbations units = count dimensions = () type = integer @@ -260,51 +260,20 @@ kind = kind_phys intent = in optional = F -[pertz0] - standard_name = magnitude_of_perturbation_of_momentum_roughness_length - long_name = magnitude of perturbation of momentum roughness length - units = frac - dimensions = (5) - type = real - kind = kind_phys - intent = in - optional = F -[pertzt] - standard_name = magnitude_of_perturbation_of_heat_to_momentum_roughness_length_ratio - long_name = magnitude of perturbation of heat to momentum roughness length r. - units = frac - dimensions = (5) - type = real - kind = kind_phys - intent = in - optional = F -[pertshc] - standard_name = magnitude_of_perturbation_of_soil_type_b_parameter - long_name = magnitude of perturbation of soil type b parameter - units = frac - dimensions = (5) +[lndp_prt_list] + standard_name =magnitude_of_perturbations_for_landperts + long_name = magnitude of perturbations for landperts + units = variable + dimensions = (max_n_var_lndp) type = real kind = kind_phys - intent = in - optional = F -[pertlai] - standard_name = magnitude_of_perturbation_of_leaf_area_index - long_name = magnitude of perturbation of leaf area index - units = frac - dimensions = (5) - type = real - kind = kind_phys - intent = in - optional = F -[pertvegf] - standard_name = magnitude_of_perturbation_of_vegetation_fraction - long_name = magnitude of perturbation of vegetation fraction - units = frac - dimensions = (5) - type = real - kind = kind_phys - intent = in - optional = F +[lndp_var_list] + standard_name = variables_to_be_perturbed_for_landperts + long_name = variables to be perturbed for landperts + units = none + dimensions = (max_n_var_lndp) + type = character + kind = len=3 [z01d] standard_name = perturbation_of_momentum_roughness_length long_name = perturbation of momentum roughness length diff --git a/physics/radiation_surface.f b/physics/radiation_surface.f index a2cbf55ac..f0cbdd18a 100644 --- a/physics/radiation_surface.f +++ b/physics/radiation_surface.f @@ -390,7 +390,7 @@ subroutine setalb & & slmsk, snowf, zorlf, coszf, tsknf, tairf, hprif, & & alvsf, alnsf, alvwf, alnwf, facsf, facwf, fice, tisfc, & & sncovr, snoalb, albPpert ! sfc-perts, mgehne - real (kind=kind_phys), dimension(5), intent(in) :: pertalb ! sfc-perts, mgehne + real (kind=kind_phys), intent(in) :: pertalb ! sfc-perts, mgehne ! --- outputs real (kind=kind_phys), dimension(IMAX,NF_ALBD), intent(out) :: & @@ -628,12 +628,12 @@ subroutine setalb & ! sfc-perts, mgehne *** !> - Call ppebet () to perturb all 4 elements of surface albedo sfcalb(:,1:4). - if (pertalb(1)>0.0) then + if (pertalb>0.0) then do i = 1, imax do kk=1, 4 ! compute beta distribution parameters for all 4 albedos m = sfcalb(i,kk) - s = pertalb(1)*m*(1.-m) + s = pertalb*m*(1.-m) alpha = m*m*(1.-m)/(s*s)-m beta = alpha*(1.-m)/m ! compute beta distribution value corresponding diff --git a/physics/rrtmg_sw_pre.F90 b/physics/rrtmg_sw_pre.F90 index 8eeb16430..763b204c0 100644 --- a/physics/rrtmg_sw_pre.F90 +++ b/physics/rrtmg_sw_pre.F90 @@ -44,6 +44,8 @@ subroutine rrtmg_sw_pre_run (Model, Grid, Sfcprop, Radtend, im, & integer :: i real(kind=kind_phys), dimension(size(Grid%xlon,1),NF_ALBD) :: sfcalb + real(kind=kind_phys) :: lndp_alb + ! Initialize CCPP error handling variables errmsg = '' errflg = 0 @@ -63,6 +65,16 @@ subroutine rrtmg_sw_pre_run (Model, Grid, Sfcprop, Radtend, im, & endif enddo +! set albedo pert, if requested. + lndp_alb = -999. + if (Model%lndp_type==1) then + do i =1,Model%n_var_lndp + if (Model%lndp_var_list(i) == 'alb') then + lndp_alb = Model%lndp_prt_list(i) + endif + enddo + endif + !> - Call module_radiation_surface::setalb() to setup surface albedo. !! for SW radiation. @@ -72,7 +84,7 @@ subroutine rrtmg_sw_pre_run (Model, Grid, Sfcprop, Radtend, im, & Sfcprop%alnsf, Sfcprop%alvwf, Sfcprop%alnwf, & Sfcprop%facsf, Sfcprop%facwf, Sfcprop%fice, & Sfcprop%tisfc, IM, & - alb1d, Model%pertalb, & ! mg, sfc-perts + alb1d, lndp_alb, & ! mg, sfc-perts sfcalb) ! --- outputs !> -# Approximate mean surface albedo from vis- and nir- diffuse values. diff --git a/physics/sfc_drv.f b/physics/sfc_drv.f index 75afaa6ff..d28a9644e 100644 --- a/physics/sfc_drv.f +++ b/physics/sfc_drv.f @@ -207,7 +207,7 @@ subroutine lsm_noah_run & integer, intent(in) :: im, km, isot, ivegsrc real (kind=kind_phys), intent(in) :: grav, cp, hvap, rd, eps, & & epsm1, rvrdm1 - real (kind=kind_phys), dimension(5), intent(in) :: pertvegf + real (kind=kind_phys), intent(in) :: pertvegf integer, dimension(im), intent(in) :: soiltyp, vegtype, slopetyp @@ -422,10 +422,10 @@ subroutine lsm_noah_run & !! 0.5 and the perturbations go to zero as vegetation fraction approaches its upper !! or lower bound. vegfp = vegfpert(i) ! sfc-perts, mgehne - if (pertvegf(1)>0.0) then + if (pertvegf>0.0) then ! compute beta distribution parameters for vegetation fraction mv = shdfac - sv = pertvegf(1)*mv*(1.-mv) + sv = pertvegf*mv*(1.-mv) alphav = mv*mv*(1.0-mv)/(sv*sv)-mv betav = alphav*(1.0-mv)/mv ! compute beta distribution value corresponding diff --git a/physics/sfc_drv.meta b/physics/sfc_drv.meta index 7728ee375..0505c23ae 100644 --- a/physics/sfc_drv.meta +++ b/physics/sfc_drv.meta @@ -435,11 +435,11 @@ kind = kind_phys intent = in optional = F -[pertvegf] +[lndp_vgf] standard_name = magnitude_of_perturbation_of_vegetation_fraction long_name = magnitude of perturbation of vegetation fraction units = frac - dimensions = (5) + dimensions = () type = real kind = kind_phys intent = in From 90dfcc16763f6a3f6dd63a46fb4ce434f9946b2d Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Wed, 1 Apr 2020 13:46:23 +0000 Subject: [PATCH 2/9] updates to old sfc pert team - does not compile --- physics/GFS_stochastics.meta | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/physics/GFS_stochastics.meta b/physics/GFS_stochastics.meta index 9232c8d6a..70a9764ae 100644 --- a/physics/GFS_stochastics.meta +++ b/physics/GFS_stochastics.meta @@ -18,8 +18,8 @@ intent = in optional = F [do_sppt] - standard_name = flag_for_stochastic_surface_physics_perturbations - long_name = flag for stochastic surface physics perturbations + standard_name = flag_for_stochastic_physics_perturbations + long_name = flag for stochastic physics perturbations units = flag dimensions = () type = logical From 1f096f3a0379e087f454bf504c2a3e8b61c01453 Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Wed, 8 Apr 2020 20:57:21 +0000 Subject: [PATCH 3/9] Phil's ccpp changes --- physics/GFS_surface_generic.F90 | 7 ++++--- physics/GFS_surface_generic.meta | 9 +++++++++ physics/sfc_drv.meta | 2 +- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/physics/GFS_surface_generic.F90 b/physics/GFS_surface_generic.F90 index e303b010f..4d41d7f62 100644 --- a/physics/GFS_surface_generic.F90 +++ b/physics/GFS_surface_generic.F90 @@ -30,7 +30,7 @@ subroutine GFS_surface_generic_pre_run (im, levs, vfrac, islmsk, isot, ivegsrc, sigmaf, soiltyp, vegtype, slopetyp, work3, tsurf, zlvl, do_sppt, dtdtr, & drain_cpl, dsnow_cpl, rain_cpl, snow_cpl, lndp_type, n_var_lndp, sfc_wts, & lndp_var_list, lndp_prt_list, & - z01d, zt1d, bexp1d, xlai1d, vegf1d, & + z01d, zt1d, bexp1d, xlai1d, vegf1d, lndp_vgf, & cplflx, flag_cice, islmsk_cice, slimskin_cpl, tisfc, tsfco, fice, hice, & wind, u1, v1, cnvwind, smcwlt2, smcref2, errmsg, errflg) @@ -68,6 +68,7 @@ subroutine GFS_surface_generic_pre_run (im, levs, vfrac, islmsk, isot, ivegsrc, real(kind=kind_phys), dimension(im), intent(out) :: bexp1d real(kind=kind_phys), dimension(im), intent(out) :: xlai1d real(kind=kind_phys), dimension(im), intent(out) :: vegf1d + real(kind=kind_phys), intent(out) :: lndp_vgf logical, intent(in) :: cplflx real(kind=kind_phys), dimension(im), intent(in) :: slimskin_cpl @@ -90,7 +91,7 @@ subroutine GFS_surface_generic_pre_run (im, levs, vfrac, islmsk, isot, ivegsrc, ! Local variables integer :: i, k real(kind=kind_phys) :: onebg - real(kind=kind_phys) :: cdfz, lndp_vgf + real(kind=kind_phys) :: cdfz ! Set constants onebg = 1.0/con_g @@ -125,7 +126,7 @@ subroutine GFS_surface_generic_pre_run (im, levs, vfrac, islmsk, isot, ivegsrc, call cdfnor(sfc_wts(i,k),cdfz) vegf1d(i) = cdfz enddo - lndp_vgf = Model%lndp_prt_list(k) + lndp_vgf = lndp_prt_list(k) end select enddo endif diff --git a/physics/GFS_surface_generic.meta b/physics/GFS_surface_generic.meta index cb90b0c8b..b716ac0f4 100644 --- a/physics/GFS_surface_generic.meta +++ b/physics/GFS_surface_generic.meta @@ -319,6 +319,15 @@ kind = kind_phys intent = out optional = F +[lndp_vgf] + standard_name = magnitude_of_perturbation_of_vegetation_fraction + long_name = magnitude of perturbation of vegetation fraction + units = frac + dimensions = () + type = real + kind = kind_phys + intent = out + optional = F [cplflx] standard_name = flag_for_flux_coupling long_name = flag controlling cplflx collection (default off) diff --git a/physics/sfc_drv.meta b/physics/sfc_drv.meta index 0505c23ae..7db9221bb 100644 --- a/physics/sfc_drv.meta +++ b/physics/sfc_drv.meta @@ -435,7 +435,7 @@ kind = kind_phys intent = in optional = F -[lndp_vgf] +[pertvegf] standard_name = magnitude_of_perturbation_of_vegetation_fraction long_name = magnitude of perturbation of vegetation fraction units = frac From 78b9a67324b2a561caeabce1bf059d4a1fe19498 Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Thu, 16 Apr 2020 22:13:33 +0000 Subject: [PATCH 4/9] minor bug fix --- physics/GFS_surface_generic.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/physics/GFS_surface_generic.F90 b/physics/GFS_surface_generic.F90 index 4d41d7f62..3b18b261d 100644 --- a/physics/GFS_surface_generic.F90 +++ b/physics/GFS_surface_generic.F90 @@ -62,7 +62,7 @@ subroutine GFS_surface_generic_pre_run (im, levs, vfrac, islmsk, isot, ivegsrc, integer, intent(in) :: n_var_lndp character(len=3), dimension(n_var_lndp), intent(in) :: lndp_var_list real(kind=kind_phys), dimension(n_var_lndp), intent(in) :: lndp_prt_list - real(kind=kind_phys), dimension(im,nsfcpert), intent(in) :: sfc_wts + real(kind=kind_phys), dimension(im,n_var_lndp), intent(in) :: sfc_wts real(kind=kind_phys), dimension(im), intent(out) :: z01d real(kind=kind_phys), dimension(im), intent(out) :: zt1d real(kind=kind_phys), dimension(im), intent(out) :: bexp1d From 3ff25ecf862941501bc5c2c1fba8d2cb05d207db Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Mon, 20 Jul 2020 19:42:26 +0000 Subject: [PATCH 5/9] Updated to new land pert scheme. --- physics/GFS_rrtmgp_sw_pre.F90 | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/physics/GFS_rrtmgp_sw_pre.F90 b/physics/GFS_rrtmgp_sw_pre.F90 index 6987c3e4a..827907e62 100644 --- a/physics/GFS_rrtmgp_sw_pre.F90 +++ b/physics/GFS_rrtmgp_sw_pre.F90 @@ -86,6 +86,7 @@ subroutine GFS_rrtmgp_sw_pre_run(Model, Grid, Sfcprop, Statein, ncol, p_lay, p_ ! Local variables integer :: i, j, iCol, iBand, iLay real(kind_phys), dimension(ncol, NF_ALBD) :: sfcalb + real(kind_phys) :: lndp_alb ! Initialize CCPP error handling variables errmsg = '' @@ -117,13 +118,17 @@ subroutine GFS_rrtmgp_sw_pre_run(Model, Grid, Sfcprop, Statein, ncol, p_lay, p_ ! --- turn vegetation fraction pattern into percentile pattern ! ####################################################################################### alb1d(:) = 0. - if (Model%do_sfcperts) then - if (Model%pertalb(1) > 0.) then + lndp_alb = -999. + if (Model%lndp_type ==1) then + do k =1,Model%n_var_lndp + if (Model%lndp_var_list(k) == 'alb') then do i=1,ncol - call cdfnor(Coupling%sfc_wts(i,5),alb1d(i)) + call cdfnor(Coupling%sfc_wts(i,k),alb1d(i)) + lndp_alb = Model%lndp_prt_list(k) enddo - endif - endif + endif + enddo + endif ! ####################################################################################### ! Call module_radiation_surface::setalb() to setup surface albedo. @@ -131,7 +136,7 @@ subroutine GFS_rrtmgp_sw_pre_run(Model, Grid, Sfcprop, Statein, ncol, p_lay, p_ call setalb (Sfcprop%slmsk, Sfcprop%snowd, Sfcprop%sncovr, Sfcprop%snoalb, Sfcprop%zorl, & Radtend%coszen, Sfcprop%tsfc, Sfcprop%tsfc, Sfcprop%hprime(:,1), Sfcprop%alvsf, & Sfcprop%alnsf, Sfcprop%alvwf, Sfcprop%alnwf, Sfcprop%facsf, Sfcprop%facwf, & - Sfcprop%fice, Sfcprop%tisfc, NCOL, alb1d, Model%pertalb, sfcalb) + Sfcprop%fice, Sfcprop%tisfc, NCOL, alb1d, lndp_alb, sfcalb) ! Approximate mean surface albedo from vis- and nir- diffuse values. Radtend%sfalb(:) = max(0.01, 0.5 * (sfcalb(:,2) + sfcalb(:,4))) From fc0144dca99e6ba3571d43084b97753c5e0f63c1 Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Thu, 6 Aug 2020 19:44:35 +0000 Subject: [PATCH 6/9] Added missing optional info, per Laurie Carson's request --- physics/GFS_surface_generic.meta | 2 ++ 1 file changed, 2 insertions(+) diff --git a/physics/GFS_surface_generic.meta b/physics/GFS_surface_generic.meta index e8f09274a..7ab6c0000 100644 --- a/physics/GFS_surface_generic.meta +++ b/physics/GFS_surface_generic.meta @@ -275,6 +275,7 @@ dimensions = (number_of_land_surface_variables_perturbed) type = real kind = kind_phys + optional = F [lndp_var_list] standard_name = variables_to_be_perturbed_for_landperts long_name = variables to be perturbed for landperts @@ -282,6 +283,7 @@ dimensions = (number_of_land_surface_variables_perturbed) type = character kind = len=3 + optional = F [z01d] standard_name = perturbation_of_momentum_roughness_length long_name = perturbation of momentum roughness length From 2e60cb5ebfe5a4057fc95f3f9ecd98675ee98a0a Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Tue, 11 Aug 2020 15:57:53 +0000 Subject: [PATCH 7/9] rte-rrtmgp submodule update --- physics/rte-rrtmgp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/physics/rte-rrtmgp b/physics/rte-rrtmgp index 7dfff2025..6ee0b62c1 160000 --- a/physics/rte-rrtmgp +++ b/physics/rte-rrtmgp @@ -1 +1 @@ -Subproject commit 7dfff2025cae02c84b12df2402a39d77065f0e62 +Subproject commit 6ee0b62c1ac6204a89a4e922382b611c16dd5fa7 From 0249e670919dd32cb7810b57fdf0823e8569c8df Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Tue, 11 Aug 2020 15:57:53 +0000 Subject: [PATCH 8/9] rte-rrtmgp submodule update --- physics/GFS_rrtmgp_sw_pre.F90 | 11 +++++------ physics/rte-rrtmgp | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/physics/GFS_rrtmgp_sw_pre.F90 b/physics/GFS_rrtmgp_sw_pre.F90 index 2683a637a..f6aac60b1 100644 --- a/physics/GFS_rrtmgp_sw_pre.F90 +++ b/physics/GFS_rrtmgp_sw_pre.F90 @@ -40,17 +40,16 @@ subroutine GFS_rrtmgp_sw_pre_run(me, nCol, nLev, lndp_type, n_var_lndp,lndp_var_ me, & ! Current MPI rank nCol, & ! Number of horizontal grid points nLev, & ! Number of vertical layers - n_var_lndp & ! Number of surface variables perturbed + n_var_lndp, & ! Number of surface variables perturbed lndp_type ! Type of land perturbations scheme used - character(len=3), dimension(n_var_lndp), intent(in) :: + character(len=3), dimension(n_var_lndp), intent(in) :: & lndp_var_list - real(kind_phys), dimension(n_var_lndp), intent(in) :: + real(kind_phys), dimension(n_var_lndp), intent(in) :: & lndp_prt_list logical,intent(in) :: & - lsswr, ! Call RRTMGP SW radiation? + lsswr ! Call RRTMGP SW radiation? real(kind_phys), intent(in) :: & - solhr ! Time in hours after 00z at the current timestep - lndp_alb ! Magnitude of surface albedo perturbation (frac) + solhr ! Time in hours after 00z at the current timestep real(kind_phys), dimension(nCol), intent(in) :: & lsmask, & ! Landmask: sea/land/ice=0/1/2 lon, & ! Longitude diff --git a/physics/rte-rrtmgp b/physics/rte-rrtmgp index 7dfff2025..6ee0b62c1 160000 --- a/physics/rte-rrtmgp +++ b/physics/rte-rrtmgp @@ -1 +1 @@ -Subproject commit 7dfff2025cae02c84b12df2402a39d77065f0e62 +Subproject commit 6ee0b62c1ac6204a89a4e922382b611c16dd5fa7 From e05c676744e9592688c9cc0b8f989fc6d578e735 Mon Sep 17 00:00:00 2001 From: ClaraDraper-NOAA Date: Tue, 25 Aug 2020 22:15:52 +0000 Subject: [PATCH 9/9] added missing 'intent = in' to meta files --- physics/GFS_rrtmgp_sw_pre.meta | 2 ++ physics/GFS_surface_generic.meta | 2 ++ 2 files changed, 4 insertions(+) diff --git a/physics/GFS_rrtmgp_sw_pre.meta b/physics/GFS_rrtmgp_sw_pre.meta index b2330237b..543c56bbf 100644 --- a/physics/GFS_rrtmgp_sw_pre.meta +++ b/physics/GFS_rrtmgp_sw_pre.meta @@ -48,6 +48,7 @@ dimensions = (number_of_land_surface_variables_perturbed) type = real kind = kind_phys + intent = in optional = F [lndp_var_list] standard_name = variables_to_be_perturbed_for_landperts @@ -56,6 +57,7 @@ dimensions = (number_of_land_surface_variables_perturbed) type = character kind = len=3 + intent = in optional = F [lsswr] standard_name = flag_to_calc_sw diff --git a/physics/GFS_surface_generic.meta b/physics/GFS_surface_generic.meta index 7ab6c0000..86b52b87c 100644 --- a/physics/GFS_surface_generic.meta +++ b/physics/GFS_surface_generic.meta @@ -275,6 +275,7 @@ dimensions = (number_of_land_surface_variables_perturbed) type = real kind = kind_phys + intent = in optional = F [lndp_var_list] standard_name = variables_to_be_perturbed_for_landperts @@ -283,6 +284,7 @@ dimensions = (number_of_land_surface_variables_perturbed) type = character kind = len=3 + intent = in optional = F [z01d] standard_name = perturbation_of_momentum_roughness_length