diff --git a/ccpp/data/GFS_typedefs.F90 b/ccpp/data/GFS_typedefs.F90 index 40b923d1a..a5febdbb2 100644 --- a/ccpp/data/GFS_typedefs.F90 +++ b/ccpp/data/GFS_typedefs.F90 @@ -2241,6 +2241,10 @@ module GFS_typedefs real (kind=kind_phys), pointer :: do3_dt_temp(:,:) => null() real (kind=kind_phys), pointer :: do3_dt_ohoz(:,:) => null() + !--- NRL WV photochemistry diagnostics + real (kind=kind_phys), pointer :: dqv_dt_prd(:, :) => null() + real (kind=kind_phys), pointer :: dqv_dt_qvmx(:, :) => null() + contains procedure :: create => diag_create procedure :: rad_zero => diag_rad_zero @@ -3482,7 +3486,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & integer :: iems = 0 !< 1.0 => Noah lsm !< 2.0 => Noah MP and RUC lsms integer :: iaer = 1 !< default aerosol effect in sw only - integer :: iaermdl = 0 !< default tropospheric aerosol model scheme flag + integer :: iaermdl = 1 !< default tropospheric aerosol model scheme flag !< 0: seasonal global distributed OPAC aerosol climatology !< 1: monthly global distributed GOCART aerosol climatology !< 2: GOCART prognostic aerosol model @@ -4631,8 +4635,9 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & Model%ialb = ialb Model%iems = iems Model%iaer = iaer + Model%iaermdl = iaer/1000 Model%iaerclm = iaerclm - if (iaer/1000 == 1 .or. Model%iccn == 2) then + if (iaer/1000 == 1 .or. Model%iccn == 2 .or. Model%iaermdl ==6 ) then Model%iaerclm = .true. ntrcaer = ntrcaerm else if (iaer/1000 == 2) then @@ -4642,7 +4647,6 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & endif Model%lalw1bd = lalw1bd Model%iaerflg = iaerflg - Model%iaermdl = iaermdl Model%aeros_file = aeros_file Model%solar_file = solar_file Model%semis_file = semis_file @@ -5629,6 +5633,10 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & call fill_dtidx(Model,dtend_select,100+Model%ntoz,Model%index_of_process_physics,.true.) call fill_dtidx(Model,dtend_select,100+Model%ntoz,Model%index_of_process_non_physics,.true.) + call fill_dtidx(Model, dtend_select, 100+Model%ntqv,Model%index_of_process_prod_loss, h2o_phys) + call fill_dtidx(Model, dtend_select, 100+Model%ntqv,Model%index_of_process_ozmix, h2o_phys) + call fill_dtidx(Model, dtend_select, 100+Model%ntqv,Model%index_of_process_photochem, h2o_phys) + if(.not.Model%do_mynnedmf .and. .not. Model%satmedmf) then call fill_dtidx(Model,dtend_select,100+Model%ntqv,Model%index_of_process_pbl,have_pbl) call fill_dtidx(Model,dtend_select,100+Model%ntcw,Model%index_of_process_pbl,have_pbl) @@ -7985,6 +7993,10 @@ subroutine diag_create (Diag, Model) allocate (Diag%do3_dt_temp(IM, Model%levs)) allocate (Diag%do3_dt_ohoz(IM, Model%levs)) endif + if (Model%h2o_phys) then + allocate (Diag%dqv_dt_prd( IM, Model%levs)) + allocate (Diag%dqv_dt_qvmx(IM, Model%levs)) + end if endif ! UGWP @@ -8359,6 +8371,10 @@ subroutine diag_phys_zero (Diag, Model, linit, iauwindow_center) Diag%do3_dt_temp = zero Diag%do3_dt_ohoz = zero endif + if (Model%h2o_phys) then + Diag%dqv_dt_prd = zero + Diag%dqv_dt_qvmx = zero + end if endif ! diff --git a/ccpp/data/GFS_typedefs.meta b/ccpp/data/GFS_typedefs.meta index 0a8d665a3..096d7c4cc 100644 --- a/ccpp/data/GFS_typedefs.meta +++ b/ccpp/data/GFS_typedefs.meta @@ -394,7 +394,7 @@ [qgrs(:,:,index_of_updraft_velocity_in_tracer_concentration_array)] standard_name = prognostic_updraft_velocity_in_convection long_name = convective updraft velocity - units = frac + units = Pa s-1 dimensions = (horizontal_dimension,vertical_layer_dimension) type = real kind = kind_phys @@ -684,7 +684,7 @@ [gq0(:,:,index_of_updraft_velocity_in_tracer_concentration_array)] standard_name = updraft_velocity_updated_by_physics long_name = convective updraft area fraction updated by physics - units = frac + units = Pa s-1 dimensions = (horizontal_dimension,vertical_layer_dimension) type = real kind = kind_phys @@ -9610,6 +9610,22 @@ type = real kind = kind_phys active = (flag_for_diagnostics_3D .and. flag_for_nrl_2015_ozone_scheme) +[dqv_dt_prd] + standard_name = water_vapor_tendency_due_to_production_and_loss_rate + long_name = water_vapor tendency due to production and loss rate + units = kg kg-1 s-1 + dimensions = (horizontal_dimension,vertical_layer_dimension) + type = real + kind = kind_phys + active = (flag_for_diagnostics_3D .and. flag_for_stratospheric_water_vapor_physics) +[dqv_dt_qvmx] + standard_name = water_vapor_tendency_due_to_water_vapor_mixing_ratio + long_name = water_vapor tendency due to water_vapor mixing ratio + units = kg kg-1 s-1 + dimensions = (horizontal_dimension,vertical_layer_dimension) + type = real + kind = kind_phys + active = (flag_for_diagnostics_3D .and. flag_for_stratospheric_water_vapor_physics) [refl_10cm] standard_name = radar_reflectivity_10cm long_name = instantaneous refl_10cm diff --git a/ccpp/physics b/ccpp/physics index 5d6bacf1b..9ab7cba27 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 5d6bacf1b51e99f7f093fb59a2d5044ce170b379 +Subproject commit 9ab7cba27f9950db22cb29136646d92833e93c84