Skip to content

Commit cc524de

Browse files
authored
Add Turbulent Orographic Form Drag to SFCLAY (#2284)
TYPE: new feature KEYWORDS: surface layer, turbulent form drag SOURCE: Songyou Hong DESCRIPTION OF CHANGES: Turbulent form drag (TOFD) was added in computing surface drag (kim_tofd=.true., default). A factor for TOFD was added (tofd_factor=.003, default). LIST OF MODIFIED FILES: M arch/Externals.cfg M dyn_em/module_first_rk_step_part1.F M phys/module_sf_sfclayrev.F M phys/module_surface_driver.F TESTS CONDUCTED: The Jenkins tests are all passing. RELEASE NOTE: This PR adds a scale-aware turbulent orographic form drag option (kim_tofd) in revised MM5 surface layer scheme. The default value for the option is on and it would increase surface drag. Use this new option with care.
1 parent e27bf0b commit cc524de

File tree

5 files changed

+32
-1
lines changed

5 files changed

+32
-1
lines changed

Registry/Registry.EM_COMMON

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2888,6 +2888,8 @@ rconfig integer damp_opt namelist,dynamics 1 3
28882888
rconfig integer rad_nudge namelist,dynamics 1 0 irh "rad_nudge" "" ""
28892889
rconfig integer gwd_opt namelist,dynamics max_domains 0 irh "gwd_opt" "" ""
28902890
rconfig integer gwd_diags namelist,dynamics 1 0 irh "gwd_diags" "switch to turn on extra gwd diagnostics if available for given gwd_opt" ""
2891+
rconfig logical kim_tofd namelist,dynamics max_domains .true. rh "kim_tofd" "turbulent form drag (tofd) option for kim gravity wave drag" ""
2892+
rconfig real tofd_factor namelist,dynamics max_domains .003 rh "tofd_factor" "factor in kim tofd scheme" ""
28912893
rconfig real zdamp namelist,dynamics max_domains 5000. h "zdamp" "" ""
28922894
rconfig real dampcoef namelist,dynamics max_domains 0.2 h "dampcoef" "" ""
28932895
rconfig real khdif namelist,dynamics max_domains 0 h "khdif" "" ""

dyn_em/module_first_rk_step_part1.F

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -710,6 +710,10 @@ SUBROUTINE first_rk_step_part1 ( grid , config_flags &
710710
#if ( EM_CORE == 1)
711711
& ,LakeMask=grid%LakeMask & !lake
712712
& ,restart_flag=restart_flag & !flag showing if is a restart timestep
713+
! TOFD for KIM gwdo scheme
714+
& ,kim_tofd=config_flags%kim_tofd &
715+
& ,tofd_factor=config_flags%tofd_factor &
716+
& ,VAR2D=grid%var2d &
713717
#endif
714718
! CLM Varaibles
715719
& ,NUMC=grid%numc,NUMP=grid%nump,SABV=grid%sabv,SABG=grid%sabg, &

phys/module_sf_sfclayrev.F

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ subroutine sfclayrev(u3d,v3d,t3d,qv3d,p3d,dz8w, &
2222
gz1oz0,wspd,br,isfflx,dx, &
2323
svp1,svp2,svp3,svpt0,ep1,ep2, &
2424
karman,p1000mb,lakemask, &
25+
kim_tofd,tofd_factor,var2d, &
2526
ids,ide,jds,jde,kds,kde, &
2627
ims,ime,jms,jme,kms,kme, &
2728
its,ite,jts,jte,kts,kte, &
@@ -44,6 +45,8 @@ subroutine sfclayrev(u3d,v3d,t3d,qv3d,p3d,dz8w, &
4445
real(kind=kind_phys),intent(in):: ep1,ep2,karman
4546
real(kind=kind_phys),intent(in):: p1000mb
4647
real(kind=kind_phys),intent(in):: cp,g,rovcp,r,xlv
48+
real(kind=kind_phys),intent(in):: tofd_factor
49+
logical,intent(in):: kim_tofd
4750

4851
real(kind=kind_phys),intent(in),dimension(ims:ime,jms:jme):: &
4952
dx, &
@@ -52,6 +55,7 @@ subroutine sfclayrev(u3d,v3d,t3d,qv3d,p3d,dz8w, &
5255
psfc, &
5356
tsk, &
5457
xland, &
58+
var2d, &
5559
lakemask, &
5660
water_depth
5761

@@ -120,6 +124,7 @@ subroutine sfclayrev(u3d,v3d,t3d,qv3d,p3d,dz8w, &
120124

121125
real(kind=kind_phys),dimension(its:ite):: &
122126
dx_hv,mavail_hv,pblh_hv,psfc_hv,tsk_hv,xland_hv,water_depth_hv,lakemask_hv
127+
real(kind=kind_phys),dimension(its:ite):: var2d_hv
123128
real(kind=kind_phys),dimension(its:ite,kts:kte):: &
124129
dz_hv,u_hv,v_hv,qv_hv,p_hv,t_hv
125130

@@ -154,6 +159,7 @@ subroutine sfclayrev(u3d,v3d,t3d,qv3d,p3d,dz8w, &
154159
psfc_hv(i) = psfc(i,j)
155160
tsk_hv(i) = tsk(i,j)
156161
xland_hv(i) = xland(i,j)
162+
var2d_hv(i) = var2d(i,j)
157163
lakemask_hv(i) = lakemask(i,j)
158164
water_depth_hv(i) = water_depth(i,j)
159165

@@ -209,6 +215,7 @@ subroutine sfclayrev(u3d,v3d,t3d,qv3d,p3d,dz8w, &
209215
zol=zol_hv,mol=mol_hv,regime=regime_hv,psim=psim_hv, &
210216
psih=psih_hv,fm=fm_hv,fh=fh_hv,xland=xland_hv,lakemask=lakemask_hv, &
211217
hfx=hfx_hv,qfx=qfx_hv,tsk=tsk_hv,u10=u10_hv, &
218+
varf=var2d_hv,if_kim_tofd=kim_tofd,tofd_factor=tofd_factor, &
212219
v10=v10_hv,th2=th2_hv,t2=t2_hv,q2=q2_hv,flhc=flhc_hv, &
213220
flqc=flqc_hv,qgh=qgh_hv,qsfc=qsfc_hv,lh=lh_hv, &
214221
gz1oz0=gz1oz0_hv,wspd=wspd_hv,br=br_hv,isfflx=l_isfflx,dx=dx_hv, &

phys/module_surface_driver.F

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,10 @@ SUBROUTINE surface_driver( &
116116
& ,lakemask & !lake
117117
, restart_flag & ! restart_flag
118118
#endif
119+
! KIM TOFD
120+
,kim_tofd & ! kim tofd
121+
,tofd_factor & ! kim tofd
122+
,var2d & ! kim tofd
119123
! cyl ocean variable
120124
,OM_TMP,OM_S,OM_U,OM_V,OM_DEPTH,OM_ML,OM_LON &
121125
& ,OM_LAT,okms,okme,rdx,rdy,msfu,msfv,msft &
@@ -634,6 +638,9 @@ SUBROUTINE surface_driver( &
634638
INTEGER, INTENT(IN):: IFNDSNOWSI
635639
LOGICAL, INTENT(IN):: do_bioe
636640
LOGICAL, INTENT(IN):: do_meganfile
641+
! kim tofd
642+
REAL, INTENT(IN):: tofd_factor
643+
LOGICAL, INTENT(IN):: kim_tofd
637644

638645
INTEGER, INTENT(IN):: NLCAT, mosaic_lu, mosaic_soil
639646
INTEGER, INTENT(IN):: NSCAT
@@ -705,6 +712,9 @@ SUBROUTINE surface_driver( &
705712
REAL, DIMENSION( ims:ime , jms:jme ), INTENT(INOUT):: VEGFRA
706713
!------fds (06/2010)--------------------------
707714
REAL, DIMENSION( ims:ime , jms:jme ), INTENT(INOUT):: XICE
715+
!---------------------------------------------
716+
!------kim tofd (01/2025)--------------------------
717+
REAL, DIMENSION( ims:ime , jms:jme ), INTENT(IN):: var2d
708718
!---------------------------------------------
709719
REAL, DIMENSION( ims:ime , jms:jme ), INTENT(INOUT):: ALBSI
710720
REAL, DIMENSION( ims:ime , jms:jme ), INTENT(INOUT):: ICEDEPTH
@@ -2155,6 +2165,7 @@ SUBROUTINE surface_driver( &
21552165
gz1oz0,wspd,br,isfflx,dx2d, &
21562166
svp1,svp2,svp3,svpt0,ep_1,ep_2,karman, &
21572167
P1000mb,lakemask, &
2168+
kim_tofd, tofd_factor, var2d, &
21582169
XICE,SST,TSK_SEA, &
21592170
CHS2_SEA,CHS_SEA,CPM_SEA,CQS2_SEA,FLHC_SEA,FLQC_SEA, &
21602171
HFX_SEA,LH_SEA,QFX_SEA,QGH_SEA,QSFC_SEA,ZNT_SEA, &
@@ -2174,6 +2185,7 @@ SUBROUTINE surface_driver( &
21742185
gz1oz0,wspd,br,isfflx,dx2d, &
21752186
svp1,svp2,svp3,svpt0,ep_1,ep_2,karman, &
21762187
P1000mb,lakemask, &
2188+
kim_tofd, tofd_factor, var2d, &
21772189
ids,ide, jds,jde, kds,kde, &
21782190
ims,ime, jms,jme, kms,kme, &
21792191
i_start(ij),i_end(ij), j_start(ij),j_end(ij), kts,kte, &
@@ -5935,6 +5947,7 @@ SUBROUTINE sfclayrev_seaice_wrapper(U3D,V3D,T3D,QV3D,P3D,dz8w, &
59355947
SVP1,SVP2,SVP3,SVPT0,EP1,EP2, &
59365948
KARMAN, &
59375949
P1000,LAKEMASK, &
5950+
kim_tofd, tofd_factor, var2d, &
59385951
XICE,SST,TSK_SEA, &
59395952
CHS2_SEA,CHS_SEA,CPM_SEA,CQS2_SEA,FLHC_SEA,FLQC_SEA, &
59405953
HFX_SEA,LH_SEA,QFX_SEA,QGH_SEA,QSFC_SEA,ZNT_SEA, &
@@ -5957,6 +5970,8 @@ SUBROUTINE sfclayrev_seaice_wrapper(U3D,V3D,T3D,QV3D,P3D,dz8w, &
59575970
REAL, INTENT(IN ) :: SVP1,SVP2,SVP3,SVPT0
59585971
REAL, INTENT(IN ) :: EP1,EP2,KARMAN
59595972
REAL, INTENT(IN ) :: P1000
5973+
logical, intent(in ) :: kim_tofd
5974+
REAL, INTENT(IN ) :: tofd_factor
59605975

59615976
REAL, DIMENSION( ims:ime, kms:kme, jms:jme ) , &
59625977
INTENT(IN ) :: dz8w
@@ -5971,6 +5986,7 @@ SUBROUTINE sfclayrev_seaice_wrapper(U3D,V3D,T3D,QV3D,P3D,dz8w, &
59715986
PBLH, &
59725987
XLAND, &
59735988
LAKEMASK, &
5989+
var2d, &
59745990
TSK
59755991
REAL, DIMENSION( ims:ime, jms:jme ) , &
59765992
INTENT(OUT ) :: U10, &
@@ -6202,6 +6218,7 @@ SUBROUTINE sfclayrev_seaice_wrapper(U3D,V3D,T3D,QV3D,P3D,dz8w, &
62026218
SVP1,SVP2,SVP3,SVPT0,EP1,EP2, &
62036219
KARMAN, &
62046220
P1000,lakemask, &
6221+
kim_tofd, tofd_factor, var2d, &
62056222
ids,ide, jds,jde, kds,kde, &
62066223
ims,ime, jms,jme, kms,kme, &
62076224
its,ite, jts,jte, kts,kte, &
@@ -6296,6 +6313,7 @@ SUBROUTINE sfclayrev_seaice_wrapper(U3D,V3D,T3D,QV3D,P3D,dz8w, &
62966313
SVP1,SVP2,SVP3,SVPT0,EP1,EP2, &
62976314
KARMAN, &
62986315
P1000,lakemask, &
6316+
kim_tofd, tofd_factor, var2d, &
62996317
ids,ide, jds,jde, kds,kde, &
63006318
ims,ime, jms,jme, kms,kme, &
63016319
its,ite, jts,jte, kts,kte, & ! 0

0 commit comments

Comments
 (0)