Skip to content

Commit

Permalink
Merge pull request #464 from climbfuji/update_dtc_develop_from_master…
Browse files Browse the repository at this point in the history
…_20200629

Update dtc/develop from master 2020/06/29
  • Loading branch information
climbfuji authored Jun 30, 2020
2 parents 19998f0 + ba62870 commit 1b9ef12
Show file tree
Hide file tree
Showing 7 changed files with 62 additions and 45 deletions.
8 changes: 4 additions & 4 deletions physics/gfdl_fv_sat_adj.F90
Original file line number Diff line number Diff line change
Expand Up @@ -269,7 +269,7 @@ subroutine fv_sat_adj_run(mdt, zvir, is, ie, isd, ied, kmp, km, kmdelz, js, je,
real(kind=kind_dyn), intent(in) :: hs(isd:ied, jsd:jed)
real(kind=kind_dyn), intent(in) :: peln(is:ie, 1:km+1, js:je)
! For hydrostatic build, kmdelz=1, otherwise kmdelz=km (see fv_arrays.F90)
real(kind=kind_dyn), intent(in) :: delz(isd:ied, jsd:jed, 1:kmdelz)
real(kind=kind_dyn), intent(in) :: delz(is:ie, js:je, 1:kmdelz)
real(kind=kind_dyn), intent(in) :: delp(isd:ied, jsd:jed, 1:km)
real(kind=kind_dyn), intent(inout) :: pt(isd:ied, jsd:jed, 1:km)
real(kind=kind_dyn), intent(inout) :: pkz(is:ie, js:je, 1:km)
Expand Down Expand Up @@ -342,7 +342,7 @@ subroutine fv_sat_adj_run(mdt, zvir, is, ie, isd, ied, kmp, km, kmdelz, js, je,
#endif
ql(isd,jsd,k), qi(isd,jsd,k), &
qr(isd,jsd,k), qs(isd,jsd,k), qg(isd,jsd,k), &
hs, dpln, delz(isd:,jsd:,kdelz), pt(isd,jsd,k), delp(isd,jsd,k),&
hs, dpln, delz(is:,js:,kdelz), pt(isd,jsd,k), delp(isd,jsd,k),&
q_con(isd:,jsd:,k), cappa(isd:,jsd:,k), area, dtdt(is,js,k), &
out_dt, last_step, do_qa, qa(isd,jsd,k))
if ( .not. hydrostatic ) then
Expand Down Expand Up @@ -402,8 +402,8 @@ subroutine fv_sat_adj_work(mdt, zvir, is, ie, js, je, ng, hydrostatic, consv_te,
integer, intent (in) :: is, ie, js, je, ng
logical, intent (in) :: hydrostatic, consv_te, out_dt, last_step, do_qa
real(kind=kind_dyn), intent (in) :: zvir, mdt ! remapping time step
real(kind=kind_dyn), intent (in), dimension (is - ng:ie + ng, js - ng:je + ng) :: dp, delz, hs
real(kind=kind_dyn), intent (in), dimension (is:ie, js:je) :: dpln
real(kind=kind_dyn), intent (in), dimension (is - ng:ie + ng, js - ng:je + ng) :: dp, hs
real(kind=kind_dyn), intent (in), dimension (is:ie, js:je) :: dpln, delz
real(kind=kind_dyn), intent (inout), dimension (is - ng:ie + ng, js - ng:je + ng) :: pt
#ifdef MULTI_GASES
real(kind=kind_dyn), intent (inout), dimension (is - ng:ie + ng, js - ng:je + ng, 1:1, 1:num_gas) :: qvi
Expand Down
2 changes: 1 addition & 1 deletion physics/gfdl_fv_sat_adj.meta
Original file line number Diff line number Diff line change
Expand Up @@ -352,7 +352,7 @@
standard_name = thickness_at_Lagrangian_surface
long_name = thickness at Lagrangian_surface
units = m
dimensions = (starting_x_direction_index_domain:ending_x_direction_index_domain,starting_y_direction_index_domain:ending_y_direction_index_domain,1:vertical_dimension_for_thickness_at_Lagrangian_surface)
dimensions = (starting_x_direction_index:ending_x_direction_index,starting_y_direction_index:ending_y_direction_index,1:vertical_dimension_for_thickness_at_Lagrangian_surface)
type = real
kind = kind_dyn
intent = in
Expand Down
2 changes: 1 addition & 1 deletion physics/radsw_datatb.f
Original file line number Diff line number Diff line change
Expand Up @@ -2551,7 +2551,7 @@ module module_radsw_sflux !
!> band index (3rd index in array sfluxref described below)
integer, dimension(nblow:nbhgh), public :: ibx

data layreffr/ 18,30, 6, 3, 3, 8, 2, 6, 1, 2, 0,32,58,49 /
data layreffr/ 18,30, 6, 3, 3, 8, 2, 6, 1, 2, 0,32,42,49 /
data ix1 / 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 3, 0 /
data ix2 / 5, 2, 5, 2, 0, 2, 6, 0, 6, 0, 0, 0, 6, 0 /
data ibx / 1, 1, 1, 2, 2, 3, 4, 3, 5, 4, 5, 6, 2, 7 /
Expand Down
16 changes: 3 additions & 13 deletions physics/samfdeepcnv.f
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,7 @@ subroutine samfdeepcnv_run (im,ix,km,itc,ntc,cliq,cp,cvap, &
parameter(clamd=0.03,tkemx=0.65,tkemn=0.05)
parameter(dtke=tkemx-tkemn)
parameter(dbeta=0.1)
parameter(cthk=200.,dthk=25.)
parameter(cthk=150.,dthk=25.)
parameter(cinpcrmx=180.,cinpcrmn=120.)
! parameter(cinacrmx=-120.,cinacrmn=-120.)
parameter(cinacrmx=-120.,cinacrmn=-80.)
Expand Down Expand Up @@ -1239,23 +1239,13 @@ subroutine samfdeepcnv_run (im,ix,km,itc,ntc,cliq,cp,cvap, &
c specify upper limit of mass flux at cloud base
c
!> - Calculate the maximum value of the cloud base mass flux using the CFL-criterion-based formula of Han and Pan (2011) \cite han_and_pan_2011, equation 7.
if(hwrf_samfdeep) then
do i = 1, im
do i = 1, im
if(cnvflg(i)) then
k = kbcon(i)
dp = 1000. * del(i,k)
xmbmax(i) = dp / (grav * dt2)
endif
enddo
else
do i = 1, im
if(cnvflg(i)) then
k = kbcon(i)
dp = 1000. * del(i,k)
xmbmax(i) = dp / (2. * grav * dt2)
endif
enddo
endif
enddo
c
c compute cloud moisture property and precipitation
c
Expand Down
37 changes: 28 additions & 9 deletions physics/satmedmfvdifq.F
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,8 @@ end subroutine satmedmfvdifq_finalize
!! @{
subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, &
& grav,rd,cp,rv,hvap,hfus,fv,eps,epsm1, &
& dv,du,tdt,rtg,u1,v1,t1,q1,swh,hlw,xmu,garea, &
& psk,rbsoil,zorl,u10m,v10m,fm,fh, &
& dv,du,tdt,rtg,u1,v1,t1,q1,swh,hlw,xmu,garea,islimsk, &
& snwdph_lnd,psk,rbsoil,zorl,u10m,v10m,fm,fh, &
& tsea,heat,evap,stress,spd1,kpbl, &
& prsi,del,prsl,prslk,phii,phil,delt, &
& dspheat,dusfc,dvsfc,dtsfc,dqsfc,hpbl, &
Expand All @@ -75,6 +75,7 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, &
!----------------------------------------------------------------------
integer, intent(in) :: ix, im, km, ntrac, ntcw, ntiw, ntke
integer, intent(in) :: kinver(im)
integer, intent(in) :: islimsk(im)
integer, intent(out) :: kpbl(im)
!
real(kind=kind_phys), intent(in) :: grav,rd,cp,rv,hvap,hfus,fv, &
Expand All @@ -88,6 +89,7 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, &
& t1(ix,km), q1(ix,km,ntrac), &
& swh(ix,km), hlw(ix,km), &
& xmu(im), garea(im), &
& snwdph_lnd(im), &
& psk(ix), rbsoil(im), &
& zorl(im), tsea(im), &
& u10m(im), v10m(im), &
Expand Down Expand Up @@ -201,6 +203,8 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, &
& zlup, zldn, bsum,
& tem, tem1, tem2,
& ptem, ptem0, ptem1, ptem2
!
real(kind=kind_phys) xkzm_mp, xkzm_hp
!
real(kind=kind_phys) ck0, ck1, ch0, ch1, ce0, rchck
!
Expand All @@ -212,7 +216,7 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, &
parameter(gamcrt=3.,gamcrq=0.,sfcfrac=0.1)
parameter(vk=0.4,rimin=-100.)
parameter(rbcr=0.25,zolcru=-0.02,tdzmin=1.e-3)
parameter(rlmn=30.,rlmn1=5.,rlmn2=15.)
parameter(rlmn=30.,rlmn1=5.,rlmn2=10.)
parameter(rlmx=300.,elmx=300.)
parameter(prmin=0.25,prmax=4.0)
parameter(pr0=1.0,prtke=1.0,prscu=0.67)
Expand All @@ -222,7 +226,7 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, &
parameter(aphi5=5.,aphi16=16.)
parameter(elmfac=1.0,elefac=1.0,cql=100.)
parameter(dw2min=1.e-4,dkmax=1000.,xkgdx=5000.)
parameter(qlcr=3.5e-5,zstblmax=2500.,xkzinv=0.15)
parameter(qlcr=3.5e-5,zstblmax=2500.,xkzinv=0.1)
parameter(h1=0.33333333)
parameter(ck0=0.4,ck1=0.15,ch0=0.4,ch1=0.15)
parameter(ce0=0.4)
Expand Down Expand Up @@ -317,16 +321,31 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, &
!! \n xkzm_mx = 0.01 + (xkzm_h - 0.01)/(xkgdx-5.) * (gdx-5.)

do i=1,im
xkzm_mp = xkzm_m
xkzm_hp = xkzm_h
!
if( islimsk(i) == 1 .and. snwdph_lnd(i) > 10.0 ) then ! over land
if (rbsoil(i) > 0. .and. rbsoil(i) <= 0.25) then
xkzm_mp = xkzm_m * (1.0 - rbsoil(i)/0.25)**2 +
& 0.1 * (1.0 - (1.0-rbsoil(i)/0.25)**2)
xkzm_hp = xkzm_h * (1.0 - rbsoil(i)/0.25)**2 +
& 0.1 * (1.0 - (1.0-rbsoil(i)/0.25)**2)
else if (rbsoil(i) > 0.25) then
xkzm_mp = 0.1
xkzm_hp = 0.1
endif
endif
!
kx1(i) = 1
tx1(i) = 1.0 / prsi(i,1)
tx2(i) = tx1(i)
if(gdx(i) >= xkgdx) then
xkzm_hx(i) = xkzm_h
xkzm_mx(i) = xkzm_m
xkzm_hx(i) = xkzm_hp
xkzm_mx(i) = xkzm_mp
else
tem = 1. / (xkgdx - 5.)
tem1 = (xkzm_h - 0.01) * tem
tem2 = (xkzm_m - 0.01) * tem
tem1 = (xkzm_hp - 0.01) * tem
tem2 = (xkzm_mp - 0.01) * tem
ptem = gdx(i) - 5.
xkzm_hx(i) = 0.01 + tem1 * ptem
xkzm_mx(i) = 0.01 + tem2 * ptem
Expand Down Expand Up @@ -833,7 +852,7 @@ subroutine satmedmfvdifq_run(ix,im,km,ntrac,ntcw,ntiw,ntke, &
! tem1 = (tvx(i,k+1)-tvx(i,k)) * rdzt(i,k)
! if(tem1 > 1.e-5) then
tem1 = tvx(i,k+1)-tvx(i,k)
if(tem1 > 0.) then
if(tem1 > 0. .and. islimsk(i) /= 1) then
xkzo(i,k) = min(xkzo(i,k), xkzinv)
xkzmo(i,k) = min(xkzmo(i,k), xkzinv)
rlmnz(i,k) = min(rlmnz(i,k), rlmn2)
Expand Down
17 changes: 17 additions & 0 deletions physics/satmedmfvdifq.meta
Original file line number Diff line number Diff line change
Expand Up @@ -284,6 +284,23 @@
kind = kind_phys
intent = in
optional = F
[islimsk]
standard_name = sea_land_ice_mask
long_name = sea/land/ice mask (=0/1/2)
units = flag
dimensions = (horizontal_dimension)
type = integer
intent = in
optional = F
[snwdph_lnd]
standard_name = surface_snow_thickness_water_equivalent_over_land
long_name = water equivalent snow depth over land
units = mm
dimensions = (horizontal_dimension)
type = real
kind = kind_phys
intent = in
optional = F
[psk]
standard_name = dimensionless_exner_function_at_lowest_model_interface
long_name = dimensionless Exner function at the surface interface
Expand Down
25 changes: 8 additions & 17 deletions physics/sfc_diff.f
Original file line number Diff line number Diff line change
Expand Up @@ -220,15 +220,11 @@ subroutine sfc_diff_run (im,rvrdm1,eps,epsm1,grav, & !intent(in)
z0max = max(z0max, 1.0e-6)

! czilc = 10.0 ** (- (0.40/0.07) * z0) ! fei's canopy height dependance of czil
! czilc = 0.8
czilc = 0.8
! tem1 = 1.0 - sigmaf(i)
! ztmax = z0max*exp( - tem1*tem1
! & * czilc*ca*sqrt(ustar_lnd(i)*(0.01/1.5e-05)))
!
czilc = 10.0 ** (- 4. * z0max) ! Trier et al. (2011, WAF)
ztmax = z0max * exp( - czilc * ca
& * 258.2 * sqrt(ustar_lnd(i)*z0max) )
tem1 = 1.0 - sigmaf(i)
ztmax = z0max*exp( - tem1*tem1
& * czilc*ca*sqrt(ustar_lnd(i)*(0.01/1.5e-05)))
! mg, sfc-perts: add surface perturbations to ztmax/z0max ratio over land
Expand Down Expand Up @@ -265,15 +261,11 @@ subroutine sfc_diff_run (im,rvrdm1,eps,epsm1,grav, & !intent(in)

! czilc = 10.0 ** (- (0.40/0.07) * z0) ! fei's canopy height
! dependance of czil
! czilc = 0.8
! tem1 = 1.0 - sigmaf(i)
! ztmax = z0max*exp( - tem1*tem1
! & * czilc*ca*sqrt(ustar_ice(i)*(0.01/1.5e-05)))
czilc = 10.0 ** (- 4. * z0max) ! Trier et al. (2011, WAF)
ztmax = z0max * exp( - czilc * ca
& * 258.2 * sqrt(ustar_ice(i)*z0max) )
czilc = 0.8
tem1 = 1.0 - sigmaf(i)
ztmax = z0max*exp( - tem1*tem1
& * czilc*ca*sqrt(ustar_ice(i)*(0.01/1.5e-05)))
ztmax = max(ztmax, 1.0e-6)
!
call stability
Expand Down Expand Up @@ -357,7 +349,6 @@ subroutine sfc_diff_run (im,rvrdm1,eps,epsm1,grav, & !intent(in)
else
z0rl_wat(i) = 1.0e-4
endif

endif
endif ! end of if(open ocean)
!
Expand Down

0 comments on commit 1b9ef12

Please sign in to comment.