Skip to content

Commit 52a9744

Browse files
authored
Update Orographic Gravity Drag scheme option 1 (#2285)
TYPE: enhancement KEYWORDS: orographic drag SOURCE: Songyou Hong (NCAR) DESCRIPTION OF CHANGES: YSU GWDO was revised following the study of Hong et al. (2025, WAF), now is called as Korean Integrated Model (KIM) GWDO. KIM GWDO requires additional maximum orography file, "ELVMAX" in WPS. Non-hydrostatic effect of Xu et al. (2024, JAS) was also added (gwd_if_nonhyd=.true., default). Factor for the effective grid spacing was added (gwd_dx_factor=2.0, default). LIST OF MODIFIED FILES: m Registry/Registry.EM_COMMON m arch/Externals.cfg m dyn_em/module_first_rk_step_part1.F m phys/module_bl_gwdo.F m phys/module_pbl_driver.F TESTS CONDUCTED: 1. Tested in MPAS. 2. The Jenkins tests are all passing. RELEASE NOTE: Orographic gravity drag option gwd_opt = 1 is updated in this PR. Other added options are gwd_dx_factor = 2 (effective grid size) and gwd_if_nonhyd = .true. (nonhydrostatic effect option). Requires the use of updated WPS.
1 parent cee7345 commit 52a9744

7 files changed

Lines changed: 42 additions & 14 deletions

File tree

Registry/Registry.EM_COMMON

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1179,6 +1179,7 @@ state real OL1 ij misc 1 - i012rhd "OL
11791179
state real OL2 ij misc 1 - i012rhd "OL2" "NON-DIMENSIONAL EFFECTIVE OROGRAPHIC LENGTH FOR SOUTHERLY FLOW" ""
11801180
state real OL3 ij misc 1 - i012rhd "OL3" "NON-DIMENSIONAL EFFECTIVE OROGRAPHIC LENGTH FOR SOUTH-WESTERLY FLOW" ""
11811181
state real OL4 ij misc 1 - i012rhd "OL4" "NON-DIMENSIONAL EFFECTIVE OROGRAPHIC LENGTH FOR NORTH-WESTERLY FLOW" ""
1182+
state real ELVMAX ij misc 1 - i012rhd "ELVMAX" "MAXIMUM OROGRAPHIC HEIGHT" "m"
11821183

11831184
# Additional for GSL gravity wave drag suite
11841185
state real DTAUX3D_ls ikj misc 1 - rh "DTAUX3D_ls" "LOCAL U GWDO STRESS LARGE-SCALE" "m s-2"
@@ -2888,8 +2889,13 @@ rconfig integer damp_opt namelist,dynamics 1 3
28882889
rconfig integer rad_nudge namelist,dynamics 1 0 irh "rad_nudge" "" ""
28892890
rconfig integer gwd_opt namelist,dynamics max_domains 0 irh "gwd_opt" "" ""
28902891
rconfig integer gwd_diags namelist,dynamics 1 0 irh "gwd_diags" "switch to turn on extra gwd diagnostics if available for given gwd_opt" ""
2892+
<<<<<<< HEAD
2893+
rconfig real gwd_dx_factor namelist,dynamics max_domains 2. rh "gwd_dx_factor" "effective grid factor for kim gravity wave drag" ""
2894+
rconfig logical gwd_if_nonhyd namelist,dynamics max_domains .true. rh "gwd_if_nonhyd" "non_hydrostatic option for kim gravity wave drag" ""
2895+
=======
28912896
rconfig logical kim_tofd namelist,dynamics max_domains .true. rh "kim_tofd" "turbulent form drag (tofd) option for kim gravity wave drag" ""
28922897
rconfig real tofd_factor namelist,dynamics max_domains .003 rh "tofd_factor" "factor in kim tofd scheme" ""
2898+
>>>>>>> cc524de3ed762a43176cf5318b47656d4a284e7c
28932899
rconfig real zdamp namelist,dynamics max_domains 5000. h "zdamp" "" ""
28942900
rconfig real dampcoef namelist,dynamics max_domains 0.2 h "dampcoef" "" ""
28952901
rconfig real khdif namelist,dynamics max_domains 0 h "khdif" "" ""
@@ -3300,7 +3306,7 @@ package swintopt2 swint_opt==2 - state:swdown2
33003306
package aercuopt aercu_used==1 - state:aeromcu,CU_UAF,EFCS,EFIS,EFSS,qr_cu,qs_cu,nc_cu,ni_cu,nr_cu,ns_cu,ccn_cu,aerovar;aerocu:cu_sulfate,cu_seasalt,cu_dust1,cu_dust2,cu_dust3,cu_dust4,cu_phoocar,cu_phiocar,cu_phobcar,cu_phibcar
33013307

33023308
package slopeopt slope_rad==1 - -
3303-
package gwd_used_1 gwd_used==1 - state:oc12d,oa1,oa2,oa3,oa4,ol1,ol2,ol3,ol4,dtaux3d,dtauy3d,dusfcg,dvsfcg
3309+
package gwd_used_1 gwd_used==1 - state:oc12d,oa1,oa2,oa3,oa4,ol1,ol2,ol3,ol4,elvmax,dtaux3d,dtauy3d,dusfcg,dvsfcg
33043310
package gwd_used_3 gwd_used==3 - state:var2dls,oc12dls,oa1ls,oa2ls,oa3ls,oa4ls,ol1ls,ol2ls,ol3ls,ol4ls,var2dss,oc12dss,oa1ss,oa2ss,oa3ss,oa4ss,ol1ss,ol2ss,ol3ss,ol4ss
33053311
package gwd_diags_used_3 gwd_diags_used==3 - state:dtaux3d_ls,dtauy3d_ls,dtaux3d_bl,dtauy3d_bl,dtaux3d_ss,dtauy3d_ss,dtaux3d_fd,dtauy3d_fd,dusfcg_ls,dvsfcg_ls,dusfcg_bl,dvsfcg_bl,dusfcg_ss,dvsfcg_ss,dusfcg_fd,dvsfcg_fd
33063312
package nogwdopt gwd_opt==0 - -

dyn_em/module_first_rk_step_part1.F

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1300,13 +1300,16 @@ SUBROUTINE first_rk_step_part1 ( grid , config_flags &
13001300
& ,PEK_ADV=scalar(ims,kms,jms,P_pek_adv) &!TKEadvection
13011301
& ,PEP_ADV=scalar(ims,kms,jms,P_pep_adv) &!TKEadvection
13021302
!GWD for ARW
1303-
& ,GWD_OPT=config_flags%gwd_opt &
1304-
& ,gwd_diags=config_flags%gwd_diags &
1303+
& ,GWD_OPT=config_flags%gwd_opt &
1304+
& ,gwd_diags=config_flags%gwd_diags &
1305+
& ,dx_factor=config_flags%gwd_dx_factor &
1306+
& ,if_nonhyd=config_flags%gwd_if_nonhyd &
13051307
& ,DTAUX3D=grid%dtaux3d,DTAUY3D=grid%dtauy3d &
13061308
& ,DUSFCG=grid%dusfcg,DVSFCG=grid%dvsfcg &
13071309
& ,VAR2D=grid%var2d,OC12D=grid%oc12d &
13081310
& ,OA1=grid%oa1,OA2=grid%oa2,OA3=grid%oa3,OA4=grid%oa4 &
13091311
& ,OL1=grid%ol1,OL2=grid%ol2,OL3=grid%ol3,OL4=grid%ol4 &
1312+
& ,elvmax=grid%elvmax &
13101313
& ,SINA=grid%sina,COSA=grid%cosa &
13111314
& ,dtaux3d_ls=grid%dtaux3d_ls,dtauy3d_ls=grid%dtauy3d_ls &
13121315
& ,dtaux3d_bl=grid%dtaux3d_bl,dtauy3d_bl=grid%dtauy3d_bl &

phys/module_bl_gwdo.F

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,10 @@ subroutine gwdo(u3d,v3d,t3d,qv3d,p3d,p3di,pi3d,z, &
1818
rublten,rvblten, &
1919
dtaux3d,dtauy3d,dusfcg,dvsfcg, &
2020
var2d,oc12d,oa2d1,oa2d2,oa2d3,oa2d4,ol2d1,ol2d2,ol2d3,ol2d4, &
21-
sina,cosa,znu,znw,p_top, &
21+
elvmax,sina,cosa,znu,znw,p_top, &
2222
cp,g,rd,rv,ep1,pi, &
2323
dt,dx,kpbl2d,itimestep, &
24+
dx_factor,if_nonhyd, &
2425
ids,ide, jds,jde, kds,kde, &
2526
ims,ime, jms,jme, kms,kme, &
2627
its,ite, jts,jte, kts,kte, &
@@ -78,6 +79,8 @@ subroutine gwdo(u3d,v3d,t3d,qv3d,p3d,p3di,pi3d,z, &
7879
integer,intent(in),dimension(ims:ime,jms:jme):: kpbl2d
7980

8081
real(kind=kind_phys),intent(in):: dt,cp,g,rd,rv,ep1,pi
82+
real(kind=kind_phys),intent(in):: dx_factor
83+
logical ,intent(in):: if_nonhyd
8184
real(kind=kind_phys),intent(in),optional:: p_top
8285

8386
real(kind=kind_phys),intent(in),dimension(kms:kme),optional:: &
@@ -90,6 +93,7 @@ subroutine gwdo(u3d,v3d,t3d,qv3d,p3d,p3di,pi3d,z, &
9093
oc12d, &
9194
oa2d1,oa2d2,oa2d3,oa2d4, &
9295
ol2d1,ol2d2,ol2d3,ol2d4, &
96+
elvmax, &
9397
sina,cosa
9498

9599
real(kind=kind_phys),intent(in),dimension(ims:ime,kms:kme,jms:jme):: &
@@ -126,7 +130,7 @@ subroutine gwdo(u3d,v3d,t3d,qv3d,p3d,p3di,pi3d,z, &
126130
integer:: i,j,k
127131

128132
real(kind=kind_phys),dimension(its:ite):: &
129-
var2d_hv,oc12d_hv,dx_hv,sina_hv,cosa_hv
133+
var2d_hv,oc12d_hv,dx_hv,sina_hv,cosa_hv,elvmax_hv
130134
real(kind=kind_phys),dimension(its:ite):: &
131135
oa2d1_hv,oa2d2_hv,oa2d3_hv,oa2d4_hv,ol2d1_hv,ol2d2_hv,ol2d3_hv,ol2d4_hv
132136
real(kind=kind_phys),dimension(its:ite):: &
@@ -195,6 +199,7 @@ subroutine gwdo(u3d,v3d,t3d,qv3d,p3d,p3di,pi3d,z, &
195199
ol2d2_hv(i) = ol2d2(i,j)
196200
ol2d3_hv(i) = ol2d3(i,j)
197201
ol2d4_hv(i) = ol2d4(i,j)
202+
elvmax_hv(i) =elvmax(i,j)
198203
enddo
199204

200205
call bl_gwdo_run(sina=sina_hv,cosa=cosa_hv &
@@ -211,6 +216,8 @@ subroutine gwdo(u3d,v3d,t3d,qv3d,p3d,p3di,pi3d,z, &
211216
,oa2d3=oa2d3_hv, oa2d4=oa2d4_hv &
212217
,ol2d1=ol2d1_hv, ol2d2=ol2d2_hv &
213218
,ol2d3=ol2d3_hv, ol2d4=ol2d4_hv &
219+
,omax=elvmax_hv &
220+
,dx_factor=dx_factor,if_nonhyd=if_nonhyd &
214221
,g_=g,cp_=cp,rd_=rd,rv_=rv,fv_=ep1,pi_=pi &
215222
,dxmeter=dx_hv,deltim=dt &
216223
,its=its,ite=ite,kte=kte,kme=kte+1 &

phys/module_pbl_driver.F

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,10 @@ SUBROUTINE pbl_driver( &
7272
,hol, mol, regime &
7373
! Optional gravity-wave drag
7474
,gwd_opt,gwd_diags &
75+
,dx_factor,if_nonhyd &
7576
,dtaux3d,dtauy3d &
7677
,dusfcg,dvsfcg,var2d,oc12d &
77-
,oa1,oa2,oa3,oa4,ol1,ol2,ol3,ol4 &
78+
,oa1,oa2,oa3,oa4,ol1,ol2,ol3,ol4,elvmax &
7879
,sina,cosa &
7980
,dtaux3d_ls,dtauy3d_ls &
8081
,dtaux3d_bl,dtauy3d_bl &
@@ -736,6 +737,8 @@ SUBROUTINE pbl_driver( &
736737
!
737738
INTEGER, OPTIONAL, INTENT(IN) :: gwd_opt,gwd_diags
738739
REAL, OPTIONAL, INTENT(IN) :: p_top
740+
REAL, OPTIONAL, INTENT(IN) :: dx_factor
741+
logical, OPTIONAL, INTENT(IN) :: if_nonhyd
739742
!
740743
real, dimension( ims:ime, kms:kme, jms:jme ) , &
741744
optional , &
@@ -754,6 +757,7 @@ SUBROUTINE pbl_driver( &
754757
real, dimension( ims:ime, jms:jme ) , &
755758
optional , &
756759
intent(in ) :: var2d, &
760+
elvmax, &
757761
oc12d, &
758762
oa1,oa2,oa3,oa4, &
759763
ol1,ol2,ol3,ol4, &
@@ -2162,12 +2166,13 @@ SUBROUTINE pbl_driver( &
21622166
,VAR2D=var2d,OC12D=oc12d &
21632167
,OA2D1=oa1,OA2D2=oa2,OA2D3=oa3,OA2D4=oa4 &
21642168
,OL2D1=ol1,OL2D2=ol2,OL2D3=ol3,OL2D4=ol4 &
2165-
,SINA=sina,COSA=cosa &
2169+
,elvmax=elvmax,SINA=sina,COSA=cosa &
21662170
,ZNU=znu,ZNW=znw,P_TOP=p_top &
21672171
,CP=cp,G=g,RD=r_d &
21682172
,RV=r_v,EP1=ep_1,PI=3.141592653 &
21692173
,DT=dtbl,DX=dx2d,KPBL2D=kpbl,ITIMESTEP=itimestep &
21702174
,errmsg=errmsg,errflg=errflg &
2175+
,dx_factor = dx_factor, if_nonhyd = if_nonhyd &
21712176
,IDS=ids,IDE=ide,JDS=jds,JDE=jde,KDS=kds,KDE=kde &
21722177
,IMS=ims,IME=ime,JMS=jms,JME=jme,KMS=kms,KME=kme &
21732178
,ITS=its,ITE=ite,JTS=jts,JTE=jte,KTS=kts,KTE=kte )

phys/physics_mmm

wrftladj/module_first_rk_step_part1_ad.F

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,13 +399,16 @@ SUBROUTINE a_first_rk_step_part1 ( grid , config_flags &
399399
& ,qcg=grid%qcg, grav_settling=config_flags%grav_settling &
400400
!GWD for ARW
401401
& ,GWD_OPT=config_flags%gwd_opt &
402+
& ,dx_factor=config_flags%gwd_dx_factor &
403+
& ,if_nonhyd=config_flags%gwd_if_nonhyd &
402404
& ,DTAUX3D=grid%dtaux3d,DTAUY3D=grid%dtauy3d &
403405
& ,DTAUX3DB=grid%a_dtaux3d,DTAUY3DB=grid%a_dtauy3d &
404406
& ,DUSFCG=grid%dusfcg,DVSFCG=grid%dvsfcg &
405407
& ,DUSFCGB=grid%a_dusfcg,DVSFCGB=grid%a_dvsfcg &
406408
& ,VAR2D=grid%var2d,OC12D=grid%oc12d &
407409
& ,OA1=grid%oa1,OA2=grid%oa2,OA3=grid%oa3,OA4=grid%oa4 &
408410
& ,OL1=grid%ol1,OL2=grid%ol2,OL3=grid%ol3,OL4=grid%ol4 &
411+
& ,elvmax=grid%elvmax &
409412
& ,SINA=grid%sina, COSA=grid%cosa &
410413
& ,MFSHCONV=grid%mfshconv &
411414
& ,MASSFLUX_EDKF=grid%massflux_EDKF &

wrftladj/module_pbl_driver_ad.F

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,10 @@ SUBROUTINE A_PBL_DRIVER(itimestep, dt, u_frame, v_frame, bldt, curr_secs&
4848
& rmol, ch, qcg, grav_settling, el_mynn, dqke, qwt, qshear, qbuoy, qdiss&
4949
& , tke_budget, ids, ide, jds, jde, kds, kde, ims, ime, jms, jme&
5050
& , kms, kme, i_start, i_end, j_start, j_end, kts, kte, num_tiles, hol, &
51-
& mol, regime, gwd_opt, dtaux3d, dtaux3db, dtauy3d, dtauy3db, dusfcg, &
52-
& dusfcgb, dvsfcg, dvsfcgb, var2d, oc12d, oa1, oa2, oa3, oa4, ol1, ol2, &
53-
& ol3, ol4, sina,cosa, qv_curr, qv_currb, qc_curr, qr_curr, qi_curr, qs_curr, &
51+
& mol, regime, gwd_opt, dx_factor, if_nonhyd, dtaux3d, dtaux3db, &
52+
dtauy3d, dtauy3db, dusfcg, dusfcgb, dvsfcg, dvsfcgb, var2d, oc12d, &
53+
oa1, oa2, oa3, oa4, ol1, ol2, ol3, ol4, elvmax, sina,cosa, qv_curr, &
54+
qv_currb, qc_curr, qr_curr, qi_curr, qs_curr, &
5455
& qg_curr, rqvblten, rqvbltenb, rqcblten, rqcbltenb, rqiblten, rqibltenb&
5556
& , rqrblten, rqsblten, rqgblten, f_qv, f_qc, f_qr, f_qi, f_qs, f_qg, &
5657
& frc_urb2d, a_u_bep, a_v_bep, a_t_bep, a_q_bep, b_u_bep, b_v_bep, &
@@ -428,6 +429,8 @@ SUBROUTINE A_PBL_DRIVER(itimestep, dt, u_frame, v_frame, bldt, curr_secs&
428429
!
429430
INTEGER, OPTIONAL, INTENT(IN) :: gwd_opt
430431
REAL, OPTIONAL, INTENT(IN) :: p_top
432+
REAL, OPTIONAL, INTENT(IN) :: dx_factor
433+
logical, OPTIONAL, INTENT(IN) :: if_nonhyd
431434
!
432435
REAL, DIMENSION(ims:ime, kms:kme, jms:jme), OPTIONAL, INTENT(INOUT) ::&
433436
& dtaux3d, dtauy3d
@@ -439,7 +442,7 @@ SUBROUTINE A_PBL_DRIVER(itimestep, dt, u_frame, v_frame, bldt, curr_secs&
439442
REAL, DIMENSION(ims:ime, jms:jme), OPTIONAL :: dusfcgb, dvsfcgb
440443
!
441444
REAL, DIMENSION(ims:ime, jms:jme), OPTIONAL, INTENT(IN) :: var2d, &
442-
& oc12d, oa1, oa2, oa3, oa4, ol1, ol2, ol3, ol4, sina, cosa
445+
& oc12d, oa1, oa2, oa3, oa4, ol1, ol2, ol3, ol4, elvmax, sina, cosa
443446
! paj
444447
!mchen
445448
REAL, DIMENSION(ims:ime, jms:jme), OPTIONAL, INTENT(IN) :: ctopo, &
@@ -679,10 +682,11 @@ SUBROUTINE A_PBL_DRIVER(itimestep, dt, u_frame, v_frame, bldt, curr_secs&
679682
& qv_curr, p3d=p_phy, p3di=p8w, pi3d=pi_phy, z=z, rublten=&
680683
& rublten, rvblten=rvblten, dtaux3d=dtaux3d, dtauy3d=&
681684
& dtauy3d, dusfcg=dusfcg, dvsfcg=dvsfcg, var2d=var2d, &
682-
& oc12d=oc12d, oa2d1=oa1, oa2d2=oa2, oa2d3=oa3, oa2d4=oa4&
683-
& , ol2d1=ol1, ol2d2=ol2, ol2d3=ol3, ol2d4=ol4, &
685+
& oc12d=oc12d, oa2d1=oa1, oa2d2=oa2, oa2d3=oa3, oa2d4=oa4,&
686+
& ol2d1=ol1, ol2d2=ol2, ol2d3=ol3, ol2d4=ol4, elvmax=elvmax,&
684687
& SINA=sina,COSA=cosa, znu=znu, &
685688
& errmsg= errmsg, errflg=errflg, &
689+
& dx_factor = dx_factor, if_nonhyd = if_nonhyd, &
686690
& znw=znw, p_top=p_top, cp=cp, g=g, rd=r_d, rv=&
687691
& r_v, ep1=ep_1, pi=3.141592653, dt=dtbl, dx=dx2dtmp, kpbl2d=&
688692
& kpbl, itimestep=itimestep, ids=ids, ide=ide, jds=jds, &

0 commit comments

Comments
 (0)