@@ -43,6 +43,9 @@ module ugwpv1_gsldrag
4343 use cires_ugwpv1_module, only: cires_ugwpv1_init, ngwflux_update, calendar_ugwp
4444 use cires_ugwpv1_module, only: knob_ugwp_version, cires_ugwp_dealloc, tamp_mpa
4545 use cires_ugwpv1_solv2, only: cires_ugwpv1_ngw_solv2
46+ ! use cires_ugwpv1_solv2, only: cires_ugwpv1_ngw_solv2, ecmwf_ngw
47+ use ecmwf_ngw, only: ecmwf_ngw_emc
48+
4649 use cires_ugwpv1_oro, only: orogw_v1
4750
4851 use drag_suite, only: drag_suite_run, drag_suite_psl
@@ -70,7 +73,8 @@ subroutine ugwpv1_gsldrag_init ( &
7073 con_pi , con_rerth , con_p0 , &
7174 con_g , con_omega , con_cp , con_rd , con_rv ,con_fvirt , &
7275 do_ugwp ,do_ugwp_v0 , do_ugwp_v0_orog_only , do_gsl_drag_ls_bl , &
73- do_gsl_drag_ss , do_gsl_drag_tofd , do_ugwp_v1 , &
76+ do_gsl_drag_ss , do_gsl_drag_tofd , do_ngw_ec , do_ugwp_v1 , &
77+ !! do_gsl_drag_ss , do_gsl_drag_tofd , do_ugwp_v1 , &
7478 do_ugwp_v1_orog_only , do_ugwp_v1_w_gsldrag , errmsg , errflg )
7579
7680 use ugwp_common
@@ -94,9 +98,10 @@ subroutine ugwpv1_gsldrag_init ( &
9498 real (kind= kind_phys), intent (in ) :: con_g, con_cp, con_rd, con_rv, con_omega, con_fvirt
9599 logical , intent (in ) :: do_ugwp
96100
97- logical , intent (in ) :: do_ugwp_v0, do_ugwp_v0_orog_only, &
98- do_gsl_drag_ls_bl, do_gsl_drag_ss, &
99- do_gsl_drag_tofd, do_ugwp_v1, &
101+ logical , intent (in ) :: do_ugwp_v0, do_ugwp_v0_orog_only, &
102+ do_gsl_drag_ls_bl, do_gsl_drag_ss, &
103+ ! ! do_gsl_drag_tofd, do_ugwp_v1, &
104+ do_gsl_drag_tofd, do_ugwp_v1, do_ngw_ec, &
100105 do_ugwp_v1_orog_only,do_ugwp_v1_w_gsldrag
101106
102107 character (len=* ), intent (in ) :: fn_nml2
@@ -302,7 +307,7 @@ subroutine ugwpv1_gsldrag_run(me, master, im, levs, ak, bk, ntrac, lonr, dtp,
302307 fhzero , kdt , ldiag3d , lssav , flag_for_gwd_generic_tend , do_gsl_drag_ls_bl , &
303308 do_gsl_drag_ss , do_gsl_drag_tofd , &
304309 do_gwd_opt_psl , psl_gwd_dx_factor , &
305- do_ugwp_v1 , do_ugwp_v1_orog_only , &
310+ do_ngw_ec , do_ugwp_v1 , do_ugwp_v1_orog_only , &
306311 do_ugwp_v1_w_gsldrag , gwd_opt , do_tofd , ldiag_ugwp , ugwp_seq_update , &
307312 cdmbgwd , alpha_fd , jdat , nmtvr , hprime , oc , theta , sigma , gamma , &
308313 elvmax , clx , oa4 , varss ,oc1ss ,oa4ss ,ol4ss , dx , xlat , xlat_d , sinlat , coslat , &
@@ -356,7 +361,7 @@ subroutine ugwpv1_gsldrag_run(me, master, im, levs, ak, bk, ntrac, lonr, dtp,
356361! flags for choosing combination of GW drag schemes to run
357362
358363 logical , intent (in ) :: do_gsl_drag_ls_bl, do_gsl_drag_ss, do_gsl_drag_tofd
359- logical , intent (in ) :: do_ugwp_v1, do_ugwp_v1_orog_only, do_tofd
364+ logical , intent (in ) :: do_ugwp_v1, do_ngw_ec, do_ugwp_v1_orog_only, do_tofd
360365 logical , intent (in ) :: ldiag_ugwp, ugwp_seq_update
361366 logical , intent (in ) :: do_ugwp_v1_w_gsldrag ! combination of ORO and NGW schemes
362367
@@ -698,10 +703,21 @@ subroutine ugwpv1_gsldrag_run(me, master, im, levs, ak, bk, ntrac, lonr, dtp,
698703 call ngwflux_update(me, master, im, levs, kdt, ddd_ugwp,curdate, &
699704 tau_amf, xlat_d, sinlat,coslat, rain, tau_ngw)
700705
701- call cires_ugwpv1_ngw_solv2(me, master, im, levs, kdt, dtp, &
706+ if (do_ngw_ec) then
707+
708+ call ecmwf_ngw_emc(me, master, im, levs, kdt, dtp, dx, &
709+ tau_ngw, tgrs, ugrs, vgrs, q1, prsl, prsi, &
710+ zmet, zmeti,prslk, xlat_d, sinlat, coslat, &
711+ dudt_ngw, dvdt_ngw, dtdt_ngw, kdis_ngw, zngw)
712+ else
713+
714+ call cires_ugwpv1_ngw_solv2(me, master, im, levs, kdt, dtp, &
702715 tau_ngw, tgrs, ugrs, vgrs, q1, prsl, prsi, &
703716 zmet, zmeti,prslk, xlat_d, sinlat, coslat, &
704717 dudt_ngw, dvdt_ngw, dtdt_ngw, kdis_ngw, zngw)
718+
719+ endif
720+
705721!
706722! => con_g, con_cp, con_rd, con_rv, con_omega, con_pi, con_fvirt
707723!
0 commit comments