From ce7fde9a21da438a87e54e011540b973b2d13d82 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Tue, 27 Feb 2024 10:52:16 -0700 Subject: [PATCH 01/80] Update physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.* to use chunked GFS DDTs --- .../UFS_SCM_NEPTUNE/GFS_debug.F90 | 154 +++++----- .../UFS_SCM_NEPTUNE/GFS_debug.meta | 266 ++++++++++++++++-- 2 files changed, 328 insertions(+), 92 deletions(-) diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.F90 index ed26b795f..0a7a8983d 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.F90 @@ -303,6 +303,16 @@ module GFS_diagtoscreen use print_var_chksum, only: print_var + use machine, only: kind_phys + + use GFS_typedefs, only: GFS_control_type, GFS_statein_type, & + GFS_stateout_type, GFS_sfcprop_type, & + GFS_coupling_type, GFS_grid_type, & + GFS_tbd_type, GFS_cldprop_type, & + GFS_radtend_type, GFS_diag_type + + use CCPP_typedefs, only: GFS_interstitial_type + implicit none private @@ -314,66 +324,70 @@ module GFS_diagtoscreen !> \section arg_table_GFS_diagtoscreen_init Argument Table !! \htmlinclude GFS_diagtoscreen_init.html !! - subroutine GFS_diagtoscreen_init (Model, Data, Interstitial, errmsg, errflg) - - use GFS_typedefs, only: GFS_control_type, GFS_data_type - use CCPP_typedefs, only: GFS_interstitial_type + subroutine GFS_diagtoscreen_init (Model, Statein, Stateout, Sfcprop, Coupling, & + Grid, Tbd, Cldprop, Radtend, Diag, Interstitial, & + errmsg, errflg) implicit none !--- interface variables type(GFS_control_type), intent(in) :: Model - type(GFS_data_type), intent(in) :: Data(:) + type(GFS_statein_type), intent(in) :: Statein + type(GFS_stateout_type), intent(in) :: Stateout + type(GFS_sfcprop_type), intent(in) :: Sfcprop + type(GFS_coupling_type), intent(in) :: Coupling + type(GFS_grid_type), intent(in) :: Grid + type(GFS_tbd_type), intent(in) :: Tbd + type(GFS_cldprop_type), intent(in) :: Cldprop + type(GFS_radtend_type), intent(in) :: Radtend + type(GFS_diag_type), intent(in) :: Diag type(GFS_interstitial_type), intent(in) :: Interstitial(:) character(len=*), intent(out) :: errmsg integer, intent(out) :: errflg - !--- local variables - integer :: i - ! Initialize CCPP error handling variables errmsg = '' errflg = 0 - do i=1,size(Data) - call GFS_diagtoscreen_run (Model, Data(i)%Statein, Data(i)%Stateout, Data(i)%Sfcprop, & - Data(i)%Coupling, Data(i)%Grid, Data(i)%Tbd, Data(i)%Cldprop, & - Data(i)%Radtend, Data(i)%Intdiag, Interstitial(1), & - size(Interstitial), i, errmsg, errflg) - end do + call GFS_diagtoscreen_run (Model, Statein, Stateout, Sfcprop, & + Coupling, Grid, Tbd, Cldprop, & + Radtend, Diag, Interstitial(1), & + size(Interstitial), -999, errmsg, errflg) end subroutine GFS_diagtoscreen_init !> \section arg_table_GFS_diagtoscreen_timestep_init Argument Table !! \htmlinclude GFS_diagtoscreen_timestep_init.html !! - subroutine GFS_diagtoscreen_timestep_init (Model, Data, Interstitial, errmsg, errflg) - - use GFS_typedefs, only: GFS_control_type, GFS_data_type - use CCPP_typedefs, only: GFS_interstitial_type + subroutine GFS_diagtoscreen_timestep_init (Model, Statein, Stateout, Sfcprop, Coupling, & + Grid, Tbd, Cldprop, Radtend, Diag, Interstitial, & + errmsg, errflg) implicit none !--- interface variables type(GFS_control_type), intent(in) :: Model - type(GFS_data_type), intent(in) :: Data(:) + type(GFS_statein_type), intent(in) :: Statein + type(GFS_stateout_type), intent(in) :: Stateout + type(GFS_sfcprop_type), intent(in) :: Sfcprop + type(GFS_coupling_type), intent(in) :: Coupling + type(GFS_grid_type), intent(in) :: Grid + type(GFS_tbd_type), intent(in) :: Tbd + type(GFS_cldprop_type), intent(in) :: Cldprop + type(GFS_radtend_type), intent(in) :: Radtend + type(GFS_diag_type), intent(in) :: Diag type(GFS_interstitial_type), intent(in) :: Interstitial(:) character(len=*), intent(out) :: errmsg integer, intent(out) :: errflg - !--- local variables - integer :: i - ! Initialize CCPP error handling variables errmsg = '' errflg = 0 - do i=1,size(Data) - call GFS_diagtoscreen_run (Model, Data(i)%Statein, Data(i)%Stateout, Data(i)%Sfcprop, & - Data(i)%Coupling, Data(i)%Grid, Data(i)%Tbd, Data(i)%Cldprop, & - Data(i)%Radtend, Data(i)%Intdiag, Interstitial(1), & - size(Interstitial), i, errmsg, errflg) - end do + call GFS_diagtoscreen_run (Model, Statein, Stateout, Sfcprop, & + Coupling, Grid, Tbd, Cldprop, & + Radtend, Diag, Interstitial(1), & + size(Interstitial), -999, errmsg, errflg) end subroutine GFS_diagtoscreen_timestep_init @@ -390,12 +404,6 @@ subroutine GFS_diagtoscreen_run (Model, Statein, Stateout, Sfcprop, Coupling, #ifdef _OPENMP use omp_lib #endif - use GFS_typedefs, only: GFS_control_type, GFS_statein_type, & - GFS_stateout_type, GFS_sfcprop_type, & - GFS_coupling_type, GFS_grid_type, & - GFS_tbd_type, GFS_cldprop_type, & - GFS_radtend_type, GFS_diag_type - use CCPP_typedefs, only: GFS_interstitial_type implicit none @@ -619,7 +627,7 @@ subroutine GFS_diagtoscreen_run (Model, Statein, Stateout, Sfcprop, Coupling, call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Tbd%in_nm' , Tbd%in_nm) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Tbd%ccn_nm' , Tbd%ccn_nm) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Tbd%aer_nm' , Tbd%aer_nm) - if (Model%imfdeepcnv == Model%imfdeepcnv_gf .or. Model%imfdeepcnv == Model%imfdeepcnv_unified) then + if (Model%imfdeepcnv == Model%imfdeepcnv_gf) then call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Tbd%cactiv' , Tbd%cactiv) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Tbd%cactiv_m' , Tbd%cactiv_m) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Tbd%aod_gf' , Tbd%aod_gf) @@ -877,13 +885,6 @@ subroutine GFS_diagtoscreen_run (Model, Statein, Stateout, Sfcprop, Coupling, call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Coupling%v10mi_cpl ', Coupling%v10mi_cpl ) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Coupling%tsfci_cpl ', Coupling%tsfci_cpl ) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Coupling%psurfi_cpl ', Coupling%psurfi_cpl ) - if (Model%use_med_flux) then - call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Coupling%dusfcino_cpl ', Coupling%dusfcino_cpl ) - call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Coupling%dvsfcino_cpl ', Coupling%dvsfcino_cpl ) - call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Coupling%dtsfcino_cpl ', Coupling%dtsfcino_cpl ) - call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Coupling%dqsfcino_cpl ', Coupling%dqsfcino_cpl ) - call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Coupling%ulwsfcino_cpl', Coupling%ulwsfcino_cpl ) - end if end if if (Model%cplchm) then call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Coupling%rainc_cpl', Coupling%rainc_cpl) @@ -971,6 +972,17 @@ module GFS_interstitialtoscreen use print_var_chksum, only: print_var + use machine, only: kind_phys + + use GFS_typedefs, only: GFS_control_type, GFS_statein_type, & + GFS_stateout_type, GFS_sfcprop_type, & + GFS_coupling_type, GFS_grid_type, & + GFS_tbd_type, GFS_cldprop_type, & + GFS_radtend_type, GFS_diag_type + + use CCPP_typedefs, only: GFS_interstitial_type + + implicit none private @@ -982,16 +994,23 @@ module GFS_interstitialtoscreen !> \section arg_table_GFS_interstitialtoscreen_init Argument Table !! \htmlinclude GFS_interstitialtoscreen_init.html !! - subroutine GFS_interstitialtoscreen_init (Model, Data, Interstitial, errmsg, errflg) - - use GFS_typedefs, only: GFS_control_type, GFS_data_type - use CCPP_typedefs, only: GFS_interstitial_type + subroutine GFS_interstitialtoscreen_init (Model, Statein, Stateout, Sfcprop, Coupling, & + Grid, Tbd, Cldprop, Radtend, Diag, Interstitial, & + errmsg, errflg) implicit none !--- interface variables type(GFS_control_type), intent(in) :: Model - type(GFS_data_type), intent(in) :: Data(:) + type(GFS_statein_type), intent(in) :: Statein + type(GFS_stateout_type), intent(in) :: Stateout + type(GFS_sfcprop_type), intent(in) :: Sfcprop + type(GFS_coupling_type), intent(in) :: Coupling + type(GFS_grid_type), intent(in) :: Grid + type(GFS_tbd_type), intent(in) :: Tbd + type(GFS_cldprop_type), intent(in) :: Cldprop + type(GFS_radtend_type), intent(in) :: Radtend + type(GFS_diag_type), intent(in) :: Diag type(GFS_interstitial_type), intent(in) :: Interstitial(:) character(len=*), intent(out) :: errmsg integer, intent(out) :: errflg @@ -1003,11 +1022,9 @@ subroutine GFS_interstitialtoscreen_init (Model, Data, Interstitial, errmsg, err errmsg = '' errflg = 0 - do i=1,size(Interstitial) - call GFS_interstitialtoscreen_run (Model, Data(1)%Statein, Data(1)%Stateout, Data(1)%Sfcprop, & - Data(1)%Coupling, Data(1)%Grid, Data(1)%Tbd, Data(1)%Cldprop, & - Data(1)%Radtend, Data(1)%Intdiag, Interstitial(i), & + call GFS_interstitialtoscreen_run (Model, Statein, Stateout, Sfcprop, Coupling, & + Grid, Tbd, Cldprop, Radtend, Diag, Interstitial(i), & size(Interstitial), -999, errmsg, errflg) end do @@ -1016,16 +1033,23 @@ end subroutine GFS_interstitialtoscreen_init !> \section arg_table_GFS_interstitialtoscreen_timestep_init Argument Table !! \htmlinclude GFS_interstitialtoscreen_timestep_init.html !! - subroutine GFS_interstitialtoscreen_timestep_init (Model, Data, Interstitial, errmsg, errflg) - - use GFS_typedefs, only: GFS_control_type, GFS_data_type - use CCPP_typedefs, only: GFS_interstitial_type + subroutine GFS_interstitialtoscreen_timestep_init (Model, Statein, Stateout, Sfcprop, Coupling, & + Grid, Tbd, Cldprop, Radtend, Diag, Interstitial, & + errmsg, errflg) implicit none !--- interface variables type(GFS_control_type), intent(in) :: Model - type(GFS_data_type), intent(in) :: Data(:) + type(GFS_statein_type), intent(in) :: Statein + type(GFS_stateout_type), intent(in) :: Stateout + type(GFS_sfcprop_type), intent(in) :: Sfcprop + type(GFS_coupling_type), intent(in) :: Coupling + type(GFS_grid_type), intent(in) :: Grid + type(GFS_tbd_type), intent(in) :: Tbd + type(GFS_cldprop_type), intent(in) :: Cldprop + type(GFS_radtend_type), intent(in) :: Radtend + type(GFS_diag_type), intent(in) :: Diag type(GFS_interstitial_type), intent(in) :: Interstitial(:) character(len=*), intent(out) :: errmsg integer, intent(out) :: errflg @@ -1039,9 +1063,8 @@ subroutine GFS_interstitialtoscreen_timestep_init (Model, Data, Interstitial, er do i=1,size(Interstitial) - call GFS_interstitialtoscreen_run (Model, Data(1)%Statein, Data(1)%Stateout, Data(1)%Sfcprop, & - Data(1)%Coupling, Data(1)%Grid, Data(1)%Tbd, Data(1)%Cldprop, & - Data(1)%Radtend, Data(1)%Intdiag, Interstitial(i), & + call GFS_interstitialtoscreen_run (Model, Statein, Stateout, Sfcprop, Coupling, & + Grid, Tbd, Cldprop, Radtend, Diag, Interstitial(i), & size(Interstitial), -999, errmsg, errflg) end do @@ -1060,14 +1083,6 @@ subroutine GFS_interstitialtoscreen_run (Model, Statein, Stateout, Sfcprop, Coup #ifdef _OPENMP use omp_lib #endif - use machine, only: kind_phys - use GFS_typedefs, only: GFS_control_type, GFS_statein_type, & - GFS_stateout_type, GFS_sfcprop_type, & - GFS_coupling_type, GFS_grid_type, & - GFS_tbd_type, GFS_cldprop_type, & - GFS_radtend_type, GFS_diag_type - use CCPP_typedefs, only: GFS_interstitial_type - implicit none !--- interface variables @@ -1293,7 +1308,6 @@ subroutine GFS_interstitialtoscreen_run (Model, Statein, Stateout, Sfcprop, Coup call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%qss_ice ', Interstitial%qss_ice ) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%qss_land ', Interstitial%qss_land ) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%qss_water ', Interstitial%qss_water ) - call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%radar_reset ', Interstitial%radar_reset ) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%raddt ', Interstitial%raddt ) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%raincd ', Interstitial%raincd ) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%raincs ', Interstitial%raincs ) @@ -1322,8 +1336,6 @@ subroutine GFS_interstitialtoscreen_run (Model, Statein, Stateout, Sfcprop, Coup call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%sigmafrac ', Interstitial%sigmafrac ) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%sigmatot ', Interstitial%sigmatot ) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%snowc ', Interstitial%snowc ) - call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%snowd_ice ', Interstitial%snowd_ice ) - call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%snowd_land ', Interstitial%snowd_land ) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%snohf ', Interstitial%snohf ) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%snowmt ', Interstitial%snowmt ) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%stress ', Interstitial%stress ) @@ -1535,7 +1547,7 @@ module GFS_checkland !! \htmlinclude GFS_checkland_run.html !! subroutine GFS_checkland_run (me, master, blkno, im, kdt, iter, flag_iter, flag_guess, & - flag_init, flag_restart, frac_grid, isot, ivegsrc, stype,scolor, vtype, slope, & + flag_init, flag_restart, frac_grid, isot, ivegsrc, stype,scolor, vtype, slope, & dry, icy, wet, lake, ocean, oceanfrac, landfrac, lakefrac, slmsk, islmsk, & zorl, zorlw, zorll, zorli, fice, errmsg, errflg ) diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.meta index 10eb43671..0d12b2bbb 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.meta @@ -9,17 +9,73 @@ type = scheme [Model] standard_name = GFS_control_type_instance - long_name = instance of derived type GFS_control_type in FV3 + long_name = instance of derived type GFS_control_type units = DDT dimensions = () type = GFS_control_type intent = in -[Data] - standard_name = GFS_data_type_instance_all_blocks - long_name = instance of derived type GFS_data_type +[Statein] + standard_name = GFS_statein_type_instance + long_name = prognostic state data in from dycore + units = DDT + dimensions = () + type = GFS_statein_type + intent = in +[Stateout] + standard_name = GFS_stateout_type_instance + long_name = prognostic state or tendencies return to dycore + units = DDT + dimensions = () + type = GFS_stateout_type + intent = in +[Sfcprop] + standard_name = GFS_sfcprop_type_instance + long_name = instance of derived type GFS_sfcprop_type + units = DDT + dimensions = () + type = GFS_sfcprop_type + intent = in +[Coupling] + standard_name = GFS_coupling_type_instance + long_name = instance of derived type GFS_coupling_type + units = DDT + dimensions = () + type = GFS_coupling_type + intent = in +[Grid] + standard_name = GFS_grid_type_instance + long_name = instance of derived type GFS_grid_type + units = DDT + dimensions = () + type = GFS_grid_type + intent = in +[Tbd] + standard_name = GFS_tbd_type_instance + long_name = instance of derived type GFS_tbd_type + units = DDT + dimensions = () + type = GFS_tbd_type + intent = in +[Cldprop] + standard_name = GFS_cldprop_type_instance + long_name = instance of derived type GFS_cldprop_type + units = DDT + dimensions = () + type = GFS_cldprop_type + intent = in +[Radtend] + standard_name = GFS_radtend_type_instance + long_name = instance of derived type GFS_radtend_type units = DDT - dimensions = (ccpp_block_count) - type = GFS_data_type + dimensions = () + type = GFS_radtend_type + intent = in +[Diag] + standard_name = GFS_diag_type_instance + long_name = instance of derived type GFS_diag_type + units = DDT + dimensions = () + type = GFS_diag_type intent = in [Interstitial] standard_name = GFS_interstitial_type_instance_all_threads @@ -55,12 +111,68 @@ dimensions = () type = GFS_control_type intent = in -[Data] - standard_name = GFS_data_type_instance_all_blocks - long_name = instance of derived type GFS_data_type +[Statein] + standard_name = GFS_statein_type_instance + long_name = prognostic state data in from dycore + units = DDT + dimensions = () + type = GFS_statein_type + intent = in +[Stateout] + standard_name = GFS_stateout_type_instance + long_name = prognostic state or tendencies return to dycore + units = DDT + dimensions = () + type = GFS_stateout_type + intent = in +[Sfcprop] + standard_name = GFS_sfcprop_type_instance + long_name = instance of derived type GFS_sfcprop_type + units = DDT + dimensions = () + type = GFS_sfcprop_type + intent = in +[Coupling] + standard_name = GFS_coupling_type_instance + long_name = instance of derived type GFS_coupling_type + units = DDT + dimensions = () + type = GFS_coupling_type + intent = in +[Grid] + standard_name = GFS_grid_type_instance + long_name = instance of derived type GFS_grid_type units = DDT - dimensions = (ccpp_block_count) - type = GFS_data_type + dimensions = () + type = GFS_grid_type + intent = in +[Tbd] + standard_name = GFS_tbd_type_instance + long_name = instance of derived type GFS_tbd_type + units = DDT + dimensions = () + type = GFS_tbd_type + intent = in +[Cldprop] + standard_name = GFS_cldprop_type_instance + long_name = instance of derived type GFS_cldprop_type + units = DDT + dimensions = () + type = GFS_cldprop_type + intent = in +[Radtend] + standard_name = GFS_radtend_type_instance + long_name = instance of derived type GFS_radtend_type + units = DDT + dimensions = () + type = GFS_radtend_type + intent = in +[Diag] + standard_name = GFS_diag_type_instance + long_name = instance of derived type GFS_diag_type + units = DDT + dimensions = () + type = GFS_diag_type intent = in [Interstitial] standard_name = GFS_interstitial_type_instance_all_threads @@ -213,12 +325,68 @@ dimensions = () type = GFS_control_type intent = in -[Data] - standard_name = GFS_data_type_instance_all_blocks - long_name = instance of derived type GFS_data_type +[Statein] + standard_name = GFS_statein_type_instance + long_name = prognostic state data in from dycore + units = DDT + dimensions = () + type = GFS_statein_type + intent = in +[Stateout] + standard_name = GFS_stateout_type_instance + long_name = prognostic state or tendencies return to dycore + units = DDT + dimensions = () + type = GFS_stateout_type + intent = in +[Sfcprop] + standard_name = GFS_sfcprop_type_instance + long_name = instance of derived type GFS_sfcprop_type + units = DDT + dimensions = () + type = GFS_sfcprop_type + intent = in +[Coupling] + standard_name = GFS_coupling_type_instance + long_name = instance of derived type GFS_coupling_type + units = DDT + dimensions = () + type = GFS_coupling_type + intent = in +[Grid] + standard_name = GFS_grid_type_instance + long_name = instance of derived type GFS_grid_type + units = DDT + dimensions = () + type = GFS_grid_type + intent = in +[Tbd] + standard_name = GFS_tbd_type_instance + long_name = instance of derived type GFS_tbd_type + units = DDT + dimensions = () + type = GFS_tbd_type + intent = in +[Cldprop] + standard_name = GFS_cldprop_type_instance + long_name = instance of derived type GFS_cldprop_type + units = DDT + dimensions = () + type = GFS_cldprop_type + intent = in +[Radtend] + standard_name = GFS_radtend_type_instance + long_name = instance of derived type GFS_radtend_type units = DDT - dimensions = (ccpp_block_count) - type = GFS_data_type + dimensions = () + type = GFS_radtend_type + intent = in +[Diag] + standard_name = GFS_diag_type_instance + long_name = instance of derived type GFS_diag_type + units = DDT + dimensions = () + type = GFS_diag_type intent = in [Interstitial] standard_name = GFS_interstitial_type_instance_all_threads @@ -254,12 +422,68 @@ dimensions = () type = GFS_control_type intent = in -[Data] - standard_name = GFS_data_type_instance_all_blocks - long_name = instance of derived type GFS_data_type +[Statein] + standard_name = GFS_statein_type_instance + long_name = prognostic state data in from dycore + units = DDT + dimensions = () + type = GFS_statein_type + intent = in +[Stateout] + standard_name = GFS_stateout_type_instance + long_name = prognostic state or tendencies return to dycore + units = DDT + dimensions = () + type = GFS_stateout_type + intent = in +[Sfcprop] + standard_name = GFS_sfcprop_type_instance + long_name = instance of derived type GFS_sfcprop_type units = DDT - dimensions = (ccpp_block_count) - type = GFS_data_type + dimensions = () + type = GFS_sfcprop_type + intent = in +[Coupling] + standard_name = GFS_coupling_type_instance + long_name = instance of derived type GFS_coupling_type + units = DDT + dimensions = () + type = GFS_coupling_type + intent = in +[Grid] + standard_name = GFS_grid_type_instance + long_name = instance of derived type GFS_grid_type + units = DDT + dimensions = () + type = GFS_grid_type + intent = in +[Tbd] + standard_name = GFS_tbd_type_instance + long_name = instance of derived type GFS_tbd_type + units = DDT + dimensions = () + type = GFS_tbd_type + intent = in +[Cldprop] + standard_name = GFS_cldprop_type_instance + long_name = instance of derived type GFS_cldprop_type + units = DDT + dimensions = () + type = GFS_cldprop_type + intent = in +[Radtend] + standard_name = GFS_radtend_type_instance + long_name = instance of derived type GFS_radtend_type + units = DDT + dimensions = () + type = GFS_radtend_type + intent = in +[Diag] + standard_name = GFS_diag_type_instance + long_name = instance of derived type GFS_diag_type + units = DDT + dimensions = () + type = GFS_diag_type intent = in [Interstitial] standard_name = GFS_interstitial_type_instance_all_threads From 14d0aadc114e7f10275480a157dd5891074011b4 Mon Sep 17 00:00:00 2001 From: Helin Wei Date: Tue, 12 Mar 2024 12:18:03 -0400 Subject: [PATCH 02/80] remove veg-dependent opt_diag used in hr3 --- physics/SFC_Layer/UFS/sfc_diag_post.F90 | 14 +------------- physics/SFC_Layer/UFS/sfc_diag_post.meta | 7 ------- 2 files changed, 1 insertion(+), 20 deletions(-) diff --git a/physics/SFC_Layer/UFS/sfc_diag_post.F90 b/physics/SFC_Layer/UFS/sfc_diag_post.F90 index 6945e48e9..de5e38aa4 100644 --- a/physics/SFC_Layer/UFS/sfc_diag_post.F90 +++ b/physics/SFC_Layer/UFS/sfc_diag_post.F90 @@ -14,7 +14,7 @@ module sfc_diag_post !! #endif subroutine sfc_diag_post_run (im, lsm, lsm_noahmp, opt_diag, dry, lssav, dtf, con_eps, con_epsm1, pgr,& - vegtype,t2mmp,q2mp, t2m, q2m, u10m, v10m, tmpmin, tmpmax, spfhmin, spfhmax, & + t2mmp,q2mp, t2m, q2m, u10m, v10m, tmpmin, tmpmax, spfhmin, spfhmax, & wind10mmax, u10mmax, v10mmax, dpt2m, errmsg, errflg) use machine, only: kind_phys, kind_dbl_prec @@ -22,7 +22,6 @@ subroutine sfc_diag_post_run (im, lsm, lsm_noahmp, opt_diag, dry, lssav, dtf, co implicit none integer, intent(in) :: im, lsm, lsm_noahmp,opt_diag - integer, dimension(:), intent(in) :: vegtype ! vegetation type (integer index) logical, intent(in) :: lssav real(kind=kind_phys), intent(in) :: dtf, con_eps, con_epsm1 logical , dimension(:), intent(in) :: dry @@ -42,17 +41,6 @@ subroutine sfc_diag_post_run (im, lsm, lsm_noahmp, opt_diag, dry, lssav, dtf, co errflg = 0 if (lsm == lsm_noahmp) then -! over shrublands use opt_diag=2 - do i=1, im - if(dry(i)) then - if (vegtype(i) == 6 .or. vegtype(i) == 7 & - .or. vegtype(i) == 16) then - t2m(i) = t2mmp(i) - q2m(i) = q2mp(i) - endif - endif - enddo - if (opt_diag == 2 .or. opt_diag == 3) then do i=1,im if(dry(i)) then diff --git a/physics/SFC_Layer/UFS/sfc_diag_post.meta b/physics/SFC_Layer/UFS/sfc_diag_post.meta index 4abb3bac0..8c74e2154 100644 --- a/physics/SFC_Layer/UFS/sfc_diag_post.meta +++ b/physics/SFC_Layer/UFS/sfc_diag_post.meta @@ -82,13 +82,6 @@ type = real kind = kind_phys intent = in -[vegtype] - standard_name = vegetation_type_classification - long_name = vegetation type at each grid cell - units = index - dimensions = (horizontal_loop_extent) - type = integer - intent= in [t2mmp] standard_name = temperature_at_2m_from_noahmp long_name = 2 meter temperature from noahmp From 0ff86ac719fe84eeb796094c482abf9061284fa4 Mon Sep 17 00:00:00 2001 From: Helin Wei Date: Thu, 28 Mar 2024 12:56:07 -0400 Subject: [PATCH 03/80] use radiative temp as skin temp to the atmosphere --- physics/SFC_Models/Land/Noahmp/noahmpdrv.F90 | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/physics/SFC_Models/Land/Noahmp/noahmpdrv.F90 b/physics/SFC_Models/Land/Noahmp/noahmpdrv.F90 index c2c03d0de..0f2e4e717 100644 --- a/physics/SFC_Models/Land/Noahmp/noahmpdrv.F90 +++ b/physics/SFC_Models/Land/Noahmp/noahmpdrv.F90 @@ -658,6 +658,7 @@ subroutine noahmpdrv_run & real (kind=kind_phys) :: precip_freeze_frac_in ! used for penman calculation real (kind=kind_phys) :: virtfac1 ! virtual factor + real (kind=kind_phys) :: tflux ! surface flux temp real (kind=kind_phys) :: tvs1 ! surface virtual temp real (kind=kind_phys) :: vptemp ! virtual potential temp @@ -934,7 +935,8 @@ subroutine noahmpdrv_run & t2mmp(i) = temperature_bare_2m q2mp(i) = spec_humidity_bare_2m - tskin(i) = temperature_ground + tskin(i) = temperature_radiative + tflux = temperature_ground surface_temperature = temperature_ground vegetation_fraction = vegetation_frac ch_vegetated = 0.0 @@ -1024,7 +1026,8 @@ subroutine noahmpdrv_run & q2mp(i) = spec_humidity_veg_2m * vegetation_fraction + & spec_humidity_bare_2m * (1-vegetation_fraction) - tskin(i) = surface_temperature + tskin(i) = temperature_radiative + tflux = surface_temperature endif ! glacial split ends @@ -1170,9 +1173,9 @@ subroutine noahmpdrv_run & endif if(thsfc_loc) then ! Use local potential temperature - tvs1 = tskin(i) * virtfac1 + tvs1 = tflux * virtfac1 else ! Use potential temperature referenced to 1000 hPa - tvs1 = tskin(i)/prsik1(i) * virtfac1 + tvs1 = tflux/prsik1(i) * virtfac1 endif z0_total = max(min(z0_total,forcing_height),1.0e-6) From a7c0a139eef351ef10d4330b8667fe84231622c8 Mon Sep 17 00:00:00 2001 From: Dusan Jovic Date: Wed, 3 Apr 2024 09:48:32 -0500 Subject: [PATCH 04/80] Add support for IntelLLVM compiler --- CMakeLists.txt | 7 ++++--- physics/MP/Morrison_Gettelman/aerinterp.F90 | 15 +++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c56070123..2b332bdb9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -140,9 +140,10 @@ SET_PROPERTY(SOURCE ${SCHEMES} ${CAPS} APPEND_STRING PROPERTY COMPILE_FLAGS " ${CMAKE_Fortran_FLAGS_PHYSICS} ${OpenMP_Fortran_FLAGS}") # Lower optimization for certain schemes when compiling with Intel in Release mode -if(CMAKE_BUILD_TYPE STREQUAL "Release" AND ${CMAKE_Fortran_COMPILER_ID} STREQUAL "Intel") +if(CMAKE_BUILD_TYPE STREQUAL "Release" AND (${CMAKE_Fortran_COMPILER_ID} STREQUAL "Intel" OR ${CMAKE_Fortran_COMPILER_ID} STREQUAL "IntelLLVM")) # Define a list of schemes that need lower optimization with Intel in Release mode - set(SCHEME_NAMES_LOWER_OPTIMIZATION module_sf_mynn.F90) + set(SCHEME_NAMES_LOWER_OPTIMIZATION module_sf_mynn.F90 + module_mp_nssl_2mom.F90) foreach(SCHEME_NAME IN LISTS SCHEME_NAMES_LOWER_OPTIMIZATION) set(SCHEMES_TMP ${SCHEMES}) # Need to determine the name of the scheme with its path @@ -154,7 +155,7 @@ if(CMAKE_BUILD_TYPE STREQUAL "Release" AND ${CMAKE_Fortran_COMPILER_ID} STREQUAL endif() # No optimization for certain schemes when compiling with Intel in Release mode -if(CMAKE_BUILD_TYPE STREQUAL "Release" AND ${CMAKE_Fortran_COMPILER_ID} STREQUAL "Intel") +if(CMAKE_BUILD_TYPE STREQUAL "Release" AND (${CMAKE_Fortran_COMPILER_ID} STREQUAL "Intel" OR ${CMAKE_Fortran_COMPILER_ID} STREQUAL "IntelLLVM")) # Define a list of schemes that can't be optimized with Intel in Release mode set(SCHEME_NAMES_NO_OPTIMIZATION GFS_typedefs.F90) foreach(SCHEME_NAME IN LISTS SCHEME_NAMES_NO_OPTIMIZATION) diff --git a/physics/MP/Morrison_Gettelman/aerinterp.F90 b/physics/MP/Morrison_Gettelman/aerinterp.F90 index 174a1a1a1..74ae4726c 100644 --- a/physics/MP/Morrison_Gettelman/aerinterp.F90 +++ b/physics/MP/Morrison_Gettelman/aerinterp.F90 @@ -282,7 +282,7 @@ SUBROUTINE aerinterpol( me,master,nthrds,npts,IDATE,FHOUR,iflip, jindx1,jindx2, character(*), intent(inout) :: errmsg integer, intent(in) :: iflip integer i1,i2, iday,j,j1,j2,l,npts,nc,n1,n2,lev,k,i,ii, klev - real(kind=kind_phys) fhour,temj, tx1, tx2,temi, tem + real(kind=kind_phys) fhour,temj, tx1, tx2,temi, tem, tem1, tem2 real(kind=kind_phys), dimension(npts) :: temij,temiy,temjx,ddxy ! @@ -363,10 +363,9 @@ SUBROUTINE aerinterpol( me,master,nthrds,npts,IDATE,FHOUR,iflip, jindx1,jindx2, !$OMP parallel num_threads(nthrds) default(none) & !$OMP shared(npts,ntrcaer,aerin,aer_pres,prsl) & !$OMP shared(ddx,ddy,jindx1,jindx2,iindx1,iindx2) & -!$OMP shared(aerpm,aerpres,aerout,lev,nthrds) & -!$OMP shared(temij,temiy,temjx,ddxy) & -!$OMP private(l,j,k,ii,i1,i2,j1,j2,tem) & -!$OMP copyin(tx1,tx2) firstprivate(tx1,tx2) +!$OMP shared(aerpm,aerpres,aerout,lev,nthrds) & +!$OMP shared(temij,temiy,temjx,ddxy,tx1,tx2) & +!$OMP private(l,j,k,ii,i1,i2,j1,j2,tem,tem1,tem2) !$OMP do #endif @@ -416,10 +415,10 @@ SUBROUTINE aerinterpol( me,master,nthrds,npts,IDATE,FHOUR,iflip, jindx1,jindx2, ENDIF ENDDO tem = 1.0 / (aerpres(j,i1) - aerpres(j,i2)) - tx1 = (prsl(j,L) - aerpres(j,i2)) * tem - tx2 = (aerpres(j,i1) - prsl(j,L)) * tem + tem1 = (prsl(j,L) - aerpres(j,i2)) * tem + tem2 = (aerpres(j,i1) - prsl(j,L)) * tem DO ii = 1, ntrcaer - aerout(j,L,ii) = aerpm(j,i1,ii)*tx1 + aerpm(j,i2,ii)*tx2 + aerout(j,L,ii) = aerpm(j,i1,ii)*tem1 + aerpm(j,i2,ii)*tem2 ENDDO endif ENDDO !L-loop From 9e5eeb83f70a2d6730684617306dc58c88fb2162 Mon Sep 17 00:00:00 2001 From: helin wei Date: Thu, 4 Apr 2024 15:09:44 +0000 Subject: [PATCH 05/80] create a single_loop_alternate for hr4_test3 --- .../Land/Noahmp/module_sf_noahmplsm.F90 | 33 +++++++++---------- 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 b/physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 index 6abd59f69..d97a81ba2 100644 --- a/physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 +++ b/physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 @@ -4052,11 +4052,6 @@ subroutine vege_flux(parameters,nsnow ,nsoil ,isnow ,vegtyp ,veg , & end if -! prepare for longwave rad. - - air = -emv*(1.+(1.-emv)*(1.-emg))*lwdn - emv*emg*sb*tg**4 - cir = (2.-emv*(1.-emg))*emv*sb -! if(opt_sfc == 4) then gdx = sqrt(garea1) @@ -4203,6 +4198,11 @@ subroutine vege_flux(parameters,nsnow ,nsoil ,isnow ,vegtyp ,veg , & end if end if +! prepare for longwave rad. + + air = -emv*(1.+(1.-emv)*(1.-emg))*lwdn - emv*emg*sb*tg**4 + cir = (2.-emv*(1.-emg))*emv*sb + ! prepare for sensible heat flux above veg. cah = 1./rahc @@ -4265,7 +4265,7 @@ subroutine vege_flux(parameters,nsnow ,nsoil ,isnow ,vegtyp ,veg , & ! update vegetation surface temperature tv = tv + dtv -! tah = ata + bta*tv ! canopy air t; update here for consistency + tah = ata + bta*tv ! canopy air t; update here for consistency ! for computing m-o length in the next iteration h = rhoair*cpair*(tah - sfctmp) /rahc @@ -4278,15 +4278,7 @@ subroutine vege_flux(parameters,nsnow ,nsoil ,isnow ,vegtyp ,veg , & qfx = (qsfc-qair)*rhoair*caw endif - - if (liter == 1) then - exit loop1 - endif - if (iter >= 5 .and. abs(dtv) <= 0.01 .and. liter == 0) then - liter = 1 - endif - - end do loop1 ! end stability iteration +! after canopy balance, do the under-canopy ground balance ! under-canopy fluxes and tg @@ -4296,8 +4288,6 @@ subroutine vege_flux(parameters,nsnow ,nsoil ,isnow ,vegtyp ,veg , & cev = rhoair*cpair / (gammag*(rawg+rsurf)) ! barlage: change to ground v3.6 cgh = 2.*df(isnow+1)/dzsnso(isnow+1) - loop2: do iter = 1, niterg - t = tdc(tg) call esat(t, esatw, esati, dsatw, dsati) if (t .gt. 0.) then @@ -4323,7 +4313,14 @@ subroutine vege_flux(parameters,nsnow ,nsoil ,isnow ,vegtyp ,veg , & gh = gh + cgh*dtg tg = tg + dtg - end do loop2 + if (liter == 1) then + exit loop1 + endif + if (iter >= 5 .and. abs(dtv) <= 0.01 .and. abs(dtg) <= 0.01 .and. liter == 0) then + liter = 1 ! if conditions are met, then do one final loop + endif + + end do loop1 ! tah = (cah*sfctmp + cvh*tv + cgh*tg)/(cah + cvh + cgh) From e039a94ae1a718fe7e7c517c1f61c6d4fc100c8d Mon Sep 17 00:00:00 2001 From: helin wei Date: Mon, 8 Apr 2024 23:13:53 +0000 Subject: [PATCH 06/80] opt_trs bug fixed --- physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 b/physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 index d97a81ba2..e519e472c 100644 --- a/physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 +++ b/physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 @@ -5873,7 +5873,7 @@ subroutine thermalz0(parameters, fveg, z0m, z0mg, zlvl, z0h_out = z0m_out - elseif (opt_trs == chen09 .or. opt_trs == tessel) then + elseif (opt_trs == tessel) then if (vegtyp <= 5) then z0h_out = z0m_out @@ -5881,7 +5881,7 @@ subroutine thermalz0(parameters, fveg, z0m, z0mg, zlvl, z0h_out = z0m_out * 0.01 endif - elseif (opt_trs == blumel99) then + elseif (opt_trs == chen09 .or. opt_trs == blumel99) then reyn = ustarx*z0m_out/viscosity ! Blumel99 eqn 36c if (reyn > 2.0) then From 6f6175acdc789f1eba3aa2e455019423d453b997 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Sun, 12 May 2024 20:23:05 -0600 Subject: [PATCH 07/80] Update MPI communicator in GFS_debug.F90 --- .../UFS_SCM_NEPTUNE/GFS_debug.F90 | 22 ++++++++----------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.F90 index e4caf708b..cdd3d8e2b 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.F90 @@ -426,7 +426,7 @@ subroutine GFS_diagtoscreen_run (Model, Statein, Stateout, Sfcprop, Coupling, !--- local variables integer :: impi, iomp, ierr, n, idtend, iprocess, itracer - integer :: mpirank, mpisize, mpicomm + integer :: mpirank, mpisize integer :: omprank, ompsize ! Initialize CCPP error handling variables @@ -434,13 +434,11 @@ subroutine GFS_diagtoscreen_run (Model, Statein, Stateout, Sfcprop, Coupling, errflg = 0 #ifdef MPI - mpicomm = Model%communicator mpirank = Model%me mpisize = Model%ntasks #else mpirank = 0 mpisize = 1 - mpicomm = 0 #endif #ifdef _OPENMP omprank = OMP_GET_THREAD_NUM() @@ -454,7 +452,7 @@ subroutine GFS_diagtoscreen_run (Model, Statein, Stateout, Sfcprop, Coupling, !$OMP BARRIER #endif #ifdef MPI -! call MPI_BARRIER(mpicomm,ierr) +! call MPI_BARRIER(Model%communicator,ierr) #endif do impi=0,mpisize-1 @@ -952,7 +950,7 @@ subroutine GFS_diagtoscreen_run (Model, Statein, Stateout, Sfcprop, Coupling, #endif end do #ifdef MPI -! call MPI_BARRIER(mpicomm,ierr) +! call MPI_BARRIER(Model%communicator,ierr) #endif end do @@ -960,7 +958,7 @@ subroutine GFS_diagtoscreen_run (Model, Statein, Stateout, Sfcprop, Coupling, !$OMP BARRIER #endif #ifdef MPI -! call MPI_BARRIER(mpicomm,ierr) +! call MPI_BARRIER(Model%communicator,ierr) #endif end subroutine GFS_diagtoscreen_run @@ -1104,7 +1102,7 @@ subroutine GFS_interstitialtoscreen_run (Model, Statein, Stateout, Sfcprop, Coup !--- local variables integer :: impi, iomp, ierr - integer :: mpirank, mpisize, mpicomm + integer :: mpirank, mpisize integer :: omprank, ompsize integer :: istart, iend, kstart, kend @@ -1113,13 +1111,11 @@ subroutine GFS_interstitialtoscreen_run (Model, Statein, Stateout, Sfcprop, Coup errflg = 0 #ifdef MPI - mpicomm = Model%communicator mpirank = Model%me - call MPI_COMM_SIZE(mpicomm, mpisize, ierr) + call MPI_COMM_SIZE(Model%communicator, mpisize, ierr) #else mpirank = 0 mpisize = 1 - mpicomm = 0 #endif #ifdef _OPENMP omprank = OMP_GET_THREAD_NUM() @@ -1133,7 +1129,7 @@ subroutine GFS_interstitialtoscreen_run (Model, Statein, Stateout, Sfcprop, Coup !$OMP BARRIER #endif #ifdef MPI -! call MPI_BARRIER(mpicomm,ierr) +! call MPI_BARRIER(Model%communicator,ierr) #endif do impi=0,mpisize-1 @@ -1482,7 +1478,7 @@ subroutine GFS_interstitialtoscreen_run (Model, Statein, Stateout, Sfcprop, Coup #endif end do #ifdef MPI -! call MPI_BARRIER(mpicomm,ierr) +! call MPI_BARRIER(Model%communicator,ierr) #endif end do @@ -1490,7 +1486,7 @@ subroutine GFS_interstitialtoscreen_run (Model, Statein, Stateout, Sfcprop, Coup !$OMP BARRIER #endif #ifdef MPI -! call MPI_BARRIER(mpicomm,ierr) +! call MPI_BARRIER(Model%communicator,ierr) #endif end subroutine GFS_interstitialtoscreen_run From d827f4c9461392b6162cc123647b9e5f9ae13b22 Mon Sep 17 00:00:00 2001 From: Man Zhang Date: Mon, 13 May 2024 10:18:05 -0600 Subject: [PATCH 08/80] initiate SciDoc for CCPP-SCM v7 --- physics/docs/ccpp_doxyfile | 170 +++------------------ physics/docs/pdftxt/GFS_RRTMG.txt | 2 +- physics/docs/pdftxt/GFS_RRTMGP.txt | 2 +- physics/docs/pdftxt/GFS_ugwpv1_gsldrag.txt | 6 +- physics/docs/pdftxt/GFS_v16_suite.txt | 2 +- physics/docs/pdftxt/GFS_v17_p8_RRTMGP.txt | 32 ++++ physics/docs/pdftxt/GFS_v17_p8_suite.txt | 18 +-- physics/docs/pdftxt/RRFS_v1_suite.txt | 35 +++++ physics/docs/pdftxt/WoFS_v0_suite.txt | 2 +- physics/docs/pdftxt/all_schemes_list.txt | 34 +++-- physics/docs/pdftxt/mainpage.txt | 36 ++--- physics/docs/pdftxt/rad_cld.txt | 2 +- physics/docs/pdftxt/suite_input.nml.txt | 39 ++++- 13 files changed, 178 insertions(+), 202 deletions(-) create mode 100644 physics/docs/pdftxt/GFS_v17_p8_RRTMGP.txt create mode 100644 physics/docs/pdftxt/RRFS_v1_suite.txt diff --git a/physics/docs/ccpp_doxyfile b/physics/docs/ccpp_doxyfile index b4ca66424..2b7d345b5 100644 --- a/physics/docs/ccpp_doxyfile +++ b/physics/docs/ccpp_doxyfile @@ -2,7 +2,7 @@ DOXYFILE_ENCODING = UTF-8 PROJECT_NAME = "CCPP SciDoc" -PROJECT_NUMBER = "v6.0.0" +PROJECT_NUMBER = "v7.0.0" PROJECT_BRIEF = "Common Community Physics Package Developed at DTC" PROJECT_LOGO = img/dtc_logo.png OUTPUT_DIRECTORY = doc @@ -118,13 +118,12 @@ INPUT = pdftxt/mainpage.txt \ pdftxt/all_schemes_list.txt \ pdftxt/GFS_v16_suite.txt \ pdftxt/GFS_v17_p8_suite.txt \ - pdftxt/RAP_suite.txt \ - pdftxt/HRRR_suite.txt \ - pdftxt/RE6/FV3_HRRR_input.nml \ - pdftxt/RRFS_v1beta_suite.txt \ + pdftxt/GFS_v17_p8_RRTMGP.txt \ + pdftxt/RRFS_v1_suite.txt \ pdftxt/WoFS_v0_suite.txt \ pdftxt/RRFS_SGSCLOUD.txt \ pdftxt/GFS_RRTMG.txt \ + pdftxt/GFS_RRTMGP.txt \ pdftxt/GFS_SFCLYR.txt \ pdftxt/MYNN_SFCLAYER.txt \ pdftxt/GFS_NSST.txt \ @@ -135,6 +134,7 @@ INPUT = pdftxt/mainpage.txt \ pdftxt/GFS_NOAHMP.txt \ pdftxt/GFS_UGWPv0.txt \ pdftxt/GFS_unified_ugwp.txt \ + pdftxt/GFS_ugwpv1_gsldrag.txt \ pdftxt/GFS_drag_suite.txt \ pdftxt/GFS_GWDPS.txt \ pdftxt/GFS_OZPHYS.txt \ @@ -146,151 +146,23 @@ INPUT = pdftxt/mainpage.txt \ pdftxt/MYNN_EDMF.txt \ pdftxt/CU_GF_deep.txt \ pdftxt/RUCLSM.txt \ + pdftxt/CLM_LAKE.txt \ pdftxt/THOMPSON.txt \ pdftxt/suite_input.nml.txt \ pdftxt/GFS_SPP.txt \ - ../fv_sat_adj.F90 \ - ../GFS_time_vary_pre.fv3.F90 \ - ../GFS_rad_time_vary.fv3.F90 \ - ../GFS_phys_time_vary.fv3.F90 \ - ../get_prs_fv3.F90 \ - ../get_phi_fv3.F90 \ - ../ozne_def.f \ - ../ozinterp.f90 \ - ../h2o_def.f \ - ../h2ointerp.f90 \ - ../aerclm_def.F \ - ../aerinterp.F90 \ - ../iccn_def.F \ - ../iccninterp.F90 \ - ../sfcsub.F \ - ../gcycle.F90 \ - ../GFS_suite_interstitial_1.F90 \ - ../GFS_suite_interstitial_2.F90 \ - ../GFS_suite_interstitial_3.F90 \ - ../GFS_suite_interstitial_4.F90 \ - ../GFS_suite_interstitial_5.F90 \ - ../GFS_suite_interstitial_phys_reset.F90 \ - ../GFS_suite_interstitial_rad_reset.F90 \ - ../GFS_suite_stateout_reset.F90 \ - ../GFS_suite_stateout_update.F90 \ - ../GFS_surface_composites_inter.F90 \ - ../GFS_surface_composites_pre.F90 \ - ../GFS_surface_composites_post.F90 \ - ../GFS_surface_loop_control_part1.F90 \ - ../GFS_surface_loop_control_part2.F90 \ - ../GFS_radiation_surface.F90 \ - ../GFS_rrtmg_pre.F90 \ - ../GFS_rrtmg_post.F90 \ - ../GFS_rrtmg_setup.F90 \ - ../rad_sw_pre.F90 \ - ../sgscloud_radpre.F90 \ - ../sgscloud_radpost.F90 \ - ../radsw_main.F90 \ - ../rrtmg_sw_post.F90 \ - ../rrtmg_lw_pre.F90 \ - ../radlw_main.F90 \ - ../rrtmg_lw_post.F90 \ - ../radiation_aerosols.f \ - ../radiation_astronomy.f \ - ../radiation_clouds.f \ - ../radiation_cloud_overlap.F90 \ - ../radiation_gases.f \ - ../radiation_surface.f \ - ../radlw_param.f \ - ../radlw_datatb.f \ - ../radsw_param.f \ - ../radsw_datatb.f \ - ../GFS_cloud_diagnostics.F90 \ - ../dcyc2t3.f \ - ../sfc_diff.f \ - ../sfc_diag.f \ - ../sfc_diag_post.F90 \ - ../sfc_nst.f \ - ../sfc_nst_pre.f \ - ../sfc_nst_post.f \ - ../sfc_ocean.F \ - ../module_nst_model.f90 \ - ../module_nst_parameters.f90 \ - ../module_nst_water_prop.f90 \ - ../lsm_noah.f \ - ../sflx.f \ - ../namelist_soilveg.f \ - ../set_soilveg.f \ - ../noahmpdrv.F90 \ - ../module_sf_noahmplsm.f90 \ - ../module_sf_noahmp_glacier.f90 \ - ../noahmp_tables.f90 \ - ../GFS_surface_generic_pre.F90 \ - ../GFS_surface_generic_post.F90 \ - ../surface_perturbation.F90 \ - ../GFS_DCNV_generic_pre.F90 \ - ../GFS_DCNV_generic_post.F90 \ - ../GFS_SCNV_generic_pre.F90 \ - ../GFS_SCNV_generic_post.F90 \ - ../sfc_sice.f \ - ../satmedmfvdifq.F \ - ../mfpbltq.f \ - ../mfscuq.f \ - ../tridi.f \ - ../GFS_GWD_generic_pre.F90 \ - ../GFS_GWD_generic_post.F90 \ - ../unified_ugwp.F90 \ - ../drag_suite.F90 \ - ../cires_tauamf_data.F90 \ - ../cires_orowam2017.f \ - ../cires_ugwp.F90 \ - ../cires_ugwp_initialize.F90 \ - ../cires_ugwp_module.F90 \ - ../cires_ugwp_post.F90 \ - ../cires_ugwp_triggers.F90 \ - ../cires_ugwp_module.F90 \ - ../gwdps.f \ - ../ugwp_driver_v0.F \ - ../ozphys_2015.f \ - ../h2ophys.f \ - ../samfdeepcnv.f \ - ../samfshalcnv.f \ - ../cnvc90.f \ - ../module_bfmicrophysics.f \ - ../gfdl_cloud_microphys.F90 \ - ../module_gfdl_cloud_microphys.F90 \ - ../GFS_MP_generic_pre.F90 \ - ../GFS_MP_generic_post.F90 \ - ../GFS_PBL_generic_common.F90 \ - ../GFS_PBL_generic_pre.F90 \ - ../GFS_PBL_generic_post.F90 \ - ../calpreciptype.f90 \ - ../GFS_stochastics.F90 \ - ../cu_gf_driver.F90 \ - ../cu_gf_driver_pre.F90 \ - ../cu_gf_deep.F90 \ - ../cu_gf_sh.F90 \ - ../cu_gf_driver_post.F90 \ - ../mynnedmf_wrapper.F90 \ - ../module_bl_mynn.F90 \ - ../mynnsfc_wrapper.F90 \ - ../module_sf_mynn.F90 \ - ../lsm_ruc.F90 \ - ../module_sf_ruclsm.F90 \ - ../namelist_soilveg_ruc.F90 \ - ../set_soilveg_ruc.F90 \ - ../module_soil_pre.F90 \ - ../mp_thompson_pre.F90 \ - ../module_mp_thompson_make_number_concentrations.F90 \ - ../mp_thompson.F90 \ - ../module_mp_thompson.F90 \ - ../module_mp_radar.F90 \ - ../mp_thompson_post.F90 \ - ../mp_nssl.F90 \ - ../module_mp_nssl_2mom.F90 \ - ../funcphys.f90 \ - ../physparam.f \ - ../physcons.F90 \ - ../radcons.f90 \ - ../mersenne_twister.f \ - ../maximum_hourly_diagnostics.F90 \ - ../phys_tend.F90 + pdftxt/rad_cld.txt \ + ../MP \ + ../CONV \ + ../GWD \ + ../SFC_Layer \ + ../PBL \ + ../SFC_Models \ + ../photochem \ + ../Radiation \ + ../smoke_dust \ + ../hooks \ + ../tools \ + ../Interstitials INPUT_ENCODING = UTF-8 FILE_PATTERNS = *.f \ @@ -415,7 +287,7 @@ EXTRA_SEARCH_MAPPINGS = # Configuration options related to the LaTeX output #--------------------------------------------------------------------------- -GENERATE_LATEX = YES +GENERATE_LATEX = NO LATEX_OUTPUT = latex LATEX_CMD_NAME = latex MAKEINDEX_CMD_NAME = makeindex @@ -541,7 +413,7 @@ DIRECTORY_GRAPH = YES DIR_GRAPH_MAX_DEPTH = 1 DOT_IMAGE_FORMAT = SVG INTERACTIVE_SVG = NO -DOT_PATH = +DOT_PATH = /Users/man.zhang/homebrew/bin/dot DOTFILE_DIRS = MSCFILE_DIRS = DIAFILE_DIRS = diff --git a/physics/docs/pdftxt/GFS_RRTMG.txt b/physics/docs/pdftxt/GFS_RRTMG.txt index c8881a3c3..13d9201a3 100644 --- a/physics/docs/pdftxt/GFS_RRTMG.txt +++ b/physics/docs/pdftxt/GFS_RRTMG.txt @@ -1,5 +1,5 @@ /** -\page GFS_RRTMG GFS RRTMG Shortwave/Longwave Radiation Scheme +\page GFS_RRTMG_page GFS RRTMG Shortwave/Longwave Radiation Scheme \section des_rrtmg Description Radiative processes are among the most complex and diff --git a/physics/docs/pdftxt/GFS_RRTMGP.txt b/physics/docs/pdftxt/GFS_RRTMGP.txt index 4f2ebaddd..891dd6565 100644 --- a/physics/docs/pdftxt/GFS_RRTMGP.txt +++ b/physics/docs/pdftxt/GFS_RRTMGP.txt @@ -1,5 +1,5 @@ /** -\page GFS_RRTMGP GFS RRTMGP Shortwave/Longwave Radiation Scheme +\page GFS_RRTMGP_page GFS RRTMGP Shortwave/Longwave Radiation Scheme \section des_rrtmgp Description diff --git a/physics/docs/pdftxt/GFS_ugwpv1_gsldrag.txt b/physics/docs/pdftxt/GFS_ugwpv1_gsldrag.txt index ea817ce7c..7c96bbb2e 100644 --- a/physics/docs/pdftxt/GFS_ugwpv1_gsldrag.txt +++ b/physics/docs/pdftxt/GFS_ugwpv1_gsldrag.txt @@ -1,5 +1,7 @@ -UGWPv1_gsldrag scheme. +/** +\page GFS_ugwpv1_gsldrag GFS Unified UGWP Version 1 Scheme +\section des_ugwpv1 Description The "ugwpv1_gsldrag" combines the orographic gravity wave drag (GWD) parameterizations of the GSL drag suite with the version 1 UGWP non-stationary gravity wave drag (NGW) scheme of \cite yudin_et_al_2020. For information on the GSL drag suite, click here. @@ -45,4 +47,4 @@ the effects of unresolved GWs in global forecast models, the representation of subgrid OGWs and NGWs has been implemented in the self-consistent manner using the UGWP framework. - +*/ diff --git a/physics/docs/pdftxt/GFS_v16_suite.txt b/physics/docs/pdftxt/GFS_v16_suite.txt index 8966d6be8..175a474f1 100644 --- a/physics/docs/pdftxt/GFS_v16_suite.txt +++ b/physics/docs/pdftxt/GFS_v16_suite.txt @@ -5,7 +5,7 @@ Version 16 of the Global Forecast System (GFS) was implemented operationally by the NOAA National Centers for Environmental Prediction (NCEP) in 2021. The GFS_v16 suite uses the parameterizations in the following order: - - \ref GFS_RRTMG + - \ref GFS_RRTMG_page - \ref GFS_SFCLYR - \ref GFS_NSST - \ref GFS_OCEAN diff --git a/physics/docs/pdftxt/GFS_v17_p8_RRTMGP.txt b/physics/docs/pdftxt/GFS_v17_p8_RRTMGP.txt new file mode 100644 index 000000000..29fa38222 --- /dev/null +++ b/physics/docs/pdftxt/GFS_v17_p8_RRTMGP.txt @@ -0,0 +1,32 @@ +/** +\page GFS_v17_gp_page GFS_v17_RRTMGP Suite + +\section gfsv_17_p8_gp_overview Overview + + +The GFS_v17_RRTMGP suite uses the parameterizations in the following order: + - \ref GFS_RRTMGP_page + - \ref GFS_SFCLYR + - \ref GFS_NSST + - \ref NoahMP + - \ref GFS_SFCSICE + - \ref GFS_SATMEDMFVDIFQ + - \ref GFS_UNIFIED_UGWP + - \ref GFS_OZPHYS + - \ref GFS_H2OPHYS + - \ref GFS_SAMFdeep + - \ref GFS_SAMFshal + - \ref THOMPSON + + +\section sdf_gfsv17p8gp Suite Definition File +\include suite_SCM_GFS_v17_p8_RRTMGP.xml + +\section gfs17_nml_opt_des Namelist +- General physics options +\snippet SCM_GFS_v17_p8_gp_input.nml GFS_PHYSICS_NML +- \ref GFS_UNIFIED_UGWP related options +\snippet SCM_GFS_v17_p8_gp_input.nml CIRES_UGWP_NML + + +*/ diff --git a/physics/docs/pdftxt/GFS_v17_p8_suite.txt b/physics/docs/pdftxt/GFS_v17_p8_suite.txt index 3a9592b5d..0d8917c74 100644 --- a/physics/docs/pdftxt/GFS_v17_p8_suite.txt +++ b/physics/docs/pdftxt/GFS_v17_p8_suite.txt @@ -1,25 +1,25 @@ /** -\page GFS_v17_p8_page GFS_v17_p8 Suite +\page GFS_v17_page GFS_v17 Suite -\section gfsv_17_p8_suite_overview Overview +\section gfsv_17_suite_overview Overview Version 17 of the Global Forecast System (GFS) is scheduled for operational implementation by the NOAA -National Centers for Environmental Prediction (NCEP) in 2024. The GFS_v17_p8 suite is a prototype of +National Centers for Environmental Prediction (NCEP) in 2024. The GFS_v17 suite is a prototype of the GFS_v17 suite, and is expected to evolve before the implementation. It is available for use -with the CCPP SCM. The primary differences between the GFS_v16 and GFS_v17_p8 suites are: +with the CCPP SCM. The primary differences between the GFS_v16 and GFS_v17 suites are: - \b Microphysics: The replacement of \ref GFDL_cloud with \ref THOMPSON -- \b Deep \b Cumulus: Add \ref ca_page -- \b Gravity \b Wave \b Drag: The replacement of \ref GFS_UGWP_v0 with \ref GFS_UNIFIED_UGWP +- PBL and Convection updates +- \b Gravity \b Wave \b Drag: The replacement of \ref GFS_UGWP_v0 with \ref GFS_ugwpv1_gsldrag - \b Land \b Surface \b Model: The replacement of \ref GFS_NOAH with \ref NoahMP -The GFS_v17_p8 suite uses the parameterizations in the following order: - - \ref GFS_RRTMG +The GFS_v17 suite uses the parameterizations in the following order: + - \ref GFS_RRTMG_page - \ref GFS_SFCLYR - \ref GFS_NSST - \ref NoahMP - \ref GFS_SFCSICE - \ref GFS_SATMEDMFVDIFQ - - \ref GFS_UNIFIED_UGWP + - \ref GFS_ugwpv1_gsldrag - \ref GFS_OZPHYS - \ref GFS_H2OPHYS - \ref GFS_SAMFdeep diff --git a/physics/docs/pdftxt/RRFS_v1_suite.txt b/physics/docs/pdftxt/RRFS_v1_suite.txt new file mode 100644 index 000000000..bcee82e7d --- /dev/null +++ b/physics/docs/pdftxt/RRFS_v1_suite.txt @@ -0,0 +1,35 @@ +/** +\page RRFS_v1_page RRFS_v1 Suite + +\section RRFS_v1_suite_overview Overview + +The RRFS_v1 suite is one of the candidates for the future operational implementation of +the Rapid Refresh Forecast System (RRFS), which can be configured using the UFS SRW App. This suite is most +applicable for runs at 3-km resolution since it does not parameterize +deep convection. + +The RRFS_v1beta suite uses the parameterizations in the following order: + - \ref SGSCLOUD_page + - \ref GFS_RRTMG_page + - \ref SFC_MYNNSFL + - \ref GFS_NSST + - \ref NoahMP + - \ref GFS_SFCSICE + - \ref MYNNEDMF + - \ref GFS_UGWP_v0 + - \ref GFS_OZPHYS + - \ref GFS_H2OPHYS + - \ref THOMPSON + +\section sdf_rrfsv1suite Suite Definition File +\include suite_FV3_RRFS_v1.xml + +\section rrfs_nml_option Namelist +- General physics options +\snippet FV3_RRFS_v1_input.nml GFS_PHYSICS_NML +- \ref GFS_UGWP_v0 related options +\snippet FV3_RRFS_v1_input.nml CIRES_UGWP_NML + + + +*/ diff --git a/physics/docs/pdftxt/WoFS_v0_suite.txt b/physics/docs/pdftxt/WoFS_v0_suite.txt index bf868a461..8e5a6e6c2 100644 --- a/physics/docs/pdftxt/WoFS_v0_suite.txt +++ b/physics/docs/pdftxt/WoFS_v0_suite.txt @@ -10,7 +10,7 @@ not parameterize deep convection. The WoFS suite uses the parameterizations in the following order: - \ref SGSCLOUD_page - - \ref GFS_RRTMG + - \ref GFS_RRTMG_page - \ref SFC_MYNNSFL - \ref GFS_NSST - \ref GFS_NOAH diff --git a/physics/docs/pdftxt/all_schemes_list.txt b/physics/docs/pdftxt/all_schemes_list.txt index 138310b61..45ea516ac 100644 --- a/physics/docs/pdftxt/all_schemes_list.txt +++ b/physics/docs/pdftxt/all_schemes_list.txt @@ -9,7 +9,8 @@ which facilitates model development and code maintenance. While some individual \b Radiation - - \subpage GFS_RRTMG + - \subpage GFS_RRTMG_page + - \subpage GFS_RRTMGP_page \b PBL \b and \b Turbulence - \subpage GFS_SATMEDMFVDIFQ @@ -19,6 +20,7 @@ which facilitates model development and code maintenance. While some individual - \subpage GFS_NOAH - \subpage RUCLSM - \subpage NoahMP + - \subpage CLM_LAKE_model \b Cumulus \b Parameterizations - \subpage GFS_SAMFdeep @@ -41,6 +43,7 @@ which facilitates model development and code maintenance. While some individual - \subpage GFS_UGWP_v0 - \subpage GFS_UNIFIED_UGWP - \subpage GFS_drag_suite + - \subpage GFS_ugwpv1_gsldrag \b Surface \b Layer - \subpage GFS_SFCLYR @@ -52,7 +55,6 @@ which facilitates model development and code maintenance. While some individual - \subpage GFS_SFCSICE \b Others - - \ref ca_page - \subpage GFS_SPP The input information for the parameterizations includes the values of the gridbox mean prognostic variables (wind components, temperature, @@ -74,26 +76,26 @@ to the parameterization. \section allsuite_overview Physics Suites -There are two publicly supported host models that use CCPP v6: the UFS Weather Model and the CCPP Single Column Model (SCM). +There are two publicly supported host models that use CCPP v7: the UFS Weather Model and the CCPP Single Column Model (SCM). The UFS Weather Model is included in the UFS Short Range Weather Application (SRW App) v2. The forcing datasets included in the CCPP SCM v6.0.0 public release were created by averaging observations and large-eddy simulations over areas that are too coarse to resolve convection. Therefore, best results will be obtained with the CCPP SCM v6.0 when using suites that include parameterized convection. -Table 1. Physics suites and primary schemes supported in CCPP v6.0.0 +Table 1. Physics suites and primary schemes supported in CCPP v7.0.0 \tableofcontents -| Physics suites | GFS_v16 | GFS_v17_p8 | RAP | HRRR | RRFS_v1beta | WoFS_v0 | -|------------------|--------------------|-------------------------|------------------|-----------------------------|--------------------|---------------| -|\b Host | SCM \n SRWv2 | SCM | SCM | SCM \n SRWv2 | SCM \n SRWv2 | SCM \n SRWv2 | -|\b Deep \b Cu | \ref GFS_SAMFdeep | \ref GFS_SAMFdeep + \ref ca_page | \ref CU_GF | \a off | \a off | \a off | -|\b Shallow \b Cu | \ref GFS_SAMFshal | \ref GFS_SAMFshal | \ref CU_GF | \ref MYNNEDMF | \ref MYNNEDMF | \ref MYNNEDMF | -|\b Microphysics | \ref GFDL_cloud | \ref THOMPSON w/o aerosol-aware | \ref THOMPSON | \ref THOMPSON | \ref THOMPSON | \ref NSSLMICRO_page | -|\b PBL/TURB | \ref GFS_SATMEDMFVDIFQ | \ref GFS_SATMEDMFVDIFQ | \ref MYNNEDMF | \ref MYNNEDMF | \ref MYNNEDMF | \ref MYNNEDMF | -|\b Radiation | \ref GFS_RRTMG | \ref GFS_RRTMG | \ref GFS_RRTMG | \ref GFS_RRTMG | \ref GFS_RRTMG | \ref GFS_RRTMG | -|\b Surface \b Layer | \ref GFS_SFCLYR | \ref GFS_SFCLYR | \ref SFC_MYNNSFL | \ref SFC_MYNNSFL | \ref SFC_MYNNSFL | \ref SFC_MYNNSFL | -|\b LSM | \ref GFS_NOAH | \ref NoahMP | \ref RUCLSM | \ref RUCLSM | \ref NoahMP | \ref GFS_NOAH | -|\b Gravity \b Wave \b Drag| \ref GFS_UGWP_v0 | \ref GFS_UNIFIED_UGWP | \ref GFS_drag_suite | \ref GFS_drag_suite | \ref GFS_UGWP_v0 | \ref GFS_UGWP_v0 | -|\b Sea \b Ice | \ref GFS_SFCSICE | \ref GFS_SFCSICE | \ref RUCLSM | \ref RUCLSM | \ref GFS_SFCSICE | \ref GFS_SFCSICE | +| Physics suites | GFS_v16 | GFS_v17 | GFS_v17_RRTMGP | RRFS_v1 | WoFS_v0 | +|------------------|--------------------|----------------------|-----------------------------|-----------------------|------------------| +|\b Host | SCM \n SRWv2 | SCM \n MWR | SCM | SCM \n RRFS | SCM \n WoFS | +|\b Deep \b Cu | \ref GFS_SAMFdeep | \ref GFS_SAMFdeep | \ref GFS_SAMFdeep | \ref CU_GF | \a off | +|\b Shallow \b Cu | \ref GFS_SAMFshal | \ref GFS_SAMFshal | \ref GFS_SAMFshal | \ref CU_GF | \ref MYNNEDMF | +|\b Microphysics | \ref GFDL_cloud | \ref THOMPSON w/o aerosol-aware | \ref THOMPSON w/o aerosol-aware | \ref THOMPSON | \ref NSSLMICRO_page | +|\b PBL/TURB | \ref GFS_SATMEDMFVDIFQ | \ref GFS_SATMEDMFVDIFQ | \ref GFS_SATMEDMFVDIFQ | \ref MYNNEDMF | \ref MYNNEDMF | +|\b Radiation | \ref GFS_RRTMG_page | \ref GFS_RRTMG_page | \ref GFS_RRTMGP_page | \ref GFS_RRTMG_page | \ref GFS_RRTMG_page | +|\b Surface \b Layer | \ref GFS_SFCLYR | \ref GFS_SFCLYR | \ref GFS_SFCLYR | \ref SFC_MYNNSFL | \ref SFC_MYNNSFL | +|\b LSM | \ref GFS_NOAH | \ref NoahMP | \ref NoahMP | \ref RUCLSM | \ref GFS_NOAH | +|\b Gravity \b Wave \b Drag| \ref GFS_UGWP_v0 | \ref GFS_ugwpv1_gsldrag | \ref GFS_ugwpv1_gsldrag | \ref GFS_drag_suite | \ref GFS_UGWP_v0 | +|\b Sea \b Ice | \ref GFS_SFCSICE | \ref GFS_SFCSICE | \ref GFS_SFCSICE | \ref RUCLSM | \ref GFS_SFCSICE | \tableofcontents diff --git a/physics/docs/pdftxt/mainpage.txt b/physics/docs/pdftxt/mainpage.txt index 7881161b5..63233af31 100644 --- a/physics/docs/pdftxt/mainpage.txt +++ b/physics/docs/pdftxt/mainpage.txt @@ -2,7 +2,7 @@ \mainpage Introduction Welcome to the scientific documentation for the parameterizations available in the Common -Community Physics Package (CCPP) v6.0.0 and the suites that can be configured using them. +Community Physics Package (CCPP) v7.0.0 and the suites that can be configured using them. The CCPP-Physics (available through https://github.com/NCAR/ccpp-physics/) is envisioned to contain parameterizations used in the Unified Forecast System (UFS) @@ -18,21 +18,17 @@ behavior out to about two weeks. The CCPP parameterizations are aggregated in suites by the host models. In this release, the CCPP Single Column Model (SCM), developed by the Development Testbed Center (DTC), supports suites: - \ref GFS_v16_page -- \ref GFS_v17_p8_page -- \ref HRRR_suite_page -- \ref RRFS_v1beta_page +- \ref GFS_v17_page +- \ref GFS_v17_gp_page +- \ref RRFS_v1_page - \ref WoFS_v0_page -- \ref rap_suite_page -while the UFS Short-Range Weather Application 2.0 supports suites \ref GFS_v16_page, \ref HRRR_suite_page, \ref RRFS_v1beta_page and -\ref WoFS_v0_page. New schemes and capability highlights in this release: -- \ref NSSLMICRO_page -- \ref GFS_UNIFIED_UGWP and \ref GFS_drag_suite -- \ref SFC_MYNNSFL -- \ref ca_page -- \ref GFS_SPP +- \ref GFS_ugwpv1_gsldrag +- \ref GFS_RRTMGP_page +- \ref CLM_LAKE_model +- \ref RAD_CLD In this website you will find documentation on various aspects of each parameterization, including a high-level overview of its function, the input/output argument list, @@ -48,18 +44,18 @@ CCPP team would like to express our deepest gratitude for UFS physics developers development of CCPP-Physics. \n We would also like to give special thanks to: -- \b NOAA \b Global \b Systems \b Laboratory: Hannah Barnes, Jeff Beck, Georg Grell, Joseph Olson, Tanya Smirnova, Michael Toy -- \b NOAA \b Physical \b Sciences \b Laboratory: Jian-Wen Bao, Lisa Bengtsson, Song-You Hong -- \b NOAA \b National \b Severe \b Storms \b Laboratory: Ted Mansell -- \b NOAA \b Environmental \b Modeling \b Center: Jongil Han, Qingfu Liu, Ruiyu Sun -- \b Atmospheric \b and \b Environmental \b Research, \b Inc.: Michael Iacono -- \b Joint \b Center \b for \b Satellite \b Data \b Assimilation: Greg Thompson -- \b NASA \b Goddard \b Space \b Flight \b Center: Valery Yudin +- \b NOAA \b Global \b Systems \b Laboratory: +- \b NOAA \b Physical \b Sciences \b Laboratory: +- \b NOAA \b National \b Severe \b Storms \b Laboratory: +- \b NOAA \b Environmental \b Modeling \b Center: +- \b Atmospheric \b and \b Environmental \b Research, \b Inc.: +- \b Joint \b Center \b for \b Satellite \b Data \b Assimilation: +- \b NASA \b Goddard \b Space \b Flight \b Center: as a whole for their support and contribution for this CCPP scientific documentation (SciDoc). -\b CCPP \b SciDoc \b Team: Man Zhang, Ligia Bernardet, Grant Firl, Dom Heinzeller, and Weiwei Li +\b CCPP \b SciDoc \b Team: \n Developmental Testbed Center */ diff --git a/physics/docs/pdftxt/rad_cld.txt b/physics/docs/pdftxt/rad_cld.txt index 82bd37855..787764ee6 100644 --- a/physics/docs/pdftxt/rad_cld.txt +++ b/physics/docs/pdftxt/rad_cld.txt @@ -1,5 +1,5 @@ /** -\page RAD_CLD GFS Cloud-Radiation Interaction +\page RAD_CLD UFS Cloud-Radiation Interaction \section des_radcld Description The cloud-radiation interaction in the CCPP-Physics can be grouped in terms of three processes: diff --git a/physics/docs/pdftxt/suite_input.nml.txt b/physics/docs/pdftxt/suite_input.nml.txt index c4bb5003b..4bbf02752 100644 --- a/physics/docs/pdftxt/suite_input.nml.txt +++ b/physics/docs/pdftxt/suite_input.nml.txt @@ -36,9 +36,16 @@ show some variables in the namelist that must match the SDF. qdiag3d see \a GFS_typedefs.F90 flag for 3D tracer diagnostic fields .false. lssav see \a GFS_typedefs.F90 flag for storing diagnostics .false. cplflx see \a GFS_typedefs.F90 flag for using fluxes provided by an external model .false. +cplice +cplocn2atm cplwav see \a GFS_typedefs.F90 flag for using information produced by an external ocean wave model .false. -cplchm see \a GFS_typedefs.F90 flag for coupled chemistry diagnostics .false. cplwav2atm see \a GFS_typedefs.F90 flag for wave to atm coupling .false. +cplaqm +cplchm see \a GFS_typedefs.F90 flag for coupled chemistry diagnostics .false. +cpllnd +cpllnd2atm +rrfs_sd +use_cice_alb oz_phys_2015 ozphys_2015 flag for new (2015) ozone physics .false. fhcyc gfs_phys_time_vary frequency for surface data cycling in hours 0.0 use_ufo gfs_phys_time_vary flag for using unfiltered orography surface option .false. @@ -178,6 +185,36 @@ show some variables in the namelist that must match the SDF. lwhtr rrtmg_lw flag for output of longwave heating rate .true. swhtr rrtmg_sw flag for output of shortwave heating rate .true. nhfrad gfs_time_vary_pre number of timesteps for which to call radiation on physics timestep (coldstarts) 0 +\b Parameters \b related \b to \b RRTMGP \b schemes +do_RRTMGP GFS_rrtmgp_setup use RRTMGP .false. +active_gases GFS_rrtmgp_pre,rrtmgp_lw_main,rrtmgp_lw_gas_optics,rrtmgp_sw_main,rrtmgp_sw_gas_optics character list of active gases used in RRTMGP '' +nGases GFS_rrtmgp_pre,rrtmgp_lw_main,rrtmgp_sw_main number of active gases 0 +rrtmgp_root rrtmgp_lw_cloud_optics,rrtmgp_lw_main,rrtmgp_sw_cloud_optics,rrtmgp_lw_gas_optics,rrtmgp_sw_main directory of rte+rrtmgp source code '' +lw_file_gas rrtmgp_lw_main,rrtmgp_lw_gas_optics RRTMGP K-distribution file, coefficients to compute optics for gaseous atmosphere '' +lw_file_clouds RRTMGP file containing coefficients used to compute clouds optical properties '' +sw_file_gas RRTMGP K-distribution file, coefficients to compute optics for gaseous atmosphere '' +sw_file_clouds RRTMGP file containing coefficents used to compute clouds optical properties '' +rrtmgp_nBandsSW number of RRTMGP SW bands -999 +rrtmgp_nGptsSW number of RRTMGP SW spectral points -999 +rrtmgp_nBandsLW number of RRTMGP LW bands -999 +rrtmgp_nGptsLW number of RRTMGP LW spectral points -999 +doG_cldoptics use legacy RRTMG cloud optics .false. +doGP_cldoptics_PADE use RRTMGP cloud optics: PADE approximation .false. +doGP_cldoptics_LUT use RRTMGP cloud optics: LUTs .false. +iovr_convcld cloud-overlap assumption for convective cloud 1 +rrtmgp_nrghice number of ice-roughness categories 3 +rrtmgp_nGauss_ang number of angles used in Gaussian quadrature 1 +do_GPsw_Glw .false. +use_LW_jacobian use Jacobian of LW to update LW radiation tendencies .false. +damp_LW_fluxadj Damp LW Jacobian flux adjustment with height .false. +lfnc_k dcyc2t3 depth of transition layer in logistic function for LW flux adjustment damping -999 +lfnc_p0 dcyc2t3 transition pressure for LW flux adjustment damping -999 +doGP_lwscat rrtmgp_lw_main if true, include scattering in longwave cloud-optics, only compatible w/ GP cloud-optics .false. +doGP_sgs_cnv rrtmgp_lw_main, rrtmgp_sw_main if true, include SubGrdiScale convective cloud in RRTMGP +#doGP_sgs_mynn if true, include SubGridScale MYNN-EDMF cloud in RRTMGP +#rrtmgp_lw_phys_blksz number of columns for RRTMGP LW scheme to process at each instance 1 +#rrtmgp_sw_phys_blksz number of columns for RRTMGP SW scheme to process at each instance 1 +doGP_smearclds GFS_rrtmgp_cloud_mp if true, include implicit SubGridScale clouds in RRTMGP \b Parameters \b related \b to \b cumulus \b schemes imfshalcnv choice of shallow convective scheme flag for mass flux shallow convective scheme:\n
    From 31bca4e8fc5c41c01597a6d91d3718d72b581116 Mon Sep 17 00:00:00 2001 From: "helin.wei" Date: Wed, 22 May 2024 17:45:46 +0000 Subject: [PATCH 09/80] test 6-9 --- .../UFS_SCM_NEPTUNE/GFS_phys_time_vary.fv3.F90 | 18 +++++++++++++++++- .../Land/Noahmp/module_sf_noahmplsm.F90 | 11 ++++++----- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.fv3.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.fv3.F90 index f53ab3928..6c810c622 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.fv3.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.fv3.F90 @@ -593,8 +593,24 @@ subroutine GFS_phys_time_vary_init ( isnow = nint(snowxy(ix))+1 ! snowxy <=0.0, dzsno >= 0.0 +! using stc and tgxy to linearly interpolate the snow temp for each layer +!Calculate the total thickness +! total_thickness = sum(dzsno) +! Calculate the temperature difference +! temp_diff=tgxy(ix)-stc(ix,1) +! Calculate the mid-points and interpolate temperatures for each layer +! accumulated_thickness = 0.0 +! do is = isnow, 0 +! accumulated_thickness = accumulated_thickness + dzsno(is) +! mid_points(is) = accumulated_thickness - dzsno(is) / 2.0 +! layer_temp = tgxy(ix) + (mid_points(is) / total_thickness) * temp_diff +! tsnoxy(ix,is) = layer_temp +! end do + do is = isnow,0 - tsnoxy(ix,is) = tgxy(ix) +! tsnoxy(ix,is) = tgxy(ix) +! tsnoxy(ix,is) = tgxy(ix) + (( sum(dzsno(isnow:is)) -0.5*dzsno(is) )/snd)*(tgxy(ix)-stc(ix,1)) + tsnoxy(ix,is) = tgxy(ix) + (( sum(dzsno(isnow:is)) -0.5*dzsno(is) )/snd)*(stc(ix,1)-tgxy(ix)) snliqxy(ix,is) = zero snicexy(ix,is) = one * dzsno(is) * weasd(ix)/snd enddo diff --git a/physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 b/physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 index e519e472c..3451f807e 100644 --- a/physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 +++ b/physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 @@ -1989,7 +1989,7 @@ subroutine energy (parameters,ice ,vegtyp ,ist ,nsnow ,nsoil , & !in real (kind=kind_phys), parameter :: mpe = 1.e-6 real (kind=kind_phys), parameter :: psiwlt = -150. !metric potential for wilting point (m) - real (kind=kind_phys), parameter :: z0 = 0.002 ! bare-soil roughness length (m) (i.e., under the canopy) + real (kind=kind_phys), parameter :: z0 = 0.015 ! bare-soil roughness length (m) (i.e., under the canopy) ! --------------------------------------------------------------------------------------------------- ! initialize fluxes from veg. fraction @@ -2626,10 +2626,10 @@ subroutine csnow (parameters,isnow ,nsnow ,nsoil ,snice ,snliq ,dzsnso ! thermal conductivity of snow do iz = isnow+1, 0 -! tksno(iz) = 3.2217e-6*bdsnoi(iz)**2. ! stieglitz(yen,1965) + tksno(iz) = 3.2217e-6*bdsnoi(iz)**2. ! stieglitz(yen,1965) ! tksno(iz) = 2e-2+2.5e-6*bdsnoi(iz)*bdsnoi(iz) ! anderson, 1976 ! tksno(iz) = 0.35 ! constant - tksno(iz) = 2.576e-6*bdsnoi(iz)**2. + 0.074 ! verseghy (1991) +! tksno(iz) = 2.576e-6*bdsnoi(iz)**2. + 0.074 ! verseghy (1991) ! tksno(iz) = 2.22*(bdsnoi(iz)/1000.)**1.88 ! douvill(yen, 1981) enddo @@ -5817,7 +5817,8 @@ subroutine thermalz0(parameters, fveg, z0m, z0mg, zlvl, if (opt_trs == z0heqz0m) then - z0m_out = exp(fveg * log(z0m) + (1.0 - fveg) * log(z0mg)) +! z0m_out = exp(fveg * log(z0m) + (1.0 - fveg) * log(z0mg)) + z0m_out = fveg * z0m + (1.0 - fveg) * z0mg z0h_out = z0m_out elseif (opt_trs == chen09) then @@ -5834,7 +5835,7 @@ subroutine thermalz0(parameters, fveg, z0m, z0mg, zlvl, endif z0h_out = exp( fveg * log(z0m * exp(-czil*0.4*258.2*sqrt(ustarx*z0m))) + & - (1.0 - fveg) * log(max(z0m/exp(kb_sigma_f0),1.0e-6)) ) + (1.0 - fveg) * log(max(z0mg/exp(kb_sigma_f0),1.0e-6)) ) elseif (opt_trs == tessel) then From 4ed1b4fdf6dd89005c4cd0fac4700f1b2c5729e7 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Mon, 3 Jun 2024 16:54:21 -0600 Subject: [PATCH 10/80] Bug fixes in Thompson MP and CLM Lake found by Dusan --- physics/MP/Thompson/module_mp_thompson.F90 | 2 +- physics/MP/Thompson/mp_thompson.F90 | 2 +- physics/SFC_Models/Lake/CLM/clm_lake.f90 | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/physics/MP/Thompson/module_mp_thompson.F90 b/physics/MP/Thompson/module_mp_thompson.F90 index aa1361c3b..3fc27ca4a 100644 --- a/physics/MP/Thompson/module_mp_thompson.F90 +++ b/physics/MP/Thompson/module_mp_thompson.F90 @@ -1048,7 +1048,7 @@ SUBROUTINE mp_gt_driver(qv, qc, qr, qi, qs, qg, ni, nr, nc, & INTEGER, INTENT(IN) :: rand_perturb_on, kme_stoch, n_var_spp REAL, DIMENSION(:,:), INTENT(IN), OPTIONAL :: rand_pert REAL, DIMENSION(:), INTENT(IN), OPTIONAL :: spp_prt_list - REAL, DIMENSION(:), INTENT(IN) :: spp_stddev_cutoff + REAL, DIMENSION(:), INTENT(IN), OPTIONAL :: spp_stddev_cutoff CHARACTER(len=10), DIMENSION(:), INTENT(IN), OPTIONAL :: spp_var_list INTEGER, INTENT(IN):: has_reqc, has_reqi, has_reqs #if ( WRF_CHEM == 1 ) diff --git a/physics/MP/Thompson/mp_thompson.F90 b/physics/MP/Thompson/mp_thompson.F90 index 3b99deec1..444790324 100644 --- a/physics/MP/Thompson/mp_thompson.F90 +++ b/physics/MP/Thompson/mp_thompson.F90 @@ -413,7 +413,7 @@ subroutine mp_thompson_run(ncol, nlev, con_g, con_rd, & real(kind_phys), intent(in), optional :: spp_wts_mp(:,:) real(kind_phys), intent(in), optional :: spp_prt_list(:) character(len=10), intent(in), optional :: spp_var_list(:) - real(kind_phys), intent(in) :: spp_stddev_cutoff(:) + real(kind_phys), intent(in), optional :: spp_stddev_cutoff(:) logical, intent (in) :: cplchm ! ice and liquid water 3d precipitation fluxes - only allocated if cplchm is .true. diff --git a/physics/SFC_Models/Lake/CLM/clm_lake.f90 b/physics/SFC_Models/Lake/CLM/clm_lake.f90 index 8686221fa..94ad9d815 100644 --- a/physics/SFC_Models/Lake/CLM/clm_lake.f90 +++ b/physics/SFC_Models/Lake/CLM/clm_lake.f90 @@ -5388,7 +5388,8 @@ SUBROUTINE lakeini(kdt, ISLTYP, gt0, snowd, INTEGER, DIMENSION(IM), INTENT(IN) :: ISLTYP REAL(KIND_PHYS), DIMENSION(IM), INTENT(INOUT) :: snowd,weasd - REAL(kind_phys), DIMENSION(IM,KM), INTENT(IN) :: gt0, prsi + REAL(kind_phys), DIMENSION(IM,KM), INTENT(IN) :: gt0 + REAL(kind_phys), DIMENSION(IM,KM+1), INTENT(IN) :: prsi real(kind_phys), intent(in) :: lakedepth_default real(kind_phys), dimension(IM),intent(inout) :: clm_lakedepth From 8f6cbf68a4e1e301560a9a02304116b161738051 Mon Sep 17 00:00:00 2001 From: Man Zhang Date: Mon, 10 Jun 2024 09:44:48 -0600 Subject: [PATCH 11/80] save the changes --- physics/docs/pdftxt/suite_input.nml.txt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/physics/docs/pdftxt/suite_input.nml.txt b/physics/docs/pdftxt/suite_input.nml.txt index 4bbf02752..161c73afd 100644 --- a/physics/docs/pdftxt/suite_input.nml.txt +++ b/physics/docs/pdftxt/suite_input.nml.txt @@ -200,13 +200,13 @@ show some variables in the namelist that must match the SDF. rrtmgp_nGptsLW number of RRTMGP LW spectral points -999 doG_cldoptics use legacy RRTMG cloud optics .false. doGP_cldoptics_PADE use RRTMGP cloud optics: PADE approximation .false. -doGP_cldoptics_LUT use RRTMGP cloud optics: LUTs .false. -iovr_convcld cloud-overlap assumption for convective cloud 1 -rrtmgp_nrghice number of ice-roughness categories 3 -rrtmgp_nGauss_ang number of angles used in Gaussian quadrature 1 -do_GPsw_Glw .false. -use_LW_jacobian use Jacobian of LW to update LW radiation tendencies .false. -damp_LW_fluxadj Damp LW Jacobian flux adjustment with height .false. +doGP_cldoptics_LUT GFS_rrtmgp_cloud_mp,rrtmgp_lw_cloud_optics,rrtmgp_lw_main,rrtmgp_sw_cloud_optics,rrtmgp_sw_main use RRTMGP cloud optics: LUTs .false. +iovr_convcld rrtmgp_lw_main,rrtmgp_sw_main cloud-overlap assumption for convective cloud 1 +#rrtmgp_nrghice number of ice-roughness categories 3 +#rrtmgp_nGauss_ang number of angles used in Gaussian quadrature 1 +#do_GPsw_Glw .false. +use_LW_jacobian GFS_suite_interstitial_2, dcyc2t3,rrtmgp_lw_main use Jacobian of LW to update LW radiation tendencies .false. +damp_LW_fluxadj dcyc2t3 Damp LW Jacobian flux adjustment with height .false. lfnc_k dcyc2t3 depth of transition layer in logistic function for LW flux adjustment damping -999 lfnc_p0 dcyc2t3 transition pressure for LW flux adjustment damping -999 doGP_lwscat rrtmgp_lw_main if true, include scattering in longwave cloud-optics, only compatible w/ GP cloud-optics .false. From ddbd127f79a3aa9c191220ac98f78a416e2c6cec Mon Sep 17 00:00:00 2001 From: Dustin Swales Date: Wed, 12 Jun 2024 22:12:12 +0000 Subject: [PATCH 12/80] Refactor h2o photochemistry scheme following the ozone photochemistry scheme. --- CODEOWNERS | 4 +- .../UFS_SCM_NEPTUNE/GFS_photochemistry.F90 | 73 ++++++ .../UFS_SCM_NEPTUNE/GFS_photochemistry.meta | 161 ++++++++++++ .../GFS_phys_time_vary.fv3.F90 | 50 +--- .../GFS_phys_time_vary.fv3.meta | 17 +- .../GFS_phys_time_vary.scm.F90 | 43 +--- .../GFS_phys_time_vary.scm.meta | 24 +- .../GFS_suite_stateout_update.F90 | 36 +-- .../GFS_suite_stateout_update.meta | 92 +------ physics/photochem/h2o_def.f | 22 -- physics/photochem/h2o_def.meta | 28 --- physics/photochem/h2ointerp.f90 | 199 --------------- physics/photochem/h2ophys.f | 149 ----------- physics/photochem/h2ophys.meta | 127 ---------- physics/photochem/module_h2ophys.F90 | 238 ++++++++++++++++++ physics/photochem/module_h2ophys.meta | 24 ++ 16 files changed, 560 insertions(+), 727 deletions(-) create mode 100644 physics/Interstitials/UFS_SCM_NEPTUNE/GFS_photochemistry.F90 create mode 100644 physics/Interstitials/UFS_SCM_NEPTUNE/GFS_photochemistry.meta delete mode 100644 physics/photochem/h2o_def.f delete mode 100644 physics/photochem/h2o_def.meta delete mode 100644 physics/photochem/h2ointerp.f90 delete mode 100644 physics/photochem/h2ophys.f delete mode 100644 physics/photochem/h2ophys.meta create mode 100644 physics/photochem/module_h2ophys.F90 create mode 100644 physics/photochem/module_h2ophys.meta diff --git a/CODEOWNERS b/CODEOWNERS index 99d6697f2..eccf83758 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -128,9 +128,7 @@ physics/SFC_Models/SeaIce/CICE/sfc_cice.* @wd physics/SFC_Models/SeaIce/CICE/sfc_sice.* @wd20xw @grantfirl @Qingfu-Liu @dustinswales physics/hooks/machine.* @grantfirl @Qingfu-Liu @dustinswales physics/hooks/physcons.F90 @grantfirl @Qingfu-Liu @dustinswales -physics/photochem/h2o_def.* @grantfirl @Qingfu-Liu @dustinswales -physics/photochem/h2ointerp.f90 @grantfirl @Qingfu-Liu @dustinswales -physics/photochem/h2ophys.* @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales +physics/photochem/module_h2ophys.* @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales physics/photochem/module_ozphys.* @dustinswales @grantfirl @Qingfu-Liu @dustinswales physics/smoke_dust/* @haiqinli @grantfirl @Qingfu-Liu @dustinswales physics/tools/funcphys.f90 @grantfirl @Qingfu-Liu @dustinswales diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_photochemistry.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_photochemistry.F90 new file mode 100644 index 000000000..08bedf6b5 --- /dev/null +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_photochemistry.F90 @@ -0,0 +1,73 @@ +! ######################################################################################### +!> \file GFS_photochemistry.f90 +!! +! ######################################################################################### +module GFS_photochemistry + use machine, only: kind_phys + use module_ozphys, only: ty_ozphys + use module_h2ophys, only: ty_h2ophys + implicit none +contains +! ######################################################################################### +!> \section arg_table_GFS_photochemistry_run Argument Table +!! \htmlinclude GFS_photochemistry_run.html +!! +! ######################################################################################### + subroutine GFS_photochemistry_run (dtp, ozphys, oz_phys_2015, oz_phys_2006, con_1ovg, & + prsl, dp, ozpl, h2o_phys, h2ophys, h2opl, h2o0, oz0, do3_dt_prd, do3_dt_ozmx, & + do3_dt_temp, do3_dt_ohoz, errmsg, errflg) + + ! Inputs + real(kind=kind_phys), intent(in ) :: & + dtp, & ! Model timestep + con_1ovg ! Physical constant (1./gravity) + real(kind=kind_phys), intent(in ), dimension(:,:) :: & + prsl, & ! Air pressure (Pa) + dp ! Pressure thickness (Pa) + real(kind=kind_phys), intent(in ), dimension(:,:,:) :: & + ozpl, & ! Ozone data for current model timestep + h2opl ! h2o data for curent model timestep + logical, intent(in) :: & + oz_phys_2015, & ! Do ozone photochemistry? (2015) + oz_phys_2006, & ! Do ozone photochemistry? (2006) + h2o_phys ! Do h2o photochemistry? + type(ty_ozphys), intent(in) :: & + ozphys ! DDT with ozone photochemistry scheme. + type(ty_h2ophys), intent(in) :: & + h2ophys ! DDT with h2o photochemistry scheme. + + ! Outputs (optional) + real(kind=kind_phys), intent(inout), dimension(:,:), optional :: & + do3_dt_prd, & ! Physics tendency: production and loss effect + do3_dt_ozmx, & ! Physics tendency: ozone mixing ratio effect + do3_dt_temp, & ! Physics tendency: temperature effect + do3_dt_ohoz ! Physics tendency: overhead ozone effect + + ! Outputs + real(kind=kind_phys), intent(out), dimension(:,:) :: & + oz0, & ! Update ozone concentration. + h2o0 ! Updated h2o concentration. + character(len=*), intent(out) :: & + errmsg ! CCPP Error message. + integer, intent(out) :: & + errflg ! CCPP Error flag. + + ! Initialize CCPP error handling variables + errmsg = '' + errflg = 0 + + if (oz_phys_2015) then + call ozphys%run_o3prog_2015(con_1ovg, dtp, prsl, gt0, dp, ozpl, oz0, do3_dt_prd, & + do3_dt_ozmx, do3_dt_temp, do3_dt_ohoz) + endif + if (oz_phys_2006) then + call ozphys%run_o3prog_2006(con_1ovg, dtp, prsl, gt0, dp, ozpl, oz0, do3_dt_prd, & + do3_dt_ozmx, do3_dt_temp, do3_dt_ohoz) + endif + if (h2o_phys) then + call h2ophys%run(dtp, prsl, h2opl, h2o0) + endif + + end subroutine GFS_photochemistry_run + +end module GFS_photochemistry_update diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_photochemistry.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_photochemistry.meta new file mode 100644 index 000000000..526910fec --- /dev/null +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_photochemistry.meta @@ -0,0 +1,161 @@ +######################################################################## +[ccpp-table-properties] + name = GFS_photochemistry + type = scheme + dependencies = ../../hooks/machine.F,../../photochem/module_ozphys.F90 + dependencies = ../../photochem/module_h2ophys.F90 + +######################################################################## +[ccpp-arg-table] + name = GFS_photochemistry + type = scheme +[dtp] + standard_name = timestep_for_physics + long_name = physics timestep + units = s + dimensions = () + type = real + kind = kind_phys + intent = in +[ozphys] + standard_name = dataset_for_ozone_physics + long_name = dataset for NRL ozone physics + units = mixed + dimensions = () + type = ty_ozphys + intent = in +[oz_phys_2015] + standard_name = flag_for_nrl_2015_ozone_scheme + long_name = flag for new (2015) ozone physics + units = flag + dimensions = () + type = logical + intent = in +[oz_phys_2006] + standard_name = flag_for_nrl_2006_ozone_scheme + long_name = flag for new (2006) ozone physics + units = flag + dimensions = () + type = logical + intent = in +[con_1ovg] + standard_name = one_divided_by_the_gravitational_acceleration + long_name = inverse of gravitational acceleration + units = s2 m-1 + dimensions = () + type = real + kind = kind_phys + intent = in +[prsl] + standard_name = air_pressure + long_name = mid-layer pressure + units = Pa + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = in +[dp] + standard_name = air_pressure_difference_between_midlayers + long_name = difference between mid-layer pressures + units = Pa + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = in +[ozpl] + standard_name = ozone_forcing + long_name = ozone forcing data + units = mixed + dimensions = (horizontal_loop_extent,vertical_dimension_of_ozone_forcing_data,number_of_coefficients_in_ozone_data) + type = real + kind = kind_phys + intent = in +[h2o_phys] + standard_name = flag_for_stratospheric_water_vapor_physics + long_name = flag for stratospheric water vapor physics + units = flag + dimensions = () + type = logical + intent = in +[h2ophys] + standard_name = dataset_for_h2o_photochemistry_physics + long_name = dataset for NRL h2o photochemistry physics + units = mixed + dimensions = () + type = ty_h2ophys + intent = in +[h2opl] + standard_name = stratospheric_water_vapor_forcing + long_name = water forcing data + units = mixed + dimensions = (horizontal_loop_extent,vertical_dimension_of_h2o_forcing_data,number_of_coefficients_in_h2o_forcing_data) + type = real + kind = kind_phys + intent = in +[h2o0] + standard_name = specific_humidity_of_new_state + long_name = water vapor specific humidity updated by physics + units = kg kg-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[oz0] + standard_name = ozone_concentration_of_new_state + long_name = ozone concentration updated by physics + units = kg kg-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = out +[do3_dt_prd] + standard_name = ozone_tendency_due_to_production_and_loss_rate + long_name = ozone tendency due to production and loss rate + units = kg kg-1 s-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = inout + optional = True +[do3_dt_ozmx] + standard_name = ozone_tendency_due_to_ozone_mixing_ratio + long_name = ozone tendency due to ozone mixing ratio + units = kg kg-1 s-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = inout + optional = True +[do3_dt_temp] + standard_name = ozone_tendency_due_to_temperature + long_name = ozone tendency due to temperature + units = kg kg-1 s-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = inout + optional = True +[do3_dt_ohoz] + standard_name = ozone_tendency_due_to_overhead_ozone_column + long_name = ozone tendency due to overhead ozone column + units = kg kg-1 s-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = inout + optional = True +[errmsg] + standard_name = ccpp_error_message + long_name = error message for error handling in CCPP + units = none + dimensions = () + type = character + kind = len=* + intent = out +[errflg] + standard_name = ccpp_error_code + long_name = error code for error handling in CCPP + units = 1 + dimensions = () + type = integer + intent = out \ No newline at end of file diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.fv3.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.fv3.F90 index ea9beaf90..5c3d1fac5 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.fv3.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.fv3.F90 @@ -15,9 +15,7 @@ module GFS_phys_time_vary use mersenne_twister, only: random_setseed, random_number use module_ozphys, only: ty_ozphys - - use h2o_def, only : levh2o, h2o_coeff, h2o_lat, h2o_pres, h2o_time, h2oplin - use h2ointerp, only : read_h2odata, setindxh2o, h2ointerpol + use module_h2ophys, only: ty_h2ophys use aerclm_def, only : aerin, aer_pres, ntrcaer, ntrcaerm, iamin, iamax, jamin, jamax use aerinterp, only : read_aerdata, setindxaer, aerinterpol, read_aerdataf @@ -97,7 +95,7 @@ subroutine GFS_phys_time_vary_init ( smcwtdxy, deeprechxy, rechxy, snowxy, snicexy, snliqxy, tsnoxy , smoiseq, zsnsoxy, & slc, smc, stc, tsfcl, snowd, canopy, tg3, stype, con_t0c, lsm_cold_start, nthrds, & lkm, use_lake_model, lakefrac, lakedepth, iopt_lake, iopt_lake_clm, iopt_lake_flake, & - lakefrac_threshold, lakedepth_threshold, ozphys, errmsg, errflg) + lakefrac_threshold, lakedepth_threshold, ozphys, h2ophys, errmsg, errflg) implicit none @@ -133,6 +131,7 @@ subroutine GFS_phys_time_vary_init ( real(kind_phys), intent(in) :: landfrac(:) real(kind_phys), intent(inout) :: weasd(:) type(ty_ozphys), intent(in) :: ozphys + type(ty_h2ophys), intent(in) :: h2ophys ! NoahMP - only allocated when NoahMP is used integer, intent(in) :: lsoil, lsnow_lsm_lbound, lsnow_lsm_ubound @@ -222,29 +221,6 @@ subroutine GFS_phys_time_vary_init ( jamin=999 jamax=-999 -!> - Call read_h2odata() to read stratospheric water vapor data - need_h2odata: if(h2o_phys) then - call read_h2odata (h2o_phys, me, master) - - ! Consistency check that the hardcoded values for levh2o and - ! h2o_coeff in GFS_typedefs.F90 match what is set by read_h2odata - ! in GFS_typedefs.F90: allocate (Tbd%h2opl (IM,levh2o,h2o_coeff)) - if (size(h2opl, dim=2).ne.levh2o) then - write(myerrmsg,'(2a,i0,a,i0)') "Value error in GFS_phys_time_vary_init: ", & - "levh2o from read_h2odata does not match value in GFS_typedefs.F90: ", & - levh2o, " /= ", size(h2opl, dim=2) - myerrflg = 1 - call copy_error(myerrmsg, myerrflg, errmsg, errflg) - end if - if (size(h2opl, dim=3).ne.h2o_coeff) then - write(myerrmsg,'(2a,i0,a,i0)') "Value error in GFS_phys_time_vary_init: ", & - "h2o_coeff from read_h2odata does not match value in GFS_typedefs.F90: ", & - h2o_coeff, " /= ", size(h2opl, dim=3) - myerrflg = 1 - call copy_error(myerrmsg, myerrflg, errmsg, errflg) - end if - endif need_h2odata - !> - Call read_aerdata() to read aerosol climatology, Anning added coupled !> added coupled gocart and radiation option to initializing aer_nm if (iaerclm) then @@ -305,7 +281,7 @@ subroutine GFS_phys_time_vary_init ( !> - Call setindxh2o() to initialize stratospheric water vapor data if (h2o_phys) then - call setindxh2o (im, xlat_d, jindx1_h, jindx2_h, ddy_h) + call h2ophys%setup(xlat_d, jindx1_h, jindx2_h, ddy_h) endif !> - Call setindxaer() to initialize aerosols data @@ -734,7 +710,7 @@ subroutine GFS_phys_time_vary_timestep_init ( lakefrac, min_seaice, min_lakeice, smc, slc, stc, smois, sh2o, tslb, tiice, tg3, tref, & tsfc, tsfco, tisfc, hice, fice, facsf, facwf, alvsf, alvwf, alnsf, alnwf, zorli, zorll, & zorlo, weasd, slope, snoalb, canopy, vfrac, vtype, stype,scolor, shdmin, shdmax, snowd, & - cv, cvb, cvt, oro, oro_uf, xlat_d, xlon_d, slmsk, landfrac, ozphys, & + cv, cvb, cvt, oro, oro_uf, xlat_d, xlon_d, slmsk, landfrac, ozphys, h2ophys, & do_ugwp_v1, jindx1_tau, jindx2_tau, ddy_j1tau, ddy_j2tau, tau_amf, errmsg, errflg) implicit none @@ -765,6 +741,7 @@ subroutine GFS_phys_time_vary_timestep_init ( real(kind_phys), intent(in), optional :: ddy_j1tau(:), ddy_j2tau(:) real(kind_phys), intent(inout) :: tau_amf(:) type(ty_ozphys), intent(in) :: ozphys + type(ty_h2ophys), intent(in) :: h2ophys ! For gcycle only integer, intent(in) :: nthrds, nx, ny, nsst, tile_num, nlunit, lsoil @@ -812,7 +789,7 @@ subroutine GFS_phys_time_vary_timestep_init ( !$OMP shared(ozpl,ddy_o3,h2o_phys,jindx1_h,jindx2_h,h2opl,ddy_h,iaerclm,master) & !$OMP shared(levs,prsl,iccn,jindx1_ci,jindx2_ci,ddy_ci,iindx1_ci,iindx2_ci) & !$OMP shared(ddx_ci,in_nm,ccn_nm,do_ugwp_v1,jindx1_tau,jindx2_tau,ddy_j1tau) & -!$OMP shared(ddy_j2tau,tau_amf,iflip,ozphys,rjday,n1,n2,idat,jdat,rinc) & +!$OMP shared(ddy_j2tau,tau_amf,iflip,ozphys,h2ophys,rjday,n1,n2,idat,jdat,rinc) & !$OMP shared(w3kindreal,w3kindint,jdow,jdoy,jday) & !$OMP private(iseed,iskip,i,j,k) @@ -895,12 +872,9 @@ subroutine GFS_phys_time_vary_timestep_init ( call ozphys%update_o3prog(jindx1_o3, jindx2_o3, ddy_o3, rjday, n1, n2, ozpl) endif -!$OMP section -!> - Call h2ointerpol() to make stratospheric water vapor data interpolation +!> - Update stratospheric h2o concentration. if (h2o_phys) then - call h2ointerpol (me, im, idate, fhour, & - jindx1_h, jindx2_h, & - h2opl, ddy_h) + call h2ophys%update(jindx1_h, jindx2_h, ddy_h, rjday, n1, n2, h2opl) endif !$OMP section @@ -992,12 +966,6 @@ subroutine GFS_phys_time_vary_finalize(errmsg, errflg) if (.not.is_initialized) return - ! Deallocate h2o arrays - if (allocated(h2o_lat) ) deallocate(h2o_lat) - if (allocated(h2o_pres)) deallocate(h2o_pres) - if (allocated(h2o_time)) deallocate(h2o_time) - if (allocated(h2oplin) ) deallocate(h2oplin) - ! Deallocate aerosol arrays if (allocated(aerin) ) deallocate(aerin) if (allocated(aer_pres)) deallocate(aer_pres) diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.fv3.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.fv3.meta index df957e257..44a5b92f9 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.fv3.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.fv3.meta @@ -8,8 +8,7 @@ dependencies = Radiation/mersenne_twister.f dependencies = MP/Morrison_Gettelman/aerclm_def.F,MP/Morrison_Gettelman/aerinterp.F90 dependencies = SFC_Models/Land/Noah/namelist_soilveg.f,SFC_Models/Land/Noah/set_soilveg.f,SFC_Models/Land/Noahmp/noahmp_tables.f90 - dependencies = photochem/module_ozphys.F90 - dependencies = photochem/h2o_def.f,photochem/h2ointerp.f90 + dependencies = photochem/module_ozphys.F90,photochem/module_h2ophys.F90 dependencies = GWD/cires_tauamf_data.F90 ######################################################################## @@ -1036,6 +1035,13 @@ dimensions = () type = ty_ozphys intent = in +[h2ophys] + standard_name = dataset_for_h2o_photochemistry_physics + long_name = dataset for NRL h2o photochemistry physics + units = mixed + dimensions = () + type = ty_h2ophys + intent = in [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -2042,6 +2048,13 @@ dimensions = () type = ty_ozphys intent = in +[h2ophys] + standard_name = dataset_for_h2o_photochemistry_physics + long_name = dataset for NRL h2o photochemistry physics + units = mixed + dimensions = () + type = ty_h2ophys + intent = in [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.scm.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.scm.F90 index 59b59e76a..89b1ba87c 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.scm.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.scm.F90 @@ -12,9 +12,7 @@ module GFS_phys_time_vary use mersenne_twister, only: random_setseed, random_number use module_ozphys, only: ty_ozphys - - use h2o_def, only : levh2o, h2o_coeff, h2o_lat, h2o_pres, h2o_time, h2oplin - use h2ointerp, only : read_h2odata, setindxh2o, h2ointerpol + use module_h2ophys, only: ty_h2ophys use aerclm_def, only : aerin, aer_pres, ntrcaer, ntrcaerm, iamin, iamax, jamin, jamax use aerinterp, only : read_aerdata, setindxaer, aerinterpol, read_aerdataf @@ -61,7 +59,7 @@ module GFS_phys_time_vary !! @{ subroutine GFS_phys_time_vary_init ( & me, master, ntoz, h2o_phys, iaerclm, iccn, iflip, im, nx, ny, idate, xlat_d, xlon_d, & - jindx1_o3, jindx2_o3, ddy_o3, ozphys, jindx1_h, jindx2_h, ddy_h, h2opl,fhour, & + jindx1_o3, jindx2_o3, ddy_o3, ozphys, h2ophys, jindx1_h, jindx2_h, ddy_h, h2opl,fhour, & jindx1_aer, jindx2_aer, ddy_aer, iindx1_aer, iindx2_aer, ddx_aer, aer_nm, & jindx1_ci, jindx2_ci, ddy_ci, iindx1_ci, iindx2_ci, ddx_ci, imap, jmap, & do_ugwp_v1, jindx1_tau, jindx2_tau, ddy_j1tau, ddy_j2tau, & @@ -104,6 +102,7 @@ subroutine GFS_phys_time_vary_init ( real(kind_phys), intent(in) :: landfrac(:) real(kind_phys), intent(inout) :: weasd(:) type(ty_ozphys), intent(in) :: ozphys + type(ty_h2ophys), intent(in) :: h2ophys ! NoahMP - only allocated when NoahMP is used integer, intent(in) :: lsoil, lsnow_lsm_lbound, lsnow_lsm_ubound @@ -189,25 +188,6 @@ subroutine GFS_phys_time_vary_init ( jamin=999 jamax=-999 -!> - Call read_h2odata() to read stratospheric water vapor data - call read_h2odata (h2o_phys, me, master) - - ! Consistency check that the hardcoded values for levh2o and - ! h2o_coeff in GFS_typedefs.F90 match what is set by read_h2odata - ! in GFS_typedefs.F90: allocate (Tbd%h2opl (IM,levh2o,h2o_coeff)) - if (size(h2opl, dim=2).ne.levh2o) then - write(errmsg,'(2a,i0,a,i0)') "Value error in GFS_phys_time_vary_init: ", & - "levh2o from read_h2odata does not match value in GFS_typedefs.F90: ", & - levh2o, " /= ", size(h2opl, dim=2) - errflg = 1 - end if - if (size(h2opl, dim=3).ne.h2o_coeff) then - write(errmsg,'(2a,i0,a,i0)') "Value error in GFS_phys_time_vary_init: ", & - "h2o_coeff from read_h2odata does not match value in GFS_typedefs.F90: ", & - h2o_coeff, " /= ", size(h2opl, dim=3) - errflg = 1 - end if - !> - Call read_aerdata() to read aerosol climatology if (iaerclm) then ! Consistency check that the value for ntrcaerm set in GFS_typedefs.F90 @@ -254,7 +234,7 @@ subroutine GFS_phys_time_vary_init ( !> - Call setindxh2o() to initialize stratospheric water vapor data if (h2o_phys) then - call setindxh2o (im, xlat_d, jindx1_h, jindx2_h, ddy_h) + call h2ophys%setup_h2oprog(xlat_d, jindx1_h, jindx2_h, ddy_h) endif !> - Call setindxaer() to initialize aerosols data @@ -633,7 +613,7 @@ end subroutine GFS_phys_time_vary_init !! @{ subroutine GFS_phys_time_vary_timestep_init ( & me, master, cnx, cny, isc, jsc, nrcm, im, levs, kdt, idate, nsswr, fhswr, lsswr, fhour, & - imfdeepcnv, cal_pre, random_clds, ozphys, ntoz, h2o_phys, iaerclm, iccn, clstp, & + imfdeepcnv, cal_pre, random_clds, ozphys, h2ophys, ntoz, h2o_phys, iaerclm, iccn, clstp, & jindx1_o3, jindx2_o3, ddy_o3, ozpl, jindx1_h, jindx2_h, ddy_h, h2opl, iflip, & jindx1_aer, jindx2_aer, ddy_aer, iindx1_aer, iindx2_aer, ddx_aer, aer_nm, & jindx1_ci, jindx2_ci, ddy_ci, iindx1_ci, iindx2_ci, ddx_ci, in_nm, ccn_nm, & @@ -668,6 +648,7 @@ subroutine GFS_phys_time_vary_timestep_init ( real(kind_phys), intent(in), optional :: ddy_j1tau(:), ddy_j2tau(:) real(kind_phys), intent(inout) :: tau_amf(:) type(ty_ozphys), intent(in) :: ozphys + type(ty_h2ophys), intent(in) :: h2ophys integer, intent(in) :: nthrds character(len=*), intent(out) :: errmsg integer, intent(out) :: errflg @@ -770,11 +751,9 @@ subroutine GFS_phys_time_vary_timestep_init ( call ozphys%update_o3prog(jindx1_o3, jindx2_o3, ddy_o3, rjday, n1, n2, ozpl) endif -!> - Call h2ointerpol() to make stratospheric water vapor data interpolation +!> - Update stratospheric h2o concentration. if (h2o_phys) then - call h2ointerpol (me, im, idate, fhour, & - jindx1_h, jindx2_h, & - h2opl, ddy_h) + call h2ophys%update_h2oprog(jindx1_h, jindx2_h, ddy_h, rjday, n1, n2, h2opl) endif !> - Call ciinterpol() to make IN and CCN data interpolation @@ -859,12 +838,6 @@ subroutine GFS_phys_time_vary_finalize(errmsg, errflg) if (.not.is_initialized) return - ! Deallocate h2o arrays - if (allocated(h2o_lat) ) deallocate(h2o_lat) - if (allocated(h2o_pres)) deallocate(h2o_pres) - if (allocated(h2o_time)) deallocate(h2o_time) - if (allocated(h2oplin) ) deallocate(h2oplin) - ! Deallocate aerosol arrays if (allocated(aerin) ) deallocate(aerin) if (allocated(aer_pres)) deallocate(aer_pres) diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.scm.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.scm.meta index 43397f854..72f383b56 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.scm.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.scm.meta @@ -7,8 +7,7 @@ dependencies = Interstitials/UFS_SCM_NEPTUNE/sfcsub.F,Radiation/mersenne_twister.f dependencies = MP/Morrison_Gettelman/aerclm_def.F,MP/Morrison_Gettelman/aerinterp.F90 dependencies = SFC_Models/Land/Noah/namelist_soilveg.f,SFC_Models/Land/Noah/set_soilveg.f,SFC_Models/Land/Noahmp/noahmp_tables.f90 - dependencies = photochem/module_ozphys.F90 - dependencies = photochem/h2o_def.f,photochem/h2ointerp.f90 + dependencies = photochem/module_ozphys.F90,photochem/module_h2ophys.F90 dependencies = GWD/cires_tauamf_data.F90 ######################################################################## @@ -109,6 +108,20 @@ type = real kind = kind_phys intent = in +[ozphys] + standard_name = dataset_for_ozone_physics + long_name = dataset for NRL ozone physics + units = mixed + dimensions = () + type = ty_ozphys + intent = in +[h2ophys] + standard_name = dataset_for_h2o_photochemistry_physics + long_name = dataset for NRL h2o photochemistry physics + units = mixed + dimensions = () + type = ty_h2ophys + intent = in [jindx1_o3] standard_name = lower_latitude_index_of_ozone_forcing_for_interpolation long_name = interpolation low index for ozone @@ -1441,6 +1454,13 @@ dimensions = () type = ty_ozphys intent = in +[h2ophys] + standard_name = dataset_for_h2o_photochemistry_physics + long_name = dataset for NRL h2o photochemistry physics + units = mixed + dimensions = () + type = ty_h2ophys + intent = in [nthrds] standard_name = number_of_openmp_threads long_name = number of OpenMP threads available for physics schemes diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_stateout_update.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_stateout_update.F90 index c2f5266fd..057c50d1e 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_stateout_update.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_stateout_update.F90 @@ -6,9 +6,9 @@ !! Also, set bounds on the mass-weighted rime factor when using Ferrier-Aligo microphysics. ! ######################################################################################### module GFS_suite_stateout_update - use machine, only: kind_phys - use module_ozphys, only: ty_ozphys + use machine, only: kind_phys implicit none + contains ! ######################################################################################### !> \section arg_table_GFS_suite_stateout_update_run Argument Table @@ -16,9 +16,9 @@ module GFS_suite_stateout_update !! ! ######################################################################################### subroutine GFS_suite_stateout_update_run (im, levs, ntrac, dtp, tgrs, ugrs, vgrs, qgrs, & - dudt, dvdt, dtdt, dqdt, gt0, gu0, gv0, gq0, oz0, ntiw, nqrimef, imp_physics, & + dudt, dvdt, dtdt, dqdt, gt0, gu0, gv0, gq0, ntiw, nqrimef, imp_physics, & imp_physics_fer_hires, epsq, ozphys, oz_phys_2015, oz_phys_2006, con_1ovg, prsl, & - dp, ozpl, qdiag3d, do3_dt_prd, do3_dt_ozmx, do3_dt_temp, do3_dt_ohoz, errmsg, errflg) + errmsg, errflg) ! Inputs integer, intent(in ) :: im @@ -27,24 +27,13 @@ subroutine GFS_suite_stateout_update_run (im, levs, ntrac, dtp, tgrs, ugrs, vgrs integer, intent(in ) :: imp_physics,imp_physics_fer_hires integer, intent(in ) :: ntiw, nqrimef real(kind=kind_phys), intent(in ) :: dtp, epsq, con_1ovg - real(kind=kind_phys), intent(in ), dimension(:,:) :: tgrs, ugrs, vgrs, prsl, dp - real(kind=kind_phys), intent(in ), dimension(:,:,:) :: qgrs, ozpl + real(kind=kind_phys), intent(in ), dimension(:,:) :: tgrs, ugrs, vgrs, prsl + real(kind=kind_phys), intent(in ), dimension(:,:,:) :: qgrs real(kind=kind_phys), intent(in ), dimension(:,:) :: dudt, dvdt, dtdt real(kind=kind_phys), intent(in ), dimension(:,:,:) :: dqdt - logical, intent(in) :: qdiag3d - logical, intent(in) :: oz_phys_2015 - logical, intent(in) :: oz_phys_2006 - type(ty_ozphys), intent(in) :: ozphys - - ! Outputs (optional) - real(kind=kind_phys), intent(inout), dimension(:,:), optional :: & - do3_dt_prd, & ! Physics tendency: production and loss effect - do3_dt_ozmx, & ! Physics tendency: ozone mixing ratio effect - do3_dt_temp, & ! Physics tendency: temperature effect - do3_dt_ohoz ! Physics tendency: overhead ozone effect ! Outputs - real(kind=kind_phys), intent(out), dimension(:,:) :: gt0, gu0, gv0, oz0 + real(kind=kind_phys), intent(out), dimension(:,:) :: gt0, gu0, gv0 real(kind=kind_phys), intent(out), dimension(:,:,:) :: gq0 character(len=*), intent(out) :: errmsg integer, intent(out) :: errflg @@ -63,17 +52,6 @@ subroutine GFS_suite_stateout_update_run (im, levs, ntrac, dtp, tgrs, ugrs, vgrs gv0(:,:) = vgrs(:,:) + dvdt(:,:) * dtp gq0(:,:,:) = qgrs(:,:,:) + dqdt(:,:,:) * dtp - ! If using photolysis physics schemes, update (prognostic) gas concentrations using - ! updated state. - if (oz_phys_2015) then - call ozphys%run_o3prog_2015(con_1ovg, dtp, prsl, gt0, dp, ozpl, oz0, qdiag3d, & - do3_dt_prd, do3_dt_ozmx, do3_dt_temp, do3_dt_ohoz) - endif - if (oz_phys_2006) then - call ozphys%run_o3prog_2006(con_1ovg, dtp, prsl, gt0, dp, ozpl, oz0, qdiag3d, & - do3_dt_prd, do3_dt_ozmx, do3_dt_temp, do3_dt_ohoz) - endif - ! If using Ferrier-Aligo microphysics, set bounds on the mass-weighted rime factor. if (imp_physics == imp_physics_fer_hires) then do k=1,levs diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_stateout_update.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_stateout_update.meta index f2f5d2281..4153befb9 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_stateout_update.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_stateout_update.meta @@ -2,8 +2,8 @@ [ccpp-table-properties] name = GFS_suite_stateout_update type = scheme - dependencies = ../../hooks/machine.F,../../photochem/module_ozphys.F90 - + dependencies = ../../hooks/machine.F + ######################################################################## [ccpp-arg-table] name = GFS_suite_stateout_update_run @@ -37,34 +37,6 @@ type = real kind = kind_phys intent = in -[ozphys] - standard_name = dataset_for_ozone_physics - long_name = dataset for NRL ozone physics - units = mixed - dimensions = () - type = ty_ozphys - intent = in -[qdiag3d] - standard_name = flag_for_tracer_diagnostics_3D - long_name = flag for 3d tracer diagnostic fields - units = flag - dimensions = () - type = logical - intent = in -[oz_phys_2015] - standard_name = flag_for_nrl_2015_ozone_scheme - long_name = flag for new (2015) ozone physics - units = flag - dimensions = () - type = logical - intent = in -[oz_phys_2006] - standard_name = flag_for_nrl_2006_ozone_scheme - long_name = flag for new (2006) ozone physics - units = flag - dimensions = () - type = logical - intent = in [tgrs] standard_name = air_temperature long_name = model layer mean temperature @@ -161,14 +133,6 @@ type = real kind = kind_phys intent = out -[oz0] - standard_name = ozone_concentration_of_new_state - long_name = ozone concentration updated by physics - units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = inout [ntiw] standard_name = index_of_cloud_ice_mixing_ratio_in_tracer_concentration_array long_name = tracer index for ice water @@ -221,58 +185,6 @@ type = real kind = kind_phys intent = in -[ozpl] - standard_name = ozone_forcing - long_name = ozone forcing data - units = mixed - dimensions = (horizontal_loop_extent,vertical_dimension_of_ozone_forcing_data,number_of_coefficients_in_ozone_data) - type = real - kind = kind_phys - intent = in -[dp] - standard_name = air_pressure_difference_between_midlayers - long_name = difference between mid-layer pressures - units = Pa - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = in -[do3_dt_prd] - standard_name = ozone_tendency_due_to_production_and_loss_rate - long_name = ozone tendency due to production and loss rate - units = kg kg-1 s-1 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = inout - optional = True -[do3_dt_ozmx] - standard_name = ozone_tendency_due_to_ozone_mixing_ratio - long_name = ozone tendency due to ozone mixing ratio - units = kg kg-1 s-1 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = inout - optional = True -[do3_dt_temp] - standard_name = ozone_tendency_due_to_temperature - long_name = ozone tendency due to temperature - units = kg kg-1 s-1 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = inout - optional = True -[do3_dt_ohoz] - standard_name = ozone_tendency_due_to_overhead_ozone_column - long_name = ozone tendency due to overhead ozone column - units = kg kg-1 s-1 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = inout - optional = True [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP diff --git a/physics/photochem/h2o_def.f b/physics/photochem/h2o_def.f deleted file mode 100644 index 72748a613..000000000 --- a/physics/photochem/h2o_def.f +++ /dev/null @@ -1,22 +0,0 @@ -!>\file h2o_def.f -!! This file contains array definition in H2O scheme. - -!>\ingroup mod_GFS_phys_time_vary -!! This module defines arrays in H2O scheme. - module h2o_def - -!> \section arg_table_h2o_def -!! \htmlinclude h2o_def.html -!! - - use machine , only : kind_phys - implicit none - - integer, parameter :: kh2opltc=29 - - integer latsh2o, levh2o, timeh2o, h2o_coeff - real (kind=kind_phys), allocatable :: h2o_lat(:), h2o_pres(:) - &, h2o_time(:) - real (kind=kind_phys), allocatable :: h2oplin(:,:,:,:) - - end module h2o_def diff --git a/physics/photochem/h2o_def.meta b/physics/photochem/h2o_def.meta deleted file mode 100644 index 92e1d61bd..000000000 --- a/physics/photochem/h2o_def.meta +++ /dev/null @@ -1,28 +0,0 @@ -[ccpp-table-properties] - name = h2o_def - type = module - dependencies = ../hooks/machine.F - -[ccpp-arg-table] - name = h2o_def - type = module - -[levh2o] - standard_name = vertical_dimension_of_h2o_forcing_data - long_name = number of vertical layers in h2o forcing data - units = count - dimensions = () - type = integer -[h2o_coeff] - standard_name = number_of_coefficients_in_h2o_forcing_data - long_name = number of coefficients in h2o forcing data - units = index - dimensions = () - type = integer -[h2o_pres] - standard_name = natural_log_of_h2o_forcing_data_pressure_levels - long_name = natural log of h2o forcing data pressure levels in Pa - units = 1 - dimensions = (vertical_dimension_of_h2o_forcing_data) - type = real - kind = kind_phys diff --git a/physics/photochem/h2ointerp.f90 b/physics/photochem/h2ointerp.f90 deleted file mode 100644 index f5a1f36c6..000000000 --- a/physics/photochem/h2ointerp.f90 +++ /dev/null @@ -1,199 +0,0 @@ -!>\file h2ointerp.f90 -!! This file contains subroutines of reading and interpolating h2o -!! coefficients. - -!>\ingroup mod_GFS_phys_time_vary -!> This module contains subroutines of reading and interpolating -!! h2o coefficients. -module h2ointerp - - implicit none - - private - - public :: read_h2odata, setindxh2o, h2ointerpol - -contains - - subroutine read_h2odata (h2o_phys, me, master) - use machine, only: kind_phys - use h2o_def -!--- in/out - logical, intent(in) :: h2o_phys - integer, intent(in) :: me - integer, intent(in) :: master -!--- locals - integer :: i, n, k - real(kind=4), allocatable, dimension(:) :: h2o_lat4, h2o_pres4 - real(kind=4), allocatable, dimension(:) :: h2o_time4, tempin - - if (.not. h2o_phys) then - latsh2o = 1 - levh2o = 1 - h2o_coeff = 1 - timeh2o = 1 - - return - endif - - open(unit=kh2opltc,file='global_h2oprdlos.f77', form='unformatted', convert='big_endian') - -!--- read in indices -!--- - read (kh2opltc) h2o_coeff, latsh2o, levh2o, timeh2o - if (me == master) then - write(*,*) 'Reading in h2odata from global_h2oprdlos.f77 ' - write(*,*) ' h2o_coeff = ', h2o_coeff - write(*,*) ' latsh2o = ', latsh2o - write(*,*) ' levh2o = ', levh2o - write(*,*) ' timeh2o = ', timeh2o - endif - -!--- read in data -!--- h2o_lat - latitude of data (-90 to 90) -!--- h2o_pres - vertical pressure level (mb) -!--- h2o_time - time coordinate (days) -!--- - allocate (h2o_lat(latsh2o), h2o_pres(levh2o),h2o_time(timeh2o+1)) - allocate (h2o_lat4(latsh2o), h2o_pres4(levh2o),h2o_time4(timeh2o+1)) - rewind (kh2opltc) - read (kh2opltc) h2o_coeff, latsh2o, levh2o, timeh2o, h2o_lat4, h2o_pres4, h2o_time4 - h2o_pres(:) = h2o_pres4(:) -!--- convert pressure levels from mb to ln(Pa) - h2o_pres(:) = log(100.0*h2o_pres(:)) - h2o_lat(:) = h2o_lat4(:) - h2o_time(:) = h2o_time4(:) - deallocate (h2o_lat4, h2o_pres4, h2o_time4) - -!--- read in h2oplin which is in order of (lattitudes, water levels, coeff number, time) -!--- assume latitudes is on a uniform gaussian grid -!--- - allocate (tempin(latsh2o)) - allocate (h2oplin(latsh2o,levh2o,h2o_coeff,timeh2o)) - DO i=1,timeh2o - do n=1,h2o_coeff - DO k=1,levh2o - READ(kh2opltc) tempin - h2oplin(:,k,n,i) = tempin(:) - ENDDO - enddo - ENDDO - deallocate (tempin) - - close(kh2opltc) - - end subroutine read_h2odata -! -!********************************************************************** -! - subroutine setindxh2o(npts,dlat,jindx1,jindx2,ddy) -! -! May 2015 Shrinivas Moorthi - Prepare for H2O interpolation -! - use machine, only: kind_phys - use h2o_def, only: jh2o => latsh2o, h2o_lat, h2o_time -! - implicit none -! - integer npts - integer, dimension(npts) :: jindx1, jindx2 - real(kind=kind_phys) :: dlat(npts),ddy(npts) -! - integer i,j,lat -! - do j=1,npts - jindx2(j) = jh2o + 1 - do i=1,jh2o - if (dlat(j) < h2o_lat(i)) then - jindx2(j) = i - exit - endif - enddo - jindx1(j) = max(jindx2(j)-1,1) - jindx2(j) = min(jindx2(j),jh2o) - if (jindx2(j) /= jindx1(j)) then - ddy(j) = (dlat(j) - h2o_lat(jindx1(j))) & - / (h2o_lat(jindx2(j)) - h2o_lat(jindx1(j))) - else - ddy(j) = 1.0 - endif -! print *,' j=',j,' dlat=',dlat(j),' jindx12=',jindx1(j), & -! jindx2(j),' h2o_lat=',h2o_lat(jindx1(j)), & -! h2o_lat(jindx2(j)),' ddy=',ddy(j) - enddo - - return - end subroutine setindxh2o -! -!********************************************************************** -! - subroutine h2ointerpol(me,npts,idate,fhour,jindx1,jindx2,h2oplout,ddy) -! -! May 2015 Shrinivas Moorthi - Prepare for H2O interpolation -! - use machine , only : kind_phys, kind_dbl_prec - use h2o_def - implicit none - integer j,j1,j2,l,npts,nc,n1,n2 - real(kind=kind_phys) fhour,tem, tx1, tx2 -! - - integer jindx1(npts), jindx2(npts) - integer me,idate(4) - integer idat(8),jdat(8) -! - real(kind=kind_phys) ddy(npts) - real(kind=kind_phys) h2oplout(npts,levh2o,h2o_coeff) - real(kind=kind_phys) rjday - real(kind=kind_dbl_prec) rinc(5) - integer jdow, jdoy, jday -! - idat = 0 - idat(1) = idate(4) - idat(2) = idate(2) - idat(3) = idate(3) - idat(5) = idate(1) - rinc = 0. - rinc(2) = fhour - CALL W3MOVDAT(RINC,IDAT,JDAT) -! - jdow = 0 - jdoy = 0 - jday = 0 - call w3doxdat(jdat,jdow,jdoy,jday) - rjday = jdoy + jdat(5) / 24. - if (rjday < h2o_time(1)) rjday = rjday+365. -! - n2 = timeh2o + 1 - do j=2,timeh2o - if (rjday < h2o_time(j)) then - n2 = j - exit - endif - enddo - n1 = n2 - 1 -! -! if (me .eq. 0) print *,' n1=',n1,' n2=',n2,' rjday=',rjday -! &,'h2o_time=',h2o_time(n1),h2o_time(n2) -! - tx1 = (h2o_time(n2) - rjday) / (h2o_time(n2) - h2o_time(n1)) - tx2 = 1.0 - tx1 - if (n2 > timeh2o) n2 = n2 - timeh2o -! - do nc=1,h2o_coeff - do l=1,levh2o - do j=1,npts - j1 = jindx1(j) - j2 = jindx2(j) - tem = 1.0 - ddy(j) - h2oplout(j,l,nc) = & - tx1*(tem*h2oplin(j1,l,nc,n1)+ddy(j)*h2oplin(j2,l,nc,n1)) & - + tx2*(tem*h2oplin(j1,l,nc,n2)+ddy(j)*h2oplin(j2,l,nc,n2)) - enddo - enddo - enddo -! - return - end subroutine h2ointerpol - -end module h2ointerp diff --git a/physics/photochem/h2ophys.f b/physics/photochem/h2ophys.f deleted file mode 100644 index f46868e58..000000000 --- a/physics/photochem/h2ophys.f +++ /dev/null @@ -1,149 +0,0 @@ -!>\file h2ophys.f -!! This file include NRL H2O physics for stratosphere and mesosphere. - -!> This module contains the CCPP-compliant H2O physics for stratosphere and mesosphere. - module h2ophys - - implicit none - - private - - public :: h2ophys_init, h2ophys_run - - contains - - subroutine h2ophys_init(h2o_phys, errmsg, errflg) - - implicit none - logical, intent(in) :: h2o_phys - character(len=*), intent(out) :: errmsg - integer, intent(out) :: errflg - - ! Initialize CCPP error handling variables - errmsg = '' - errflg = 0 - - if (.not.h2o_phys) then - write (errmsg,'(*(a))') 'Logic error: h2o_phys == .false.' - errflg = 1 - return - endif - end subroutine h2ophys_init - -!>\defgroup GFS_h2ophys GFS Water Vapor Photochemical Module -!> This subroutine is NRL H2O physics for stratosphere and mesosphere. -!! \section arg_table_h2ophys_run Argument Table -!! \htmlinclude h2ophys_run.html -!! -!! \section genal_h2ophys GFS H2O Physics Scheme General Algorithm -!> @{ - subroutine h2ophys_run(im, levs, kh2o, dt, h2o, ph2o, prsl, & - & h2opltc, h2o_coeff, me, & - & errmsg, errflg) -! -! May 2015 - Shrinivas Moorthi - Adaptation of NRL H2O physics for -! stratosphere and mesosphere -! -! this code assumes that both prsl and ph2o are from bottom to top -! as are all other variables -! - use machine , only : kind_phys - implicit none -! interface variables - integer, intent(in) :: im, levs, kh2o, h2o_coeff, me - real(kind=kind_phys), intent(in) :: dt - real(kind=kind_phys), intent(inout) :: h2o(:,:) - real(kind=kind_phys), intent(in) :: ph2o(:) - real(kind=kind_phys), intent(in) :: prsl(:,:) - real(kind=kind_phys), intent(in) :: h2opltc(:,:,:) - !real(kind=kind_phys), intent(inout) :: h2op(im,levs,h2o_coeff) - character(len=*), intent(out) :: errmsg - integer, intent(out) :: errflg -! local variables - integer k,kmax,kmin,l,i,j - logical flg(im) - real(kind=kind_phys) pmax, pmin, tem, temp - real(kind=kind_phys) wk1(im), wk2(im), wk3(im), pltc(im,h2o_coeff) - &, h2oib(im) - real, parameter :: prsmax=10000.0, pmaxl=log(prsmax) -! -! initialize CCPP error handling variables - errmsg = '' - errflg = 0 -! -! write(1000+me,*)' in h2ophys im=', im, levs, kh2o, dt - do l=1,levs - pmin = 1.0e10 - pmax = -1.0e10 -! - do i=1,im - wk1(i) = log(prsl(i,l)) - pmin = min(wk1(i), pmin) - pmax = max(wk1(i), pmax) - pltc(i,:) = 0.0 - enddo - if (pmin < pmaxl) then - kmax = 1 - kmin = 1 - do k=1,kh2o-1 - if (pmin < ph2o(k)) kmax = k - if (pmax < ph2o(k)) kmin = k - enddo -! - do k=kmin,kmax - temp = 1.0 / (ph2o(k) - ph2o(k+1)) - do i=1,im - flg(i) = .false. - if (wk1(i) < ph2o(k) .and. wk1(i) >= ph2o(k+1)) then - flg(i) = .true. - wk2(i) = (wk1(i) - ph2o(k+1)) * temp - wk3(i) = 1.0 - wk2(i) - endif - enddo - do j=1,h2o_coeff - do i=1,im - if (flg(i)) then - pltc(i,j) = wk2(i) * h2opltc(i,k,j) - & + wk3(i) * h2opltc(i,k+1,j) - endif - enddo - enddo - enddo -! - do j=1,h2o_coeff - do i=1,im - if (wk1(i) < ph2o(kh2o)) then - pltc(i,j) = h2opltc(i,kh2o,j) - endif - if (wk1(i) >= ph2o(1)) then - pltc(i,j) = h2opltc(i,1,j) - endif - enddo - enddo - endif - do i=1,im - if (prsl(i,l) < prsmax .and. pltc(i,2) /= 0.0) then - h2oib(i) = h2o(i,l) ! no filling - tem = 1.0 / pltc(i,2) ! 1/teff - h2o(i,l) = (h2oib(i) + (pltc(i,1)+pltc(i,3)*tem)*dt) - & / (1.0 + tem*dt) - endif - -! if (i == 1) write(1000+me,*)' h2oib=',h2oib(i),' pltc1=', -! &pltc(i,1),' pltc2=', pltc(i,2),' tem=',tem ,' dt=',dt -! &,' l=',l - enddo -! -! if (ldiag3d) then ! h2o change diagnostics -! do i=1,im -! h2op(i,l,1) = h2op(i,l,1) + pltc(i,1)*dt -! h2op(i,l,2) = h2op(i,l,2) + (h2oo(i,l) - h2oib(i)) -! enddo -! endif - enddo ! vertical loop -! - return - end subroutine h2ophys_run -!> @} - - end module h2ophys diff --git a/physics/photochem/h2ophys.meta b/physics/photochem/h2ophys.meta deleted file mode 100644 index 9e9b03647..000000000 --- a/physics/photochem/h2ophys.meta +++ /dev/null @@ -1,127 +0,0 @@ -[ccpp-table-properties] - name = h2ophys - type = scheme - dependencies = ../hooks/machine.F - -######################################################################## -[ccpp-arg-table] - name = h2ophys_init - type = scheme -[h2o_phys] - standard_name = flag_for_stratospheric_water_vapor_physics - long_name = flag for stratospheric water vapor physics - units = flag - dimensions = () - type = logical - intent = in -[errmsg] - standard_name = ccpp_error_message - long_name = error message for error handling in CCPP - units = none - dimensions = () - type = character - kind = len=* - intent = out -[errflg] - standard_name = ccpp_error_code - long_name = error code for error handling in CCPP - units = 1 - dimensions = () - type = integer - intent = out - -######################################################################## -[ccpp-arg-table] - name = h2ophys_run - type = scheme -[im] - standard_name = horizontal_loop_extent - long_name = horizontal loop extent - units = count - dimensions = () - type = integer - intent = in -[levs] - standard_name = vertical_layer_dimension - long_name = number of vertical layers - units = count - dimensions = () - type = integer - intent = in -[kh2o] - standard_name = vertical_dimension_of_h2o_forcing_data - long_name = number of vertical layers in h2o forcing data - units = count - dimensions = () - type = integer - intent = in -[dt] - standard_name = timestep_for_physics - long_name = physics time step - units = s - dimensions = () - type = real - kind = kind_phys - intent = in -[h2o] - standard_name = specific_humidity_of_new_state - long_name = water vapor specific humidity updated by physics - units = kg kg-1 - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = inout -[ph2o] - standard_name = natural_log_of_h2o_forcing_data_pressure_levels - long_name = natural log of h2o forcing data pressure levels - units = 1 - dimensions = (vertical_dimension_of_h2o_forcing_data) - type = real - kind = kind_phys - intent = in -[prsl] - standard_name = air_pressure - long_name = mid-layer pressure - units = Pa - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = in -[h2opltc] - standard_name = stratospheric_water_vapor_forcing - long_name = water forcing data - units = mixed - dimensions = (horizontal_loop_extent,vertical_dimension_of_h2o_forcing_data,number_of_coefficients_in_h2o_forcing_data) - type = real - kind = kind_phys - intent = in -[h2o_coeff] - standard_name = number_of_coefficients_in_h2o_forcing_data - long_name = number of coefficients in h2o forcing data - units = index - dimensions = () - type = integer - intent = in -[me] - standard_name = mpi_rank - long_name = rank of the current MPI task - units = index - dimensions = () - type = integer - intent = in -[errmsg] - standard_name = ccpp_error_message - long_name = error message for error handling in CCPP - units = none - dimensions = () - type = character - kind = len=* - intent = out -[errflg] - standard_name = ccpp_error_code - long_name = error code for error handling in CCPP - units = 1 - dimensions = () - type = integer - intent = out - diff --git a/physics/photochem/module_h2ophys.F90 b/physics/photochem/module_h2ophys.F90 new file mode 100644 index 000000000..c158ba95e --- /dev/null +++ b/physics/photochem/module_h2ophys.F90 @@ -0,0 +1,238 @@ +! ######################################################################################### +!> \section arg_table_module_h2ophys Argument table +!! \htmlinclude module_h2ophys.html +!! +! ######################################################################################### +module module_h2ophys + use machine, only : kind_phys + implicit none + + public ty_h2ophys + +! ######################################################################################### +!> \section arg_table_ty_h2ophys Argument Table +!! \htmlinclude ty_h2ophys.html +!! +!> Derived type containing data and procedures needed by h2o photochemistry parameterization +!! *Note* All data field are ordered from surface-to-toa. +!! +! ######################################################################################### + type ty_h2ophys + integer :: nlat !< Number of latitudes. + integer :: nlev !< Number of vertical layers. + integer :: ntime !< Number of times. + integer :: ncf !< Number of coefficients. + real(kind_phys), allocatable :: lat(:) !< Latitude. + real(kind_phys), allocatable :: pres(:) !< Pressure levels. + real(kind_phys), allocatable :: ph2o(:) !< Natural log pressure of levels. + real(kind_phys), allocatable :: time(:) !< Time. + real(kind_phys), allocatable :: data(:,:,:,:) !< H20 forcing data (raw) + contains + procedure, public :: load + procedure, public :: setup + procedure, public :: update + procedure, public :: run + end type ty_h2ophys + +contains + ! ######################################################################################### + ! Procedure (type-bound) for loading data. + ! ######################################################################################### + function load(this, file, fileID) result (err_message) + class(ty_h2ophys), intent(inout) :: this + integer, intent(in) :: fileID + character(len=*), intent(in) :: file + character(len=128) :: err_message + integer :: i1, i2, i3, ierr + real(kind=4), dimension(:), allocatable :: lat4, pres4, time4, tempin + real(kind=4) :: blatc4 + + ! initialize error message + err_message = "" + + ! Get dimensions from data file + open(unit=fileID,file=trim(file), form='unformatted', convert='big_endian', iostat=ierr, iomsg=err_message) + if (ierr /= 0 ) return + read (fileID, iostat=ierr, iomsg=err_message) this%ncf, this%nlat, this%nlev, this%ntime + if (ierr /= 0 ) return + rewind(fileID) + + allocate (this%lat(this%nlat)) + allocate (this%pres(this%nlev)) + allocate (this%ph2o(this%nlev)) + allocate (this%time(this%ntime+1)) + allocate (this%data(this%nlat,this%nlev,this%ncf,this%ntime)) + + allocate(lat4(this%nlat), pres4(this%nlev), time4(this%ntime+1)) + read (fileID, iostat=ierr, iomsg=err_message) this%ncf, this%nlat, this%nlev, this%ntime, lat4, pres4, time4 + if (ierr /= 0 ) return + + ! Store + this%pres(:) = pres4(:) + this%ph2o(:) = log(100.0*this%pres(:)) ! from mb to ln(Pa) + this%lat(:) = lat4(:) + this%time(:) = time4(:) + deallocate(lat4, pres4, time4) + + allocate(tempin(this%nlat)) + do i1=1,this%ntime + do i2=1,this%ncf + do i3=1,this%nlev + read(fileID, iostat=ierr, iomsg=err_message) tempin + if (ierr /= 0 ) return + this%data(:,i3,i2,i1) = tempin(:) + enddo + enddo + enddo + deallocate(tempin) + close(fileID) + + end function load + + ! ######################################################################################### + ! Procedure (type-bound) for setting up interpolation indices between data-grid and + ! model-grid. + ! ######################################################################################### + subroutine setup(this, lat, idx1, idx2, idxh) + class(ty_h2ophys), intent(in) :: this + real(kind_phys), intent(in) :: lat(:) + integer, intent(out) :: idx1(:), idx2(:) + real(kind_phys), intent(out) :: idxh(:) + integer :: i,j + + do j=1,size(lat) + idx2(j) = this%nlat + 1 + do i=1,this%nlat + if (lat(j) < this%lat(i)) then + idx2(j) = i + exit + endif + enddo + idx1(j) = max(idx2(j)-1,1) + idx2(j) = min(idx2(j),this%nlat) + if (idx2(j) .ne. idx1(j)) then + idxh(j) = (lat(j) - this%lat(idx1(j))) / (this%lat(idx2(j)) - this%lat(idx1(j))) + else + idxh(j) = 1.0 + endif + enddo + + end subroutine setup + + ! ######################################################################################### + ! Procedure (type-bound) for updating data. + ! ######################################################################################### + subroutine update(this, idx1, idx2, idxh, rjday, idxt1, idxt2, h2opl) + class(ty_h2ophys), intent(in) :: this + integer, intent(in) :: idx1(:), idx2(:) + real(kind_phys), intent(in) :: idxh(:) + real(kind_phys), intent(in) :: rjday + integer, intent(in) :: idxt1, idxt2 + real(kind_phys), intent(out) :: h2opl(:,:,:) + integer :: nc, l, j, j1, j2 + real(kind_phys) :: tem, tx1, tx2 + + tx1 = (this%time(idxt2) - rjday) / (this%time(idxt2) - this%time(idxt1)) + tx2 = 1.0 - tx1 + + do nc=1,this%ncf + do l=1,this%nlev + do j=1,size(h2opl(:,1,1)) + j1 = idx1(j) + j2 = idx2(j) + tem = 1.0 - idxh(j) + h2opl(j,l,nc) = tx1*(tem*this%data(j1,l,nc,idxt1)+idxh(j)*this%data(j2,l,nc,idxt1)) & + + tx2*(tem*this%data(j1,l,nc,idxt2)+idxh(j)*this%data(j2,l,nc,idxt2)) + enddo + enddo + enddo + + end subroutine update + + ! ######################################################################################### + ! Procedure (type-bound) for NRL stratospheric h2o photochemistry physics. + ! ######################################################################################### + subroutine run(this, dt, p, h2opltc, h2o) + class(ty_h2ophys), intent(in) :: this + real(kind_phys), intent(in) :: & + dt ! Model timestep (sec) + real(kind_phys), intent(in), dimension(:,:) :: & + p ! Model Pressure (Pa) + real(kind_phys), intent(in), dimension(:,:,:) :: & + h2opltc ! h2o forcing data + real(kind_phys), intent(inout), dimension(:,:) :: & + h2o ! h2o concentration (updated) + + integer :: nCol, nLev, iCol, iLev, iCf, kmax, kmin, k + logical, dimension(size(p,1)) :: flg + real(kind_phys) :: pmax, pmin, temp + real(kind_phys), dimension(size(p,1)) :: wk1, wk2, wk3, h2oib + real(kind_phys), dimension(size(p,1),this%ncf) :: pltc + real(kind_phys), parameter :: prsmax=10000.0, pmaxl=log(prsmax) + + ! Dimensions + nCol = size(p,1) + nLev = size(p,2) + + do iLev=1,nLev + pmin = 1.0e10 + pmax = -1.0e10 + do iCol=1,nCol + wk1(iCol) = log(p(iCol,iLev)) + pmin = min(wk1(iCol), pmin) + pmax = max(wk1(iCol), pmax) + pltc(iCol,:) = 0._kind_phys + enddo + if (pmin < pmaxl) then + kmax = 1 + kmin = 1 + do k=1,this%nlev-1 + if (pmin < this%ph2o(k)) kmax = k + if (pmax < this%ph2o(k)) kmin = k + enddo + + do k=kmin,kmax + temp = 1.0 / (this%ph2o(k) - this%ph2o(k+1)) + do iCol=1,nCol + flg(iCol) = .false. + if (wk1(iCol) < this%ph2o(k) .and. wk1(iCol) >= this%ph2o(k+1)) then + flg(iCol) = .true. + wk2(iCol) = (wk1(iCol) - this%ph2o(k+1)) * temp + wk3(iCol) = 1.0 - wk2(iCol) + endif + enddo + do iCf=1,this%ncf + do iCol=1,nCol + if (flg(iCol)) then + pltc(iCol,iCf) = wk2(iCol) * h2opltc(iCol,k,iCf) + wk3(iCol) * h2opltc(iCol,k+1,iCf) + endif + enddo + enddo + enddo + + do iCf=1,this%ncf + do iCol=1,nCol + if (wk1(iCol) < this%ph2o(this%nlev)) then + pltc(iCol,iCf) = h2opltc(iCol,this%nlev,iCf) + endif + if (wk1(iCol) >= this%ph2o(1)) then + pltc(iCol,iCf) = h2opltc(iCol,1,iCf) + endif + enddo + enddo + endif + + do iCol=1,nCol + if (p(iCol,iLev) < prsmax .and. pltc(iCol,2) /= 0.0) then + h2oib(iCol) = h2o(iCol,iLev) + temp = 1.0 / pltc(iCol,2) + h2o(iCol,iLev) = (h2oib(iCol) + (pltc(iCol,1)+pltc(iCol,3)*temp)*dt) / (1.0 + temp*dt) + endif + enddo + enddo + + + return + end subroutine run + +end module module_h2ophys diff --git a/physics/photochem/module_h2ophys.meta b/physics/photochem/module_h2ophys.meta new file mode 100644 index 000000000..a4af0b21c --- /dev/null +++ b/physics/photochem/module_h2ophys.meta @@ -0,0 +1,24 @@ +[ccpp-table-properties] + name = ty_h2ophys + type = ddt + dependencies = + +[ccpp-arg-table] + name = ty_h2ophys + type = ddt + +######################################################################## +[ccpp-table-properties] + name = module_h2ophys + type = module + dependencies = machine.F + +[ccpp-arg-table] + name = module_h2ophys + type = module +[ty_h2ophys] + standard_name = ty_h2ophys + long_name = definition of type ty_h2ophys + units = DDT + dimensions = () + type = ty_h2ophys \ No newline at end of file From cf89e99b968ca5e3cfa088788ea7713f32476c53 Mon Sep 17 00:00:00 2001 From: Dustin Swales Date: Wed, 12 Jun 2024 22:16:40 +0000 Subject: [PATCH 13/80] Bug fix --- physics/Interstitials/UFS_SCM_NEPTUNE/GFS_photochemistry.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_photochemistry.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_photochemistry.F90 index 08bedf6b5..c92e283e9 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_photochemistry.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_photochemistry.F90 @@ -70,4 +70,4 @@ subroutine GFS_photochemistry_run (dtp, ozphys, oz_phys_2015, oz_phys_2006, con_ end subroutine GFS_photochemistry_run -end module GFS_photochemistry_update +end module GFS_photochemistry From afa2bc0632bd1e8a14740da484a431eadc56ec68 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Wed, 12 Jun 2024 18:21:54 -0600 Subject: [PATCH 14/80] Use assumed-size arrays in lakeini routine in physics/SFC_Models/Lake/CLM/clm_lake.f90 and remove OPTIONAL keyword from Fortran code to fix intel 19 runtime issues --- physics/SFC_Models/Lake/CLM/clm_lake.f90 | 60 +++++++++++------------- 1 file changed, 28 insertions(+), 32 deletions(-) diff --git a/physics/SFC_Models/Lake/CLM/clm_lake.f90 b/physics/SFC_Models/Lake/CLM/clm_lake.f90 index 94ad9d815..565430a08 100644 --- a/physics/SFC_Models/Lake/CLM/clm_lake.f90 +++ b/physics/SFC_Models/Lake/CLM/clm_lake.f90 @@ -316,7 +316,7 @@ SUBROUTINE clm_lake_run( & REAL(KIND_PHYS), INTENT(IN) :: min_lakeice, lakedepth_default, dtp LOGICAL, INTENT(IN) :: use_lakedepth INTEGER, DIMENSION(:), INTENT(IN) :: use_lake_model - REAL(KIND_PHYS), INTENT(INOUT), OPTIONAL :: clm_lake_initialized(:) + REAL(KIND_PHYS), INTENT(INOUT) :: clm_lake_initialized(:) LOGICAL, INTENT(IN) :: frac_grid, frac_ice ! @@ -326,7 +326,7 @@ SUBROUTINE clm_lake_run( & tg3, pgr, zlvl, qvcurr, xlat_d, xlon_d, ch, cm, & dlwsfci, dswsfci, oro_lakedepth, wind, & t1, qv1, prsl1 - REAL(KIND_PHYS), DIMENSION(:), INTENT(IN), OPTIONAL :: & + REAL(KIND_PHYS), DIMENSION(:), INTENT(IN) :: & rainncprv, raincprv REAL(KIND_PHYS), DIMENSION(:,:), INTENT(in) :: gu0, gv0, prsi, gt0, phii LOGICAL, DIMENSION(:), INTENT(IN) :: flag_iter @@ -343,34 +343,34 @@ SUBROUTINE clm_lake_run( & weasdi, snodi, hice, qss_water, qss_ice, & cmm_water, cmm_ice, chh_water, chh_ice, & uustar_water, uustar_ice, zorlw, zorli, weasd, snowd, fice - REAL(KIND_PHYS), DIMENSION(:), INTENT(INOUT) , OPTIONAL :: & + REAL(KIND_PHYS), DIMENSION(:), INTENT(INOUT) :: & lake_t_snow, albedo, lake_t2m, lake_q2m LOGICAL, INTENT(INOUT) :: icy(:) ! ! Lake model internal state stored by caller: ! - INTEGER, DIMENSION( : ), INTENT(INOUT), OPTIONAL :: salty - INTEGER, DIMENSION( : ), INTENT(INOUT), OPTIONAL :: cannot_freeze + INTEGER, DIMENSION( : ), INTENT(INOUT) :: salty + INTEGER, DIMENSION( : ), INTENT(INOUT) :: cannot_freeze - real(kind_phys), dimension(: ), OPTIONAL ,intent(inout) :: savedtke12d, & + real(kind_phys), dimension(: ) ,intent(inout) :: savedtke12d, & snowdp2d, & h2osno2d, & snl2d, & t_grnd2d - real(kind_phys), dimension( :,: ), OPTIONAL, INTENT(inout) :: t_lake3d, & + real(kind_phys), dimension( :,: ), INTENT(inout) :: t_lake3d, & lake_icefrac3d - real(kind_phys), dimension( :,-nlevsnow+1: ) ,INTENT(inout), OPTIONAL :: t_soisno3d, & + real(kind_phys), dimension( :,-nlevsnow+1: ) ,INTENT(inout) :: t_soisno3d, & h2osoi_ice3d, & h2osoi_liq3d, & h2osoi_vol3d, & z3d, & dz3d - real(kind_phys), dimension( :,-nlevsnow+0: ) ,INTENT(inout), OPTIONAL :: zi3d + real(kind_phys), dimension( :,-nlevsnow+0: ) ,INTENT(inout) :: zi3d - REAL(KIND_PHYS), DIMENSION( : ) ,INTENT(INOUT), OPTIONAL :: clm_lakedepth - REAL(KIND_PHYS), DIMENSION( : ) ,INTENT(INOUT), OPTIONAL :: input_lakedepth + REAL(KIND_PHYS), DIMENSION( : ) ,INTENT(INOUT) :: clm_lakedepth + REAL(KIND_PHYS), DIMENSION( : ) ,INTENT(INOUT) :: input_lakedepth ! ! Error reporting: @@ -5377,43 +5377,39 @@ SUBROUTINE lakeini(kdt, ISLTYP, gt0, snowd, INTEGER , INTENT (IN) :: im, me, master, km, kdt REAL(KIND_PHYS), INTENT(IN) :: min_lakeice, fhour - REAL(KIND_PHYS), DIMENSION(IM), INTENT(INOUT):: FICE, hice - REAL(KIND_PHYS), DIMENSION(IM), INTENT(IN):: TG3, xlat_d, xlon_d - REAL(KIND_PHYS), DIMENSION(IM), INTENT(IN):: tsfc - REAL(KIND_PHYS), DIMENSION(IM) ,INTENT(INOUT) :: clm_lake_initialized - integer, dimension(IM), intent(in) :: use_lake_model - !INTEGER , INTENT (IN) :: lakeflag - !INTEGER , INTENT (INOUT) :: lake_depth_flag + REAL(KIND_PHYS), DIMENSION(:), INTENT(INOUT):: FICE, hice + REAL(KIND_PHYS), DIMENSION(:), INTENT(IN):: TG3, xlat_d, xlon_d + REAL(KIND_PHYS), DIMENSION(:), INTENT(IN):: tsfc + REAL(KIND_PHYS), DIMENSION(:) ,INTENT(INOUT) :: clm_lake_initialized + integer, dimension(:), intent(in) :: use_lake_model LOGICAL, INTENT (IN) :: use_lakedepth - INTEGER, DIMENSION(IM), INTENT(IN) :: ISLTYP - REAL(KIND_PHYS), DIMENSION(IM), INTENT(INOUT) :: snowd,weasd - REAL(kind_phys), DIMENSION(IM,KM), INTENT(IN) :: gt0 - REAL(kind_phys), DIMENSION(IM,KM+1), INTENT(IN) :: prsi + INTEGER, DIMENSION(:), INTENT(IN) :: ISLTYP + REAL(KIND_PHYS), DIMENSION(:), INTENT(INOUT) :: snowd,weasd + REAL(kind_phys), DIMENSION(:,:), INTENT(IN) :: gt0 + REAL(kind_phys), DIMENSION(:,:), INTENT(IN) :: prsi real(kind_phys), intent(in) :: lakedepth_default - real(kind_phys), dimension(IM),intent(inout) :: clm_lakedepth - real(kind_phys), dimension(IM),intent(inout) :: input_lakedepth - real(kind_phys), dimension(IM),intent(in) :: oro_lakedepth - real(kind_phys), dimension(IM),intent(out) :: savedtke12d - real(kind_phys), dimension(IM),intent(out) :: snowdp2d, & + real(kind_phys), dimension(:),intent(inout) :: clm_lakedepth + real(kind_phys), dimension(:),intent(inout) :: input_lakedepth + real(kind_phys), dimension(:),intent(in) :: oro_lakedepth + real(kind_phys), dimension(:),intent(out) :: savedtke12d + real(kind_phys), dimension(:),intent(out) :: snowdp2d, & h2osno2d, & snl2d, & t_grnd2d - real(kind_phys), dimension(IM,nlevlake),INTENT(out) :: t_lake3d, & + real(kind_phys), dimension(:,:),INTENT(out) :: t_lake3d, & lake_icefrac3d - real(kind_phys), dimension(IM,-nlevsnow+1:nlevsoil ),INTENT(out) :: t_soisno3d, & + real(kind_phys), dimension(:,-nlevsnow+1:),INTENT(out) :: t_soisno3d, & h2osoi_ice3d, & h2osoi_liq3d, & h2osoi_vol3d, & z3d, & dz3d - real(kind_phys), dimension( IM,-nlevsnow+0:nlevsoil ),INTENT(out) :: zi3d + real(kind_phys), dimension(:,-nlevsnow+0:),INTENT(out) :: zi3d - !LOGICAL, DIMENSION( : ),intent(out) :: lake - !REAL(KIND_PHYS), OPTIONAL, DIMENSION( : ), INTENT(IN) :: lake_depth ! no separate variable for this in CCPP integer :: n,i,j,k,ib,lev,bottom ! indices real(kind_lake),dimension(1:im ) :: bd2d ! bulk density of dry soil material [kg/m^3] From a446feceba9d6301684195791da0b0b2332fcbb7 Mon Sep 17 00:00:00 2001 From: Dustin Swales Date: Thu, 13 Jun 2024 17:45:19 +0000 Subject: [PATCH 15/80] Some bugfixes --- .../UFS_SCM_NEPTUNE/GFS_photochemistry.F90 | 5 ++- .../UFS_SCM_NEPTUNE/GFS_photochemistry.meta | 16 +++++----- .../GFS_suite_stateout_update.F90 | 7 ++-- .../GFS_suite_stateout_update.meta | 16 ---------- physics/photochem/module_ozphys.F90 | 32 +++++++++---------- 5 files changed, 30 insertions(+), 46 deletions(-) diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_photochemistry.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_photochemistry.F90 index c92e283e9..c61ddb471 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_photochemistry.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_photochemistry.F90 @@ -14,7 +14,7 @@ module GFS_photochemistry !! ! ######################################################################################### subroutine GFS_photochemistry_run (dtp, ozphys, oz_phys_2015, oz_phys_2006, con_1ovg, & - prsl, dp, ozpl, h2o_phys, h2ophys, h2opl, h2o0, oz0, do3_dt_prd, do3_dt_ozmx, & + prsl, dp, ozpl, h2o_phys, h2ophys, h2opl, h2o0, oz0, gt0, do3_dt_prd, do3_dt_ozmx, & do3_dt_temp, do3_dt_ohoz, errmsg, errflg) ! Inputs @@ -47,6 +47,9 @@ subroutine GFS_photochemistry_run (dtp, ozphys, oz_phys_2015, oz_phys_2006, con_ real(kind=kind_phys), intent(out), dimension(:,:) :: & oz0, & ! Update ozone concentration. h2o0 ! Updated h2o concentration. + real(kind=kind_phys), intent(inout), dimension(:,:) :: & + gt0 ! Updated temperature + character(len=*), intent(out) :: & errmsg ! CCPP Error message. integer, intent(out) :: & diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_photochemistry.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_photochemistry.meta index 526910fec..8bce5e7b4 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_photochemistry.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_photochemistry.meta @@ -38,14 +38,6 @@ dimensions = () type = logical intent = in -[con_1ovg] - standard_name = one_divided_by_the_gravitational_acceleration - long_name = inverse of gravitational acceleration - units = s2 m-1 - dimensions = () - type = real - kind = kind_phys - intent = in [prsl] standard_name = air_pressure long_name = mid-layer pressure @@ -108,6 +100,14 @@ type = real kind = kind_phys intent = out +[gt0] + standard_name = air_temperature_of_new_state + long_name = temperature updated by physics + units = K + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = inout [do3_dt_prd] standard_name = ozone_tendency_due_to_production_and_loss_rate long_name = ozone tendency due to production and loss rate diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_stateout_update.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_stateout_update.F90 index 057c50d1e..facdb6213 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_stateout_update.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_stateout_update.F90 @@ -17,8 +17,7 @@ module GFS_suite_stateout_update ! ######################################################################################### subroutine GFS_suite_stateout_update_run (im, levs, ntrac, dtp, tgrs, ugrs, vgrs, qgrs, & dudt, dvdt, dtdt, dqdt, gt0, gu0, gv0, gq0, ntiw, nqrimef, imp_physics, & - imp_physics_fer_hires, epsq, ozphys, oz_phys_2015, oz_phys_2006, con_1ovg, prsl, & - errmsg, errflg) + imp_physics_fer_hires, epsq, errmsg, errflg) ! Inputs integer, intent(in ) :: im @@ -26,8 +25,8 @@ subroutine GFS_suite_stateout_update_run (im, levs, ntrac, dtp, tgrs, ugrs, vgrs integer, intent(in ) :: ntrac integer, intent(in ) :: imp_physics,imp_physics_fer_hires integer, intent(in ) :: ntiw, nqrimef - real(kind=kind_phys), intent(in ) :: dtp, epsq, con_1ovg - real(kind=kind_phys), intent(in ), dimension(:,:) :: tgrs, ugrs, vgrs, prsl + real(kind=kind_phys), intent(in ) :: dtp, epsq + real(kind=kind_phys), intent(in ), dimension(:,:) :: tgrs, ugrs, vgrs real(kind=kind_phys), intent(in ), dimension(:,:,:) :: qgrs real(kind=kind_phys), intent(in ), dimension(:,:) :: dudt, dvdt, dtdt real(kind=kind_phys), intent(in ), dimension(:,:,:) :: dqdt diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_stateout_update.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_stateout_update.meta index 4153befb9..2b7572789 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_stateout_update.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_stateout_update.meta @@ -169,22 +169,6 @@ type = real kind = kind_phys intent = in -[con_1ovg] - standard_name = one_divided_by_the_gravitational_acceleration - long_name = inverse of gravitational acceleration - units = s2 m-1 - dimensions = () - type = real - kind = kind_phys - intent = in -[prsl] - standard_name = air_pressure - long_name = mid-layer pressure - units = Pa - dimensions = (horizontal_loop_extent,vertical_layer_dimension) - type = real - kind = kind_phys - intent = in [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP diff --git a/physics/photochem/module_ozphys.F90 b/physics/photochem/module_ozphys.F90 index 898dee921..63c79a58a 100644 --- a/physics/photochem/module_ozphys.F90 +++ b/physics/photochem/module_ozphys.F90 @@ -205,8 +205,9 @@ end subroutine update_o3prog ! ######################################################################################### ! Procedure (type-bound) for NRL prognostic ozone (2015). ! ######################################################################################### - subroutine run_o3prog_2015(this, con_1ovg, dt, p, t, dp, ozpl, oz, do_diag, do3_dt_prd, & + subroutine run_o3prog_2015(this, con_1ovg, dt, p, t, dp, ozpl, oz, do3_dt_prd, & do3_dt_ozmx, do3_dt_temp, do3_dt_ohoz) + class(ty_ozphys), intent(in) :: this real(kind_phys), intent(in) :: & con_1ovg ! Physical constant: One divided by gravitational acceleration (m-1 s2) @@ -220,7 +221,6 @@ subroutine run_o3prog_2015(this, con_1ovg, dt, p, t, dp, ozpl, oz, do_diag, do3_ ozpl ! Ozone forcing data real(kind_phys), intent(inout), dimension(:,:) :: & oz ! Ozone concentration updated by physics - logical, intent(in) :: do_diag real(kind_phys), intent(inout), dimension(:,:), optional :: & do3_dt_prd, & ! Physics tendency: production and loss effect do3_dt_ozmx, & ! Physics tendency: ozone mixing ratio effect @@ -305,12 +305,11 @@ subroutine run_o3prog_2015(this, con_1ovg, dt, p, t, dp, ozpl, oz, do_diag, do3_ enddo ! Diagnostics (optional) - if (do_diag) then - do3_dt_prd(:,iLev) = prod(:,1) * dt - do3_dt_ozmx(:,iLev) = prod(:,2) * (oz(:,iLev) - prod(:,6)) * dt - do3_dt_temp(:,iLev) = prod(:,3)*(t(:,iLev)-prod(:,5))*dt - do3_dt_ohoz(:,iLev) = prod(:,4) * (colo3(:,iLev)-coloz(:,iLev))*dt - endif + if (present(do3_dt_prd)) do3_dt_prd(:,iLev) = prod(:,1) * dt + if (present(do3_dt_ozmx)) do3_dt_ozmx(:,iLev) = prod(:,2) * (oz(:,iLev) - prod(:,6)) * dt + if (present(do3_dt_temp)) do3_dt_temp(:,iLev) = prod(:,3)*(t(:,iLev)-prod(:,5))*dt + if (present(do3_dt_ohoz)) do3_dt_ohoz(:,iLev) = prod(:,4) * (colo3(:,iLev)-coloz(:,iLev))*dt + enddo return @@ -319,8 +318,9 @@ end subroutine run_o3prog_2015 ! ######################################################################################### ! Procedure (type-bound) for NRL prognostic ozone (2006). ! ######################################################################################### - subroutine run_o3prog_2006(this, con_1ovg, dt, p, t, dp, ozpl, oz, do_diag, do3_dt_prd, & + subroutine run_o3prog_2006(this, con_1ovg, dt, p, t, dp, ozpl, oz, do3_dt_prd, & do3_dt_ozmx, do3_dt_temp, do3_dt_ohoz) + class(ty_ozphys), intent(in) :: this real(kind_phys), intent(in) :: & con_1ovg ! Physical constant: One divided by gravitational acceleration (m-1 s2) @@ -334,8 +334,7 @@ subroutine run_o3prog_2006(this, con_1ovg, dt, p, t, dp, ozpl, oz, do_diag, do3_ ozpl ! Ozone forcing data real(kind_phys), intent(inout), dimension(:,:) :: & oz ! Ozone concentration updated by physics - logical, intent(in) :: do_diag - real(kind_phys), intent(inout), dimension(:,:) :: & + real(kind_phys), intent(inout), dimension(:,:), optional :: & do3_dt_prd, & ! Physics tendency: production and loss effect do3_dt_ozmx, & ! Physics tendency: ozone mixing ratio effect do3_dt_temp, & ! Physics tendency: temperature effect @@ -431,12 +430,11 @@ subroutine run_o3prog_2006(this, con_1ovg, dt, p, t, dp, ozpl, oz, do_diag, do3_ endif ! Diagnostics (optional) - if (do_diag) then - do3_dt_prd(:,iLev) = prod(:,1)*dt - do3_dt_ozmx(:,iLev) = (oz(:,iLev) - ozib(:)) - do3_dt_temp(:,iLev) = prod(:,3) * t(:,iLev) * dt - do3_dt_ohoz(:,iLev) = prod(:,4) * colo3(:,iLev) * dt - endif + if (present(do3_dt_prd)) do3_dt_prd(:,iLev) = prod(:,1)*dt + if (present(do3_dt_ozmx)) do3_dt_ozmx(:,iLev) = (oz(:,iLev) - ozib(:)) + if (present(do3_dt_temp)) do3_dt_temp(:,iLev) = prod(:,3) * t(:,iLev) * dt + if (present(do3_dt_ohoz)) do3_dt_ohoz(:,iLev) = prod(:,4) * colo3(:,iLev) * dt + enddo return From 99c02ef5490a4f5367dea92ea51dcbf1fad583a0 Mon Sep 17 00:00:00 2001 From: Dustin Swales Date: Fri, 14 Jun 2024 20:19:55 +0000 Subject: [PATCH 16/80] Now B4B Identical --- .../UFS_SCM_NEPTUNE/GFS_photochemistry.F90 | 55 +++++++++++++----- .../UFS_SCM_NEPTUNE/GFS_photochemistry.meta | 57 +++++++++++++++++-- physics/photochem/module_h2ophys.F90 | 3 +- 3 files changed, 96 insertions(+), 19 deletions(-) diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_photochemistry.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_photochemistry.F90 index c61ddb471..4a679713e 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_photochemistry.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_photochemistry.F90 @@ -8,6 +8,37 @@ module GFS_photochemistry use module_h2ophys, only: ty_h2ophys implicit none contains + +! ######################################################################################### +!> \section arg_table_GFS_photochemistry_init Argument Table +!! \htmlinclude GFS_photochemistry_init.html +!! +! ######################################################################################### + subroutine GFS_photochemistry_init(oz_phys_2006, oz_phys_2015, h2o_phys, errmsg, errflg) + logical, intent(in) :: & + oz_phys_2015, & ! Do ozone photochemistry? (2015) + oz_phys_2006, & ! Do ozone photochemistry? (2006) + h2o_phys ! Do stratospheric h2o photochemistry? + character(len=*), intent(out) :: & + errmsg ! CCPP Error message. + integer, intent(out) :: & + errflg ! CCPP Error flag. + + ! Initialize CCPP error handling variables + errmsg = '' + errflg = 0 + + ! If no photchemical scheme is on, but SDF has this module, report an error? + ! DJS2024 Asks: If everything in _run() is controlled by these logicals, we probably don't + ! need to kill it here, since the run phase will be harmless? + if ((.not. oz_phys_2006) .and. (.not. oz_phys_2015) .and. (.not. h2o_phys)) then + write (errmsg,'(*(a))') 'Logic error: One of [oz_phys_2006, oz_phys_2015, or h2o_phys] must == .true. ' + errflg = 1 + return + endif + + end subroutine GFS_photochemistry_init + ! ######################################################################################### !> \section arg_table_GFS_photochemistry_run Argument Table !! \htmlinclude GFS_photochemistry_run.html @@ -18,23 +49,24 @@ subroutine GFS_photochemistry_run (dtp, ozphys, oz_phys_2015, oz_phys_2006, con_ do3_dt_temp, do3_dt_ohoz, errmsg, errflg) ! Inputs - real(kind=kind_phys), intent(in ) :: & + real(kind=kind_phys), intent(in) :: & dtp, & ! Model timestep con_1ovg ! Physical constant (1./gravity) - real(kind=kind_phys), intent(in ), dimension(:,:) :: & + real(kind=kind_phys), intent(in), dimension(:,:) :: & prsl, & ! Air pressure (Pa) - dp ! Pressure thickness (Pa) - real(kind=kind_phys), intent(in ), dimension(:,:,:) :: & - ozpl, & ! Ozone data for current model timestep - h2opl ! h2o data for curent model timestep + dp, & ! Pressure thickness (Pa) + gt0 ! Air temperature (K) + real(kind=kind_phys), intent(in), dimension(:,:,:) :: & + ozpl, & ! Ozone data for current model timestep. + h2opl ! h2o data for curent model timestep. logical, intent(in) :: & oz_phys_2015, & ! Do ozone photochemistry? (2015) oz_phys_2006, & ! Do ozone photochemistry? (2006) - h2o_phys ! Do h2o photochemistry? + h2o_phys ! Do stratospheric h2o photochemistry? type(ty_ozphys), intent(in) :: & - ozphys ! DDT with ozone photochemistry scheme. + ozphys ! DDT with ozone photochemistry scheme/data. type(ty_h2ophys), intent(in) :: & - h2ophys ! DDT with h2o photochemistry scheme. + h2ophys ! DDT with h2o photochemistry scheme/data. ! Outputs (optional) real(kind=kind_phys), intent(inout), dimension(:,:), optional :: & @@ -44,12 +76,9 @@ subroutine GFS_photochemistry_run (dtp, ozphys, oz_phys_2015, oz_phys_2006, con_ do3_dt_ohoz ! Physics tendency: overhead ozone effect ! Outputs - real(kind=kind_phys), intent(out), dimension(:,:) :: & + real(kind=kind_phys), intent(inout), dimension(:,:) :: & oz0, & ! Update ozone concentration. h2o0 ! Updated h2o concentration. - real(kind=kind_phys), intent(inout), dimension(:,:) :: & - gt0 ! Updated temperature - character(len=*), intent(out) :: & errmsg ! CCPP Error message. integer, intent(out) :: & diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_photochemistry.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_photochemistry.meta index 8bce5e7b4..4e26241fb 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_photochemistry.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_photochemistry.meta @@ -7,7 +7,48 @@ ######################################################################## [ccpp-arg-table] - name = GFS_photochemistry + name = GFS_photochemistry_init + type = scheme +[oz_phys_2006] + standard_name = flag_for_nrl_2006_ozone_scheme + long_name = flag for new (2006) ozone physics + units = flag + dimensions = () + type = logical + intent = in +[oz_phys_2015] + standard_name = flag_for_nrl_2015_ozone_scheme + long_name = flag for new (2015) ozone physics + units = flag + dimensions = () + type = logical + intent = in +[h2o_phys] + standard_name = flag_for_stratospheric_water_vapor_physics + long_name = flag for stratospheric water vapor physics + units = flag + dimensions = () + type = logical + intent = in +[errmsg] + standard_name = ccpp_error_message + long_name = error message for error handling in CCPP + units = none + dimensions = () + type = character + kind = len=* + intent = out +[errflg] + standard_name = ccpp_error_code + long_name = error code for error handling in CCPP + units = 1 + dimensions = () + type = integer + intent = out + +######################################################################## +[ccpp-arg-table] + name = GFS_photochemistry_run type = scheme [dtp] standard_name = timestep_for_physics @@ -38,6 +79,14 @@ dimensions = () type = logical intent = in +[con_1ovg] + standard_name = one_divided_by_the_gravitational_acceleration + long_name = inverse of gravitational acceleration + units = s2 m-1 + dimensions = () + type = real + kind = kind_phys + intent = in [prsl] standard_name = air_pressure long_name = mid-layer pressure @@ -91,7 +140,7 @@ dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - intent = out + intent = inout [oz0] standard_name = ozone_concentration_of_new_state long_name = ozone concentration updated by physics @@ -99,7 +148,7 @@ dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - intent = out + intent = inout [gt0] standard_name = air_temperature_of_new_state long_name = temperature updated by physics @@ -107,7 +156,7 @@ dimensions = (horizontal_loop_extent,vertical_layer_dimension) type = real kind = kind_phys - intent = inout + intent = in [do3_dt_prd] standard_name = ozone_tendency_due_to_production_and_loss_rate long_name = ozone tendency due to production and loss rate diff --git a/physics/photochem/module_h2ophys.F90 b/physics/photochem/module_h2ophys.F90 index c158ba95e..b94539d71 100644 --- a/physics/photochem/module_h2ophys.F90 +++ b/physics/photochem/module_h2ophys.F90 @@ -45,7 +45,6 @@ function load(this, file, fileID) result (err_message) character(len=128) :: err_message integer :: i1, i2, i3, ierr real(kind=4), dimension(:), allocatable :: lat4, pres4, time4, tempin - real(kind=4) :: blatc4 ! initialize error message err_message = "" @@ -231,7 +230,7 @@ subroutine run(this, dt, p, h2opltc, h2o) enddo enddo - + return end subroutine run From 7a0c400cf3ce93b0487036f6b3b68336d21a897e Mon Sep 17 00:00:00 2001 From: Man Zhang Date: Fri, 14 Jun 2024 15:03:50 -0600 Subject: [PATCH 17/80] save scidoc v7 progress --- physics/docs/ccpp_doxyfile | 6 +- physics/docs/pdftxt/GFS_v16_suite.txt | 18 +- physics/docs/pdftxt/GFS_v17_HR3_GP_suite.txt | 72 ++++++++ physics/docs/pdftxt/GFS_v17_HR3_suite.txt | 72 ++++++++ physics/docs/pdftxt/RE7/input_GFS_v16.nml | 144 +++++++++++++++ physics/docs/pdftxt/RE7/input_GFS_v17_HR3.nml | 171 ++++++++++++++++++ .../pdftxt/RE7/input_GFS_v17_HR3_RRTMGP.nml | 171 ++++++++++++++++++ physics/docs/pdftxt/RE7/input_RRFS_v1.nml | 145 +++++++++++++++ physics/docs/pdftxt/RE7/input_WoFS_v0.nml | 101 +++++++++++ physics/docs/pdftxt/RE7/suite_SCM_GFS_v16.xml | 80 ++++++++ .../docs/pdftxt/RE7/suite_SCM_GFS_v17_HR3.xml | 88 +++++++++ .../RE7/suite_SCM_GFS_v17_HR3_RRTMGP.xml | 89 +++++++++ physics/docs/pdftxt/RE7/suite_SCM_RRFS_v1.xml | 79 ++++++++ physics/docs/pdftxt/RE7/suite_SCM_WoFS_v0.xml | 73 ++++++++ physics/docs/pdftxt/RRFS_v1_suite.txt | 4 +- physics/docs/pdftxt/WoFS_v0_suite.txt | 6 +- 16 files changed, 1303 insertions(+), 16 deletions(-) create mode 100644 physics/docs/pdftxt/GFS_v17_HR3_GP_suite.txt create mode 100644 physics/docs/pdftxt/GFS_v17_HR3_suite.txt create mode 100644 physics/docs/pdftxt/RE7/input_GFS_v16.nml create mode 100644 physics/docs/pdftxt/RE7/input_GFS_v17_HR3.nml create mode 100644 physics/docs/pdftxt/RE7/input_GFS_v17_HR3_RRTMGP.nml create mode 100644 physics/docs/pdftxt/RE7/input_RRFS_v1.nml create mode 100644 physics/docs/pdftxt/RE7/input_WoFS_v0.nml create mode 100644 physics/docs/pdftxt/RE7/suite_SCM_GFS_v16.xml create mode 100644 physics/docs/pdftxt/RE7/suite_SCM_GFS_v17_HR3.xml create mode 100644 physics/docs/pdftxt/RE7/suite_SCM_GFS_v17_HR3_RRTMGP.xml create mode 100644 physics/docs/pdftxt/RE7/suite_SCM_RRFS_v1.xml create mode 100644 physics/docs/pdftxt/RE7/suite_SCM_WoFS_v0.xml diff --git a/physics/docs/ccpp_doxyfile b/physics/docs/ccpp_doxyfile index 2b7d345b5..83ea0ae2e 100644 --- a/physics/docs/ccpp_doxyfile +++ b/physics/docs/ccpp_doxyfile @@ -117,8 +117,8 @@ WARN_LOGFILE = INPUT = pdftxt/mainpage.txt \ pdftxt/all_schemes_list.txt \ pdftxt/GFS_v16_suite.txt \ - pdftxt/GFS_v17_p8_suite.txt \ - pdftxt/GFS_v17_p8_RRTMGP.txt \ + pdftxt/GFS_v17_HR3_suite.txt \ + pdftxt/GFS_v17_HR3_RRTMGP_suite.txt \ pdftxt/RRFS_v1_suite.txt \ pdftxt/WoFS_v0_suite.txt \ pdftxt/RRFS_SGSCLOUD.txt \ @@ -176,7 +176,7 @@ EXCLUDE = EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = EXCLUDE_SYMBOLS = -EXAMPLE_PATH = pdftxt/RE6 \ +EXAMPLE_PATH = pdftxt/RE7 \ doc/html EXAMPLE_PATTERNS = EXAMPLE_RECURSIVE = NO diff --git a/physics/docs/pdftxt/GFS_v16_suite.txt b/physics/docs/pdftxt/GFS_v16_suite.txt index 175a474f1..aa07a7d82 100644 --- a/physics/docs/pdftxt/GFS_v16_suite.txt +++ b/physics/docs/pdftxt/GFS_v16_suite.txt @@ -20,24 +20,26 @@ National Centers for Environmental Prediction (NCEP) in 2021. The GFS_v16 suite - \ref GFDL_cloud \section sdf_gfsv16b Suite Definition File -\include suite_FV3_GFS_v16.xml +\include suite_SCM_GFS_v16.xml \section gfs16_nml_opt_des Namelist \ref GFDL_cloud namelist options -\snippet RE300/FV3_GFS_v16_input.nml GFDL_CLOUD_MP_NML +\snippet RE7/input_GFS_v16.nml GFDL_CLOUD_MP_NML Other namelist options -\snippet RE300/FV3_GFS_v16_input.nml GFS_PHYSICS_NML +\snippet RE7/input_GFS_v16.nml GFS_PHYSICS_NML - nstf_name = \f$[2,0,0,0,0]^1 [2,1,0,0,0]^2\f$ - \f$^1\f$ NSST is on and coupled with spin up off - \f$^2\f$ NSST is on and coupled with spin up on - Grid-spacing dependency of \p cdmbgwd - - \b C48: cdmbgwd="0.071,2.1,1.0,1.0" - - \b C96: cdmbgwd="0.14,1.8,1.0,1.0" - - \b C192: cdmbgwd="0.23,1.5,1.0,1.0" - - \b C384: cdmbgwd="1.1,0.72,1.0,1.0" - - \b C768: cdmbgwd="4.0,0.15,1.0,1.0" + - \b C48: cdmbgwd="0.071,2.1,1.0,1.0" + - \b C96: cdmbgwd="0.14,1.8,1.0,1.0" + - \b C192: cdmbgwd="0.23,1.5,1.0,1.0" + - \b C384: cdmbgwd="1.1,0.72,1.0,1.0" + - \b C768: cdmbgwd="4.0,0.15,1.0,1.0" + - \b C1152: cdmbgwd="4.0,0.10,1.0,1.0" + - \b C3072: cdmbgwd="4.0,0.05,1.0,1.0" */ diff --git a/physics/docs/pdftxt/GFS_v17_HR3_GP_suite.txt b/physics/docs/pdftxt/GFS_v17_HR3_GP_suite.txt new file mode 100644 index 000000000..beeef1f89 --- /dev/null +++ b/physics/docs/pdftxt/GFS_v17_HR3_GP_suite.txt @@ -0,0 +1,72 @@ +/** +\page GFS_v17_HR3_RRTMGP_page GFS_v17_RRTMGP Suite + +\section gfsv_17_suite_overview Overview + +Version 17 of the Global Forecast System (GFS) is scheduled for operational implementation by the NOAA +National Centers for Environmental Prediction (NCEP) in 2024. The GFS_v17 suite is a prototype of +the GFS_v17 suite, and is expected to evolve before the implementation. It is available for use +with the CCPP SCM. The primary differences between the GFS_v16 and GFS_v17 suites are: +- \b Microphysics: The replacement of \ref GFDL_cloud with \ref THOMPSON +- PBL and Convection updates +- \b Gravity \b Wave \b Drag: The replacement of \ref GFS_UGWP_v0 with \ref GFS_ugwpv1_gsldrag +- \b Land \b Surface \b Model: The replacement of \ref GFS_NOAH with \ref NoahMP + +The GFS_v17 suite uses the parameterizations in the following order: + - \ref GFS_RRTMGP_page + - \ref GFS_SFCLYR + - \ref GFS_NSST + - \ref NoahMP + - \ref GFS_SFCSICE + - \ref GFS_SATMEDMFVDIFQ + - \ref GFS_ugwpv1_gsldrag + - \ref GFS_OZPHYS + - \ref GFS_H2OPHYS + - \ref GFS_SAMFdeep + - \ref GFS_SAMFshal + - \ref THOMPSON + + +\section sdf_gfsv17p8 Suite Definition File +\include suite_SCM_GFS_v17_HR3_RRTMGP.xml + +\section gfs17_nml_opt_des Namelist +- General physics options +\snippet input_GFS_v17_HR3_RRTMGP.nml GFS_PHYSICS_NML +- \ref GFS_UNIFIED_UGWP related options +\snippet input_GFS_v17_HR3_RRTMGP.nml CIRES_UGWP_NML + +- nstf_name = \f$[2,0,0,0,0]^1 [2,1,0,0,0]^2\f$ + - \f$^1\f$ NSST is on and coupled with spin up off + - \f$^2\f$ NSST is on and coupled with spin up on + +- Grid-spacing dependency of \p cdmbgwd + - \b C48: cdmbgwd="0.071,2.1,1.0,1.0" + - \b C96: cdmbgwd="0.14,1.8,1.0,1.0" + - \b C192: cdmbgwd="0.23,1.5,1.0,1.0" + - \b C384: cdmbgwd="1.1,0.72,1.0,1.0" + - \b C768: cdmbgwd="4.0,0.15,1.0,1.0" + - \b C1152: cdmbgwd="4.0,0.10,1.0,1.0" + - \b C3072: cdmbgwd="4.0,0.05,1.0,1.0" + +- Grid-spacing dependency of \p cdmbgwd_gsl + - \b C48: cdmbgwd_gsl="40.0,1.77,1.0,1.0" + - \b C96: cdmbgwd_gsl="20.0,2.5,1.0,1.0" + - \b C192: cdmbgwd_gsl="10.0,3.5,1.0,1.0" + - \b C384: cdmbgwd_gsl="5.0,5.0,1.0,1.0" + - \b C768: cdmbgwd_gsl="2.5,7.5,1.0,1.0" + - \b C1152: cdmbgwd_gsl="1.67,8.8,1.0,1.0" + - \b C3072: cdmbgwd_gsl="0.625,14.1,1.0,1.0" + +- Grid-spacing dependency of \p knob_ugwp_tauamp +- \b C48: knob_ugwp_tauamp=6.0e-3 +- \b C96: knob_ugwp_tauamp=3.0e-3 +- \b C192: knob_ugwp_tauamp=1.5e-3 +- \b C384: knob_ugwp_tauamp=0.8e-3 +- \b C768: knob_ugwp_tauamp=0.5e-3 +- \b C1152: knob_ugwp_tauamp=0.35e-3 +- \b C3072: knob_ugwp_tauamp=0.13e-3 + +- Grid-spacing dependency of \p xr_cnvcld +- \b C48 and \b C96: xr_cnvcld =.false. +*/ diff --git a/physics/docs/pdftxt/GFS_v17_HR3_suite.txt b/physics/docs/pdftxt/GFS_v17_HR3_suite.txt new file mode 100644 index 000000000..5891cd3e7 --- /dev/null +++ b/physics/docs/pdftxt/GFS_v17_HR3_suite.txt @@ -0,0 +1,72 @@ +/** +\page GFS_v17_HR3_page GFS_v17 Suite + +\section gfsv_17_suite_overview Overview + +Version 17 of the Global Forecast System (GFS) is scheduled for operational implementation by the NOAA +National Centers for Environmental Prediction (NCEP) in 2024. The GFS_v17 suite is a prototype of +the GFS_v17 suite, and is expected to evolve before the implementation. It is available for use +with the CCPP SCM. The primary differences between the GFS_v16 and GFS_v17 suites are: +- \b Microphysics: The replacement of \ref GFDL_cloud with \ref THOMPSON +- PBL and Convection updates +- \b Gravity \b Wave \b Drag: The replacement of \ref GFS_UGWP_v0 with \ref GFS_ugwpv1_gsldrag +- \b Land \b Surface \b Model: The replacement of \ref GFS_NOAH with \ref NoahMP + +The GFS_v17 suite uses the parameterizations in the following order: + - \ref GFS_RRTMG_page + - \ref GFS_SFCLYR + - \ref GFS_NSST + - \ref NoahMP + - \ref GFS_SFCSICE + - \ref GFS_SATMEDMFVDIFQ + - \ref GFS_ugwpv1_gsldrag + - \ref GFS_OZPHYS + - \ref GFS_H2OPHYS + - \ref GFS_SAMFdeep + - \ref GFS_SAMFshal + - \ref THOMPSON + + +\section sdf_gfsv17p8 Suite Definition File +\include suite_SCM_GFS_v17_HR3.xml + +\section gfs17_nml_opt_des Namelist +- General physics options +\snippet input_GFS_v17_HR3.nml GFS_PHYSICS_NML +- \ref GFS_UNIFIED_UGWP related options +\snippet input_GFS_v17_HR3.nml CIRES_UGWP_NML + +- nstf_name = \f$[2,0,0,0,0]^1 [2,1,0,0,0]^2\f$ + - \f$^1\f$ NSST is on and coupled with spin up off + - \f$^2\f$ NSST is on and coupled with spin up on + +- Grid-spacing dependency of \p cdmbgwd + - \b C48: cdmbgwd="0.071,2.1,1.0,1.0" + - \b C96: cdmbgwd="0.14,1.8,1.0,1.0" + - \b C192: cdmbgwd="0.23,1.5,1.0,1.0" + - \b C384: cdmbgwd="1.1,0.72,1.0,1.0" + - \b C768: cdmbgwd="4.0,0.15,1.0,1.0" + - \b C1152: cdmbgwd="4.0,0.10,1.0,1.0" + - \b C3072: cdmbgwd="4.0,0.05,1.0,1.0" + +- Grid-spacing dependency of \p cdmbgwd_gsl + - \b C48: cdmbgwd_gsl="40.0,1.77,1.0,1.0" + - \b C96: cdmbgwd_gsl="20.0,2.5,1.0,1.0" + - \b C192: cdmbgwd_gsl="10.0,3.5,1.0,1.0" + - \b C384: cdmbgwd_gsl="5.0,5.0,1.0,1.0" + - \b C768: cdmbgwd_gsl="2.5,7.5,1.0,1.0" + - \b C1152: cdmbgwd_gsl="1.67,8.8,1.0,1.0" + - \b C3072: cdmbgwd_gsl="0.625,14.1,1.0,1.0" + +- Grid-spacing dependency of \p knob_ugwp_tauamp +- \b C48: knob_ugwp_tauamp=6.0e-3 +- \b C96: knob_ugwp_tauamp=3.0e-3 +- \b C192: knob_ugwp_tauamp=1.5e-3 +- \b C384: knob_ugwp_tauamp=0.8e-3 +- \b C768: knob_ugwp_tauamp=0.5e-3 +- \b C1152: knob_ugwp_tauamp=0.35e-3 +- \b C3072: knob_ugwp_tauamp=0.13e-3 + +- Grid-spacing dependency of \p xr_cnvcld +- \b C48 and \b C96: xr_cnvcld =.false. +*/ diff --git a/physics/docs/pdftxt/RE7/input_GFS_v16.nml b/physics/docs/pdftxt/RE7/input_GFS_v16.nml new file mode 100644 index 000000000..b601e98c9 --- /dev/null +++ b/physics/docs/pdftxt/RE7/input_GFS_v16.nml @@ -0,0 +1,144 @@ + +&gfs_physics_nml + cal_pre = .false. + cdmbgwd = 4.0, 0.15, 1.0, 1.0 + cnvcld = .true. + cnvgwd = .true. + debug = .false. + do_shum = .false. + do_skeb = .false. + do_spp = .false. + do_sppt = .false. + do_tofd = .true. + do_ugwp = .false. + dspheat = .true. + effr_in = .true. + fhcyc = 0 + fhlwr = 1200.0 + fhswr = 1200.0 + fhzero = 1.0 + h2o_phys = .true. + hybedmf = .false. + iaer = 5111 + ialb = 1 + iau_inc_files = '' + icliq_sw = 2 + ico2 = 2 + iems = 1 + imfdeepcnv = 2 + imfshalcnv = 2 + imp_physics = 11 + iopt_alb = 2 + iopt_btr = 1 + iopt_crs = 1 + iopt_dveg = 1 + iopt_frz = 1 + iopt_inf = 1 + iopt_rad = 1 + iopt_run = 1 + iopt_sfc = 1 + iopt_snf = 4 + iopt_stc = 1 + iopt_tbot = 2 + iovr = 3 + isatmedmf = 1 + isol = 2 + isot = 1 + isubc_lw = 2 + isubc_sw = 2 + ivegsrc = 1 + ldiag3d = .true. + ldiag_ugwp = .false. + lgfdlmprad = .true. + lheatstrg = .true. + lndp_type = 0 + lsm = 1 + lsoil = 4 + lwhtr = .true. + n_var_lndp = 0 + n_var_spp = 0 + nsfullradar_diag = 3600 + nst_anl = .true. + nstf_name = 2, 1, 0, 0, 0 + oz_phys = .false. + oz_phys_2015 = .true. + pdfcld = .false. + prautco = 0.00015, 0.00015 + pre_rad = .false. + print_diff_pgr = .false. + prslrd0 = 0.0 + psautco = 0.0008, 0.0005 + qdiag3d = .true. + random_clds = .false. + redrag = .true. + satmedmf = .true. + shal_cnv = .true. + swhtr = .true. + trans_trac = .true. + use_ufo = .true. +/ + +&gfdl_cloud_microphysics_nml + c_cracw = 0.8 + c_paut = 0.5 + c_pgacs = 0.01 + c_psaci = 0.05 + ccn_l = 300.0 + ccn_o = 100.0 + const_vg = .false. + const_vi = .false. + const_vr = .false. + const_vs = .false. + de_ice = .false. + do_qa = .false. + do_sedi_heat = .false. + dw_land = 0.16 + dw_ocean = 0.1 + fast_sat_adj = .false. + fix_negative = .true. + icloud_f = 1 + mono_prof = .true. + mp_time = 150.0 + prog_ccn = .false. + qi0_crt = 8e-05 + qi_lim = 1.0 + ql_gen = 0.001 + ql_mlt = 0.001 + qs0_crt = 0.001 + rad_graupel = .true. + rad_rain = .true. + rad_snow = .true. + reiflag = 2 + rh_inc = 0.3 + rh_inr = 0.3 + rh_ins = 0.3 + rthresh = 1e-05 + sedi_transport = .true. + tau_g2v = 900.0 + tau_i2s = 1000.0 + tau_l2v = 225.0 + tau_v2l = 150.0 + use_ccn = .true. + use_ppm = .false. + vg_max = 12.0 + vi_max = 1.0 + vr_max = 12.0 + vs_max = 2.0 + z_slope_ice = .true. + z_slope_liq = .true. +/ + +&cires_ugwp_nml + knob_ugwp_azdir = 2, 4, 4, 4 + knob_ugwp_doaxyz = 1 + knob_ugwp_doheat = 1 + knob_ugwp_dokdis = 1 + knob_ugwp_effac = 1, 1, 1, 1 + knob_ugwp_ndx4lh = 1 + knob_ugwp_solver = 2 + knob_ugwp_source = 1, 1, 0, 0 + knob_ugwp_stoch = 0, 0, 0, 0 + knob_ugwp_version = 0 + knob_ugwp_wvspec = 1, 25, 25, 25 + launch_level = 27 +/ diff --git a/physics/docs/pdftxt/RE7/input_GFS_v17_HR3.nml b/physics/docs/pdftxt/RE7/input_GFS_v17_HR3.nml new file mode 100644 index 000000000..8d859e580 --- /dev/null +++ b/physics/docs/pdftxt/RE7/input_GFS_v17_HR3.nml @@ -0,0 +1,171 @@ +&gfs_physics_nml + fhzero = 6 + h2o_phys = .true. + ldiag3d = .true. + qdiag3d = .true. + print_diff_pgr = .false. + fhcyc = 24 + use_ufo = .true. + pre_rad = .false. + imp_physics = 8 + iovr = 3 + ltaerosol = .false. + lradar = .true. + ttendlim = -999 + dt_inner = 150 + sedi_semi = .true. + decfl = 10 + oz_phys = .false. + oz_phys_2015 = .true. + lsoil_lsm = 4 + do_mynnedmf = .false. + do_mynnsfclay = .false. + icloud_bl = 1 + bl_mynn_edmf = 1 + bl_mynn_tkeadvect = .true. + bl_mynn_edmf_mom = 1 + do_ugwp = .false. + do_tofd = .false. + gwd_opt = 2 + do_ugwp_v0 = .false. + do_ugwp_v1 = .true. + do_ugwp_v0_orog_only = .false. + do_ugwp_v0_nst_only = .false. + do_gsl_drag_ls_bl = .true. + do_gsl_drag_ss = .true. + do_gsl_drag_tofd = .true. + do_ugwp_v1_orog_only = .false. + min_lakeice = 0.15 + min_seaice = 1.0e-6 + use_cice_alb = .true. + pdfcld = .false. + fhswr = 1200. + fhlwr = 1200. + progsigma = .true. + betascu = 8.0 + betamcu = 1.0 + betadcu = 2.0 + ialb = 2 + iems = 2 + iaer = 1011 + icliq_sw = 2 + ico2 = 2 + isubc_sw = 2 + isubc_lw = 2 + isol = 2 + lwhtr = .true. + swhtr = .true. + cnvgwd = .true. + shal_cnv = .true. + cal_pre = .false. + redrag = .true. + dspheat = .true. + hybedmf = .false. + satmedmf = .true. + isatmedmf = 1 + lheatstrg = .true. + lseaspray = .true. + random_clds = .false. + trans_trac = .true. + cnvcld = .true. + imfshalcnv = 2 + imfdeepcnv = 2 + ras = .false. + cdmbgwd = 2.5,7.5,1.0,1.0 + prslrd0 = 0. + ivegsrc = 1 + isot = 1 + lsoil = 4 + lsm = 2 + iopt_dveg = 4 + iopt_crs = 2 + iopt_btr = 1 + iopt_run = 1 + iopt_sfc = 3 + iopt_trs = 2 + iopt_frz = 1 + iopt_inf = 1 + iopt_rad = 3 + iopt_alb = 1 + iopt_snf = 4 + iopt_tbot = 2 + iopt_stc = 3 + debug = .false. + nstf_name = 2,0,0,0,0 + nst_anl = .true. + psautco = 0.0008,0.0005 + prautco = 0.00015,0.00015 + lgfdlmprad = .false. + effr_in = .true. + ldiag_ugwp = .false. + do_sppt = .false. + do_shum = .false. + do_skeb = .false. + do_RRTMGP = .false. + doGP_cldoptics_LUT = .true. + doGP_lwscat = .true. + active_gases = 'h2o_co2_o3_n2o_ch4_o2' + ngases = 6 + rrtmgp_root = '../../ccpp/physics/physics/rte-rrtmgp/' + lw_file_gas = 'rrtmgp/data/rrtmgp-data-lw-g128-210809.nc' + lw_file_clouds = 'extensions/cloud_optics/rrtmgp-cloud-optics-coeffs-lw.nc' + sw_file_gas = 'rrtmgp/data/rrtmgp-data-sw-g112-210809.nc' + sw_file_clouds = 'extensions/cloud_optics/rrtmgp-cloud-optics-coeffs-sw.nc' + rrtmgp_nGptsSW = 112 + rrtmgp_nGptsLW = 128 + rrtmgp_nBandsLW = 16 + rrtmgp_nBandsSW = 14 + frac_grid = .true. + cplchm = .false. + cplflx = .false. + cplice = .false. + cplwav = .false. + cplwav2atm = .false. + do_ca = .false. + ca_global = .false. + ca_sgs = .true. + nca = 1 + ncells = 5 + nlives = 12 + nseed = 1 + nfracseed = 0.5 + nthresh = 18 + ca_trigger = .true. + nspinup = 1 + iseed_ca = 1448371824 +/ + +&cires_ugwp_nml + knob_ugwp_solver = 2 + knob_ugwp_version = 1 + knob_ugwp_source = 1,1,0,0 + knob_ugwp_wvspec = 1,25,25,25 + knob_ugwp_azdir = 2,4,4,4 + knob_ugwp_stoch = 0,0,0,0 + knob_ugwp_effac = 1,1,1,1 + knob_ugwp_doaxyz = 1 + knob_ugwp_doheat = 1 + knob_ugwp_dokdis = 2 + knob_ugwp_ndx4lh = 4 + knob_ugwp_palaunch = 275.0e2 + knob_ugwp_nslope = 1 + knob_ugwp_lzmax = 15.750e3 + knob_ugwp_lzmin = 0.75e3 + knob_ugwp_lzstar = 2.0e3 + knob_ugwp_taumin = 0.25e-3 + knob_ugwp_tauamp = 0.5e-3 + knob_ugwp_lhmet = 200.0e3 + knob_ugwp_orosolv = 'pss-1986' +/ + +&ccpp_suite_sim_nml + suite_sim_file = '' + nprc_sim = 7 + prc_LWRAD_cfg = 0, 0, 1 + prc_SWRAD_cfg = 0, 0, 2 + prc_PBL_cfg = 1, 0, 3 + prc_GWD_cfg = 1, 0, 4 + prc_SCNV_cfg = 1, 1, 5 + prc_DCNV_cfg = 1, 1, 6 + prc_cldMP_cfg = 1, 1, 7 +/ diff --git a/physics/docs/pdftxt/RE7/input_GFS_v17_HR3_RRTMGP.nml b/physics/docs/pdftxt/RE7/input_GFS_v17_HR3_RRTMGP.nml new file mode 100644 index 000000000..f7cf90973 --- /dev/null +++ b/physics/docs/pdftxt/RE7/input_GFS_v17_HR3_RRTMGP.nml @@ -0,0 +1,171 @@ +&gfs_physics_nml + fhzero = 6 + h2o_phys = .true. + ldiag3d = .true. + qdiag3d = .true. + print_diff_pgr = .false. + fhcyc = 24 + use_ufo = .true. + pre_rad = .false. + imp_physics = 8 + iovr = 3 + ltaerosol = .false. + lradar = .true. + ttendlim = -999 + dt_inner = 150 + sedi_semi = .true. + decfl = 10 + oz_phys = .false. + oz_phys_2015 = .true. + lsoil_lsm = 4 + do_mynnedmf = .false. + do_mynnsfclay = .false. + icloud_bl = 1 + bl_mynn_edmf = 1 + bl_mynn_tkeadvect = .true. + bl_mynn_edmf_mom = 1 + do_ugwp = .false. + do_tofd = .false. + gwd_opt = 2 + do_ugwp_v0 = .false. + do_ugwp_v1 = .true. + do_ugwp_v0_orog_only = .false. + do_ugwp_v0_nst_only = .false. + do_gsl_drag_ls_bl = .true. + do_gsl_drag_ss = .true. + do_gsl_drag_tofd = .true. + do_ugwp_v1_orog_only = .false. + min_lakeice = 0.15 + min_seaice = 1.0e-6 + use_cice_alb = .true. + pdfcld = .false. + fhswr = 1200. + fhlwr = 1200. + progsigma = .true. + betascu = 8.0 + betamcu = 1.0 + betadcu = 2.0 + ialb = 2 + iems = 2 + iaer = 1011 + icliq_sw = 2 + ico2 = 2 + isubc_sw = 2 + isubc_lw = 2 + isol = 2 + lwhtr = .true. + swhtr = .true. + cnvgwd = .true. + shal_cnv = .true. + cal_pre = .false. + redrag = .true. + dspheat = .true. + hybedmf = .false. + satmedmf = .true. + isatmedmf = 1 + lheatstrg = .true. + lseaspray = .true. + random_clds = .false. + trans_trac = .true. + cnvcld = .true. + imfshalcnv = 2 + imfdeepcnv = 2 + ras = .false. + cdmbgwd = 2.5,7.5,1.0,1.0 + prslrd0 = 0. + ivegsrc = 1 + isot = 1 + lsoil = 4 + lsm = 2 + iopt_dveg = 4 + iopt_crs = 2 + iopt_btr = 1 + iopt_run = 1 + iopt_sfc = 3 + iopt_trs = 2 + iopt_frz = 1 + iopt_inf = 1 + iopt_rad = 3 + iopt_alb = 1 + iopt_snf = 4 + iopt_tbot = 2 + iopt_stc = 3 + debug = .false. + nstf_name = 2,0,0,0,0 + nst_anl = .true. + psautco = 0.0008,0.0005 + prautco = 0.00015,0.00015 + lgfdlmprad = .false. + effr_in = .true. + ldiag_ugwp = .false. + do_sppt = .false. + do_shum = .false. + do_skeb = .false. + do_RRTMGP = .true. + doGP_cldoptics_LUT = .true. + doGP_lwscat = .true. + active_gases = 'h2o_co2_o3_n2o_ch4_o2' + ngases = 6 + rrtmgp_root = '../../ccpp/physics/physics/Radiation/RRTMGP/rte-rrtmgp/' + lw_file_gas = 'rrtmgp/data/rrtmgp-data-lw-g128-210809.nc' + lw_file_clouds = 'extensions/cloud_optics/rrtmgp-cloud-optics-coeffs-lw.nc' + sw_file_gas = 'rrtmgp/data/rrtmgp-data-sw-g112-210809.nc' + sw_file_clouds = 'extensions/cloud_optics/rrtmgp-cloud-optics-coeffs-reordered-sw.nc' + rrtmgp_nGptsSW = 112 + rrtmgp_nGptsLW = 128 + rrtmgp_nBandsLW = 16 + rrtmgp_nBandsSW = 14 + frac_grid = .true. + cplchm = .false. + cplflx = .false. + cplice = .false. + cplwav = .false. + cplwav2atm = .false. + do_ca = .false. + ca_global = .false. + ca_sgs = .true. + nca = 1 + ncells = 5 + nlives = 12 + nseed = 1 + nfracseed = 0.5 + nthresh = 18 + ca_trigger = .true. + nspinup = 1 + iseed_ca = 1448371824 +/ + +&cires_ugwp_nml + knob_ugwp_solver = 2 + knob_ugwp_version = 1 + knob_ugwp_source = 1,1,0,0 + knob_ugwp_wvspec = 1,25,25,25 + knob_ugwp_azdir = 2,4,4,4 + knob_ugwp_stoch = 0,0,0,0 + knob_ugwp_effac = 1,1,1,1 + knob_ugwp_doaxyz = 1 + knob_ugwp_doheat = 1 + knob_ugwp_dokdis = 2 + knob_ugwp_ndx4lh = 4 + knob_ugwp_palaunch = 275.0e2 + knob_ugwp_nslope = 1 + knob_ugwp_lzmax = 15.750e3 + knob_ugwp_lzmin = 0.75e3 + knob_ugwp_lzstar = 2.0e3 + knob_ugwp_taumin = 0.25e-3 + knob_ugwp_tauamp = 0.5e-3 + knob_ugwp_lhmet = 200.0e3 + knob_ugwp_orosolv = 'pss-1986' +/ + +&ccpp_suite_sim_nml + suite_sim_file = '' + nprc_sim = 7 + prc_LWRAD_cfg = 0, 0, 1 + prc_SWRAD_cfg = 0, 0, 2 + prc_PBL_cfg = 1, 0, 3 + prc_GWD_cfg = 1, 0, 4 + prc_SCNV_cfg = 1, 1, 5 + prc_DCNV_cfg = 1, 1, 6 + prc_cldMP_cfg = 1, 1, 7 +/ diff --git a/physics/docs/pdftxt/RE7/input_RRFS_v1.nml b/physics/docs/pdftxt/RE7/input_RRFS_v1.nml new file mode 100644 index 000000000..60de83a4e --- /dev/null +++ b/physics/docs/pdftxt/RE7/input_RRFS_v1.nml @@ -0,0 +1,145 @@ +&gfs_physics_nml + addsmoke_flag = 1 + aero_dir_fdb = .true. + aero_ind_fdb = .false. + bl_mynn_edmf = 1 + bl_mynn_edmf_mom = 1 + bl_mynn_tkeadvect = .true. + cal_pre = .false. + cdmbgwd = 3.5, 1.0 + clm_debug_print = .false. + clm_lake_debug = .false. + cnvcld = .false. + cnvgwd = .false. + coarsepm_settling = 1 + cplflx = .false. + diag_log = .true. + debug = .false. + do_deep = .true. + do_gsl_drag_ls_bl = .true. + do_gsl_drag_ss = .true. + do_gsl_drag_tofd = .true. + do_mynnedmf = .true. + do_mynnsfclay = .true. + do_plumerise = .true. + do_smoke_transport = .true. + do_tofd = .false. + do_ugwp = .false. + do_ugwp_v0 = .false. + do_ugwp_v0_nst_only = .false. + do_ugwp_v0_orog_only = .false. + drydep_opt = 1 + dspheat = .true. + dt_inner = 36 + dust_alpha = 10.0 + dust_drylimit_factor = 0.5 + dust_gamma = 1.3 + dust_moist_correction = 2.0 + dust_opt = 1 + ebb_dcycle = 2 + effr_in = .true. + enh_mix = .false. + fhcyc = 0 + fhlwr = 900.0 + fhswr = 900.0 + fhzero = 1.0 + frac_ice = .true. + gwd_opt = 3 + h2o_phys = .true. + hybedmf = .false. + iaer = 1011 + ialb = 2 + iau_delthrs = 6 + iau_inc_files = '' + iaufhrs = 30 + iccn = 2 + icliq_sw = 2 + icloud_bl = 1 + ico2 = 2 + iems = 2 + imfdeepcnv = 3 + imfshalcnv = -1 + imp_physics = 8 + iopt_alb = 2 + iopt_btr = 1 + iopt_crs = 1 + iopt_dveg = 2 + iopt_frz = 1 + iopt_inf = 1 + iopt_lake = 2 + iopt_rad = 1 + iopt_run = 1 + iopt_sfc = 1 + iopt_snf = 4 + iopt_stc = 1 + iopt_tbot = 2 + iovr = 3 + isncond_opt = 2 + isncovr_opt = 3 + isol = 2 + isot = 1 + isubc_lw = 2 + isubc_sw = 2 + ivegsrc = 1 + kice = 9 + ldiag3d = .true. + ldiag_ugwp = .false. + lgfdlmprad = .false. + lheatstrg = .false. + lightning_threat = .true. + lkm = 1 + lradar = .true. + lrefres = .true. + lsm = 3 + lsoil = 9 + lsoil_lsm = 9 + ltaerosol = .true. + lwhtr = .true. + min_lakeice = 0.15 + min_seaice = 0.15 + mix_chem = .true. + mosaic_lu = 1 + mosaic_soil = 1 + nsfullradar_diag = 3600 + oz_phys = .false. + oz_phys_2015 = .true. + pdfcld = .false. + plume_wind_eff = 1 + plumerisefire_frq = 60 + pre_rad = .false. + print_diff_pgr = .true. + prslrd0 = 0.0 + qdiag3d = .true. + random_clds = .false. + redrag = .true. + rrfs_sd = .true. + rrfs_smoke_debug = .false. + satmedmf = .false. + seas_opt = 0 + sfclay_compute_flux = .true. + shal_cnv = .false. + smoke_conv_wet_coef = 0.5, 0.5, 0.5 + smoke_forecast = 1 + swhtr = .true. + thsfc_loc = .false. + trans_trac = .true. + ttendlim = -999 + use_ufo = .true. + wetdep_ls_alpha = 0.5 + wetdep_ls_opt = 1 +/ + +&cires_ugwp_nml + knob_ugwp_azdir = 2, 4, 4, 4 + knob_ugwp_doaxyz = 1 + knob_ugwp_doheat = 1 + knob_ugwp_dokdis = 1 + knob_ugwp_effac = 1, 1, 1, 1 + knob_ugwp_ndx4lh = 1 + knob_ugwp_solver = 2 + knob_ugwp_source = 1, 1, 0, 0 + knob_ugwp_stoch = 0, 0, 0, 0 + knob_ugwp_version = 0 + knob_ugwp_wvspec = 1, 25, 25, 25 + launch_level = 25 +/ diff --git a/physics/docs/pdftxt/RE7/input_WoFS_v0.nml b/physics/docs/pdftxt/RE7/input_WoFS_v0.nml new file mode 100644 index 000000000..00bd771b0 --- /dev/null +++ b/physics/docs/pdftxt/RE7/input_WoFS_v0.nml @@ -0,0 +1,101 @@ +&gfs_physics_nml + bl_mynn_edmf = 1 + bl_mynn_edmf_mom = 1 + bl_mynn_tkeadvect = .true. + cal_pre = .false. + cdmbgwd = 3.5, 0.25 + cnvcld = .false. + cnvgwd = .false. + cplflx = .false. + debug = .false. + do_deep = .false. + do_mynnedmf = .true. + do_mynnsfclay = .true. + do_shum = .false. + do_skeb = .false. + do_spp = .false. + do_sppt = .false. + dspheat = .true. + effr_in = .true. + fhcyc = 0 + fhlwr = 1200.0 + fhswr = 1200.0 + fhzero = 1.0 + h2o_phys = .true. + hybedmf = .false. + iaer = 111 + ialb = 1 + iau_delthrs = 6 + iau_inc_files = '' + iaufhrs = 30 + icloud_bl = 1 + ico2 = 2 + iems = 1 + imfdeepcnv = -1 + imfshalcnv = -1 + imp_physics = 17 + iopt_alb = 2 + iopt_btr = 1 + iopt_crs = 1 + iopt_dveg = 2 + iopt_frz = 1 + iopt_inf = 1 + iopt_rad = 1 + iopt_run = 1 + iopt_sfc = 1 + iopt_snf = 4 + iopt_stc = 1 + iopt_tbot = 2 + isol = 2 + isot = 1 + isubc_lw = 2 + isubc_sw = 2 + ivegsrc = 1 + ldiag3d = .true. + lheatstrg = .false. + lndp_type = 0 + lradar = .true. + lsm = 1 + lsoil = 4 + lsoil_lsm = 4 + ltaerosol = .true. + lwhtr = .true. + n_var_lndp = 0 + n_var_spp = 0 + nsfullradar_diag = 3600 + nssl_cccn = 600000000.0 + nssl_ccn_on = .true. + nssl_hail_on = .true. + nst_anl = .true. + nstf_name = 2, 1, 0, 0, 0 + oz_phys = .false. + oz_phys_2015 = .true. + pdfcld = .false. + pre_rad = .false. + print_diff_pgr = .false. + prslrd0 = 0.0 + qdiag3d = .true. + random_clds = .false. + redrag = .true. + satmedmf = .false. + shal_cnv = .false. + swhtr = .true. + trans_trac = .true. + ttendlim = -999 + use_ufo = .true. +/ + +&cires_ugwp_nml + knob_ugwp_azdir = 2, 4, 4, 4 + knob_ugwp_doaxyz = 1 + knob_ugwp_doheat = 1 + knob_ugwp_dokdis = 1 + knob_ugwp_effac = 1, 1, 1, 1 + knob_ugwp_ndx4lh = 1 + knob_ugwp_solver = 2 + knob_ugwp_source = 1, 1, 0, 0 + knob_ugwp_stoch = 0, 0, 0, 0 + knob_ugwp_version = 0 + knob_ugwp_wvspec = 1, 25, 25, 25 + launch_level = 25 +/ diff --git a/physics/docs/pdftxt/RE7/suite_SCM_GFS_v16.xml b/physics/docs/pdftxt/RE7/suite_SCM_GFS_v16.xml new file mode 100644 index 000000000..723dbd910 --- /dev/null +++ b/physics/docs/pdftxt/RE7/suite_SCM_GFS_v16.xml @@ -0,0 +1,80 @@ + + + + + + GFS_time_vary_pre + GFS_rrtmg_setup + GFS_rad_time_vary + GFS_phys_time_vary + + + + + GFS_suite_interstitial_rad_reset + GFS_rrtmg_pre + GFS_radiation_surface + rad_sw_pre + rrtmg_sw + rrtmg_sw_post + rrtmg_lw + rrtmg_lw_post + GFS_rrtmg_post + + + + + GFS_suite_interstitial_phys_reset + GFS_suite_stateout_reset + get_prs_fv3 + GFS_suite_interstitial_1 + GFS_surface_generic_pre + GFS_surface_composites_pre + dcyc2t3 + GFS_surface_composites_inter + GFS_suite_interstitial_2 + + + + sfc_diff + GFS_surface_loop_control_part1 + sfc_nst_pre + sfc_nst + sfc_nst_post + lsm_noah + sfc_sice + GFS_surface_loop_control_part2 + + + + GFS_surface_composites_post + sfc_diag + sfc_diag_post + GFS_surface_generic_post + GFS_PBL_generic_pre + satmedmfvdifq + GFS_PBL_generic_post + GFS_GWD_generic_pre + cires_ugwp + cires_ugwp_post + GFS_GWD_generic_post + GFS_suite_stateout_update + h2ophys + get_phi_fv3 + GFS_suite_interstitial_3 + GFS_DCNV_generic_pre + samfdeepcnv + GFS_DCNV_generic_post + GFS_SCNV_generic_pre + samfshalcnv + GFS_SCNV_generic_post + GFS_suite_interstitial_4 + cnvc90 + GFS_MP_generic_pre + gfdl_cloud_microphys + GFS_MP_generic_post + maximum_hourly_diagnostics + GFS_physics_post + + + diff --git a/physics/docs/pdftxt/RE7/suite_SCM_GFS_v17_HR3.xml b/physics/docs/pdftxt/RE7/suite_SCM_GFS_v17_HR3.xml new file mode 100644 index 000000000..92effe13c --- /dev/null +++ b/physics/docs/pdftxt/RE7/suite_SCM_GFS_v17_HR3.xml @@ -0,0 +1,88 @@ + + + + + + + GFS_time_vary_pre + GFS_rrtmg_setup + GFS_rad_time_vary + GFS_phys_time_vary + + + + + GFS_suite_interstitial_rad_reset + GFS_rrtmg_pre + GFS_radiation_surface + rad_sw_pre + rrtmg_sw + rrtmg_sw_post + rrtmg_lw + rrtmg_lw_post + GFS_rrtmg_post + + + + + GFS_suite_interstitial_phys_reset + GFS_suite_stateout_reset + get_prs_fv3 + GFS_suite_interstitial_1 + GFS_surface_generic_pre + GFS_surface_composites_pre + dcyc2t3 + GFS_surface_composites_inter + GFS_suite_interstitial_2 + + + + sfc_diff + GFS_surface_loop_control_part1 + sfc_nst_pre + sfc_nst + sfc_nst_post + noahmpdrv + sfc_sice + GFS_surface_loop_control_part2 + + + + GFS_surface_composites_post + sfc_diag + sfc_diag_post + GFS_surface_generic_post + GFS_PBL_generic_pre + satmedmfvdifq + GFS_PBL_generic_post + GFS_GWD_generic_pre + ugwpv1_gsldrag + ugwpv1_gsldrag_post + GFS_GWD_generic_post + GFS_suite_stateout_update + h2ophys + get_phi_fv3 + GFS_suite_interstitial_3 + GFS_DCNV_generic_pre + samfdeepcnv + GFS_DCNV_generic_post + GFS_SCNV_generic_pre + samfshalcnv + GFS_SCNV_generic_post + GFS_suite_interstitial_4 + cnvc90 + GFS_MP_generic_pre + mp_thompson_pre + + + mp_thompson + + + mp_thompson_post + GFS_MP_generic_post + maximum_hourly_diagnostics + GFS_physics_post + + + + diff --git a/physics/docs/pdftxt/RE7/suite_SCM_GFS_v17_HR3_RRTMGP.xml b/physics/docs/pdftxt/RE7/suite_SCM_GFS_v17_HR3_RRTMGP.xml new file mode 100644 index 000000000..09bcbfa64 --- /dev/null +++ b/physics/docs/pdftxt/RE7/suite_SCM_GFS_v17_HR3_RRTMGP.xml @@ -0,0 +1,89 @@ + + + + + + + GFS_time_vary_pre + GFS_rrtmgp_setup + GFS_rad_time_vary + GFS_phys_time_vary + + + + + GFS_suite_interstitial_rad_reset + GFS_rrtmgp_pre + GFS_radiation_surface + GFS_rrtmgp_cloud_mp + GFS_rrtmgp_cloud_overlap + GFS_cloud_diagnostics + rrtmgp_aerosol_optics + rrtmgp_sw_main + rrtmgp_lw_main + GFS_rrtmgp_post + + + + + GFS_suite_interstitial_phys_reset + GFS_suite_stateout_reset + get_prs_fv3 + GFS_suite_interstitial_1 + GFS_surface_generic_pre + GFS_surface_composites_pre + dcyc2t3 + GFS_surface_composites_inter + GFS_suite_interstitial_2 + + + + sfc_diff + GFS_surface_loop_control_part1 + sfc_nst_pre + sfc_nst + sfc_nst_post + noahmpdrv + sfc_sice + GFS_surface_loop_control_part2 + + + + GFS_surface_composites_post + sfc_diag + sfc_diag_post + GFS_surface_generic_post + GFS_PBL_generic_pre + satmedmfvdifq + GFS_PBL_generic_post + GFS_GWD_generic_pre + ugwpv1_gsldrag + ugwpv1_gsldrag_post + GFS_GWD_generic_post + GFS_suite_stateout_update + h2ophys + get_phi_fv3 + GFS_suite_interstitial_3 + GFS_DCNV_generic_pre + samfdeepcnv + GFS_DCNV_generic_post + GFS_SCNV_generic_pre + samfshalcnv + GFS_SCNV_generic_post + GFS_suite_interstitial_4 + cnvc90 + GFS_MP_generic_pre + mp_thompson_pre + + + mp_thompson + + + mp_thompson_post + GFS_MP_generic_post + maximum_hourly_diagnostics + GFS_physics_post + + + + diff --git a/physics/docs/pdftxt/RE7/suite_SCM_RRFS_v1.xml b/physics/docs/pdftxt/RE7/suite_SCM_RRFS_v1.xml new file mode 100644 index 000000000..ef1c73157 --- /dev/null +++ b/physics/docs/pdftxt/RE7/suite_SCM_RRFS_v1.xml @@ -0,0 +1,79 @@ + + + + + + GFS_time_vary_pre + GFS_rrtmg_setup + GFS_rad_time_vary + GFS_phys_time_vary + + + + + GFS_suite_interstitial_rad_reset + sgscloud_radpre + GFS_rrtmg_pre + GFS_radiation_surface + rad_sw_pre + rrtmg_sw + rrtmg_sw_post + rrtmg_lw + sgscloud_radpost + rrtmg_lw_post + GFS_rrtmg_post + + + + + GFS_suite_interstitial_phys_reset + GFS_suite_stateout_reset + get_prs_fv3 + GFS_suite_interstitial_1 + GFS_surface_generic_pre + GFS_surface_composites_pre + dcyc2t3 + GFS_surface_composites_inter + GFS_suite_interstitial_2 + + + + mynnsfc_wrapper + GFS_surface_loop_control_part1 + lsm_ruc + clm_lake + GFS_surface_loop_control_part2 + + + + GFS_surface_composites_post + sfc_diag + sfc_diag_post + GFS_surface_generic_post + rrfs_smoke_wrapper + mynnedmf_wrapper + rrfs_smoke_postpbl + GFS_GWD_generic_pre + drag_suite + GFS_GWD_generic_post + GFS_suite_stateout_update + h2ophys + get_phi_fv3 + GFS_suite_interstitial_3 + GFS_DCNV_generic_pre + cu_gf_driver_pre + cu_gf_driver + GFS_DCNV_generic_post + GFS_suite_interstitial_4 + cnvc90 + GFS_MP_generic_pre + mp_thompson_pre + mp_thompson + mp_thompson_post + GFS_MP_generic_post + cu_gf_driver_post + maximum_hourly_diagnostics + GFS_physics_post + + + \ No newline at end of file diff --git a/physics/docs/pdftxt/RE7/suite_SCM_WoFS_v0.xml b/physics/docs/pdftxt/RE7/suite_SCM_WoFS_v0.xml new file mode 100644 index 000000000..a16c8b116 --- /dev/null +++ b/physics/docs/pdftxt/RE7/suite_SCM_WoFS_v0.xml @@ -0,0 +1,73 @@ + + + + + + + GFS_time_vary_pre + GFS_rrtmg_setup + GFS_rad_time_vary + GFS_phys_time_vary + + + + + GFS_suite_interstitial_rad_reset + sgscloud_radpre + GFS_rrtmg_pre + GFS_radiation_surface + rad_sw_pre + rrtmg_sw + rrtmg_sw_post + rrtmg_lw + sgscloud_radpost + rrtmg_lw_post + GFS_rrtmg_post + + + + + GFS_suite_interstitial_phys_reset + GFS_suite_stateout_reset + get_prs_fv3 + GFS_suite_interstitial_1 + GFS_surface_generic_pre + GFS_surface_composites_pre + dcyc2t3 + GFS_surface_composites_inter + GFS_suite_interstitial_2 + + + + mynnsfc_wrapper + GFS_surface_loop_control_part1 + sfc_nst_pre + sfc_nst + sfc_nst_post + lsm_noah + sfc_sice + GFS_surface_loop_control_part2 + + + + GFS_surface_composites_post + sfc_diag + sfc_diag_post + GFS_surface_generic_post + mynnedmf_wrapper + GFS_GWD_generic_pre + cires_ugwp + cires_ugwp_post + GFS_GWD_generic_post + GFS_suite_stateout_update + h2ophys + get_phi_fv3 + GFS_MP_generic_pre + mp_nssl + GFS_MP_generic_post + maximum_hourly_diagnostics + GFS_physics_post + + + + \ No newline at end of file diff --git a/physics/docs/pdftxt/RRFS_v1_suite.txt b/physics/docs/pdftxt/RRFS_v1_suite.txt index bcee82e7d..5d20880e9 100644 --- a/physics/docs/pdftxt/RRFS_v1_suite.txt +++ b/physics/docs/pdftxt/RRFS_v1_suite.txt @@ -26,9 +26,9 @@ The RRFS_v1beta suite uses the parameterizations in the following order: \section rrfs_nml_option Namelist - General physics options -\snippet FV3_RRFS_v1_input.nml GFS_PHYSICS_NML +\snippet input_RRFS_v1.nml GFS_PHYSICS_NML - \ref GFS_UGWP_v0 related options -\snippet FV3_RRFS_v1_input.nml CIRES_UGWP_NML +\snippet input_RRFS_v1.nml CIRES_UGWP_NML diff --git a/physics/docs/pdftxt/WoFS_v0_suite.txt b/physics/docs/pdftxt/WoFS_v0_suite.txt index 8e5a6e6c2..1d9f5bfd4 100644 --- a/physics/docs/pdftxt/WoFS_v0_suite.txt +++ b/physics/docs/pdftxt/WoFS_v0_suite.txt @@ -22,12 +22,12 @@ The WoFS suite uses the parameterizations in the following order: - \ref NSSLMICRO_page \section sdf_rrfsv1nssl_suite Suite Definition File -\include suite_FV3_WoFS_v0.xml +\include suite_SCM_WoFS_v0.xml \section rrfsv1nssl_nml_option Namelist - General physics options -\snippet FV3_WoFS_v0_input.nml GFS_PHYSICS_NML +\snippet input_WoFS_v0.nml GFS_PHYSICS_NML - \ref GFS_UGWP_v0 related options -\snippet FV3_WoFS_v0_input.nml CIRES_UGWP_NML +\snippet input_WoFS_v0.nml CIRES_UGWP_NML */ From 1816f724b64aae130beb531e9d2106ad11c3c863 Mon Sep 17 00:00:00 2001 From: helin wei Date: Thu, 20 Jun 2024 00:56:06 +0000 Subject: [PATCH 18/80] all changes from test6 to test11 --- physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 b/physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 index 3451f807e..67426a319 100644 --- a/physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 +++ b/physics/SFC_Models/Land/Noahmp/module_sf_noahmplsm.F90 @@ -2626,9 +2626,9 @@ subroutine csnow (parameters,isnow ,nsnow ,nsoil ,snice ,snliq ,dzsnso ! thermal conductivity of snow do iz = isnow+1, 0 - tksno(iz) = 3.2217e-6*bdsnoi(iz)**2. ! stieglitz(yen,1965) +! tksno(iz) = 3.2217e-6*bdsnoi(iz)**2. ! stieglitz(yen,1965) ! tksno(iz) = 2e-2+2.5e-6*bdsnoi(iz)*bdsnoi(iz) ! anderson, 1976 -! tksno(iz) = 0.35 ! constant + tksno(iz) = 0.35 ! constant ! tksno(iz) = 2.576e-6*bdsnoi(iz)**2. + 0.074 ! verseghy (1991) ! tksno(iz) = 2.22*(bdsnoi(iz)/1000.)**1.88 ! douvill(yen, 1981) enddo From 04074884c04139ecc86d02f0123a0aa2f5a8ccb1 Mon Sep 17 00:00:00 2001 From: Lisa Bengtsson Date: Thu, 20 Jun 2024 19:52:56 +0000 Subject: [PATCH 19/80] Output updraft value of convective cloud condensate --- physics/CONV/SAMF/samfdeepcnv.f | 5 ++++- physics/CONV/SAMF/samfshalcnv.f | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/physics/CONV/SAMF/samfdeepcnv.f b/physics/CONV/SAMF/samfdeepcnv.f index 7c2d9acf8..90ff4dfd4 100644 --- a/physics/CONV/SAMF/samfdeepcnv.f +++ b/physics/CONV/SAMF/samfdeepcnv.f @@ -3430,7 +3430,10 @@ subroutine samfdeepcnv_run (im,km,first_time_step,restart, & do i = 1, im if (cnvflg(i) .and. rn(i) > 0.) then if (k >= kbcon(i) .and. k < ktcon(i)) then - cnvw(i,k) = cnvwt(i,k) * xmb(i) * dt2 + cnvw(i,k) = cnvwt(i,k) * xmb(i) * dt2 + tem=max(sigmaout(i,k),0.) + tem1=min(tem,1.0) + cnvw(i,k)=cnvw(i,k)*tem1 endif endif enddo diff --git a/physics/CONV/SAMF/samfshalcnv.f b/physics/CONV/SAMF/samfshalcnv.f index f720c4701..41f0124c6 100644 --- a/physics/CONV/SAMF/samfshalcnv.f +++ b/physics/CONV/SAMF/samfshalcnv.f @@ -2405,7 +2405,10 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, & if (cnvflg(i)) then if (k >= kbcon(i) .and. k < ktcon(i)) then cnvw(i,k) = cnvwt(i,k) * xmb(i) * dt2 - endif + tem=max(sigmaout(i,k),0.) + tem1=min(tem,1.0) + cnvw(i,k)=cnvw(i,k)*tem1 + endif endif enddo enddo From 283be49f61f55f94d766de6bc5a7c1bbf2ee1ebd Mon Sep 17 00:00:00 2001 From: Man Zhang Date: Thu, 20 Jun 2024 14:10:58 -0600 Subject: [PATCH 20/80] save work progress --- physics/CONV/SAS/shalcnv.F | 6 +- physics/MP/NSSL/module_mp_nssl_2mom.F90 | 2 +- physics/MP/module_mp_radar.F90 | 23 +- physics/PBL/MYNN_EDMF/module_bl_mynn.F90 | 40 +- physics/SFC_Layer/GFDL/gfdl_sfc_layer.F90 | 2 +- physics/SFC_Layer/UFS/sfc_diff.f | 63 +- physics/docs/ccpp_doxyfile | 2574 ++++++++++++++++- physics/docs/library.bib | 112 +- physics/docs/pdftxt/GFS_v16_suite.txt | 2 +- physics/docs/pdftxt/GFS_v17_HR3_GP_suite.txt | 6 +- physics/docs/pdftxt/RE7/input_GFS_v16.nml | 253 +- physics/docs/pdftxt/RE7/input_GFS_v17_HR3.nml | 4 + .../pdftxt/RE7/input_GFS_v17_HR3_RRTMGP.nml | 4 + physics/docs/pdftxt/RE7/input_RRFS_v1.nml | 4 + physics/docs/pdftxt/RE7/input_WoFS_v0.nml | 4 + physics/docs/pdftxt/RRFS_v1_suite.txt | 12 +- physics/docs/pdftxt/RUCLSM.txt | 1 - physics/docs/pdftxt/all_schemes_list.txt | 7 +- physics/docs/pdftxt/mainpage.txt | 5 +- physics/docs/pdftxt/suite_input.nml.txt | 127 +- physics/smoke_dust/rrfs_smoke_wrapper.F90 | 1 - 21 files changed, 2847 insertions(+), 405 deletions(-) diff --git a/physics/CONV/SAS/shalcnv.F b/physics/CONV/SAS/shalcnv.F index 3b8d706cd..548ad8380 100644 --- a/physics/CONV/SAS/shalcnv.F +++ b/physics/CONV/SAS/shalcnv.F @@ -4,7 +4,7 @@ !! !! This scheme was designed to replace the previous eddy-diffusivity approach to shallow convection with a mass-flux based approach as it is used for deep convection. Differences between the shallow and deep SAS schemes are presented in Han and Pan (2011) \cite han_and_pan_2011 . Like the deep scheme, it uses the working concepts put forth in Arakawa and Schubert (1974) \cite arakawa_and_schubert_1974 but includes modifications and simplifications from Grell (1993) \cite grell_1993 such as only one cloud type (the deepest possible, up to \f$p=0.7p_{sfc}\f$), rather than a spectrum based on cloud top heights or assumed entrainment rates, although it assumes no convective downdrafts. It contains many modifications associated with deep scheme as discussed in Han and Pan (2011) \cite han_and_pan_2011 , including the calculation of cloud top, a greater CFL-criterion-based maximum cloud base mass flux, and the inclusion of convective overshooting. !! -!! \section diagram Calling Hierarchy Diagram +!! \section diagram_sashal Calling Hierarchy Diagram !! \image html Shallow_SAS_Flowchart.png "Diagram depicting how the SAS shallow convection scheme is called from the GSM physics time loop" height=2cm !! \section intraphysics Intraphysics Communication !! This space is reserved for a description of how this scheme uses information from other scheme types and/or how information calculated in this scheme is used in other scheme types. @@ -80,12 +80,12 @@ end subroutine shalcnv_init !! \param[out] cnvw convective cloud water (kg/kg) !! \param[out] cnvc convective cloud cover (unitless) !! -!! \section general General Algorithm +!! \section general_shalcnv General Algorithm !! -# Compute preliminary quantities needed for the static and feedback control portions of the algorithm. !! -# Perform calculations related to the updraft of the entraining/detraining cloud model ("static control"). !! -# Calculate the tendencies of the state variables (per unit cloud base mass flux) and the cloud base mass flux. !! -# For the "feedback control", calculate updated values of the state variables by multiplying the cloud base mass flux and the tendencies calculated per unit cloud base mass flux from the static control. -!! \section detailed Detailed Algorithm +!! \section detailed_shalcnv Detailed Algorithm !! !! \section arg_table_shalcnv_run Argument Table !! \htmlinclude shalcnv_run.html diff --git a/physics/MP/NSSL/module_mp_nssl_2mom.F90 b/physics/MP/NSSL/module_mp_nssl_2mom.F90 index ad90ec81f..875898dcc 100644 --- a/physics/MP/NSSL/module_mp_nssl_2mom.F90 +++ b/physics/MP/NSSL/module_mp_nssl_2mom.F90 @@ -176,7 +176,7 @@ !>\defgroup mod_nsslmp NSSL 2-moment microphysics modules -!!\ingroup nsslmp testphrase one +!!\ingroup nsslmp !! Module for NSSL cloud physics MODULE module_mp_nssl_2mom IMPLICIT NONE diff --git a/physics/MP/module_mp_radar.F90 b/physics/MP/module_mp_radar.F90 index 96a4348d0..bf290e516 100644 --- a/physics/MP/module_mp_radar.F90 +++ b/physics/MP/module_mp_radar.F90 @@ -68,8 +68,7 @@ MODULE module_mp_radar !+---+-----------------------------------------------------------------+ !+---+-----------------------------------------------------------------+ -!>\ingroup thompson_radar -!! +!> subroutine radar_init IMPLICIT NONE @@ -189,13 +188,11 @@ end subroutine radar_init !+---+-----------------------------------------------------------------+ !+---+-----------------------------------------------------------------+ -!>\ingroup thompson_radar - COMPLEX*16 FUNCTION m_complex_water_ray(lambda,T) - !> Complex refractive Index of Water as function of Temperature T !! [deg C] and radar wavelength lambda [m]; valid for !! lambda in [0.001,1.0] m; T in [-10.0,30.0] deg C !! after Ray (1972) + COMPLEX*16 FUNCTION m_complex_water_ray(lambda,T) IMPLICIT NONE DOUBLE PRECISION, INTENT(IN):: T,lambda @@ -264,8 +261,7 @@ END FUNCTION m_complex_ice_maetzler !+---+-----------------------------------------------------------------+ -!>ingroup thompson_radar -!! +!> subroutine rayleigh_soak_wetgraupel (x_g, a_geo, b_geo, fmelt, & meltratio_outside, m_w, m_i, lambda, C_back, & mixingrule,matrix,inclusion, & @@ -362,8 +358,7 @@ subroutine rayleigh_soak_wetgraupel (x_g, a_geo, b_geo, fmelt, & end subroutine rayleigh_soak_wetgraupel !+---+-----------------------------------------------------------------+ -!>\ingroup thompson_radar -!! +!> complex*16 function get_m_mix_nested (m_a, m_i, m_w, volair, & volice, volwater, mixingrule, host, matrix, & inclusion, hostmatrix, hostinclusion, cumulerror) @@ -493,8 +488,7 @@ complex*16 function get_m_mix_nested (m_a, m_i, m_w, volair, & end function get_m_mix_nested !+---+-----------------------------------------------------------------+ -!>\ingroup thompson_radar -!! +!> COMPLEX*16 FUNCTION get_m_mix (m_a, m_i, m_w, volair, volice, & volwater, mixingrule, matrix, inclusion, error) @@ -535,8 +529,7 @@ COMPLEX*16 FUNCTION get_m_mix (m_a, m_i, m_w, volair, volice, & END FUNCTION get_m_mix !+---+-----------------------------------------------------------------+ -!>\ingroup thompson_radar -!! +!> COMPLEX*16 FUNCTION m_complex_maxwellgarnett(vol1, vol2, vol3, & m1, m2, m3, inclusion, error) @@ -584,7 +577,7 @@ COMPLEX*16 FUNCTION m_complex_maxwellgarnett(vol1, vol2, vol3, & END FUNCTION m_complex_maxwellgarnett !+---+-----------------------------------------------------------------+ -!>\ingroup thompson_radar +!> REAL FUNCTION GAMMLN(XX) ! --- RETURNS THE VALUE LN(GAMMA(XX)) FOR XX > 0. IMPLICIT NONE @@ -610,7 +603,7 @@ REAL FUNCTION GAMMLN(XX) END FUNCTION GAMMLN ! (C) Copr. 1986-92 Numerical Recipes Software 2.02 !+---+-----------------------------------------------------------------+ -!>\ingroup thompson_radar +!> REAL FUNCTION WGAMMA(y) IMPLICIT NONE diff --git a/physics/PBL/MYNN_EDMF/module_bl_mynn.F90 b/physics/PBL/MYNN_EDMF/module_bl_mynn.F90 index cc7a47ce6..9f90860c5 100644 --- a/physics/PBL/MYNN_EDMF/module_bl_mynn.F90 +++ b/physics/PBL/MYNN_EDMF/module_bl_mynn.F90 @@ -350,7 +350,7 @@ MODULE module_bl_mynn CONTAINS ! ================================================================== -!>\ingroup gsd_mynn_edmf +!>\ingroup gp_mynnedmf !! This subroutine is the GSD MYNN-EDNF PBL driver routine,which !! encompassed the majority of the subroutines that comprise the !! procedures that ultimately solve for tendencies of @@ -1505,7 +1505,7 @@ END SUBROUTINE mynn_bl_driver ! !------------------------------------------------------------------- -!>\ingroup gsd_mynn_edmf +!>\ingroup gp_mynnedmf !! This subroutine initializes the mixing length, TKE, \f$\theta^{'2}\f$, !! \f$q^{'2}\f$, and \f$\theta^{'}q^{'}\f$. !!\section gen_mym_ini GSD MYNN-EDMF mym_initialize General Algorithm @@ -1691,7 +1691,7 @@ END SUBROUTINE mym_initialize ! These are defined on the walls of the grid boxes. ! -!>\ingroup gsd_mynn_edmf +!>\ingroup gp_mynnedmf !! This subroutine calculates the level 2, non-dimensional wind shear !! \f$G_M\f$ and vertical temperature gradient \f$G_H\f$ as well as !! the level 2 stability funcitons \f$S_h\f$ and \f$S_m\f$. @@ -1843,7 +1843,7 @@ END SUBROUTINE mym_level2 ! NOTE: the mixing lengths are meant to be calculated at the full- ! sigmal levels (or interfaces beween the model layers). ! -!>\ingroup gsd_mynn_edmf +!>\ingroup gp_mynnedmf !! This subroutine calculates the mixing lengths. SUBROUTINE mym_length ( & & kts,kte,xland, & @@ -2242,7 +2242,7 @@ SUBROUTINE mym_length ( & END SUBROUTINE mym_length ! ================================================================== -!>\ingroup gsd_mynn_edmf +!>\ingroup gp_mynnedmf !! This subroutine was taken from the BouLac scheme in WRF-ARW and modified for !! integration into the MYNN PBL scheme. WHILE loops were added to reduce the !! computational expense. This subroutine computes the length scales up and down @@ -2405,7 +2405,7 @@ SUBROUTINE boulac_length0(k,kts,kte,zw,dz,qtke,theta,lb1,lb2) END SUBROUTINE boulac_length0 ! ================================================================== -!>\ingroup gsd_mynn_edmf +!>\ingroup gp_mynnedmf !! This subroutine was taken from the BouLac scheme in WRF-ARW !! and modified for integration into the MYNN PBL scheme. !! WHILE loops were added to reduce the computational expense. @@ -2596,7 +2596,7 @@ END SUBROUTINE boulac_length ! # dtl, dqw, dtv, gm and gh are allowed to share storage units with ! dfm, dfh, dfq, tcd and qcd, respectively, for saving memory. ! -!>\ingroup gsd_mynn_edmf +!>\ingroup gp_mynnedmf !! This subroutine calculates the vertical diffusivity coefficients and the !! production terms for the turbulent quantities. !>\section gen_mym_turbulence GSD mym_turbulence General Algorithm @@ -3190,7 +3190,7 @@ END SUBROUTINE mym_turbulence ! scheme (program). ! !------------------------------------------------------------------- -!>\ingroup gsd_mynn_edmf +!>\ingroup gp_mynnedmf !! This subroutine predicts the turbulent quantities at the next step. SUBROUTINE mym_predict (kts,kte, & & closure, & @@ -3593,7 +3593,7 @@ END SUBROUTINE mym_predict ! Set these values to those adopted by you. ! !------------------------------------------------------------------- -!>\ingroup gsd_mynn_edmf +!>\ingroup gp_mynnedmf !! This subroutine calculates the nonconvective component of the !! subgrid cloud fraction and mixing ratio as well as the functions used to !! calculate the buoyancy flux. Different cloud PDFs can be selected by @@ -4020,7 +4020,7 @@ SUBROUTINE mym_condensation (kts,kte, & END SUBROUTINE mym_condensation ! ================================================================== -!>\ingroup gsd_mynn_edmf +!>\ingroup gp_mynnedmf !! This subroutine solves for tendencies of U, V, \f$\theta\f$, qv, !! qc, and qi SUBROUTINE mynn_tendencies(kts,kte,i, & @@ -5354,7 +5354,7 @@ SUBROUTINE mynn_mix_chem(kts,kte,i, & END SUBROUTINE mynn_mix_chem ! ================================================================== -!>\ingroup gsd_mynn_edmf +!>\ingroup gp_mynnedmf SUBROUTINE retrieve_exchange_coeffs(kts,kte,& &dfm,dfh,dz,K_m,K_h) @@ -5382,7 +5382,7 @@ SUBROUTINE retrieve_exchange_coeffs(kts,kte,& END SUBROUTINE retrieve_exchange_coeffs ! ================================================================== -!>\ingroup gsd_mynn_edmf +!>\ingroup gp_mynnedmf SUBROUTINE tridiag(n,a,b,c,d) !! to solve system of linear eqs on tridiagonal matrix n times n @@ -5418,7 +5418,7 @@ SUBROUTINE tridiag(n,a,b,c,d) END SUBROUTINE tridiag ! ================================================================== -!>\ingroup gsd_mynn_edmf +!>\ingroup gp_mynnedmf subroutine tridiag2(n,a,b,c,d,x) implicit none ! a - sub-diagonal (means it is the diagonal below the main diagonal) @@ -5453,7 +5453,7 @@ subroutine tridiag2(n,a,b,c,d,x) end subroutine tridiag2 ! ================================================================== -!>\ingroup gsd_mynn_edmf +!>\ingroup gp_mynnedmf subroutine tridiag3(kte,a,b,c,d,x) !ccccccccccccccccccccccccccccccc @@ -5495,7 +5495,7 @@ subroutine tridiag3(kte,a,b,c,d,x) end subroutine tridiag3 ! ================================================================== -!>\ingroup gsd_mynn_edmf +!>\ingroup gp_mynnedmf !! This subroutine calculates hybrid diagnotic boundary-layer height (PBLH). !! !! NOTES ON THE PBLH FORMULATION: The 1.5-theta-increase method defines @@ -5658,7 +5658,7 @@ END SUBROUTINE GET_PBLH !> @} ! ================================================================== -!>\ingroup gsd_mynn_edmf +!>\ingroup gp_mynnedmf !! This subroutine is the Dynamic Multi-Plume (DMP) Mass-Flux Scheme. !! !! dmp_mf() calculates the nonlocal turbulent transport from the dynamic @@ -6824,7 +6824,7 @@ SUBROUTINE DMP_mf( & END SUBROUTINE DMP_MF !================================================================= -!>\ingroup gsd_mynn_edmf +!>\ingroup gp_mynnedmf !! This subroutine subroutine condensation_edmf(QT,THL,P,zagl,THV,QC) ! @@ -7384,7 +7384,7 @@ SUBROUTINE SCALE_AWARE(dx,PBL1,Psig_bl,Psig_shcu) END SUBROUTINE SCALE_AWARE ! ===================================================================== -!>\ingroup gsd_mynn_edmf +!>\ingroup gp_mynnedmf !! \author JAYMES- added 22 Apr 2015 !! This function calculates saturation vapor pressure. Separate ice and liquid functions !! are used (identical to those in module_mp_thompson.F, v3.6). Then, the @@ -7438,7 +7438,7 @@ END FUNCTION esat_blend ! ==================================================================== -!>\ingroup gsd_mynn_edmf +!>\ingroup gp_mynnedmf !! This function extends function "esat" and returns a "blended" !! saturation mixing ratio. Tice currently set to 240 K, t0c = 273.15 K. !!\author JAYMES @@ -7495,7 +7495,7 @@ END FUNCTION qsat_blend ! =================================================================== -!>\ingroup gsd_mynn_edmf +!>\ingroup gp_mynnedmf !! This function interpolates the latent heats of vaporization and sublimation into !! a single, temperature-dependent, "blended" value, following !! Chaboureau and Bechtold (2002) \cite Chaboureau_2002, Appendix. diff --git a/physics/SFC_Layer/GFDL/gfdl_sfc_layer.F90 b/physics/SFC_Layer/GFDL/gfdl_sfc_layer.F90 index e235acc52..ce6501908 100644 --- a/physics/SFC_Layer/GFDL/gfdl_sfc_layer.F90 +++ b/physics/SFC_Layer/GFDL/gfdl_sfc_layer.F90 @@ -1,4 +1,4 @@ -!> \file gfdl_sfc_layer.f +!> \file gfdl_sfc_layer.F90 !! This file contains ... !> This module contains the CCPP-compliant GFDL surface layer scheme. diff --git a/physics/SFC_Layer/UFS/sfc_diff.f b/physics/SFC_Layer/UFS/sfc_diff.f index e5cb4292e..2b1d285f3 100644 --- a/physics/SFC_Layer/UFS/sfc_diff.f +++ b/physics/SFC_Layer/UFS/sfc_diff.f @@ -648,9 +648,8 @@ end subroutine stability !--------------------------------- -!! add fitted z0,zt curves for hurricane application (used in HWRF/HMON) +!> add fitted z0,zt curves for hurricane application (used in HWRF/HMON) !! Weiguo Wang, 2019-0425 - SUBROUTINE znot_m_v6(uref, znotm) use machine , only : kind_phys IMPLICIT NONE @@ -697,18 +696,19 @@ SUBROUTINE znot_m_v6(uref, znotm) END SUBROUTINE znot_m_v6 +!> Calculate scalar roughness over water with input 10-m wind +!! For low-to-moderate winds, try to match the Ck-U10 relationship from COARE algorithm +!! For high winds, try to retain the Ck-U10 relationship of FY2015 HWRF +!! +!! Bin Liu, NOAA/NCEP/EMC 2017 +! +!! uref(m/s) : wind speed at 10-m height +!! znott(meter): scalar roughness scale over water SUBROUTINE znot_t_v6(uref, znott) use machine , only : kind_phys IMPLICIT NONE -! Calculate scalar roughness over water with input 10-m wind -! For low-to-moderate winds, try to match the Ck-U10 relationship from COARE algorithm -! For high winds, try to retain the Ck-U10 relationship of FY2015 HWRF -! -! Bin Liu, NOAA/NCEP/EMC 2017 -! -! uref(m/s) : wind speed at 10-m height -! znott(meter): scalar roughness scale over water -! + + REAL(kind=kind_phys), INTENT(IN) :: uref REAL(kind=kind_phys), INTENT(OUT):: znott @@ -762,19 +762,20 @@ SUBROUTINE znot_t_v6(uref, znott) END SUBROUTINE znot_t_v6 +!> Calculate areodynamical roughness over water with input 10-m wind +!! For low-to-moderate winds, try to match the Cd-U10 relationship from COARE V3.5 (Edson et al. 2013) +!! For high winds, try to fit available observational data +!! Comparing to znot_t_v6, slightly decrease Cd for higher wind speed +! +!! Bin Liu, NOAA/NCEP/EMC 2018 +! +!! uref(m/s) : wind speed at 10-m height +!! znotm(meter): areodynamical roughness scale over water SUBROUTINE znot_m_v7(uref, znotm) use machine , only : kind_phys IMPLICIT NONE -! Calculate areodynamical roughness over water with input 10-m wind -! For low-to-moderate winds, try to match the Cd-U10 relationship from COARE V3.5 (Edson et al. 2013) -! For high winds, try to fit available observational data -! Comparing to znot_t_v6, slightly decrease Cd for higher wind speed -! -! Bin Liu, NOAA/NCEP/EMC 2018 -! -! uref(m/s) : wind speed at 10-m height -! znotm(meter): areodynamical roughness scale over water -! + + REAL(kind=kind_phys), INTENT(IN) :: uref REAL(kind=kind_phys), INTENT(OUT):: znotm @@ -808,18 +809,20 @@ SUBROUTINE znot_m_v7(uref, znotm) endif END SUBROUTINE znot_m_v7 + +!> Calculate scalar roughness over water with input 10-m wind +!! For low-to-moderate winds, try to match the Ck-U10 relationship from COARE algorithm +!! For high winds, try to retain the Ck-U10 relationship of FY2015 HWRF +!! To be compatible with the slightly decreased Cd for higher wind speed +!! +!! Bin Liu, NOAA/NCEP/EMC 2018 +!! +!! uref(m/s) : wind speed at 10-m height +!! znott(meter): scalar roughness scale over water SUBROUTINE znot_t_v7(uref, znott) use machine , only : kind_phys IMPLICIT NONE -! Calculate scalar roughness over water with input 10-m wind -! For low-to-moderate winds, try to match the Ck-U10 relationship from COARE algorithm -! For high winds, try to retain the Ck-U10 relationship of FY2015 HWRF -! To be compatible with the slightly decreased Cd for higher wind speed -! -! Bin Liu, NOAA/NCEP/EMC 2018 -! -! uref(m/s) : wind speed at 10-m height -! znott(meter): scalar roughness scale over water + ! REAL(kind=kind_phys), INTENT(IN) :: uref diff --git a/physics/docs/ccpp_doxyfile b/physics/docs/ccpp_doxyfile index 83ea0ae2e..9ad1fd40e 100644 --- a/physics/docs/ccpp_doxyfile +++ b/physics/docs/ccpp_doxyfile @@ -1,428 +1,2856 @@ -# Doxyfile 1.9.3 +# Doxyfile 1.10.0 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). +# +# Note: +# +# Use doxygen to compare the used configuration file with the template +# configuration file: +# doxygen -x [configFile] +# Use doxygen to compare the used configuration file with the template +# configuration file without replacing the environment variables or CMake type +# replacement variables: +# doxygen -x_noenv [configFile] + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the configuration +# file that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# https://www.gnu.org/software/libiconv/ for the list of possible encodings. +# The default value is: UTF-8. DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + PROJECT_NAME = "CCPP SciDoc" -PROJECT_NUMBER = "v7.0.0" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = v7.0.0 + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. + PROJECT_BRIEF = "Common Community Physics Package Developed at DTC" + +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. + PROJECT_LOGO = img/dtc_logo.png + +# With the PROJECT_ICON tag one can specify an icon that is included in the tabs +# when the HTML document is shown. Doxygen will copy the logo to the output +# directory. + +PROJECT_ICON = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. + OUTPUT_DIRECTORY = doc + +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096 +# sub-directories (in 2 levels) under the output directory of each output format +# and will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. Adapt CREATE_SUBDIRS_LEVEL to +# control the number of sub-directories. +# The default value is: NO. + CREATE_SUBDIRS = NO + +# Controls the number of sub-directories that will be created when +# CREATE_SUBDIRS tag is set to YES. Level 0 represents 16 directories, and every +# level increment doubles the number of directories, resulting in 4096 +# directories at level 8 which is the default and also the maximum value. The +# sub-directories are organized in 2 levels, the first level always has a fixed +# number of 16 directories. +# Minimum value: 0, maximum value: 8, default value: 8. +# This tag requires that the tag CREATE_SUBDIRS is set to YES. + +CREATE_SUBDIRS_LEVEL = 8 + +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + ALLOW_UNICODE_NAMES = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Bulgarian, +# Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, English +# (United States), Esperanto, Farsi (Persian), Finnish, French, German, Greek, +# Hindi, Hungarian, Indonesian, Italian, Japanese, Japanese-en (Japanese with +# English messages), Korean, Korean-en (Korean with English messages), Latvian, +# Lithuanian, Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, +# Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, +# Swedish, Turkish, Ukrainian and Vietnamese. +# The default value is: English. + OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + REPEAT_BRIEF = NO + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + FULL_PATH_NAMES = NO + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. + JAVADOC_AUTOBRIEF = NO + +# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line +# such as +# /*************** +# as being the beginning of a Javadoc-style comment "banner". If set to NO, the +# Javadoc-style will behave just like regular comments and it will not be +# interpreted by doxygen. +# The default value is: NO. + JAVADOC_BANNER = NO + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + MULTILINE_CPP_IS_BRIEF = NO + +# By default Python docstrings are displayed as preformatted text and doxygen's +# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the +# doxygen's special commands can be used and the contents of the docstring +# documentation blocks is shown as doxygen documentation. +# The default value is: YES. + PYTHON_DOCSTRING = YES + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. + SEPARATE_MEMBER_PAGES = YES + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:^^" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". Note that you cannot put \n's in the value part of an alias +# to insert newlines (in the resulting output). You can put ^^ in the value part +# of an alias to insert a newline as if a physical newline was in the original +# file. When you need a literal { or } or , in the value part of an alias you +# have to escape them by means of a backslash (\), this can lead to conflicts +# with the commands \{ and \} for these it is advised to use the version @{ and +# @} or use a double escape (\\{ and \\}) + ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + OPTIMIZE_FOR_FORTRAN = YES + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + OPTIMIZE_OUTPUT_VHDL = NO + +# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice +# sources only. Doxygen will then generate output that is more tailored for that +# language. For instance, namespaces will be presented as modules, types will be +# separated into more groups, etc. +# The default value is: NO. + OPTIMIZE_OUTPUT_SLICE = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, JavaScript, +# Csharp (C#), C, C++, Lex, D, PHP, md (Markdown), Objective-C, Python, Slice, +# VHDL, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: +# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser +# tries to guess whether the code is fixed or free formatted code, this is the +# default for Fortran type files). For instance to make doxygen treat .inc files +# as Fortran files (default is PHP), and .f files as C (default is Fortran), +# use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. When specifying no_extension you should add +# * to the FILE_PATTERNS. +# +# Note see also the list of default file extension mappings. + EXTENSION_MAPPING = .f=FortranFree \ .F=FortranFree \ .F90=FortranFree \ .f90=FortranFree + +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See https://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + MARKDOWN_SUPPORT = YES + +# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up +# to that level are automatically included in the table of contents, even if +# they do not have an id attribute. +# Note: This feature currently applies only to Markdown headings. +# Minimum value: 0, maximum value: 99, default value: 5. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + TOC_INCLUDE_HEADINGS = 5 + +# The MARKDOWN_ID_STYLE tag can be used to specify the algorithm used to +# generate identifiers for the Markdown headings. Note: Every identifier is +# unique. +# Possible values are: DOXYGEN use a fixed 'autotoc_md' string followed by a +# sequence number starting at 0 and GITHUB use the lower case version of title +# with any whitespace replaced by '-' and punctuation characters removed. +# The default value is: DOXYGEN. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +MARKDOWN_ID_STYLE = DOXYGEN + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. + SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + DISTRIBUTE_GROUP_DOC = YES + +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + GROUP_NESTED_COMPOUNDS = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + TYPEDEF_HIDES_STRUCT = YES + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + LOOKUP_CACHE_SIZE = 0 + +# The NUM_PROC_THREADS specifies the number of threads doxygen is allowed to use +# during processing. When set to 0 doxygen will based this on the number of +# cores available in the system. You can set it explicitly to a value larger +# than 0 to get more control over the balance between CPU load and processing +# speed. At this moment only the input processing can be done using multiple +# threads. Since this is still an experimental feature the default is set to 1, +# which effectively disables parallel processing. Please report any issues you +# encounter. Generating dot graphs in parallel is controlled by the +# DOT_NUM_THREADS setting. +# Minimum value: 0, maximum value: 32, default value: 1. + NUM_PROC_THREADS = 1 +# If the TIMESTAMP tag is set different from NO then each generated page will +# contain the date or date and time when the page was generated. Setting this to +# NO can help when comparing the output of multiple runs. +# Possible values are: YES, NO, DATETIME and DATE. +# The default value is: NO. + +TIMESTAMP = NO + #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. + EXTRACT_PRIVATE = YES + +# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual +# methods of a class will be included in the documentation. +# The default value is: NO. + EXTRACT_PRIV_VIRTUAL = NO + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + EXTRACT_PACKAGE = YES + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. + EXTRACT_STATIC = YES + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. + EXTRACT_LOCAL_METHODS = YES + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + EXTRACT_ANON_NSPACES = YES + +# If this flag is set to YES, the name of an unnamed parameter in a declaration +# will be determined by the corresponding definition. By default unnamed +# parameters remain unnamed in the output. +# The default value is: YES. + RESOLVE_UNNAMED_PARAMS = YES + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# will also hide undocumented C++ concepts if enabled. This option has no effect +# if EXTRACT_ALL is enabled. +# The default value is: NO. + HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# declarations. If set to NO, these declarations will be included in the +# documentation. +# The default value is: NO. + HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + INTERNAL_DOCS = YES + +# With the correct setting of option CASE_SENSE_NAMES doxygen will better be +# able to match the capabilities of the underlying filesystem. In case the +# filesystem is case sensitive (i.e. it supports files in the same directory +# whose names only differ in casing), the option must be set to YES to properly +# deal with such files in case they appear in the input. For filesystems that +# are not case sensitive the option should be set to NO to properly deal with +# output files written for symbols that only differ in casing, such as for two +# classes, one named CLASS and the other named Class, and to also support +# references to files without having to specify the exact matching casing. On +# Windows (including Cygwin) and MacOS, users should typically set this option +# to NO, whereas on Linux or other Unix flavors it should typically be set to +# YES. +# Possible values are: SYSTEM, NO and YES. +# The default value is: SYSTEM. + CASE_SENSE_NAMES = NO + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. + HIDE_SCOPE_NAMES = NO + +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_HEADERFILE tag is set to YES then the documentation for a class +# will show which file needs to be included to use the class. +# The default value is: YES. + SHOW_HEADERFILE = YES + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + SHOW_INCLUDE_FILES = NO + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. + SORT_MEMBER_DOCS = NO + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. + GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. + GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. + ENABLED_SECTIONS = YES + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the +# list will mention the files that were used to generate the documentation. +# The default value is: YES. + SHOW_USED_FILES = NO -SHOW_FILES = NO + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = NO + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. See also section "Changing the +# layout of pages" for information. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + LAYOUT_FILE = ccpp_dox_layout.xml + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. + CITE_BIB_FILES = library.bib #--------------------------------------------------------------------------- # Configuration options related to warning and progress messages #--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + WARN_IF_UNDOCUMENTED = NO + +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as documenting some parameters in +# a documented function twice, or documenting parameters that don't exist or +# using markup commands wrongly. +# The default value is: YES. + WARN_IF_DOC_ERROR = YES + +# If WARN_IF_INCOMPLETE_DOC is set to YES, doxygen will warn about incomplete +# function parameter documentation. If set to NO, doxygen will accept that some +# parameters have no documentation without warning. +# The default value is: YES. + WARN_IF_INCOMPLETE_DOC = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, doxygen will only warn about wrong parameter +# documentation, but not about the absence of documentation. If EXTRACT_ALL is +# set to YES then this flag will automatically be disabled. See also +# WARN_IF_INCOMPLETE_DOC +# The default value is: NO. + WARN_NO_PARAMDOC = NO + +# If WARN_IF_UNDOC_ENUM_VAL option is set to YES, doxygen will warn about +# undocumented enumeration values. If set to NO, doxygen will accept +# undocumented enumeration values. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: NO. + +WARN_IF_UNDOC_ENUM_VAL = NO + +# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when +# a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS +# then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but +# at the end of the doxygen process doxygen will return with a non-zero status. +# If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS_PRINT then doxygen behaves +# like FAIL_ON_WARNINGS but in case no WARN_LOGFILE is defined doxygen will not +# write the warning messages in between other messages but write them at the end +# of a run, in case a WARN_LOGFILE is defined the warning messages will be +# besides being in the defined file also be shown at the end of a run, unless +# the WARN_LOGFILE is defined as - i.e. standard output (stdout) in that case +# the behavior will remain as with the setting FAIL_ON_WARNINGS. +# Possible values are: NO, YES, FAIL_ON_WARNINGS and FAIL_ON_WARNINGS_PRINT. +# The default value is: NO. + WARN_AS_ERROR = NO + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# See also: WARN_LINE_FORMAT +# The default value is: $file:$line: $text. + WARN_FORMAT = -WARN_LOGFILE = + +# In the $text part of the WARN_FORMAT command it is possible that a reference +# to a more specific place is given. To make it easier to jump to this place +# (outside of doxygen) the user can define a custom "cut" / "paste" string. +# Example: +# WARN_LINE_FORMAT = "'vi $file +$line'" +# See also: WARN_FORMAT +# The default value is: at line $line of file $file. + +WARN_LINE_FORMAT = "at line $line of file $file" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). In case the file specified cannot be opened for writing the +# warning and error messages are written to standard error. When as file - is +# specified the warning and error messages are written to standard output +# (stdout). + +WARN_LOGFILE = #--------------------------------------------------------------------------- # Configuration options related to the input files #--------------------------------------------------------------------------- -INPUT = pdftxt/mainpage.txt \ - pdftxt/all_schemes_list.txt \ - pdftxt/GFS_v16_suite.txt \ - pdftxt/GFS_v17_HR3_suite.txt \ - pdftxt/GFS_v17_HR3_RRTMGP_suite.txt \ - pdftxt/RRFS_v1_suite.txt \ - pdftxt/WoFS_v0_suite.txt \ - pdftxt/RRFS_SGSCLOUD.txt \ - pdftxt/GFS_RRTMG.txt \ - pdftxt/GFS_RRTMGP.txt \ - pdftxt/GFS_SFCLYR.txt \ - pdftxt/MYNN_SFCLAYER.txt \ - pdftxt/GFS_NSST.txt \ - pdftxt/GFS_OCEAN.txt \ - pdftxt/GFS_NOAH.txt \ - pdftxt/GFS_SFCSICE.txt \ - pdftxt/GFS_SATMEDMFVDIFQ.txt \ - pdftxt/GFS_NOAHMP.txt \ - pdftxt/GFS_UGWPv0.txt \ - pdftxt/GFS_unified_ugwp.txt \ - pdftxt/GFS_ugwpv1_gsldrag.txt \ - pdftxt/GFS_drag_suite.txt \ - pdftxt/GFS_GWDPS.txt \ - pdftxt/GFS_OZPHYS.txt \ - pdftxt/GFS_H2OPHYS.txt \ - pdftxt/GFS_SAMFdeep.txt \ - pdftxt/GFS_SAMFshal.txt \ - pdftxt/GFDL_cloud.txt \ - pdftxt/NSSLMICRO.txt \ - pdftxt/MYNN_EDMF.txt \ - pdftxt/CU_GF_deep.txt \ - pdftxt/RUCLSM.txt \ - pdftxt/CLM_LAKE.txt \ - pdftxt/THOMPSON.txt \ - pdftxt/suite_input.nml.txt \ - pdftxt/GFS_SPP.txt \ - pdftxt/rad_cld.txt \ - ../MP \ - ../CONV \ - ../GWD \ - ../SFC_Layer \ - ../PBL \ - ../SFC_Models \ - ../photochem \ - ../Radiation \ - ../smoke_dust \ - ../hooks \ - ../tools \ - ../Interstitials +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING +# Note: If this tag is empty the current directory is searched. + +INPUT = pdftxt/mainpage.txt \ + pdftxt/all_schemes_list.txt \ + pdftxt/GFS_v16_suite.txt \ + pdftxt/GFS_v17_HR3_suite.txt \ + pdftxt/GFS_v17_HR3_GP_suite.txt \ + pdftxt/RRFS_v1_suite.txt \ + pdftxt/WoFS_v0_suite.txt \ + pdftxt/RRFS_SGSCLOUD.txt \ + pdftxt/GFS_RRTMG.txt \ + pdftxt/GFS_RRTMGP.txt \ + pdftxt/GFS_SFCLYR.txt \ + pdftxt/MYNN_SFCLAYER.txt \ + pdftxt/GFS_NSST.txt \ + pdftxt/GFS_OCEAN.txt \ + pdftxt/GFS_NOAH.txt \ + pdftxt/GFS_SFCSICE.txt \ + pdftxt/GFS_SATMEDMFVDIFQ.txt \ + pdftxt/GFS_NOAHMP.txt \ + pdftxt/GFS_UGWPv0.txt \ + pdftxt/GFS_unified_ugwp.txt \ + pdftxt/GFS_ugwpv1_gsldrag.txt \ + pdftxt/GFS_drag_suite.txt \ + pdftxt/GFS_GWDPS.txt \ + pdftxt/GFS_OZPHYS.txt \ + pdftxt/GFS_H2OPHYS.txt \ + pdftxt/GFS_SAMFdeep.txt \ + pdftxt/GFS_SAMFshal.txt \ + pdftxt/GFDL_cloud.txt \ + pdftxt/NSSLMICRO.txt \ + pdftxt/MYNN_EDMF.txt \ + pdftxt/CU_GF_deep.txt \ + pdftxt/RUCLSM.txt \ + pdftxt/CLM_LAKE.txt \ + pdftxt/THOMPSON.txt \ + pdftxt/suite_input.nml.txt \ + pdftxt/GFS_SPP.txt \ + ../MP \ + ../CONV \ + ../GWD \ + ../SFC_Layer \ + ../PBL \ + ../SFC_Models \ + ../photochem \ + ../Radiation \ + ../smoke_dust \ + ../hooks \ + ../tools \ + ../Interstitials + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: +# https://www.gnu.org/software/libiconv/) for the list of possible encodings. +# See also: INPUT_FILE_ENCODING +# The default value is: UTF-8. INPUT_ENCODING = UTF-8 + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses The INPUT_FILE_ENCODING tag can be used to specify +# character encoding on a per file pattern basis. Doxygen will compare the file +# name with each pattern and apply the encoding instead of the default +# INPUT_ENCODING) if there is a match. The character encodings are a list of the +# form: pattern=encoding (like *.php=ISO-8859-1). See cfg_input_encoding +# "INPUT_ENCODING" for further information on supported encodings. + +INPUT_FILE_ENCODING = + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by doxygen. +# +# Note the list of default checked file patterns might differ from the list of +# default file extension mappings. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cxxm, +# *.cpp, *.cppm, *.ccm, *.c++, *.c++m, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, +# *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, *.h++, *.ixx, *.l, *.cs, *.d, +# *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, *.md, *.mm, *.dox (to +# be provided as doxygen C comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, +# *.f18, *.f, *.for, *.vhd, *.vhdl, *.ucf, *.qsf and *.ice. + FILE_PATTERNS = *.f \ *.F \ *.F90 \ *.f90 \ *.nml \ *.txt + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. + EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# ANamespace::AClass, ANamespace::*Test + EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + EXAMPLE_PATH = pdftxt/RE7 \ doc/html -EXAMPLE_PATTERNS = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + IMAGE_PATH = img + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. +# +# Note that doxygen will use the data processed and written to standard output +# for further processing, therefore nothing else, like debug statements or used +# commands (so in case of a Windows batch file always use @echo OFF), should be +# written to standard output. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + USE_MDFILE_AS_MAINPAGE = +# The Fortran standard specifies that for fixed formatted Fortran code all +# characters from position 72 are to be considered as comment. A common +# extension is to allow longer lines before the automatic comment starts. The +# setting FORTRAN_COMMENT_AFTER will also make it possible that longer lines can +# be processed before the automatic comment starts. +# Minimum value: 7, maximum value: 10000, default value: 72. + +FORTRAN_COMMENT_AFTER = 72 + #--------------------------------------------------------------------------- # Configuration options related to source browsing #--------------------------------------------------------------------------- +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# multi-line macros, enums or list initialized variables directly into the +# documentation. +# The default value is: NO. + INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# entity all documented functions referencing it will be listed. +# The default value is: NO. + REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + REFERENCES_RELATION = YES + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see https://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + VERBATIM_HEADERS = YES -CLANG_ASSISTED_PARSING = NO -CLANG_ADD_INC_PATHS = YES -CLANG_OPTIONS = -CLANG_DATABASE_PATH = #--------------------------------------------------------------------------- # Configuration options related to the alphabetical class index #--------------------------------------------------------------------------- -ALPHABETICAL_INDEX = NO +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = YES + +# The IGNORE_PREFIX tag can be used to specify a prefix (or a list of prefixes) +# that should be ignored while generating the index headers. The IGNORE_PREFIX +# tag works for classes, function and member names. The entity will be placed in +# the alphabetical list under the first letter of the entity name that remains +# after removing the prefix. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + IGNORE_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the HTML output #--------------------------------------------------------------------------- +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# The default value is: YES. + GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + HTML_HEADER = _doxygen/header.html + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + HTML_FOOTER = _doxygen/footer.html -HTML_STYLESHEET = -HTML_EXTRA_STYLESHEET = _doxygen/doxygen-awesome.css \ + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). +# Note: Since the styling of scrollbars can currently not be overruled in +# Webkit/Chromium, the styling will be left out of the default doxygen.css if +# one or more extra stylesheets have been specified. So if scrollbar +# customization is desired it has to be added explicitly. For an example see the +# documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = _doxygen/doxygen-awesome.css \ _doxygen/doxygen-awesome-sidebar-only.css \ - _doxygen/doxygen-awesome-sidebar-only-darkmode-toggle.css \ - _doxygen/doxygen-awesome-ccpp.css + _doxygen/doxygen-awesome-sidebar-only-darkmode-toggle.css \ + _doxygen/doxygen-awesome-ccpp.css + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + HTML_EXTRA_FILES = _doxygen/doxygen-awesome-darkmode-toggle.js \ _doxygen/doxygen-awesome-ccpp.js + +# The HTML_COLORSTYLE tag can be used to specify if the generated HTML output +# should be rendered with a dark or light theme. +# Possible values are: LIGHT always generate light mode output, DARK always +# generate dark mode output, AUTO_LIGHT automatically set the mode according to +# the user preference, use light mode if no preference is set (the default), +# AUTO_DARK automatically set the mode according to the user preference, use +# dark mode if no preference is set and TOGGLE allow to user to switch between +# light and dark mode via a button. +# The default value is: AUTO_LIGHT. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE = AUTO_LIGHT + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a color-wheel, see +# https://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + HTML_COLORSTYLE_HUE = 209 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use gray-scales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + HTML_COLORSTYLE_SAT = 255 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + HTML_COLORSTYLE_GAMMA = 113 -HTML_TIMESTAMP = NO + +# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML +# documentation will contain a main index with vertical navigation menus that +# are dynamically created via JavaScript. If disabled, the navigation index will +# consists of multiple levels of tabs that are statically embedded in every HTML +# page. Disable this option to support browsers that do not have JavaScript, +# like the Qt help browser. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + HTML_DYNAMIC_MENUS = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + HTML_DYNAMIC_SECTIONS = NO + +# If the HTML_CODE_FOLDING tag is set to YES then classes and functions can be +# dynamically folded and expanded in the generated HTML source code. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_CODE_FOLDING = YES + +# If the HTML_COPY_CLIPBOARD tag is set to YES then doxygen will show an icon in +# the top right corner of code and text fragments that allows the user to copy +# its content to the clipboard. Note this only works if supported by the browser +# and the web page is served via a secure context (see: +# https://www.w3.org/TR/secure-contexts/), i.e. using the https: or file: +# protocol. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COPY_CLIPBOARD = YES + +# Doxygen stores a couple of settings persistently in the browser (via e.g. +# cookies). By default these settings apply to all HTML pages generated by +# doxygen across all projects. The HTML_PROJECT_COOKIE tag can be used to store +# the settings under a project specific key, such that the user preferences will +# be stored separately. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_PROJECT_COOKIE = + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: +# https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To +# create a documentation set, doxygen will generate a Makefile in the HTML +# output directory. Running make will produce the docset in that directory and +# running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy +# genXcode/_index.html for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag determines the URL of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + DOCSET_FEEDURL = + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# on Windows. In the beginning of 2021 Microsoft took the original page, with +# a.o. the download links, offline the HTML help workshop was already many years +# in maintenance mode). You can download the HTML help workshop from the web +# archives at Installation executable (see: +# http://web.archive.org/web/20160201063255/http://download.microsoft.com/downlo +# ad/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe). +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + HHC_LOCATION = + +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the main .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + TOC_EXPAND = NO + +# The SITEMAP_URL tag is used to specify the full URL of the place where the +# generated documentation will be placed on the server by the user during the +# deployment of the documentation. The generated sitemap is called sitemap.xml +# and placed on the directory specified by HTML_OUTPUT. In case no SITEMAP_URL +# is specified no sitemap is generated. For information about the sitemap +# protocol see https://www.sitemaps.org +# This tag requires that the tag GENERATE_HTML is set to YES. + +SITEMAP_URL = + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location (absolute path +# including file name) of Qt's qhelpgenerator. If non-empty doxygen will try to +# run qhelpgenerator on the generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + DISABLE_INDEX = YES + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine tune the look of the index (see "Fine-tuning the output"). As an +# example, the default style sheet generated by doxygen has an example that +# shows how to put an image at the root of the tree instead of the PROJECT_NAME. +# Since the tree basically has the same information as the tab index, you could +# consider setting DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + GENERATE_TREEVIEW = YES + +# When both GENERATE_TREEVIEW and DISABLE_INDEX are set to YES, then the +# FULL_SIDEBAR option determines if the side bar is limited to only the treeview +# area (value NO) or if it should extend to the full height of the window (value +# YES). Setting this to YES gives a layout similar to +# https://docs.readthedocs.io with more room for contents, but less room for the +# project logo, title, and description. If either GENERATE_TREEVIEW or +# DISABLE_INDEX is set to NO, this option has no effect. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + FULL_SIDEBAR = NO + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + TREEVIEW_WIDTH = 335 + +# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + EXT_LINKS_IN_WINDOW = NO + +# If the OBFUSCATE_EMAILS tag is set to YES, doxygen will obfuscate email +# addresses. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + OBFUSCATE_EMAILS = YES + +# If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg +# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see +# https://inkscape.org) to generate formulas as SVG images instead of PNGs for +# the HTML output. These images will generally look nicer at scaled resolutions. +# Possible values are: png (the default) and svg (looks nicer but requires the +# pdf2svg or inkscape tool). +# The default value is: png. +# This tag requires that the tag GENERATE_HTML is set to YES. + HTML_FORMULA_FORMAT = SVG + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + FORMULA_FONTSIZE = 10 -FORMULA_TRANSPARENT = YES + +# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands +# to create new LaTeX commands to be used in formulas as building blocks. See +# the section "Including formulas" for details. + FORMULA_MACROFILE = + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# https://www.mathjax.org) which uses client side JavaScript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + USE_MATHJAX = YES + +# With MATHJAX_VERSION it is possible to specify the MathJax version to be used. +# Note that the different versions of MathJax have different requirements with +# regards to the different settings, so it is possible that also other MathJax +# settings have to be changed when switching between the different MathJax +# versions. +# Possible values are: MathJax_2 and MathJax_3. +# The default value is: MathJax_2. +# This tag requires that the tag USE_MATHJAX is set to YES. + MATHJAX_VERSION = MathJax_2 + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. For more details about the output format see MathJax +# version 2 (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) and MathJax version 3 +# (see: +# http://docs.mathjax.org/en/latest/web/components/output.html). +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility. This is the name for Mathjax version 2, for MathJax version 3 +# this will be translated into chtml), NativeMML (i.e. MathML. Only supported +# for NathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This +# is the name for Mathjax version 3, for MathJax version 2 this will be +# translated into HTML-CSS) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from https://www.mathjax.org before deployment. The default value is: +# - in case of MathJax version 2: https://cdn.jsdelivr.net/npm/mathjax@2 +# - in case of MathJax version 3: https://cdn.jsdelivr.net/npm/mathjax@3 +# This tag requires that the tag USE_MATHJAX is set to YES. + MATHJAX_RELPATH = https://cdn.jsdelivr.net/npm/mathjax@2 + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# for MathJax version 2 (see +# https://docs.mathjax.org/en/v2.7-latest/tex.html#tex-and-latex-extensions): +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# For example for MathJax version 3 (see +# http://docs.mathjax.org/en/latest/input/tex/extensions/index.html): +# MATHJAX_EXTENSIONS = ams +# This tag requires that the tag USE_MATHJAX is set to YES. + MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , /
1 -gfs_typedefs::gfs_control_type::iovr rrtmg_sw control flag for cloud overlap in SW & LW radiation \n +iovr rrtmg_sw control flag for cloud overlap in SW & LW radiation \n
  • 0: random overlapping clouds
  • 1: max/ran overlapping clouds @@ -103,28 +108,23 @@ show some variables in the namelist that must match the SDF.
  • yyyy1: use yyyy data for the forecast. if needed, do extrapolation to match the fcst time
1 -crick_proof gfs_rrtmg_setup control flag for eliminating CRICK \n +lcrick gfs_rrtmg_setup control flag for eliminating CRICK \n
  • .true.: apply layer smoothing to eliminate CRICK
  • .false.: do not apply layer smoothing
.false. -ccnorm gfs_rrtmg_setup control flag for in-cloud condensate mixing ratio \n +lcnorm gfs_rrtmg_setup control flag for in-cloud condensate mixing ratio \n
  • .true.: normalize cloud condensate
  • .false.: not normalize cloud condensate
.false. -norad_precip gfs_rrtmg_setup control flag for not using precip in radiation (Ferrier scheme) \n -
    -
  • .true.: snow/rain has no impact on radiation -
  • .false.: snow/rain has impact on radiation -
- .false. ialb gfs_rrtmg_setup SW surface albedo control flag: \n
    -
  • 0: using climatology surface albedo scheme for SW -
  • 1: using MODIS based land surface albedo for SW +
  • 0: use climatology albedo, based on sfc type +
  • 1: use MODIS based albedo (RUC LSM) +
  • 2: use LSM albedo (Noah MP lsm)
0 iems gfs_rrtmg_setup LW surface emissivity control flag (ab 2-digit integer) : \n @@ -172,6 +172,13 @@ show some variables in the namelist that must match the SDF.
  • 2: use McICA with randomly generated permutation seeds 0 +iswmode GFS_rrtmg_setup, radsw_main SW control flag for scattering process approximation: \n +
      +
    • 1: two-stream delta-eddington (Joseph et al. 1976 \cite Joseph_1976) +
    • 2: two-stream PIFM (zdunowski et al. 1980 \cite zdunkowski_et_al_1980) +
    • 3: discrete ordinates (Liou, 1973 \cite Liou_1973) +
    + 2 isol gfs_rrtmg_setup solar constant scheme control flag: \n
    • 0: fixed value = 1366.0 \f$W m^{-2}\f$ (old standard) @@ -185,35 +192,31 @@ show some variables in the namelist that must match the SDF. lwhtr rrtmg_lw flag for output of longwave heating rate .true. swhtr rrtmg_sw flag for output of shortwave heating rate .true. nhfrad gfs_time_vary_pre number of timesteps for which to call radiation on physics timestep (coldstarts) 0 +idcor +dcorr_con \b Parameters \b related \b to \b RRTMGP \b schemes do_RRTMGP GFS_rrtmgp_setup use RRTMGP .false. active_gases GFS_rrtmgp_pre,rrtmgp_lw_main,rrtmgp_lw_gas_optics,rrtmgp_sw_main,rrtmgp_sw_gas_optics character list of active gases used in RRTMGP '' nGases GFS_rrtmgp_pre,rrtmgp_lw_main,rrtmgp_sw_main number of active gases 0 rrtmgp_root rrtmgp_lw_cloud_optics,rrtmgp_lw_main,rrtmgp_sw_cloud_optics,rrtmgp_lw_gas_optics,rrtmgp_sw_main directory of rte+rrtmgp source code '' lw_file_gas rrtmgp_lw_main,rrtmgp_lw_gas_optics RRTMGP K-distribution file, coefficients to compute optics for gaseous atmosphere '' -lw_file_clouds RRTMGP file containing coefficients used to compute clouds optical properties '' -sw_file_gas RRTMGP K-distribution file, coefficients to compute optics for gaseous atmosphere '' -sw_file_clouds RRTMGP file containing coefficents used to compute clouds optical properties '' +lw_file_clouds rrtmgp_lw_main, rrtmgp_lw_cloud_optics RRTMGP file containing coefficients used to compute clouds optical properties '' +sw_file_gas rrtmgp_sw_main, rrtmgp_sw_gas_optics RRTMGP K-distribution file, coefficients to compute optics for gaseous atmosphere '' +sw_file_clouds rrtmgp_sw_main, rrtmgp_sw_cloud_optics RRTMGP file containing coefficents used to compute clouds optical properties '' rrtmgp_nBandsSW number of RRTMGP SW bands -999 rrtmgp_nGptsSW number of RRTMGP SW spectral points -999 rrtmgp_nBandsLW number of RRTMGP LW bands -999 rrtmgp_nGptsLW number of RRTMGP LW spectral points -999 -doG_cldoptics use legacy RRTMG cloud optics .false. -doGP_cldoptics_PADE use RRTMGP cloud optics: PADE approximation .false. +doG_cldoptics use legacy RRTMG cloud optics .false. +doGP_cldoptics_PADE GFS_rrtmgp_cloud_mp, rrtmgp_lw_cloud_optics, rrtmgp_sw_cloud_optics, rrtmgp_lw_main, rrtmgp_sw_main use RRTMGP cloud optics: PADE approximation .false. doGP_cldoptics_LUT GFS_rrtmgp_cloud_mp,rrtmgp_lw_cloud_optics,rrtmgp_lw_main,rrtmgp_sw_cloud_optics,rrtmgp_sw_main use RRTMGP cloud optics: LUTs .false. iovr_convcld rrtmgp_lw_main,rrtmgp_sw_main cloud-overlap assumption for convective cloud 1 -#rrtmgp_nrghice number of ice-roughness categories 3 -#rrtmgp_nGauss_ang number of angles used in Gaussian quadrature 1 -#do_GPsw_Glw .false. use_LW_jacobian GFS_suite_interstitial_2, dcyc2t3,rrtmgp_lw_main use Jacobian of LW to update LW radiation tendencies .false. damp_LW_fluxadj dcyc2t3 Damp LW Jacobian flux adjustment with height .false. lfnc_k dcyc2t3 depth of transition layer in logistic function for LW flux adjustment damping -999 lfnc_p0 dcyc2t3 transition pressure for LW flux adjustment damping -999 doGP_lwscat rrtmgp_lw_main if true, include scattering in longwave cloud-optics, only compatible w/ GP cloud-optics .false. doGP_sgs_cnv rrtmgp_lw_main, rrtmgp_sw_main if true, include SubGrdiScale convective cloud in RRTMGP -#doGP_sgs_mynn if true, include SubGridScale MYNN-EDMF cloud in RRTMGP -#rrtmgp_lw_phys_blksz number of columns for RRTMGP LW scheme to process at each instance 1 -#rrtmgp_sw_phys_blksz number of columns for RRTMGP SW scheme to process at each instance 1 doGP_smearclds GFS_rrtmgp_cloud_mp if true, include implicit SubGridScale clouds in RRTMGP \b Parameters \b related \b to \b cumulus \b schemes imfshalcnv choice of shallow convective scheme flag for mass flux shallow convective scheme:\n @@ -242,8 +245,11 @@ show some variables in the namelist that must match the SDF. random_clds gfs_phys_time_vary flag for whether clouds are random .false. trans_trac gfs_suite_interstitial flag for convective transport of tracers .false. cal_pre gfs_phys_time_vary or gfs_MP_generic flag for calling precipitation type algorithm .false. -shcnvcw \ref samfshalcnv flag for shallow convective cloud .false. -progsigma \ref samfshalcnv, \ref samfdeepcnv flag for prognostic updraft area fraction closure in saSAS .false. +shcnvcw samfshalcnv flag for shallow convective cloud .false. +progsigma samfshalcnv, samfdeepcnv flag for prognostic updraft area fraction closure in saSAS .false. +betascu samfshalcnv, samfdeepcnv, cu_c3_driver tuning parameter for prognostic closure shallow clouds 8.0 +betamcu samfshalcnv, samfdeepcnv, cu_c3_driver tuning parameter for prognostic closure midlevel clouds 1.0 +betadcu samfshalcnv, samfdeepcnv, cu_c3_driver tuning parameter for prognostic closure deep clouds 2.0 \b Parameters \b related \b to \b PBL \b scheme \b options do_mynnedmf mynnedmf_wrapper flag to activate MYNN-EDMF scheme .false. dspheat \ref satmedmfvdifq flag for using TKE dissipative heating to temperature tendency in hybrid EDMF and TKE-EDMF schemes .false. @@ -291,7 +297,6 @@ show some variables in the namelist that must match the SDF.
    • 1: activate TKE transport in dynamic multiplume mass-flux scheme. \p bl_mynn_edmf must be set to 1
    0 -bl_mynn_edmf_part mynnedmf_wrapper flag to partitioning the MF and ED areas 0 bl_mynn_tkeadvect mynnedmf_wrapper activate computation of TKE advection (not yet in use for FV3) \n
    • false: deactivate TKE advection @@ -424,8 +429,8 @@ show some variables in the namelist that must match the SDF. t_sub gfdl_cloud_microphys temperature threshold for sublimation. Cloud ice, snow or graupel stops(starts) sublimation when temperature is lower(higher) then \p t_sub 184. mp_print gfdl_cloud_microphys \a .true. to turn on GFDL cloud microphysics debugging print out. (not supported in GFS physics) .false. ltaerosol mp_thompson flag for using aerosol climotology in Thompson MP scheme .false. -mraerosol flag for merra2 aerosol aware .false. -lradar flag for radar reflectivity .false. +mraerosol mynnedmf_wrapper, GFS_rrtmg_pre,GFS_PBL_generic_post, GFS_rrtmgp_cloud_mp, GFS_PBL_generic_common, GFS_PBL_generic_pre flag for merra2 aerosol aware .false. +lradar mp_thompson,gfdl_cloud_microphys,maximum_hourly_diagnostics flag for radar reflectivity .false. nsfullradar_diag seconds between resetting radar reflectivity calculation .-999.0 ttendlim mp_thompson temperature tendency limiter per time step in K/s, set to < 0 to deactivate -999.0 ext_diag_thompson mp_thompson flag for extended diagnostic output from Thompson MP .false. @@ -435,19 +440,18 @@ show some variables in the namelist that must match the SDF. decfl mp_thompson deformed CFL factor 8 effr_in gfdl_cloud_microphys, mp_thompson flag for using input cloud effective radii calculation .false. cnvcld see \a GFS_typedefs.F90 flag for convective cloud .false. +xr_cnvcld GFS_rrtmg_pre flag for including suspended convective clouds in Xu-Randall cloud fraction .true. lgfdlmprad gfs_rrtmg_pre flag for GFDL mp scheme and radiation consistency .false. nssl_cccn mp_nssl CCN concentration (m^-3) 0.6e9 nssl_alphah mp_nssl graupel shape parameter 0.0 nssl_alphahl mp_nssl hail shape parameter 1.0 nssl_alphar mp_nssl shape paramter for rain (imurain=1 only) 0.0 -nssl_ehw0_in mp_nssl constant or max assumed graupel-droplet collection efficiency 0.9 -nssl_ehlw0_in mp_nssl constant or max assumed hail-droplet collection efficiency 0.9 +nssl_ehw0 mp_nssl constant or max assumed graupel-droplet collection efficiency 0.9 +nssl_ehlw0 mp_nssl constant or max assumed hail-droplet collection efficiency 0.9 nssl_hail_on mp_nssl NSSL flag to activate the hail category .false. nssl_3moment mp_nssl NSSL flag to activate 3-moment for rain/graupel (and hail if activated).false. -nssl_ccn_on mp_nssl NSSL flag to activate the CCN category .true. +ssl_ccn_on mp_nssl NSSL flag to activate the CCN category .true. nssl_invertccn mp_nssl NSSL flag to treat CCN as activated or unactivated .true. -nssl_ehw0 mp_nssl NSSL graupel-droplet collection efficiency 0.9 -nssl_ehlw0 mp_nssl NSSL hail-droplet collection efficiency 0.9 \b Parameters \b related \b to \b gravity \b drag \b scheme \b options knob_ugwp_version cires_ugwp parameter selects a version of the UGWP implementation in FV3GFS-127L \n
        @@ -663,6 +667,13 @@ show some variables in the namelist that must match the SDF.
      • 4: kb inversed
      2 +iopt_diag \ref noampdrv options for surface 2-m t/q diagnostic approach: \n +
        +
      • 1: external GFS sfc_diag +
      • 2: original NoahMP 2-title +
      • 3: NoahMP2-title + internal GFS sfc_diag +
      + 2 mosaic_lu \ref lsm_ruc control for use of fractional landuse in RUC land surface model
      • 1: use of fractional landuse in RUC LSM @@ -702,7 +713,8 @@ show some variables in the namelist that must match the SDF.
      /0,0,1,0,5/ nst_anl gfs_phys_time_vary flag for NSST analysis in gcycle/sfcsub .false. -frac_grid fractional grid flag for fractional grid .false. +frac_grid GFS_suite_interstitial_2, GFS_radiation_surface,GFS_surface_composite_pre, GFS_surface_composite_post, GFS_phys_time_vary, sfc_nst_post, lsm_ruc, clm_lake flag for fractional grid .false. +frac_ice clm_lake, GFS_surface_composites_post flag for lake fractional ice when fractional grid is not in use .true. min_lakeice fractional grid minimum lake ice value 0.15d0 min_seaice fractional grid minimum sea ice value 1.0d-11 min_lake_height fractional grid minimum lake height value 250.0 @@ -714,6 +726,12 @@ show some variables in the namelist that must match the SDF.
    • negative when cplwav2atm=.true. - i.e. two way wave coupling
    0 +icplocn2atm satmedmfvdifq, sfc_diff, sfc_diag, sfc_nst, sfc_ocean air-sea flux options over ocean \n +
      +
    • 0: ocean current is not used in the computation of air-sea fluxes +
    • 1: including ocean current in the computation of air-sea fluxes +
    + 0 redrag sfc_diff flag for applying reduced drag coefficient for high wind over sea in GFS surface layer scheme .false. lheatstrg gfs_surface_generic_post flag for canopy heat storage parameterization .false. z0fac gfs_surface_generic_post surface roughness fraction factor 0.3 @@ -722,6 +740,31 @@ show some variables in the namelist that must match the SDF. iz0tlnd mynnsfc_wrapper flag for thermal roughness lengths over land in MYNN-SFCLAY 0 sfclay_compute_flux mynnsfc_wrapper flag for computing surface scalar fluxes in MYNN-SFCLAY .false. sfclay_compute_diag mynnsfc_wrapper flag for computing surface diagnostics in MYNN-SFCLAY .false. +thsfc_loc GFS_surface_composites_post, sfc_diff, sfc_diag, sfc_nst, noahmpdrv, sfc_sice flag for local .vs. standard potential temperature .true. +diag_flux sfc_diag flag for flux method in 2-m diagnostics .false. +diag_log sfc_diag flag for log method in 2-m diagnostics (for stable conditions): \n +
      +
    • .true.: use local (gridpoint) surface pressure to define potential temperature. This is the current GFS physics approach +
    • .false.: use reference pressure of 1000 hPa to define potential temperature. This is the alternative method proposed by GSL +
    + .false. +h0facu +h0facs +fscav_aero +lightning_threat +do_ccpp_suite_sim +fh_dfi_radar +radar_tten_limits +do_cap_suppress +\b RRFS-SD \b parameters +dust_drylimit_factor +dust_moist_correction +dust_moist_opt +dust_alpha +dust_gamma +wetdep_ls_alpha +ebb_dcycle +seas_opt diff --git a/physics/smoke_dust/rrfs_smoke_wrapper.F90 b/physics/smoke_dust/rrfs_smoke_wrapper.F90 index 37ffccb35..0e3ddda2a 100755 --- a/physics/smoke_dust/rrfs_smoke_wrapper.F90 +++ b/physics/smoke_dust/rrfs_smoke_wrapper.F90 @@ -36,7 +36,6 @@ module rrfs_smoke_wrapper contains !>\defgroup rrfs_smoke_wrapper rrfs-sd emission driver Module -!> \ingroup gsd_chem_group !! This is the rrfs-sd emission driver Module !> \section arg_table_rrfs_smoke_wrapper_init Argument Table From 1be281d7eae8d5dd479745a67fa30e7744273932 Mon Sep 17 00:00:00 2001 From: Man Zhang Date: Fri, 21 Jun 2024 11:08:16 -0600 Subject: [PATCH 21/80] save progress --- physics/CONV/SAMF/samfaerosols.F | 2 + physics/CONV/SAS/shalcnv.F | 15 +-- physics/CONV/progsigma_calc.f90 | 11 +- physics/GWD/drag_suite.F90 | 2 - physics/GWD/ugwpv1_gsldrag_post.F90 | 2 - physics/PBL/MYNN_EDMF/module_bl_mynn.F90 | 12 +- physics/PBL/SATMEDMF/satmedmfvdif.F | 3 - physics/Radiation/RRTMG/radlw_main.F90 | 114 +++++++++--------- .../RRTMGP/rrtmgp_lw_cloud_optics.F90 | 6 +- .../Radiation/RRTMGP/rrtmgp_lw_gas_optics.F90 | 5 +- physics/Radiation/RRTMGP/rrtmgp_lw_main.F90 | 8 +- physics/Radiation/RRTMGP/rrtmgp_sampling.F90 | 27 ++--- .../RRTMGP/rrtmgp_sw_cloud_optics.F90 | 3 + physics/Radiation/RRTMGP/rrtmgp_sw_main.F90 | 39 +++--- physics/Radiation/radiation_aerosols.f | 8 ++ physics/Radiation/radiation_cloud_overlap.F90 | 7 -- physics/Radiation/radiation_clouds.f | 4 +- physics/Radiation/radiation_tools.F90 | 7 +- physics/SFC_Layer/GFDL/module_sf_exchcoef.f90 | 3 +- physics/SFC_Layer/MYNN/module_sf_mynn.F90 | 35 +++--- physics/SFC_Layer/UFS/date_def.f | 2 + physics/SFC_Layer/UFS/sfc_diag.f | 5 +- physics/SFC_Models/Land/RUC/lsm_ruc.F90 | 2 +- .../SFC_Models/Land/RUC/module_sf_ruclsm.F90 | 2 +- physics/SFC_Models/Land/sfc_land.F90 | 13 -- physics/SFC_Models/SeaIce/CICE/sfc_cice.f | 13 -- physics/docs/ccpp_doxyfile | 40 +++--- physics/docs/pdftxt/CU_GF_deep.txt | 2 +- physics/docs/pdftxt/GFS_NOAHMP.txt | 2 +- physics/docs/pdftxt/GFS_OZPHYS.txt | 4 +- physics/docs/pdftxt/GFS_SATMEDMFVDIFQ.txt | 2 +- physics/docs/pdftxt/GFS_UGWPv0.txt | 2 +- physics/docs/pdftxt/THOMPSON.txt | 4 +- physics/photochem/h2o_def.f | 4 - physics/photochem/h2ointerp.f90 | 5 +- physics/photochem/module_ozphys.F90 | 44 +++---- 36 files changed, 195 insertions(+), 264 deletions(-) diff --git a/physics/CONV/SAMF/samfaerosols.F b/physics/CONV/SAMF/samfaerosols.F index 66faf1fb9..ade8f1b5a 100644 --- a/physics/CONV/SAMF/samfaerosols.F +++ b/physics/CONV/SAMF/samfaerosols.F @@ -1,3 +1,5 @@ +!>\file samfaerosols.F +!! module samfcnv_aerosols implicit none diff --git a/physics/CONV/SAS/shalcnv.F b/physics/CONV/SAS/shalcnv.F index 548ad8380..49d64a164 100644 --- a/physics/CONV/SAS/shalcnv.F +++ b/physics/CONV/SAS/shalcnv.F @@ -1,16 +1,12 @@ -!> \defgroup SASHAL Mass-Flux Shallow Convection -!! @{ -!! \brief The Mass-Flux shallow convection scheme parameterizes the effect of shallow convection on the environment much like the \ref SAS scheme with a few key modifications. Perhaps most importantly, no quasi-equilibrium assumption is necessary since the shallow cloud base mass flux is parameterized from the surface buoyancy flux. Further, there are no convective downdrafts, the entrainment rate is greater than for deep convection, and the shallow convection is limited to not extend over the level where \f$p=0.7p_{sfc}\f$. +!> \file shalcnv.F +!! Contains the entire SAS shallow convection scheme. + +!> \brief The Mass-Flux shallow convection scheme parameterizes the effect of shallow convection on the environment much like the \ref SAS scheme with a few key modifications. Perhaps most importantly, no quasi-equilibrium assumption is necessary since the shallow cloud base mass flux is parameterized from the surface buoyancy flux. Further, there are no convective downdrafts, the entrainment rate is greater than for deep convection, and the shallow convection is limited to not extend over the level where \f$p=0.7p_{sfc}\f$. !! !! This scheme was designed to replace the previous eddy-diffusivity approach to shallow convection with a mass-flux based approach as it is used for deep convection. Differences between the shallow and deep SAS schemes are presented in Han and Pan (2011) \cite han_and_pan_2011 . Like the deep scheme, it uses the working concepts put forth in Arakawa and Schubert (1974) \cite arakawa_and_schubert_1974 but includes modifications and simplifications from Grell (1993) \cite grell_1993 such as only one cloud type (the deepest possible, up to \f$p=0.7p_{sfc}\f$), rather than a spectrum based on cloud top heights or assumed entrainment rates, although it assumes no convective downdrafts. It contains many modifications associated with deep scheme as discussed in Han and Pan (2011) \cite han_and_pan_2011 , including the calculation of cloud top, a greater CFL-criterion-based maximum cloud base mass flux, and the inclusion of convective overshooting. !! !! \section diagram_sashal Calling Hierarchy Diagram !! \image html Shallow_SAS_Flowchart.png "Diagram depicting how the SAS shallow convection scheme is called from the GSM physics time loop" height=2cm -!! \section intraphysics Intraphysics Communication -!! This space is reserved for a description of how this scheme uses information from other scheme types and/or how information calculated in this scheme is used in other scheme types. - -!> \file shalcnv.F -!! Contains the entire SAS shallow convection scheme. module shalcnv implicit none @@ -90,7 +86,7 @@ end subroutine shalcnv_init !! \section arg_table_shalcnv_run Argument Table !! \htmlinclude shalcnv_run.html !! -!! @{ +!> @{ subroutine shalcnv_run( & & grav,cp,hvap,rv,fv,t0c,rd,cvap,cliq,eps,epsm1, & & im,km,jcap,delt,delp,prslp,psp,phil,qlc,qli, & @@ -1340,4 +1336,3 @@ end subroutine shalcnv_run end module shalcnv !> @} -!! @} diff --git a/physics/CONV/progsigma_calc.f90 b/physics/CONV/progsigma_calc.f90 index 469df49f6..76e01987c 100644 --- a/physics/CONV/progsigma_calc.f90 +++ b/physics/CONV/progsigma_calc.f90 @@ -1,3 +1,8 @@ +!>\file progsigma_calc.f90 +!! This file contains the subroutine that calculates the prognostic +!! updraft area fraction that is used for closure computations in +!! saSAS deep and shallow convection, based on a moisture budget +!! as described in Bengtsson et al. 2022 \cite Bengtsson_2022. module progsigma implicit none @@ -6,12 +11,6 @@ module progsigma contains -!>\file progsigma_calc.f90 -!! This file contains the subroutine that calculates the prognostic -!! updraft area fraction that is used for closure computations in -!! saSAS deep and shallow convection, based on a moisture budget -!! as described in Bengtsson et al. 2022 \cite Bengtsson_2022. - !>\ingroup SAMFdeep !>\ingroup SAMF_shal !> This subroutine computes a prognostic updraft area fraction diff --git a/physics/GWD/drag_suite.F90 b/physics/GWD/drag_suite.F90 index ff68f4216..7a9403939 100644 --- a/physics/GWD/drag_suite.F90 +++ b/physics/GWD/drag_suite.F90 @@ -6,9 +6,7 @@ module drag_suite contains -!> \defgroup gfs_drag_suite_mod GSL drag_suite Module !> This module contains the CCPP-compliant GSL orographic gravity wave drag scheme. -!> @{ !! !> \brief This subroutine initializes the orographic gravity wave drag scheme. !! diff --git a/physics/GWD/ugwpv1_gsldrag_post.F90 b/physics/GWD/ugwpv1_gsldrag_post.F90 index 8c6704dc5..fc1d0f622 100644 --- a/physics/GWD/ugwpv1_gsldrag_post.F90 +++ b/physics/GWD/ugwpv1_gsldrag_post.F90 @@ -5,7 +5,6 @@ module ugwpv1_gsldrag_post contains !>\defgroup ugwpv1_gsldrag_post ugwpv1_gsldrag Scheme Post -!! @{ !> \section arg_table_ugwpv1_gsldrag_post_run Argument Table !! \htmlinclude ugwpv1_gsldrag_post_run.html !! @@ -141,5 +140,4 @@ subroutine ugwpv1_gsldrag_post_run ( im, levs, ldiag_ugwp, & !===================================================================== end subroutine ugwpv1_gsldrag_post_run -!! @} end module ugwpv1_gsldrag_post diff --git a/physics/PBL/MYNN_EDMF/module_bl_mynn.F90 b/physics/PBL/MYNN_EDMF/module_bl_mynn.F90 index 9f90860c5..177bc05a8 100644 --- a/physics/PBL/MYNN_EDMF/module_bl_mynn.F90 +++ b/physics/PBL/MYNN_EDMF/module_bl_mynn.F90 @@ -351,11 +351,11 @@ MODULE module_bl_mynn ! ================================================================== !>\ingroup gp_mynnedmf -!! This subroutine is the GSD MYNN-EDNF PBL driver routine,which +!! This subroutine is the MYNN-EDNF PBL driver routine,which !! encompassed the majority of the subroutines that comprise the !! procedures that ultimately solve for tendencies of !! \f$U, V, \theta, q_v, q_c, and q_i\f$. -!!\section gen_mynn_bl_driver GSD mynn_bl_driver General Algorithm +!!\section gen_mynn_bl_driver mynn_bl_driver General Algorithm !> @{ SUBROUTINE mynn_bl_driver( & &initflag,restart,cycling, & @@ -1508,7 +1508,7 @@ END SUBROUTINE mynn_bl_driver !>\ingroup gp_mynnedmf !! This subroutine initializes the mixing length, TKE, \f$\theta^{'2}\f$, !! \f$q^{'2}\f$, and \f$\theta^{'}q^{'}\f$. -!!\section gen_mym_ini GSD MYNN-EDMF mym_initialize General Algorithm +!!\section gen_mym_ini MYNN-EDMF mym_initialize General Algorithm !> @{ SUBROUTINE mym_initialize ( & & kts,kte,xland, & @@ -1712,7 +1712,7 @@ END SUBROUTINE mym_initialize !!\param gh \f$G_H\f$ divided by \f$L^{2}/q^{2}\f$ (\f$s^{-2}\f$) !!\param sm stability function for momentum, at Level 2 !!\param sh stability function for heat, at Level 2 -!!\section gen_mym_level2 GSD MYNN-EDMF mym_level2 General Algorithm +!!\section gen_mym_level2 MYNN-EDMF mym_level2 General Algorithm !! @ { SUBROUTINE mym_level2 (kts,kte, & & dz, & @@ -2599,7 +2599,7 @@ END SUBROUTINE boulac_length !>\ingroup gp_mynnedmf !! This subroutine calculates the vertical diffusivity coefficients and the !! production terms for the turbulent quantities. -!>\section gen_mym_turbulence GSD mym_turbulence General Algorithm +!>\section gen_mym_turbulence mym_turbulence General Algorithm !! Two subroutines mym_level2() and mym_length() are called within this !!subrouine to collect variable to carry out successive calculations: !! - mym_level2() calculates the level 2 nondimensional wind shear \f$G_M\f$ @@ -5512,7 +5512,7 @@ end subroutine tridiag3 !!the TKE-method more during stable conditions (PBLH < 400 m). !!A variable tke threshold (TKEeps) is used since no hard-wired !!value could be found to work best in all conditions. -!>\section gen_get_pblh GSD get_pblh General Algorithm +!>\section gen_get_pblh get_pblh General Algorithm !> @{ SUBROUTINE GET_PBLH(KTS,KTE,zi,thetav1D,qke1D,zw1D,dz1D,landsea,kzi) diff --git a/physics/PBL/SATMEDMF/satmedmfvdif.F b/physics/PBL/SATMEDMF/satmedmfvdif.F index 79f7bbea1..77944cfb1 100644 --- a/physics/PBL/SATMEDMF/satmedmfvdif.F +++ b/physics/PBL/SATMEDMF/satmedmfvdif.F @@ -42,7 +42,6 @@ subroutine satmedmfvdif_init (satmedmf, end subroutine satmedmfvdif_init !> \defgroup satmedmf GFS Scale-aware TKE-based Moist Eddy-Diffusivity Mass-flux (TKE-EDMF) Scheme Module -!! @{ !! \brief This subroutine contains all of the logic for the !! scale-aware TKE-based moist eddy-diffusion mass-flux (TKE-EDMF) scheme. !! @@ -60,7 +59,6 @@ end subroutine satmedmfvdif_init !! -# A mass-flux approach is also used to represent the stratocumulus-top-induced turbulence !! (mfscu.f). !! \section detail_satmedmfvidf GFS satmedmfvdif Detailed Algorithm -!> @{ subroutine satmedmfvdif_run(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, & @@ -1542,6 +1540,5 @@ subroutine satmedmfvdif_run(im,km,ntrac,ntcw,ntiw,ntke, & !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! return end subroutine satmedmfvdif_run -!> @} end module satmedmfvdif diff --git a/physics/Radiation/RRTMG/radlw_main.F90 b/physics/Radiation/RRTMG/radlw_main.F90 index 7bc1ea80c..ed87f40fa 100644 --- a/physics/Radiation/RRTMG/radlw_main.F90 +++ b/physics/Radiation/RRTMG/radlw_main.F90 @@ -759,7 +759,7 @@ subroutine rrtmg_lw_run & end if endif ! end if_ilwcliq -!> -# Change random number seed value for each radiation invocation +!> - Change random number seed value for each radiation invocation !! (isubclw =1 or 2). if ( isubclw == 1 ) then ! advance prescribed permutation seed @@ -781,7 +781,7 @@ subroutine rrtmg_lw_run & lab_do_iplon : do iplon = 1, npts -!> -# Read surface emissivity. +!> - Read surface emissivity. if (sfemis(iplon) > eps .and. sfemis(iplon) <= 1.0) then ! input surface emissivity do j = 1, nbands semiss(j) = sfemis(iplon) @@ -795,7 +795,7 @@ subroutine rrtmg_lw_run & stemp = sfgtmp(iplon) ! surface ground temp if (iovr == iovr_dcorr) delgth= de_lgth(iplon) ! clouds decorr-length -!> -# Prepare atmospheric profile for use in rrtm. +!> - Prepare atmospheric profile for use in rrtm. ! the vertical index of internal array is from surface to top ! --- ... molecular amounts are input or converted to volume mixing ratio @@ -819,7 +819,7 @@ subroutine rrtmg_lw_run & dz(k) = dzlyr(iplon,k1) if (iovr == iovr_exp .or. iovr == iovr_exprand) alph(k) = alpha(iplon,k) ! alpha decorrelation -!> -# Set absorber amount for h2o, co2, and o3. +!> - Set absorber amount for h2o, co2, and o3. !test use ! h2ovmr(k)= max(f_zero,qlyr(iplon,k1)*amdw) ! input mass mixing ratio @@ -840,7 +840,7 @@ subroutine rrtmg_lw_run & colamt(k,3) = max(temcol(k), coldry(k)*o3vmr(k)) ! o3 enddo -!> -# Set up column amount for rare gases n2o,ch4,o2,co,ccl4,cf11,cf12, +!> - Set up column amount for rare gases n2o,ch4,o2,co,ccl4,cf11,cf12, !! cf22, convert from volume mixing ratio to molec/cm2 based on !! coldry (scaled to 1.0e-20). @@ -871,7 +871,7 @@ subroutine rrtmg_lw_run & enddo endif -!> -# Set aerosol optical properties. +!> - Set aerosol optical properties. do k = 1, nlay k1 = nlp1 - k @@ -881,7 +881,7 @@ subroutine rrtmg_lw_run & enddo enddo -!> -# Read cloud optical properties. +!> - Read cloud optical properties. if (ilwcliq > 0) then ! use prognostic cloud method do k = 1, nlay k1 = nlp1 - k @@ -906,7 +906,7 @@ subroutine rrtmg_lw_run & cldfrc(0) = f_one ! padding value only cldfrc(nlp1) = f_zero ! padding value only -!> -# Compute precipitable water vapor for diffusivity angle adjustments. +!> - Compute precipitable water vapor for diffusivity angle adjustments. tem1 = f_zero tem2 = f_zero @@ -1026,7 +1026,7 @@ subroutine rrtmg_lw_run & endif ! top_at_1 -!> -# Compute column amount for broadening gases. +!> - Compute column amount for broadening gases. do k = 1, nlay summol = f_zero @@ -1036,7 +1036,7 @@ subroutine rrtmg_lw_run & colbrd(k) = coldry(k) - summol enddo -!> -# Compute diffusivity angle adjustments. +!> - Compute diffusivity angle adjustments. tem1 = 1.80 tem2 = 1.50 @@ -1064,7 +1064,7 @@ subroutine rrtmg_lw_run & ! print *,' o3vmr ',o3vmr ! endif -!> -# For cloudy atmosphere, call cldprop() to set cloud optical +!> - For cloudy atmosphere, call cldprop() to set cloud optical !! properties. lcf1 = .false. @@ -1115,7 +1115,7 @@ subroutine rrtmg_lw_run & ! print *,' cldfrac',cldfrc ! endif -!> -# Calling setcoef() to compute various coefficients needed in +!> - Calling setcoef() to compute various coefficients needed in !! radiative transfer calculations. call setcoef & ! --- inputs: @@ -1150,7 +1150,7 @@ subroutine rrtmg_lw_run & ! print *,'indfor',indfor ! endif -!> -# Call taumol() to calculte the gaseous optical depths and Plank +!> - Call taumol() to calculte the gaseous optical depths and Plank !! fractions for each longwave spectral band. call taumol & @@ -1177,7 +1177,7 @@ subroutine rrtmg_lw_run & ! enddo ! endif -!> -# Call the radiative transfer routine based on cloud scheme +!> - Call the radiative transfer routine based on cloud scheme !! selection. Compute the upward/downward radiative fluxes, and !! heating rates for both clear or cloudy atmosphere. !!\n - call rtrn(): clouds are assumed as randomly overlaping in a @@ -1223,7 +1223,7 @@ subroutine rrtmg_lw_run & endif ! end if_isubclw_block -!> -# Save outputs. +!> - Save outputs. topflx(iplon)%upfxc = totuflux(nlay) topflx(iplon)%upfx0 = totuclfl(nlay) @@ -1441,11 +1441,11 @@ subroutine rlwinit( me, rad_hr_units, inc_minor_gas, ilwcliq, & endif endif -!> -# Setup default surface emissivity for each band. +!> - Setup default surface emissivity for each band. semiss0(:) = f_one -!> -# Setup constant factors for flux and heating rate +!> - Setup constant factors for flux and heating rate !! the 1.0e-2 is to convert pressure from mb to \f$N/m^2\f$. pival = 2.0 * asin(f_one) @@ -1460,7 +1460,7 @@ subroutine rlwinit( me, rad_hr_units, inc_minor_gas, ilwcliq, & heatfac = con_g * 1.0e-2 / con_cp ! (in k/second) endif -!> -# Compute lookup tables for transmittance, tau transition +!> - Compute lookup tables for transmittance, tau transition !! function, and clear sky tau (for the cloudy sky radiative !! transfer). tau is computed as a function of the tau !! transition function, transmittance is calculated as a @@ -1668,7 +1668,7 @@ subroutine cldprop & enddo enddo -!> -# Compute cloud radiative properties for a cloudy column: +!> - Compute cloud radiative properties for a cloudy column: !!\n - Compute cloud radiative properties for rain and snow (tauran,tausnw) !!\n - Calculation of absorption coefficients due to water clouds(tauliq) !!\n - Calculation of absorption coefficients due to ice clouds (tauice). @@ -1796,7 +1796,7 @@ subroutine cldprop & endif lab_if_ilwcliq -!> -# if GFS_typedefs::isubclw > 0, call mcica_subcol() to distribute +!> - if GFS_typedefs::isubclw > 0, call mcica_subcol() to distribute !! cloud properties to each g-point. if ( isubclw > 0 ) then ! mcica sub-col clouds approx @@ -1894,7 +1894,7 @@ subroutine mcica_subcol & ! !===> ... begin here ! -!> -# Call random_setseed() to advance randum number generator by ipseed values. +!> - Call random_setseed() to advance randum number generator by ipseed values. call random_setseed & ! --- inputs: @@ -1903,7 +1903,7 @@ subroutine mcica_subcol & & stat & & ) -!> -# Sub-column set up according to overlapping assumption: +!> - Sub-column set up according to overlapping assumption: !! - For random overlap, pick a random value at every level !! - For max-random overlap, pick a random value at every level !! - For maximum overlap, pick same random numebr at every level @@ -2092,7 +2092,7 @@ subroutine mcica_subcol & end select -!> -# Generate subcolumns for homogeneous clouds. +!> - Generate subcolumns for homogeneous clouds. do k = 1, nlay tem1 = f_one - cldf(k) @@ -2243,7 +2243,7 @@ subroutine setcoef & ! !===> ... begin here ! -!> -# Calculate information needed by the radiative transfer routine +!> - Calculate information needed by the radiative transfer routine !! that is specific to this atmosphere, especially some of the !! coefficients and indices needed to compute the optical depths !! by interpolating data from stored reference atmospheres. @@ -2260,7 +2260,7 @@ subroutine setcoef & enddo ! --- ... begin layer loop -!> -# Calculate the integrated Planck functions for each band at the +!> - Calculate the integrated Planck functions for each band at the !! surface, level, and layer temperatures. laytrop = 0 @@ -2282,7 +2282,7 @@ subroutine setcoef & & * (totplnk(indlev+1,i) - totplnk(indlev,i)) ) enddo -!> -# Find the two reference pressures on either side of the +!> - Find the two reference pressures on either side of the !! layer pressure. store them in jp and jp1. store in fp the !! fraction of the difference (in ln(pressure)) between these !! two values that the layer pressure lies. @@ -2294,7 +2294,7 @@ subroutine setcoef & fp = max(f_zero, min(f_one, 5.0*(preflog(jp(k))-plog) )) !org fp = 5.0 * (preflog(jp(k)) - plog) -!> -# Determine, for each reference pressure (jp and jp1), which +!> - Determine, for each reference pressure (jp and jp1), which !! reference temperature (these are different for each !! reference pressure) is nearest the layer temperature but does !! not exceed it. store these indices in jt and jt1, resp. @@ -2312,7 +2312,7 @@ subroutine setcoef & !org ft = tem1 - float(jt (k) - 3) !org ft1 = tem2 - float(jt1(k) - 3) -!> -# We have now isolated the layer ln pressure and temperature, +!> - We have now isolated the layer ln pressure and temperature, !! between two reference pressures and two reference temperatures !!(for each reference pressure). we multiply the pressure !! fraction fp with the appropriate temperature fractions to get @@ -2328,7 +2328,7 @@ subroutine setcoef & forfac(k) = pavel(k)*stpfac / (tavel(k)*(1.0 + h2ovmr(k))) selffac(k) = h2ovmr(k) * forfac(k) -!> -# Set up factors needed to separately include the minor gases +!> - Set up factors needed to separately include the minor gases !! in the calculation of absorption coefficient. scaleminor(k) = pavel(k) / tavel(k) @@ -2338,7 +2338,7 @@ subroutine setcoef & indminor(k) = min(18, max(1, int(tem1))) minorfrac(k) = tem1 - float(indminor(k)) -!> -# If the pressure is less than ~100mb, perform a different +!> - If the pressure is less than ~100mb, perform a different !! set of species interpolations. if (plog > 4.56) then @@ -2349,14 +2349,14 @@ subroutine setcoef & indfor(k) = min(2, max(1, int(tem1))) forfrac(k) = tem1 - float(indfor(k)) -!> -# Set up factors needed to separately include the water vapor +!> - Set up factors needed to separately include the water vapor !! self-continuum in the calculation of absorption coefficient. tem1 = (tavel(k) - 188.0) / 7.2 indself(k) = min(9, max(1, int(tem1)-7)) selffrac(k) = tem1 - float(indself(k) + 7) -!> -# Setup reference ratio to be used in calculation of binary +!> - Setup reference ratio to be used in calculation of binary !! species parameter in lower atmosphere. rfrate(k,1,1) = chi_mls(1,jp(k)) / chi_mls(2,jp(k)) @@ -2383,7 +2383,7 @@ subroutine setcoef & indself(k) = 0 selffrac(k) = f_zero -!> -# Setup reference ratio to be used in calculation of binary +!> - Setup reference ratio to be used in calculation of binary !! species parameter in upper atmosphere. rfrate(k,1,1) = chi_mls(1,jp(k)) / chi_mls(2,jp(k)) @@ -2394,7 +2394,7 @@ subroutine setcoef & endif -!> -# Rescale \a selffac and \a forfac for use in taumol. +!> - Rescale \a selffac and \a forfac for use in taumol. selffac(k) = colamt(k,1) * selffac(k) forfac(k) = colamt(k,1) * forfac(k) @@ -2613,7 +2613,7 @@ subroutine rtrn & radtotd = f_zero radclrd = f_zero -!> -# Downward radiative transfer loop. +!> - Downward radiative transfer loop. do k = nlay, 1, -1 @@ -2692,7 +2692,7 @@ subroutine rtrn & enddo ! end do_k_loop -!> -# Compute spectral emissivity & reflectance, include the +!> - Compute spectral emissivity & reflectance, include the !! contribution of spectrally varying longwave emissivity and !! reflection from the surface to the upward radiative transfer. @@ -2702,15 +2702,15 @@ subroutine rtrn & reflct = f_one - semiss(ib) rad0 = semiss(ib) * fracs(ig,1) * pklay(ib,0) -!> -# Compute total sky radiance. +!> - Compute total sky radiance. radtotu = rad0 + reflct*radtotd toturad(0,ib) = toturad(0,ib) + radtotu -!> -# Compute clear sky radiance +!> - Compute clear sky radiance radclru = rad0 + reflct*radclrd clrurad(0,ib) = clrurad(0,ib) + radclru -!> -# Upward radiative transfer loop. +!> - Upward radiative transfer loop. do k = 1, nlay clfr = cldfrc(k) @@ -2746,7 +2746,7 @@ subroutine rtrn & enddo ! end do_ig_loop -!> -# Process longwave output from band for total and clear streams. +!> - Process longwave output from band for total and clear streams. !! Calculate upward, downward, and net flux. flxfac = wtdiff * fluxfac @@ -2999,7 +2999,7 @@ subroutine rtrnmr & if (cldfrc(k) > eps) then -!> -# Setup maximum/random cloud overlap. +!> - Setup maximum/random cloud overlap. if (cldfrc(k+1) >= cldfrc(k)) then if (lstcldu(k)) then @@ -3143,7 +3143,7 @@ subroutine rtrnmr & enddo -!> -# Initialize for radiative transfer +!> - Initialize for radiative transfer do ib = 1, NBANDS do k = 0, NLAY @@ -3169,7 +3169,7 @@ subroutine rtrnmr & radtotd = f_zero radclrd = f_zero -!> -# Downward radiative transfer loop: +!> - Downward radiative transfer loop: do k = nlay, 1, -1 @@ -3266,7 +3266,7 @@ subroutine rtrnmr & enddo ! end do_k_loop -!> -# Compute spectral emissivity & reflectance, include the +!> - Compute spectral emissivity & reflectance, include the !! contribution of spectrally varying longwave emissivity and !! reflection from the surface to the upward radiative transfer. @@ -3276,15 +3276,15 @@ subroutine rtrnmr & reflct = f_one - semiss(ib) rad0 = semiss(ib) * fracs(ig,1) * pklay(ib,0) -!> -# Compute total sky radiance. +!> - Compute total sky radiance. radtotu = rad0 + reflct*radtotd toturad(0,ib) = toturad(0,ib) + radtotu -!> -# Compute clear sky radiance. +!> - Compute clear sky radiance. radclru = rad0 + reflct*radclrd clrurad(0,ib) = clrurad(0,ib) + radclru -!> -# Upward radiative transfer loop: +!> - Upward radiative transfer loop: do k = 1, nlay @@ -3338,7 +3338,7 @@ subroutine rtrnmr & enddo ! end do_ig_loop -!> -# Process longwave output from band for total and clear streams. +!> - Process longwave output from band for total and clear streams. !! calculate upward, downward, and net flux. flxfac = wtdiff * fluxfac @@ -3588,7 +3588,7 @@ subroutine rtrnmc & radtotd = f_zero radclrd = f_zero -!> -# Downward radiative transfer loop. +!> - Downward radiative transfer loop. !!\n - Clear sky, gases contribution !!\n - Total sky, gases+clouds contribution !!\n - Cloudy layer @@ -3672,7 +3672,7 @@ subroutine rtrnmc & enddo ! end do_k_loop -!> -# Compute spectral emissivity & reflectance, include the +!> - Compute spectral emissivity & reflectance, include the !! contribution of spectrally varying longwave emissivity and !! reflection from the surface to the upward radiative transfer. @@ -3682,15 +3682,15 @@ subroutine rtrnmc & reflct = f_one - semiss(ib) rad0 = semiss(ib) * fracs(ig,1) * pklay(ib,0) -!> -# Compute total sky radiance. +!> - Compute total sky radiance. radtotu = rad0 + reflct*radtotd toturad(0,ib) = toturad(0,ib) + radtotu -!> -# Compute clear sky radiance. +!> - Compute clear sky radiance. radclru = rad0 + reflct*radclrd clrurad(0,ib) = clrurad(0,ib) + radclru -!> -# Upward radiative transfer loop. +!> - Upward radiative transfer loop. !!\n - Compute total sky radiance !!\n - Compute clear sky radiance @@ -3731,7 +3731,7 @@ subroutine rtrnmc & enddo ! end do_ig_loop -!> -# Process longwave output from band for total and clear streams. +!> - Process longwave output from band for total and clear streams. !! Calculate upward, downward, and net flux. flxfac = wtdiff * fluxfac @@ -3750,7 +3750,7 @@ subroutine rtrnmc & totdclfl(k) = totdclfl(k) * flxfac enddo -!> -# Calculate net fluxes and heating rates. +!> - Calculate net fluxes and heating rates. fnet(0) = totuflux(0) - totdflux(0) do k = 1, nlay @@ -3759,7 +3759,7 @@ subroutine rtrnmc & htr (k) = (fnet(k-1) - fnet(k)) * rfdelp(k) enddo -!> -# Optional clear sky heating rates. +!> - Optional clear sky heating rates. if ( lhlw0 ) then fnetc(0) = totuclfl(0) - totdclfl(0) @@ -3769,7 +3769,7 @@ subroutine rtrnmc & enddo endif -!> -# Optional spectral band heating rates. +!> - Optional spectral band heating rates. if ( lhlwb ) then do ib = 1, nbands fnet(0) = (toturad(0,ib) - totdrad(0,ib)) * flxfac diff --git a/physics/Radiation/RRTMGP/rrtmgp_lw_cloud_optics.F90 b/physics/Radiation/RRTMGP/rrtmgp_lw_cloud_optics.F90 index 059086a97..bcac97595 100644 --- a/physics/Radiation/RRTMGP/rrtmgp_lw_cloud_optics.F90 +++ b/physics/Radiation/RRTMGP/rrtmgp_lw_cloud_optics.F90 @@ -1,8 +1,5 @@ !> \file rrtmgp_lw_cloud_optics.F90 -!! -!> \defgroup rrtmgp_lw_cloud_optics rrtmgp_lw_cloud_optics.F90 -!! -!! \brief This module contains two routines: The first initializes data and functions +!! This module contains two routines: The first initializes data and functions !! needed to compute the longwave cloud radiative properteis in RRTMGP. The second routine !! is a ccpp scheme within the "radiation loop", where the shortwave optical prperties !! (optical-depth, single-scattering albedo, asymmetry parameter) are computed for ALL @@ -75,6 +72,7 @@ module rrtmgp_lw_cloud_optics ! ###################################################################################### ! SUBROUTINE rrtmgp_lw_cloud_optics_init() ! ###################################################################################### +!> subroutine rrtmgp_lw_cloud_optics_init(rrtmgp_root_dir, rrtmgp_lw_file_clouds, & doGP_cldoptics_PADE, doGP_cldoptics_LUT, nrghice, mpicomm, mpirank, mpiroot, & errmsg, errflg) diff --git a/physics/Radiation/RRTMGP/rrtmgp_lw_gas_optics.F90 b/physics/Radiation/RRTMGP/rrtmgp_lw_gas_optics.F90 index 7cf80e3f3..81c4687f3 100644 --- a/physics/Radiation/RRTMGP/rrtmgp_lw_gas_optics.F90 +++ b/physics/Radiation/RRTMGP/rrtmgp_lw_gas_optics.F90 @@ -1,8 +1,5 @@ !> \file rrtmgp_lw_gas_optics.F90 -!! -!> \defgroup rrtmgp_lw_gas_optics rrtmgp_lw_gas_optics.F90 -!! -!! \brief This module contains two routines: One to initialize the k-distribution data +!! This module contains two routines: One to initialize the k-distribution data !! and functions needed to compute the longwave gaseous optical properties in RRTMGP. !! The second routine is a ccpp scheme within the "radiation loop", where the longwave !! optical prperties (optical-depth) are computed for clear-sky conditions (no aerosols). diff --git a/physics/Radiation/RRTMGP/rrtmgp_lw_main.F90 b/physics/Radiation/RRTMGP/rrtmgp_lw_main.F90 index c471f89c5..39792eab7 100644 --- a/physics/Radiation/RRTMGP/rrtmgp_lw_main.F90 +++ b/physics/Radiation/RRTMGP/rrtmgp_lw_main.F90 @@ -1,9 +1,5 @@ -! ########################################################################################### !> \file rrtmgp_lw_main.F90 -!! -!> \defgroup rrtmgp_lw_main rrtmgp_lw_main.F90 -!! -!! \brief This module contains the longwave RRTMGP radiation scheme. +!! This file contains the longwave RRTMGP radiation scheme. !! ! ########################################################################################### module rrtmgp_lw_main @@ -29,7 +25,6 @@ module rrtmgp_lw_main public rrtmgp_lw_main_init, rrtmgp_lw_main_run contains - ! ######################################################################################### !! \section arg_table_rrtmgp_lw_main_init !! \htmlinclude rrtmgp_lw_main_int.html !! @@ -39,7 +34,6 @@ module rrtmgp_lw_main !! !! \section rrtmgp_lw_main_init !> @{ - ! ######################################################################################### subroutine rrtmgp_lw_main_init(rrtmgp_root_dir, rrtmgp_lw_file_gas, rrtmgp_lw_file_clouds,& active_gases_array, doGP_cldoptics_PADE, doGP_cldoptics_LUT, doGP_sgs_pbl, & doGP_sgs_cnv, nrghice, mpicomm, mpirank, mpiroot, nLay, rrtmgp_phys_blksz, & diff --git a/physics/Radiation/RRTMGP/rrtmgp_sampling.F90 b/physics/Radiation/RRTMGP/rrtmgp_sampling.F90 index 9e2360083..b2f37f219 100644 --- a/physics/Radiation/RRTMGP/rrtmgp_sampling.F90 +++ b/physics/Radiation/RRTMGP/rrtmgp_sampling.F90 @@ -1,4 +1,5 @@ -! This code is part of RRTM for GCM Applications - Parallel (RRTMGP) +!>\file rrtmgp_sampling.F90 +!! This code is part of RRTM for GCM Applications - Parallel (RRTMGP) ! ! Contacts: Robert Pincus and Eli Mlawer ! email: rrtmgp@aer.com @@ -30,12 +31,8 @@ module rrtmgp_sampling private public :: draw_samples, sampled_mask contains - ! ------------------------------------------------------------------------------------------------- - ! - ! Apply a T/F sampled cloud mask to cloud optical properties defined by band to produce - ! McICA-sampled cloud optical properties - ! - ! ------------------------------------------------------------------------------------------------- +!> Apply a T/F sampled cloud mask to cloud optical properties defined by band to produce +!! McICA-sampled cloud optical properties function draw_samples(cloud_mask,do_twostream,clouds,clouds_sampled) result(error_msg) ! Inputs logical, dimension(:,:,:), intent(in ) :: cloud_mask ! Dimensions ncol,nlay,ngpt @@ -76,11 +73,8 @@ function draw_samples(cloud_mask,do_twostream,clouds,clouds_sampled) result(erro end select end select end function draw_samples - ! ------------------------------------------------------------------------------------------------- - ! - ! Generate a McICA-sampled cloud mask - ! - ! ------------------------------------------------------------------------------------------------- + +!> Generate a McICA-sampled cloud mask subroutine sampled_mask(randoms, cloud_frac, cloud_mask, overlap_param, randoms2) ! Inputs real(wp), dimension(:,:,:), intent(in ) :: randoms ! ngpt,nlay,ncol @@ -180,12 +174,9 @@ subroutine sampled_mask(randoms, cloud_frac, cloud_mask, overlap_param, randoms2 end do ! END LOOP: Columns end subroutine sampled_mask - ! ------------------------------------------------------------------------------------------------- - ! - ! Apply a true/false cloud mask to a homogeneous field - ! This could be a kernel - ! - ! ------------------------------------------------------------------------------------------------- + +!> Apply a true/false cloud mask to a homogeneous field +!! This could be a kernel subroutine apply_cloud_mask(ncol,nlay,nbnd,ngpt,band_lims_gpt,cloud_mask,input_field,sampled_field) integer, intent(in ) :: ncol,nlay,nbnd,ngpt integer, dimension(2,nbnd), intent(in ) :: band_lims_gpt diff --git a/physics/Radiation/RRTMGP/rrtmgp_sw_cloud_optics.F90 b/physics/Radiation/RRTMGP/rrtmgp_sw_cloud_optics.F90 index 552fda295..f3bc656fc 100644 --- a/physics/Radiation/RRTMGP/rrtmgp_sw_cloud_optics.F90 +++ b/physics/Radiation/RRTMGP/rrtmgp_sw_cloud_optics.F90 @@ -1,3 +1,6 @@ +!>\file rrtmgp_sw_cloud_optics.F90 +!! + module rrtmgp_sw_cloud_optics use machine, only: kind_phys use mo_rte_kind, only: wl diff --git a/physics/Radiation/RRTMGP/rrtmgp_sw_main.F90 b/physics/Radiation/RRTMGP/rrtmgp_sw_main.F90 index b350334a3..ab379cc9e 100644 --- a/physics/Radiation/RRTMGP/rrtmgp_sw_main.F90 +++ b/physics/Radiation/RRTMGP/rrtmgp_sw_main.F90 @@ -1,5 +1,6 @@ -! ########################################################################################### -! ########################################################################################### +!>\file rrtmgp_sw_main.F90 +!! + module rrtmgp_sw_main use mpi_f08 use machine, only: kind_phys, kind_dbl_prec @@ -28,7 +29,7 @@ module rrtmgp_sw_main ! ######################################################################################### ! SUBROUTINE rrtmgp_sw_main_init ! ######################################################################################### -!! \section arg_table_rrtmgp_sw_main_init +!> \section arg_table_rrtmgp_sw_main_init !! \htmlinclude rrtmgp_sw_main_init.html !! subroutine rrtmgp_sw_main_init(rrtmgp_root_dir, rrtmgp_sw_file_gas, rrtmgp_sw_file_clouds,& @@ -38,30 +39,30 @@ subroutine rrtmgp_sw_main_init(rrtmgp_root_dir, rrtmgp_sw_file_gas, rrtmgp_sw_fi ! Inputs character(len=128),intent(in) :: & - rrtmgp_root_dir, & ! RTE-RRTMGP root directory - rrtmgp_sw_file_clouds, & ! RRTMGP file containing K-distribution data - rrtmgp_sw_file_gas ! RRTMGP file containing cloud-optics data + rrtmgp_root_dir, & !< RTE-RRTMGP root directory + rrtmgp_sw_file_clouds, & !< RRTMGP file containing K-distribution data + rrtmgp_sw_file_gas !< RRTMGP file containing cloud-optics data character(len=*), dimension(:), intent(in) :: & - active_gases_array ! List of active gases from namelist as array) + active_gases_array !< List of active gases from namelist as array) logical, intent(in) :: & - doGP_cldoptics_PADE, & ! Use RRTMGP cloud-optics: PADE approximation? - doGP_cldoptics_LUT, & ! Use RRTMGP cloud-optics: LUTs? - doGP_sgs_pbl, & ! Flag to include sgs PBL clouds - doGP_sgs_cnv ! Flag to include sgs convective clouds + doGP_cldoptics_PADE, & !< Use RRTMGP cloud-optics: PADE approximation? + doGP_cldoptics_LUT, & !< Use RRTMGP cloud-optics: LUTs? + doGP_sgs_pbl, & !< Flag to include sgs PBL clouds + doGP_sgs_cnv !< Flag to include sgs convective clouds integer, intent(inout) :: & - nrghice ! Number of ice-roughness categories + nrghice !< Number of ice-roughness categories type(MPI_Comm),intent(in) :: & - mpicomm ! MPI communicator + mpicomm !< MPI communicator integer,intent(in) :: & - mpirank, & ! Current MPI rank - mpiroot, & ! Master MPI rank - rrtmgp_phys_blksz, & ! Number of horizontal points to process at once. + mpirank, & !< Current MPI rank + mpiroot, & !< Master MPI rank + rrtmgp_phys_blksz, & !< Number of horizontal points to process at once. nLay ! Outputs character(len=*), intent(out) :: & - errmsg ! CCPP error message + errmsg !< CCPP error message integer, intent(out) :: & - errflg ! CCPP error code + errflg !< CCPP error code ! Initialize CCPP error handling variables errmsg = '' @@ -81,7 +82,7 @@ end subroutine rrtmgp_sw_main_init ! ######################################################################################### ! SUBROUTINE rrtmgp_sw_main_run ! ######################################################################################### -!! \section arg_table_rrtmgp_sw_main_run +!> \section arg_table_rrtmgp_sw_main_run !! \htmlinclude rrtmgp_sw_main_run.html !! subroutine rrtmgp_sw_main_run(doSWrad, doSWclrsky, top_at_1, doGP_sgs_cnv, doGP_sgs_pbl, & diff --git a/physics/Radiation/radiation_aerosols.f b/physics/Radiation/radiation_aerosols.f index bbd2f25cb..0a906fcf3 100644 --- a/physics/Radiation/radiation_aerosols.f +++ b/physics/Radiation/radiation_aerosols.f @@ -3871,6 +3871,8 @@ subroutine gocart_aerinit & ! ================= !----------------------------- +!> read GMAO pre-tabultaed aerosol optical data for dust, seasalt, ! +!! sulfate, black carbon, and organic carbon aerosols subroutine rd_gocart_luts !............................. ! --- inputs: (in scope variables, module variables) @@ -4073,6 +4075,10 @@ end subroutine rd_gocart_luts !----------------------------------- !-------------------------------- +!> compute mean aerosol optical properties over each sw radiation +!! spectral band for each of the species components. This program +!! follows optavg routine (in turn follows gfdl's approach for thick +!! cloud opertical property in sw radiation scheme (2000). subroutine optavg_gocart !................................ ! --- inputs: (in-scope variables, module variables) @@ -4527,6 +4533,8 @@ subroutine aer_property_gocart & ! ================= !-------------------------------- +!> compute aerosols optical properties in NSWLWBD bands for gocart +!! aerosol species subroutine aeropt !................................ diff --git a/physics/Radiation/radiation_cloud_overlap.F90 b/physics/Radiation/radiation_cloud_overlap.F90 index 737b9be61..e69adcb7f 100644 --- a/physics/Radiation/radiation_cloud_overlap.F90 +++ b/physics/Radiation/radiation_cloud_overlap.F90 @@ -15,9 +15,6 @@ module module_radiation_cloud_overlap contains -!>\defgroup rad_cld_ovr_mod Radiation Cloud Overlap Module -!! This module contains the calculation of cloud overlap parameters for both RRTMG and RRTMGP. -!>@{ ! ###################################################################################### ! Hogan et al. (2010) ! "Effect of improving representation of horizontal and vertical cloud structure on the @@ -92,9 +89,6 @@ subroutine cmp_dcorr_lgth_oreopoulos(nCol, lat, juldat, yearlength, dcorr_lgth) end subroutine cmp_dcorr_lgth_oreopoulos - ! ###################################################################################### - ! - ! ###################################################################################### !>This subroutine provides the alpha cloud overlap parameter for both RRTMG and RRTMGP subroutine get_alpha_exper(nCol, nLay, iovr, iovr_exprand, dzlay, & dcorr_lgth, cld_frac, alpha) @@ -143,5 +137,4 @@ subroutine get_alpha_exper(nCol, nLay, iovr, iovr_exprand, dzlay, & return end subroutine get_alpha_exper -!>@} end module module_radiation_cloud_overlap diff --git a/physics/Radiation/radiation_clouds.f b/physics/Radiation/radiation_clouds.f index 979405cdb..286b2535b 100644 --- a/physics/Radiation/radiation_clouds.f +++ b/physics/Radiation/radiation_clouds.f @@ -1712,7 +1712,7 @@ end subroutine progcld_gfdl_lin !----------------------------------- !----------------------------------- -!! This subroutine computes cloud related quantities using +!> This subroutine computes cloud related quantities using !! Ferrier-Aligo cloud microphysics scheme. subroutine progcld_fer_hires & & ( plyr,plvl,tlyr,tvly,qlyr,qstl,rhly,clw, & ! --- inputs: @@ -1960,7 +1960,7 @@ end subroutine progcld_fer_hires !................................... -! This subroutine is used by Thompson/WSM6/NSSL cloud microphysics (EMC) +!> This subroutine is used by Thompson/WSM6/NSSL cloud microphysics (EMC) subroutine progcld_thompson_wsm6 & & ( plyr,plvl,tlyr,qlyr,qstl,rhly,clw, & ! --- inputs: & xlat,xlon,slmsk,dz,delp, & diff --git a/physics/Radiation/radiation_tools.F90 b/physics/Radiation/radiation_tools.F90 index 28384f32a..bc7a81db8 100644 --- a/physics/Radiation/radiation_tools.F90 +++ b/physics/Radiation/radiation_tools.F90 @@ -11,8 +11,7 @@ module radiation_tools rrtmgp_minT ! Minimum temperature allowed in RRTMGP contains - ! ######################################################################################### - ! ######################################################################################### +!> subroutine cmp_tlev(nCol,nLev,minP,p_lay,t_lay,p_lev,tsfc,t_lev) ! Inputs integer, intent(in) :: & @@ -83,9 +82,7 @@ subroutine cmp_tlev(nCol,nLev,minP,p_lay,t_lay,p_lev,tsfc,t_lev) end subroutine cmp_tlev - ! ######################################################################################### - ! SUBROUTINE check_error_msg - ! ######################################################################################### +!> subroutine check_error_msg(routine_name, error_msg) character(len=*), intent(in) :: & error_msg, routine_name diff --git a/physics/SFC_Layer/GFDL/module_sf_exchcoef.f90 b/physics/SFC_Layer/GFDL/module_sf_exchcoef.f90 index 6ec9ed835..e82fd4371 100644 --- a/physics/SFC_Layer/GFDL/module_sf_exchcoef.f90 +++ b/physics/SFC_Layer/GFDL/module_sf_exchcoef.f90 @@ -1,4 +1,5 @@ -! This MODULE holds the routines that calculate air-sea exchange coefficients +!>\file module_sf_exchcoef.f90 +!! This MODULE holds the routines that calculate air-sea exchange coefficients MODULE module_sf_exchcoef CONTAINS diff --git a/physics/SFC_Layer/MYNN/module_sf_mynn.F90 b/physics/SFC_Layer/MYNN/module_sf_mynn.F90 index 3d847348d..6a3eab8b6 100644 --- a/physics/SFC_Layer/MYNN/module_sf_mynn.F90 +++ b/physics/SFC_Layer/MYNN/module_sf_mynn.F90 @@ -3167,19 +3167,18 @@ SUBROUTINE znot_m_v6(uref, znotm) END SUBROUTINE znot_m_v6 !-------------------------------------------------------------------- !>\ingroup mynn_sfc -!! - SUBROUTINE znot_t_v6(uref, znott) - - !$acc routine seq - IMPLICIT NONE -!> Calculate scalar roughness over water with input 10-m wind +!> Calculate scalar roughness over water with input 10-m wind !! For low-to-moderate winds, try to match the Ck-U10 relationship from COARE algorithm !! For high winds, try to retain the Ck-U10 relationship of FY2015 HWRF !! !!\author Bin Liu, NOAA/NCEP/EMC 2017 -! +! ! uref(m/s) : wind speed at 10-m height ! znott(meter): scalar roughness scale over water + SUBROUTINE znot_t_v6(uref, znott) + + !$acc routine seq + IMPLICIT NONE ! REAL(kind_phys), INTENT(IN) :: uref REAL(kind_phys), INTENT(OUT):: znott @@ -3234,17 +3233,16 @@ END SUBROUTINE znot_t_v6 !------------------------------------------------------------------- !>\ingroup mynn_sfc -!! - SUBROUTINE znot_m_v7(uref, znotm) - - !$acc routine seq - IMPLICIT NONE !> Calculate areodynamical roughness over water with input 10-m wind !! For low-to-moderate winds, try to match the Cd-U10 relationship from COARE V3.5 (Edson et al. 2013) !! For high winds, try to fit available observational data !! Comparing to znot_t_v6, slightly decrease Cd for higher wind speed -!! +!! !!\author Bin Liu, NOAA/NCEP/EMC 2018 + SUBROUTINE znot_m_v7(uref, znotm) + + !$acc routine seq + IMPLICIT NONE ! ! uref(m/s) : wind speed at 10-m height ! znotm(meter): areodynamical roughness scale over water @@ -3284,17 +3282,16 @@ SUBROUTINE znot_m_v7(uref, znotm) END SUBROUTINE znot_m_v7 !-------------------------------------------------------------------- !>\ingroup mynn_sfc -!! - SUBROUTINE znot_t_v7(uref, znott) - - !$acc routine seq - IMPLICIT NONE !> Calculate scalar roughness over water with input 10-m wind !! For low-to-moderate winds, try to match the Ck-U10 relationship from COARE algorithm !! For high winds, try to retain the Ck-U10 relationship of FY2015 HWRF !! To be compatible with the slightly decreased Cd for higher wind speed -!! +!! !!\author Bin Liu, NOAA/NCEP/EMC 2018 + SUBROUTINE znot_t_v7(uref, znott) + + !$acc routine seq + IMPLICIT NONE ! ! uref(m/s) : wind speed at 10-m height ! znott(meter): scalar roughness scale over water diff --git a/physics/SFC_Layer/UFS/date_def.f b/physics/SFC_Layer/UFS/date_def.f index fceb4334f..958d8b8b9 100644 --- a/physics/SFC_Layer/UFS/date_def.f +++ b/physics/SFC_Layer/UFS/date_def.f @@ -1,3 +1,5 @@ +!>\file date_def.f +!! module date_def use machine, ONLY: kind_phys implicit none diff --git a/physics/SFC_Layer/UFS/sfc_diag.f b/physics/SFC_Layer/UFS/sfc_diag.f index b0432df6f..2676d24db 100644 --- a/physics/SFC_Layer/UFS/sfc_diag.f +++ b/physics/SFC_Layer/UFS/sfc_diag.f @@ -6,13 +6,10 @@ module sfc_diag !> \defgroup sfc_diag_mod GFS sfc_diag module !! This module contains the land surface diagose calculation. -!> @{ !! \section arg_table_sfc_diag_run Argument Table !! \htmlinclude sfc_diag_run.html !! -!! \section general General Algorithm -!! \section detailed Detailed Algorithm -!! @{ +!> @{ subroutine sfc_diag_run (im,xlat_d,xlon_d, & & lsm,lsm_ruc,grav,cp,eps,epsm1,con_rocp, & & con_karman, & diff --git a/physics/SFC_Models/Land/RUC/lsm_ruc.F90 b/physics/SFC_Models/Land/RUC/lsm_ruc.F90 index ba1b1b4e9..c23d73e0b 100644 --- a/physics/SFC_Models/Land/RUC/lsm_ruc.F90 +++ b/physics/SFC_Models/Land/RUC/lsm_ruc.F90 @@ -321,7 +321,7 @@ end subroutine lsm_ruc_finalize !> \section arg_table_lsm_ruc_run Argument Table !! \htmlinclude lsm_ruc_run.html !! -!>\section gen_lsmruc RUC LSM General Algorithm +!>\section gen_lsm_ruc_run RUC LSM General Algorithm subroutine lsm_ruc_run & ! inputs & ( iter, me, master, delt, kdt, im, nlev, lsm_ruc, lsm, & & imp_physics, imp_physics_gfdl, imp_physics_thompson, & diff --git a/physics/SFC_Models/Land/RUC/module_sf_ruclsm.F90 b/physics/SFC_Models/Land/RUC/module_sf_ruclsm.F90 index 2d01f96c9..66e5d7d1f 100644 --- a/physics/SFC_Models/Land/RUC/module_sf_ruclsm.F90 +++ b/physics/SFC_Models/Land/RUC/module_sf_ruclsm.F90 @@ -83,7 +83,7 @@ MODULE module_sf_ruclsm !>\ingroup lsm_ruc_group !> The RUN LSM model is described in Smirnova et al.(1997) !! \cite Smirnova_1997 and Smirnova et al.(2000) \cite Smirnova_2000 -!>\section gen_lsmruc GSD RUC LSM General Algorithm +!>\section gen_lsmruc RUC LSM General Algorithm !! @{ SUBROUTINE LSMRUC(xlat,xlon, & DT,init,lsm_cold_start,KTAU,iter,NSL, & diff --git a/physics/SFC_Models/Land/sfc_land.F90 b/physics/SFC_Models/Land/sfc_land.F90 index 2b0696ed8..b37be2619 100644 --- a/physics/SFC_Models/Land/sfc_land.F90 +++ b/physics/SFC_Models/Land/sfc_land.F90 @@ -13,21 +13,9 @@ module sfc_land contains -!> \defgroup sfc_land for coupling to land -!! @{ -!! \section diagram Calling Hierarchy Diagram -!! \section intraphysics Intraphysics Communication -!! !> \brief Brief description of the subroutine -!! !! \section arg_table_sfc_land_run Arguments !! \htmlinclude sfc_land_run.html -!! - -!! -!! \section general General Algorithm -!! \section detailed Detailed Algorithm -!! @{ subroutine sfc_land_run(im, cpllnd, cpllnd2atm, flag_iter, dry, & sncovr1_lnd, qsurf_lnd, evap_lnd, hflx_lnd, & ep_lnd, t2mmp_lnd, q2mp_lnd, gflux_lnd, & @@ -104,5 +92,4 @@ subroutine sfc_land_run(im, cpllnd, cpllnd2atm, flag_iter, dry, & end subroutine sfc_land_run -!> @} end module sfc_land diff --git a/physics/SFC_Models/SeaIce/CICE/sfc_cice.f b/physics/SFC_Models/SeaIce/CICE/sfc_cice.f index 36f2bccbf..baf856b60 100644 --- a/physics/SFC_Models/SeaIce/CICE/sfc_cice.f +++ b/physics/SFC_Models/SeaIce/CICE/sfc_cice.f @@ -11,21 +11,9 @@ module sfc_cice contains -!> \defgroup sfc_sice for coupling to CICE -!! @{ -!! \section diagram Calling Hierarchy Diagram -!! \section intraphysics Intraphysics Communication -!! !> \brief Brief description of the subroutine -!! !! \section arg_table_sfc_cice_run Arguments !! \htmlinclude sfc_cice_run.html -!! - -!! -!! \section general General Algorithm -!! \section detailed Detailed Algorithm -!! @{ !! use physcons, only : hvap => con_hvap, cp => con_cp, & @@ -162,5 +150,4 @@ subroutine sfc_cice_run & end subroutine sfc_cice_run !----------------------------------- -!> @} end module sfc_cice diff --git a/physics/docs/ccpp_doxyfile b/physics/docs/ccpp_doxyfile index 9ad1fd40e..b1f079541 100644 --- a/physics/docs/ccpp_doxyfile +++ b/physics/docs/ccpp_doxyfile @@ -1,4 +1,4 @@ -# Doxyfile 1.10.0 +# Doxyfile 1.11.0 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project. @@ -357,7 +357,7 @@ MARKDOWN_SUPPORT = YES # to that level are automatically included in the table of contents, even if # they do not have an id attribute. # Note: This feature currently applies only to Markdown headings. -# Minimum value: 0, maximum value: 99, default value: 5. +# Minimum value: 0, maximum value: 99, default value: 6. # This tag requires that the tag MARKDOWN_SUPPORT is set to YES. TOC_INCLUDE_HEADINGS = 5 @@ -385,8 +385,8 @@ AUTOLINK_SUPPORT = YES # to include (a tag file for) the STL sources as input, then you should set this # tag to YES in order to let doxygen match functions declarations and # definitions whose arguments contain STL classes (e.g. func(std::string); -# versus func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. +# versus func(std::string) {}). This also makes the inheritance and +# collaboration diagrams that involve STL classes more complete and accurate. # The default value is: NO. BUILTIN_STL_SUPPORT = NO @@ -398,9 +398,9 @@ BUILTIN_STL_SUPPORT = NO CPP_CLI_SUPPORT = NO # Set the SIP_SUPPORT tag to YES if your project consists of sip (see: -# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen -# will parse them like normal C++ but will assume all classes use public instead -# of private inheritance when no explicit protection keyword is present. +# https://www.riverbankcomputing.com/software) sources only. Doxygen will parse +# them like normal C++ but will assume all classes use public instead of private +# inheritance when no explicit protection keyword is present. # The default value is: NO. SIP_SUPPORT = NO @@ -1006,8 +1006,8 @@ INPUT_ENCODING = UTF-8 # character encoding on a per file pattern basis. Doxygen will compare the file # name with each pattern and apply the encoding instead of the default # INPUT_ENCODING) if there is a match. The character encodings are a list of the -# form: pattern=encoding (like *.php=ISO-8859-1). See cfg_input_encoding -# "INPUT_ENCODING" for further information on supported encodings. +# form: pattern=encoding (like *.php=ISO-8859-1). +# See also: INPUT_ENCODING for further information on supported encodings. INPUT_FILE_ENCODING = @@ -1379,11 +1379,11 @@ HTML_EXTRA_FILES = _doxygen/doxygen-awesome-darkmode-toggle.js \ # The HTML_COLORSTYLE tag can be used to specify if the generated HTML output # should be rendered with a dark or light theme. -# Possible values are: LIGHT always generate light mode output, DARK always -# generate dark mode output, AUTO_LIGHT automatically set the mode according to -# the user preference, use light mode if no preference is set (the default), -# AUTO_DARK automatically set the mode according to the user preference, use -# dark mode if no preference is set and TOGGLE allow to user to switch between +# Possible values are: LIGHT always generates light mode output, DARK always +# generates dark mode output, AUTO_LIGHT automatically sets the mode according +# to the user preference, uses light mode if no preference is set (the default), +# AUTO_DARK automatically sets the mode according to the user preference, uses +# dark mode if no preference is set and TOGGLE allows a user to switch between # light and dark mode via a button. # The default value is: AUTO_LIGHT. # This tag requires that the tag GENERATE_HTML is set to YES. @@ -1818,7 +1818,7 @@ MATHJAX_VERSION = MathJax_2 # Possible values are: HTML-CSS (which is slower, but has the best # compatibility. This is the name for Mathjax version 2, for MathJax version 3 # this will be translated into chtml), NativeMML (i.e. MathML. Only supported -# for NathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This +# for MathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This # is the name for Mathjax version 3, for MathJax version 2 this will be # translated into HTML-CSS) and SVG. # The default value is: HTML-CSS. @@ -2188,6 +2188,14 @@ RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE = +# The RTF_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the RTF_OUTPUT output directory. +# Note that the files will be copied as-is; there are no commands or markers +# available. +# This tag requires that the tag GENERATE_RTF is set to YES. + +RTF_EXTRA_FILES = + #--------------------------------------------------------------------------- # Configuration options related to the man page output #--------------------------------------------------------------------------- @@ -2790,7 +2798,7 @@ PLANTUML_INCLUDE_PATH = # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes # that will be shown in the graph. If the number of nodes in a graph becomes # larger than this value, doxygen will truncate the graph, which is visualized -# by representing a node as a red box. Note that doxygen if the number of direct +# by representing a node as a red box. Note that if the number of direct # children of the root node in a graph is already larger than # DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that # the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. diff --git a/physics/docs/pdftxt/CU_GF_deep.txt b/physics/docs/pdftxt/CU_GF_deep.txt index ca06666e5..b0506e324 100644 --- a/physics/docs/pdftxt/CU_GF_deep.txt +++ b/physics/docs/pdftxt/CU_GF_deep.txt @@ -17,7 +17,7 @@ internally or with temporal and spatial correlation patterns; (c)for higher reso \section version_cugf_enh CCPP Physics Updates -\version UFS-SRW v3.0.0 +\version CCPP-SCM v7.0.0 The Implementation of GF in RRFS prototypes - Updates for aerosol-awareness (experimental) diff --git a/physics/docs/pdftxt/GFS_NOAHMP.txt b/physics/docs/pdftxt/GFS_NOAHMP.txt index e48b7cafc..537d27527 100644 --- a/physics/docs/pdftxt/GFS_NOAHMP.txt +++ b/physics/docs/pdftxt/GFS_NOAHMP.txt @@ -9,7 +9,7 @@ This implementation of the NoahMP Land Surface Model (LSM) is adapted from the v - A primary reference for the NoahMP LSM is Niu et al. (2011) \cite niu_et_al_2011. \section noahmp_update CCPP Physics Updates -\version UFS-SRW v3.0.0 +\version CCPP-SCM v7.0.0 - As part of a larger-scale effort to unify how microphysics outputs (in particular snow) are used in the land models and outputs, an additional option for using the unified frozen precipitation fraction in NoahMP was added - Diagnostic 2-meter temperature and humidity are based on vegetation and bare-ground tiles - Bug fixes for GFS-based thermal roughness length scheme diff --git a/physics/docs/pdftxt/GFS_OZPHYS.txt b/physics/docs/pdftxt/GFS_OZPHYS.txt index 6de6e2c72..8c3db97ce 100644 --- a/physics/docs/pdftxt/GFS_OZPHYS.txt +++ b/physics/docs/pdftxt/GFS_OZPHYS.txt @@ -50,11 +50,9 @@ The ozone photochemistry scheme has been upgraded recently through latest coeffi depend on the temperature and column ozone climatology (\c global_o3prdlos.f77 is replaced by \c ozprdlos_2015_new_sbuvO3_tclm15_nuchem.f77 in ozphys_2015_run). -\section intra_ozone Intraphysics Communication -- \ref arg_table_ozphys_2015_run \section gen_ozone General Algorithm -- \ref genal_ozphys_2015 +- module_ozphys::run_o3prog_2015() */ diff --git a/physics/docs/pdftxt/GFS_SATMEDMFVDIFQ.txt b/physics/docs/pdftxt/GFS_SATMEDMFVDIFQ.txt index d5bc9489c..270df521f 100644 --- a/physics/docs/pdftxt/GFS_SATMEDMFVDIFQ.txt +++ b/physics/docs/pdftxt/GFS_SATMEDMFVDIFQ.txt @@ -43,7 +43,7 @@ and tracers and a method for removing negative tracer mixing ratio values have b \section v6_pbl_enh CCPP Physics Updates -\version UFS-SRW v3.0.0 +\version CCPP-SCM v7.0.0 - To reduce the negative hurricane intensity biases, a parameterization for environmental wind shear effect is included in the GFS TKE-EDMF PBL and cumulus schemes. In addition, the entrainment rates are enhanced proportional to the sub-cloud or PBL mean TKE (turbulent kinetic energy) when TKE is larger than a threshold diff --git a/physics/docs/pdftxt/GFS_UGWPv0.txt b/physics/docs/pdftxt/GFS_UGWPv0.txt index 1b3f0166f..81b3c7018 100644 --- a/physics/docs/pdftxt/GFS_UGWPv0.txt +++ b/physics/docs/pdftxt/GFS_UGWPv0.txt @@ -109,7 +109,7 @@ and dynamical instability of waves described by the linear (Weinstock 1984 \cite weinstock_1984; Hines 1997 \cite hines_1997) saturation theories. \section ugwp_updates CCPP Physics Updates -\version UFS-SRW v3.0.0 +\version CCPP-SCM v7.0.0 We have added optional diagnostic outputs for the various tendencies supplied by the UGWP. They can be switched on by setting the two following input namelist variables equal to “.true.”: \p ldiag3d and \p ldiag_ugwp. diff --git a/physics/docs/pdftxt/THOMPSON.txt b/physics/docs/pdftxt/THOMPSON.txt index 914a95922..1e1a5414b 100644 --- a/physics/docs/pdftxt/THOMPSON.txt +++ b/physics/docs/pdftxt/THOMPSON.txt @@ -10,7 +10,7 @@ The original RAP/HRRR microphysics implementation represents the most aggressive cloud and precipitation microphysical processes in the NCEP operational forecast model suite. The RAP and HRRR are important guidance to NWS aviation forecasts, and any microphysics improvements are aimed at least in part, to improve that guidance. The scheme is particularly beneficial for aircraft icing forecasts. Recently, this scheme is now being tested -with a GFS_v17 prototype: the GFS_v17_p8 suite at Environmental Modeling Center (EMC) as a candidate for the next operational implementation. +with a GFS_v17 prototype: the GFS_v17_HR3 suite at Environmental Modeling Center (EMC) as a candidate for the next operational implementation. The microphysical processes accounted for are shown in the graphic below: \image html gsd_thompson.png "Figure 1: Complex Microphysics Model in the RAP" width=500 @@ -83,7 +83,7 @@ Two namelist variables control the usage of the semi-Lagrangian sedimentation, \ \p sedi_semi is set to ‘true’ to activate the method. \p Decfl is a parameter that needs to avoid deformation of the arriving grids, currently, "10". \section v6_enh_thompson CCPP Physics Updates -\version UFS-SRW v3.0.0 +\version CCPP-SCM v7.0.0 - The ice generation supersaturation requirement for nonaerosol option is reduced from 0.25 to 0.15. The purpose is to generate more ice in the upper level and reduce the OLR bias. diff --git a/physics/photochem/h2o_def.f b/physics/photochem/h2o_def.f index 72748a613..7602b1ffe 100644 --- a/physics/photochem/h2o_def.f +++ b/physics/photochem/h2o_def.f @@ -5,10 +5,6 @@ !! This module defines arrays in H2O scheme. module h2o_def -!> \section arg_table_h2o_def -!! \htmlinclude h2o_def.html -!! - use machine , only : kind_phys implicit none diff --git a/physics/photochem/h2ointerp.f90 b/physics/photochem/h2ointerp.f90 index f5a1f36c6..907ec84df 100644 --- a/physics/photochem/h2ointerp.f90 +++ b/physics/photochem/h2ointerp.f90 @@ -15,6 +15,7 @@ module h2ointerp contains +!> subroutine read_h2odata (h2o_phys, me, master) use machine, only: kind_phys use h2o_def @@ -85,7 +86,7 @@ subroutine read_h2odata (h2o_phys, me, master) end subroutine read_h2odata ! !********************************************************************** -! +!> subroutine setindxh2o(npts,dlat,jindx1,jindx2,ddy) ! ! May 2015 Shrinivas Moorthi - Prepare for H2O interpolation @@ -126,7 +127,7 @@ subroutine setindxh2o(npts,dlat,jindx1,jindx2,ddy) end subroutine setindxh2o ! !********************************************************************** -! +!> subroutine h2ointerpol(me,npts,idate,fhour,jindx1,jindx2,h2oplout,ddy) ! ! May 2015 Shrinivas Moorthi - Prepare for H2O interpolation diff --git a/physics/photochem/module_ozphys.F90 b/physics/photochem/module_ozphys.F90 index b66eb0a74..fcc5ac7ad 100644 --- a/physics/photochem/module_ozphys.F90 +++ b/physics/photochem/module_ozphys.F90 @@ -1,10 +1,12 @@ +!>\file module_ozphys.F90 +!! ! ######################################################################################### !> \section arg_table_module_ozphys Argument table !! \htmlinclude module_ozphys.html !! ! !> The operational GFS currently parameterizes ozone production and destruction based on -!! monthly mean coefficients (\c global_o3prdlos.f77) provided by Naval Research Laboratory +!! monthly mean coefficients ( global_o3prdlos.f77) provided by Naval Research Laboratory !! through CHEM2D chemistry model (McCormack et al. (2006) \cite mccormack_et_al_2006). !! !! There are two implementations of this parameterization within this module. @@ -33,7 +35,7 @@ !! update_o3clim() -> run_o3clim() -> radiation() -> physics... !! !!\author June 2015 - Shrinivas Moorthi -!!\modified Sep 2023 - Dustin Swales +!! - Sep 2023 - Dustin Swales !! ! ######################################################################################### module module_ozphys @@ -87,9 +89,8 @@ module module_ozphys end type ty_ozphys contains - ! ######################################################################################### - ! Procedure (type-bound) for loading data for prognostic ozone. - ! ######################################################################################### + +!> Procedure (type-bound) for loading data for prognostic ozone. function load_o3prog(this, file, fileID) result (err_message) class(ty_ozphys), intent(inout) :: this integer, intent(in) :: fileID @@ -141,11 +142,8 @@ function load_o3prog(this, file, fileID) result (err_message) end function load_o3prog - ! ######################################################################################### - ! Procedure (type-bound) for setting up interpolation indices between data-grid and - ! model-grid. - ! Called once during initialization - ! ######################################################################################### +!> Procedure (type-bound) for setting up interpolation indices between data-grid and +!! model-grid. Called once during initialization subroutine setup_o3prog(this, lat, idx1, idx2, idxh) class(ty_ozphys), intent(in) :: this real(kind_phys), intent(in) :: lat(:) @@ -172,9 +170,7 @@ subroutine setup_o3prog(this, lat, idx1, idx2, idxh) end subroutine setup_o3prog - ! ######################################################################################### - ! Procedure (type-bound) for updating data used in prognostic ozone scheme. - ! ######################################################################################### +!> Procedure (type-bound) for updating data used in prognostic ozone scheme. subroutine update_o3prog(this, idx1, idx2, idxh, rjday, idxt1, idxt2, ozpl) class(ty_ozphys), intent(in) :: this integer, intent(in) :: idx1(:), idx2(:) @@ -202,9 +198,7 @@ subroutine update_o3prog(this, idx1, idx2, idxh, rjday, idxt1, idxt2, ozpl) end subroutine update_o3prog - ! ######################################################################################### - ! Procedure (type-bound) for NRL prognostic ozone (2015). - ! ######################################################################################### +!> Procedure (type-bound) for NRL prognostic ozone (2015). subroutine run_o3prog_2015(this, con_1ovg, dt, p, t, dp, ozpl, oz, do_diag, do3_dt_prd, & do3_dt_ozmx, do3_dt_temp, do3_dt_ohoz) class(ty_ozphys), intent(in) :: this @@ -316,9 +310,7 @@ subroutine run_o3prog_2015(this, con_1ovg, dt, p, t, dp, ozpl, oz, do_diag, do3_ return end subroutine run_o3prog_2015 - ! ######################################################################################### - ! Procedure (type-bound) for NRL prognostic ozone (2006). - ! ######################################################################################### +!> Procedure (type-bound) for NRL prognostic ozone (2006). subroutine run_o3prog_2006(this, con_1ovg, dt, p, t, dp, ozpl, oz, do_diag, do3_dt_prd, & do3_dt_ozmx, do3_dt_temp, do3_dt_ohoz) class(ty_ozphys), intent(in) :: this @@ -442,9 +434,7 @@ subroutine run_o3prog_2006(this, con_1ovg, dt, p, t, dp, ozpl, oz, do_diag, do3_ return end subroutine run_o3prog_2006 - ! ######################################################################################### - ! Procedure (type-bound) for NRL updating climotological ozone. - ! ######################################################################################### +!> Procedure (type-bound) for NRL updating climotological ozone. subroutine run_o3clim(this, lat, prslk, con_pi, oz) class(ty_ozphys), intent(in) :: this real(kind_phys), intent(in) :: & @@ -522,9 +512,7 @@ subroutine run_o3clim(this, lat, prslk, con_pi, oz) return end subroutine run_o3clim - ! ######################################################################################### - ! Procedure (type-bound) for loading data for climotological ozone. - ! ######################################################################################### +!> Procedure (type-bound) for loading data for climotological ozone. function load_o3clim(this, file, fileID) result (err_message) class(ty_ozphys), intent(inout) :: this integer, intent(in) :: fileID @@ -608,10 +596,8 @@ function load_o3clim(this, file, fileID) result (err_message) end function load_o3clim - ! ######################################################################################### - ! Procedure (type-bound) for updating temporal interpolation index when using climotological - ! ozone - ! ######################################################################################### +!> Procedure (type-bound) for updating temporal interpolation index when using climotological +!! ozone subroutine update_o3clim(this, imon, iday, ihour, loz1st) class(ty_ozphys), intent(inout) :: this integer, intent(in) :: imon, iday, ihour From 8525a7e7461167a13e5b6900abf53a31c344e424 Mon Sep 17 00:00:00 2001 From: Man Zhang Date: Mon, 24 Jun 2024 13:53:36 -0600 Subject: [PATCH 22/80] save scidoc --- .../GFS_ccpp_suite_sim_pre.F90 | 6 +- .../UFS_SCM_NEPTUNE/ccpp_suite_simulator.F90 | 33 ++- .../module_ccpp_suite_simulator.F90 | 101 ++++------ physics/Radiation/RRTMG/iounitdef.f | 4 + .../Radiation/RRTMG/module_bfmicrophysics.f | 4 +- physics/Radiation/RRTMG/rad_sw_pre.F90 | 6 +- physics/Radiation/RRTMG/radcons.f90 | 4 - .../Radiation/RRTMG/rrtmg_lw_cloud_optics.F90 | 3 + physics/Radiation/RRTMGP/rrtmgp_lw_main.F90 | 189 ++++++++---------- .../Radiation/RRTMGP/rrtmgp_sw_gas_optics.F90 | 35 +--- physics/Radiation/RRTMGP/rrtmgp_sw_main.F90 | 148 +++++++------- physics/docs/_doxygen/custom.css | 57 ++++++ physics/docs/_doxygen/doxygen-awesome.css | 2 +- physics/docs/_doxygen/header.html | 33 ++- physics/docs/ccpp_doxyfile | 9 +- physics/docs/library.bib | 51 ++++- physics/docs/pdftxt/NSSLMICRO.txt | 2 +- physics/docs/pdftxt/RE7/input_RRFS_v1.nml | 56 +++--- physics/docs/pdftxt/suite_input.nml.txt | 32 ++- physics/hooks/machine.F | 6 +- 20 files changed, 429 insertions(+), 352 deletions(-) create mode 100644 physics/docs/_doxygen/custom.css diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_ccpp_suite_sim_pre.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_ccpp_suite_sim_pre.F90 index fbaf5a1d9..2c276ca8c 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_ccpp_suite_sim_pre.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_ccpp_suite_sim_pre.F90 @@ -1,3 +1,6 @@ +!>\file GFS_ccpp_suite_sim_pre.F90 +!! Interstitial CCPP suite to couple UFS physics to CCPP suite simulator. + ! ######################################################################################## ! ! Description: Interstitial CCPP suite to couple UFS physics to ccpp_suite_simulator. @@ -22,7 +25,7 @@ module GFS_ccpp_suite_sim_pre ! SUBROUTINE GFS_ccpp_suite_sim_pre_run ! ! ###################################################################################### -!! \section arg_table_GFS_ccpp_suite_sim_pre_run +!> \section arg_table_GFS_ccpp_suite_sim_pre_run !! \htmlinclude GFS_ccpp_suite_sim_pre_run.html !! subroutine GFS_ccpp_suite_sim_pre_run(do_ccpp_suite_sim, dtend, ntqv, dtidx, dtp, & @@ -110,6 +113,7 @@ subroutine GFS_ccpp_suite_sim_pre_run(do_ccpp_suite_sim, dtend, ntqv, dtidx, dtp end subroutine GFS_ccpp_suite_sim_pre_run ! ###################################################################################### +!> subroutine load_ccpp_suite_sim(nlunit, nml_file, physics_process, iactive_T, & iactive_u, iactive_v, iactive_q, errmsg, errflg) diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/ccpp_suite_simulator.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/ccpp_suite_simulator.F90 index c1592263d..6a706456c 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/ccpp_suite_simulator.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/ccpp_suite_simulator.F90 @@ -1,20 +1,19 @@ -! ######################################################################################## -! -! Description: This suite simulates the evolution of the internal physics state -! represented by a CCPP Suite Definition File (SDF). -! -! To activate this suite it must be a) embedded within the SDF and b) activated through -! the physics namelist. -! The derived-data type "base_physics_process" contains the metadata needed to reconstruct -! the temporal evolution of the state. An array of base_physics_process, physics_process, -! is populated by the host during initialization and passed to the physics. Additionally, -! this type holds any data, or type-bound procedures, required by the suite simulator(s). -! -! For this initial demonstration we are using 2-dimensional (height, time) forcing data, -! which is on the same native vertical grid as the SCM. The dataset has a temporal -! resolution of 1-hour, created by averaging all local times from a Tropical Warm Pool -! International Cloud Experiment (TWPICE) case. This was to create a dataset with a -! (constant) diurnal cycle. +!>\file ccpp_suite_simulator.F90 +!! Description: This suite simulates the evolution of the internal physics state +!! represented by a CCPP Suite Definition File (SDF). +!! +!! To activate this suite it must be a) embedded within the SDF and b) activated through +!! the physics namelist. +!! The derived-data type "base_physics_process" contains the metadata needed to reconstruct +!! the temporal evolution of the state. An array of base_physics_process, physics_process, +!! is populated by the host during initialization and passed to the physics. Additionally, +!! this type holds any data, or type-bound procedures, required by the suite simulator(s). +!! +!! For this initial demonstration we are using 2-dimensional (height, time) forcing data, +!! which is on the same native vertical grid as the SCM. The dataset has a temporal +!! resolution of 1-hour, created by averaging all local times from a Tropical Warm Pool +!! International Cloud Experiment (TWPICE) case. This was to create a dataset with a +!! (constant) diurnal cycle. ! ! ######################################################################################## module ccpp_suite_simulator diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/module_ccpp_suite_simulator.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/module_ccpp_suite_simulator.F90 index c4f9fc4e4..e8a4188d3 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/module_ccpp_suite_simulator.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/module_ccpp_suite_simulator.F90 @@ -1,19 +1,15 @@ -! ######################################################################################## -! -! This module contains the type, base_physics_process, and supporting subroutines needed -! by the ccpp suite simulator. -! -! ######################################################################################## +!>\file module_ccpp_suite_simulator.F90 +!! This module contains the type, base_physics_process, and supporting subroutines needed +!! by the ccpp suite simulator. + module module_ccpp_suite_simulator -!> \section arg_table_module_ccpp_suite_simulator Argument table -!! \htmlinclude module_ccpp_suite_simulator.html -!! + use machine, only : kind_phys implicit none public base_physics_process - ! Type containing 1D (time) physics tendencies. +!> Type containing 1D (time) physics tendencies. type phys_tend_1d real(kind_phys), dimension(:), allocatable :: T real(kind_phys), dimension(:), allocatable :: u @@ -23,7 +19,7 @@ module module_ccpp_suite_simulator real(kind_phys), dimension(:), allocatable :: z end type phys_tend_1d - ! Type containing 2D (lev,time) physics tendencies. +!> Type containing 2D (lev,time) physics tendencies. type phys_tend_2d real(kind_phys), dimension(:), allocatable :: time real(kind_phys), dimension(:,:), allocatable :: T @@ -45,7 +41,7 @@ module module_ccpp_suite_simulator real(kind_phys), dimension(:,:,:), allocatable :: q end type phys_tend_3d - ! Type containing 4D (lon,lat,lev,time) physics tendencies. +!> Type containing 4D (lon,lat,lev,time) physics tendencies. type phys_tend_4d real(kind_phys), dimension(:), allocatable :: time real(kind_phys), dimension(:,:), allocatable :: lon @@ -56,24 +52,20 @@ module module_ccpp_suite_simulator real(kind_phys), dimension(:,:,:,:), allocatable :: q end type phys_tend_4d -! This type contains the meta information and data for each physics process. - -!> \section arg_table_base_physics_process Argument Table -!! \htmlinclude base_physics_process.html -!! +!> This type contains the meta information and data for each physics process. type base_physics_process - character(len=16) :: name ! Physics process name - logical :: time_split = .false. ! Is process time-split? - logical :: use_sim = .false. ! Is process "active"? - integer :: order ! Order of process in process-loop - type(phys_tend_1d) :: tend1d ! Instantaneous data - type(phys_tend_2d) :: tend2d ! 2-dimensional data - type(phys_tend_3d) :: tend3d ! Not used. Placeholder for 3-dimensional spatial data. - type(phys_tend_4d) :: tend4d ! Not used. Placeholder for 4-dimensional spatio-tempo data. - character(len=16) :: active_name ! "Active" scheme: Physics process name - integer :: iactive_scheme ! "Active" scheme: Order of process in process-loop - logical :: active_tsp ! "Active" scheme: Is process time-split? - integer :: nprg_active ! "Active" scheme: Number of prognostic variables + character(len=16) :: name !< Physics process name + logical :: time_split = .false. !< Is process time-split? + logical :: use_sim = .false. !< Is process "active"? + integer :: order !< Order of process in process-loop + type(phys_tend_1d) :: tend1d !< Instantaneous data + type(phys_tend_2d) :: tend2d !< 2-dimensional data + type(phys_tend_3d) :: tend3d !< Not used. Placeholder for 3-dimensional spatial data. + type(phys_tend_4d) :: tend4d !< Not used. Placeholder for 4-dimensional spatio-tempo data. + character(len=16) :: active_name !< "Active" scheme: Physics process name + integer :: iactive_scheme !< "Active" scheme: Order of process in process-loop + logical :: active_tsp !< "Active" scheme: Is process time-split? + integer :: nprg_active !< "Active" scheme: Number of prognostic variables contains generic, public :: linterp => linterp_1D, linterp_2D procedure, private :: linterp_1D @@ -84,11 +76,8 @@ module module_ccpp_suite_simulator contains - ! #################################################################################### - ! Type-bound procedure to compute tendency profile for time-of-day. - ! - ! For use with 1D data (level, time) tendencies with diurnal (24-hr) forcing. - ! #################################################################################### +!> Type-bound procedure to compute tendency profile for time-of-day. +!! For use with 1D data (level, time) tendencies with diurnal (24-hr) forcing. function linterp_1D(this, var_name, year, month, day, hour, min, sec) result(err_message) class(base_physics_process), intent(inout) :: this character(len=*), intent(in) :: var_name @@ -131,13 +120,10 @@ function linterp_1D(this, var_name, year, month, day, hour, min, sec) result(err end function linterp_1D - ! #################################################################################### - ! Type-bound procedure to compute tendency profile for time-of-day. - ! - ! For use with 2D data (location, level, time) tendencies with diurnal (24-hr) forcing. - ! This assumes that the location dimension has a [longitude, latitude] allocated with - ! each location. - ! #################################################################################### +!> Type-bound procedure to compute tendency profile for time-of-day. +!! For use with 2D data (location, level, time) tendencies with diurnal (24-hr) forcing. +!! This assumes that the location dimension has a [longitude, latitude] allocated with +!! each location. function linterp_2D(this, var_name, lon, lat, year, month, day, hour, min, sec) result(err_message) class(base_physics_process), intent(inout) :: this character(len=*), intent(in) :: var_name @@ -165,10 +151,8 @@ function linterp_2D(this, var_name, lon, lat, year, month, day, hour, min, sec) end select end function linterp_2D - ! #################################################################################### - ! Type-bound procedure to find nearest location. - ! For use with linterp_2D, NOT YET IMPLEMENTED. - ! #################################################################################### +!> Type-bound procedure to find nearest location. +!! For use with linterp_2D, NOT YET IMPLEMENTED. pure function find_nearest_loc_2d_1d(this, lon, lat) class(base_physics_process), intent(in) :: this real(kind_phys), intent(in) :: lon, lat @@ -177,10 +161,8 @@ pure function find_nearest_loc_2d_1d(this, lon, lat) find_nearest_loc_2d_1d = 1 end function find_nearest_loc_2d_1d - ! #################################################################################### - ! Type-bound procedure to compute linear interpolation weights for a diurnal (24-hour) - ! forcing. - ! #################################################################################### +!> Type-bound procedure to compute linear interpolation weights for a diurnal (24-hour) +!! forcing. subroutine cmp_time_wts(this, year, month, day, hour, minute, sec, w1, w2, ti, tf) ! Inputs class(base_physics_process), intent(in) :: this @@ -199,8 +181,7 @@ subroutine cmp_time_wts(this, year, month, day, hour, minute, sec, w1, w2, ti, t end subroutine cmp_time_wts - ! #################################################################################### - ! #################################################################################### +!> subroutine sim_LWRAD( year, month, day, hour, min, sec, process) type(base_physics_process), intent(inout) :: process integer, intent(in) :: year, month, day, hour, min, sec @@ -212,8 +193,7 @@ subroutine sim_LWRAD( year, month, day, hour, min, sec, process) end subroutine sim_LWRAD - ! #################################################################################### - ! #################################################################################### +!> subroutine sim_SWRAD( year, month, day, hour, min, sec, process) type(base_physics_process), intent(inout) :: process integer, intent(in) :: year, month, day, hour, min, sec @@ -225,8 +205,7 @@ subroutine sim_SWRAD( year, month, day, hour, min, sec, process) end subroutine sim_SWRAD - ! #################################################################################### - ! #################################################################################### +!> subroutine sim_GWD( year, month, day, hour, min, sec, process) type(base_physics_process), intent(inout) :: process integer, intent(in) :: year, month, day, hour, min, sec @@ -244,8 +223,7 @@ subroutine sim_GWD( year, month, day, hour, min, sec, process) end subroutine sim_GWD - ! #################################################################################### - ! #################################################################################### +!> subroutine sim_PBL( year, month, day, hour, min, sec, process) type(base_physics_process), intent(inout) :: process integer, intent(in) :: year, month, day, hour, min, sec @@ -266,8 +244,7 @@ subroutine sim_PBL( year, month, day, hour, min, sec, process) end subroutine sim_PBL - ! #################################################################################### - ! #################################################################################### +!> subroutine sim_DCNV( year, month, day, hour, min, sec, process) type(base_physics_process), intent(inout) :: process integer, intent(in) :: year, month, day, hour, min, sec @@ -288,8 +265,7 @@ subroutine sim_DCNV( year, month, day, hour, min, sec, process) end subroutine sim_DCNV - ! #################################################################################### - ! #################################################################################### +!> subroutine sim_SCNV( year, month, day, hour, min, sec, process) type(base_physics_process), intent(inout) :: process integer, intent(in) :: year, month, day, hour, min, sec @@ -310,8 +286,7 @@ subroutine sim_SCNV( year, month, day, hour, min, sec, process) end subroutine sim_SCNV - ! #################################################################################### - ! #################################################################################### +!> subroutine sim_cldMP( year, month, day, hour, min, sec, process) type(base_physics_process), intent(inout) :: process integer, intent(in) :: year, month, day, hour, min, sec diff --git a/physics/Radiation/RRTMG/iounitdef.f b/physics/Radiation/RRTMG/iounitdef.f index c6a4e591f..af3a700b8 100644 --- a/physics/Radiation/RRTMG/iounitdef.f +++ b/physics/Radiation/RRTMG/iounitdef.f @@ -1,3 +1,7 @@ +!>\file iounitdef.f +!! This file defines fortran unit numbers for input/output data +!! files for the NCEP GFS model. + !!!!! ========================================================== !!!!! !!!!! module "module_iounitdef description !!!!! !!!!! ========================================================== !!!!! diff --git a/physics/Radiation/RRTMG/module_bfmicrophysics.f b/physics/Radiation/RRTMG/module_bfmicrophysics.f index caff7fc61..6285653d2 100644 --- a/physics/Radiation/RRTMG/module_bfmicrophysics.f +++ b/physics/Radiation/RRTMG/module_bfmicrophysics.f @@ -1,5 +1,5 @@ -!>\file module_bfmicrophysics.f This file contains some subroutines used -!! in microphysics. +!>\file module_bfmicrophysics.f +!!This file contains some subroutines used in microphysics. !> This module contains some subroutines used in microphysics. MODULE module_microphysics diff --git a/physics/Radiation/RRTMG/rad_sw_pre.F90 b/physics/Radiation/RRTMG/rad_sw_pre.F90 index b7c3faf4c..83a0385a8 100644 --- a/physics/Radiation/RRTMG/rad_sw_pre.F90 +++ b/physics/Radiation/RRTMG/rad_sw_pre.F90 @@ -1,12 +1,11 @@ !>\file rad_sw_pre.F90 !! This file gathers the sunlit points for the shortwave radiation schemes. +!> This module gathers the sunlit points for the shortwave radiation schemes. module rad_sw_pre contains -!> \defgroup rad_sw_pre GFS Radiation-SW Pre -!! This module gathers the sunlit points for the shortwave radiation schemes. -!> @{ + !> \section arg_table_rad_sw_pre_run Argument Table !! \htmlinclude rad_sw_pre_run.html !! @@ -49,5 +48,4 @@ subroutine rad_sw_pre_run (im, lsswr, coszen, nday, idxday, errmsg, errflg) endif end subroutine rad_sw_pre_run -!> @} end module rad_sw_pre diff --git a/physics/Radiation/RRTMG/radcons.f90 b/physics/Radiation/RRTMG/radcons.f90 index 0ca7eeb19..decf79990 100644 --- a/physics/Radiation/RRTMG/radcons.f90 +++ b/physics/Radiation/RRTMG/radcons.f90 @@ -2,10 +2,6 @@ !! This file contains module radcons. -!> \defgroup radcons GFS RRTMG Constants Module -!> This module contains some of the most frequently used math and physics -!! constants for RRTMG. - !> This module contains some of the most frequently used math and physics !! constants for RRTMG. module radcons diff --git a/physics/Radiation/RRTMG/rrtmg_lw_cloud_optics.F90 b/physics/Radiation/RRTMG/rrtmg_lw_cloud_optics.F90 index 1dd225514..7477a498e 100644 --- a/physics/Radiation/RRTMG/rrtmg_lw_cloud_optics.F90 +++ b/physics/Radiation/RRTMG/rrtmg_lw_cloud_optics.F90 @@ -1,3 +1,6 @@ +!>\file rrtmg_lw_cloud_optics.F90 +!! + module mo_rrtmg_lw_cloud_optics use machine, only: kind_phys use mersenne_twister, only: random_setseed, random_number, random_stat diff --git a/physics/Radiation/RRTMGP/rrtmgp_lw_main.F90 b/physics/Radiation/RRTMGP/rrtmgp_lw_main.F90 index 39792eab7..2e22476d4 100644 --- a/physics/Radiation/RRTMGP/rrtmgp_lw_main.F90 +++ b/physics/Radiation/RRTMGP/rrtmgp_lw_main.F90 @@ -1,7 +1,6 @@ !> \file rrtmgp_lw_main.F90 !! This file contains the longwave RRTMGP radiation scheme. !! -! ########################################################################################### module rrtmgp_lw_main use mpi_f08 use machine, only: kind_phys, kind_dbl_prec @@ -25,15 +24,10 @@ module rrtmgp_lw_main public rrtmgp_lw_main_init, rrtmgp_lw_main_run contains -!! \section arg_table_rrtmgp_lw_main_init + +!> \section arg_table_rrtmgp_lw_main_init Argument Table !! \htmlinclude rrtmgp_lw_main_int.html !! -!> \ingroup rrtmgp_lw_main -!! -!! \brief -!! -!! \section rrtmgp_lw_main_init -!> @{ subroutine rrtmgp_lw_main_init(rrtmgp_root_dir, rrtmgp_lw_file_gas, rrtmgp_lw_file_clouds,& active_gases_array, doGP_cldoptics_PADE, doGP_cldoptics_LUT, doGP_sgs_pbl, & doGP_sgs_cnv, nrghice, mpicomm, mpirank, mpiroot, nLay, rrtmgp_phys_blksz, & @@ -41,33 +35,33 @@ subroutine rrtmgp_lw_main_init(rrtmgp_root_dir, rrtmgp_lw_file_gas, rrtmgp_lw_fi ! Inputs character(len=128),intent(in) :: & - rrtmgp_root_dir, & ! RTE-RRTMGP root directory - rrtmgp_lw_file_clouds, & ! RRTMGP file containing coefficients used to compute - ! clouds optical properties - rrtmgp_lw_file_gas ! RRTMGP file containing coefficients used to compute - ! gaseous optical properties + rrtmgp_root_dir, & !< RTE-RRTMGP root directory + rrtmgp_lw_file_clouds, & !< RRTMGP file containing coefficients used to compute + !< clouds optical properties + rrtmgp_lw_file_gas !< RRTMGP file containing coefficients used to compute + !! gaseous optical properties character(len=*), dimension(:), intent(in) :: & - active_gases_array ! List of active gases from namelist as array) + active_gases_array !< List of active gases from namelist as array) logical, intent(in) :: & - doGP_cldoptics_PADE, & ! Use RRTMGP cloud-optics: PADE approximation? - doGP_cldoptics_LUT, & ! Use RRTMGP cloud-optics: LUTs? - doGP_sgs_pbl, & ! Flag to include sgs PBL clouds - doGP_sgs_cnv ! Flag to include sgs convective clouds + doGP_cldoptics_PADE, & !< Use RRTMGP cloud-optics: PADE approximation? + doGP_cldoptics_LUT, & !< Use RRTMGP cloud-optics: LUTs? + doGP_sgs_pbl, & !< Flag to include sgs PBL clouds + doGP_sgs_cnv !< Flag to include sgs convective clouds integer, intent(inout) :: & - nrghice ! Number of ice-roughness categories + nrghice !< Number of ice-roughness categories type(MPI_Comm),intent(in) :: & - mpicomm ! MPI communicator + mpicomm !< MPI communicator integer,intent(in) :: & - mpirank, & ! Current MPI rank - mpiroot, & ! Master MPI rank - rrtmgp_phys_blksz, & ! Number of horizontal points to process at once. + mpirank, & !< Current MPI rank + mpiroot, & !< Master MPI rank + rrtmgp_phys_blksz, & !< Number of horizontal points to process at once. nLay ! Outputs character(len=*), intent(out) :: & - errmsg ! CCPP error message + errmsg !< CCPP error message integer, intent(out) :: & - errflg ! CCPP error code + errflg !< CCPP error code ! Initialize CCPP error handling variables errmsg = '' @@ -83,18 +77,10 @@ subroutine rrtmgp_lw_main_init(rrtmgp_root_dir, rrtmgp_lw_file_gas, rrtmgp_lw_fi errmsg, errflg) end subroutine rrtmgp_lw_main_init -!> @} - ! ###################################################################################### -!! \section arg_table_rrtmgp_lw_main_run + +!> \section arg_table_rrtmgp_lw_main_run Argument Table !! \htmlinclude rrtmgp_lw_main_run.html !! -!> \ingroup rrtmgp_lw_main -!! -!! \brief -!! -!! \section rrtmgp_lw_main_run -!> @{ - ! ###################################################################################### subroutine rrtmgp_lw_main_run(doLWrad, doLWclrsky, top_at_1, doGP_lwscat, & use_LW_jacobian, doGP_sgs_cnv, doGP_sgs_pbl, nCol, nLay, nGases,rrtmgp_phys_blksz,& nGauss_angles, icseed_lw, iovr, iovr_convcld, iovr_max, iovr_maxrand, iovr_rand, & @@ -109,83 +95,83 @@ subroutine rrtmgp_lw_main_run(doLWrad, doLWclrsky, top_at_1, doGP_lwscat, ! Inputs logical, intent(in) :: & - doLWrad, & ! Flag to perform longwave calculation - doLWclrsky, & ! Flag to compute clear-sky fluxes - top_at_1, & ! Flag for vertical ordering convention - use_LW_jacobian, & ! Flag to compute Jacobian of longwave surface flux - doGP_sgs_pbl, & ! Flag to include sgs PBL clouds - doGP_sgs_cnv, & ! Flag to include sgs convective clouds - doGP_lwscat ! Flag to include scattering in clouds + doLWrad, & !< Flag to perform longwave calculation + doLWclrsky, & !< Flag to compute clear-sky fluxes + top_at_1, & !< Flag for vertical ordering convention + use_LW_jacobian, & !< Flag to compute Jacobian of longwave surface flux + doGP_sgs_pbl, & !< Flag to include sgs PBL clouds + doGP_sgs_cnv, & !< Flag to include sgs convective clouds + doGP_lwscat !< Flag to include scattering in clouds integer,intent(in) :: & - nCol, & ! Number of horizontal points - nLay, & ! Number of vertical grid points. - nGases, & ! Number of active gases - rrtmgp_phys_blksz, & ! Number of horizontal points to process at once. - nGauss_angles, & ! Number of gaussian quadrature angles used - iovr, & ! Choice of cloud-overlap method - iovr_convcld, & ! Choice of convective cloud-overlap - iovr_max, & ! Flag for maximum cloud overlap method - iovr_maxrand, & ! Flag for maximum-random cloud overlap method - iovr_rand, & ! Flag for random cloud overlap method - iovr_dcorr, & ! Flag for decorrelation-length cloud overlap method - iovr_exp, & ! Flag for exponential cloud overlap method - iovr_exprand, & ! Flag for exponential-random cloud overlap method - isubc_lw ! Flag for cloud-seeding (rng) for cloud-sampling + nCol, & !< Number of horizontal points + nLay, & !< Number of vertical grid points. + nGases, & !< Number of active gases + rrtmgp_phys_blksz, & !< Number of horizontal points to process at once. + nGauss_angles, & !< Number of gaussian quadrature angles used + iovr, & !< Choice of cloud-overlap method + iovr_convcld, & !< Choice of convective cloud-overlap + iovr_max, & !< Flag for maximum cloud overlap method + iovr_maxrand, & !< Flag for maximum-random cloud overlap method + iovr_rand, & !< Flag for random cloud overlap method + iovr_dcorr, & !< Flag for decorrelation-length cloud overlap method + iovr_exp, & !< Flag for exponential cloud overlap method + iovr_exprand, & !< Flag for exponential-random cloud overlap method + isubc_lw !< Flag for cloud-seeding (rng) for cloud-sampling integer,intent(in),dimension(:) :: & - icseed_lw ! Seed for random number generation for longwave radiation + icseed_lw !< Seed for random number generation for longwave radiation real(kind_phys), dimension(:), intent(in) :: & - semis, & ! Surface-emissivity (1) - tsfg ! Skin temperature (K) + semis, & !< Surface-emissivity (1) + tsfg !< Skin temperature (K) real(kind_phys), dimension(:,:), intent(in) :: & - p_lay, & ! Pressure @ model layer-centers (Pa) - t_lay, & ! Temperature (K) - p_lev, & ! Pressure @ model layer-interfaces (Pa) - t_lev, & ! Temperature @ model levels (K) - vmr_o2, & ! Molar-mixing ratio oxygen - vmr_h2o, & ! Molar-mixing ratio water vapor - vmr_o3, & ! Molar-mixing ratio ozone - vmr_ch4, & ! Molar-mixing ratio methane - vmr_n2o, & ! Molar-mixing ratio nitrous oxide - vmr_co2, & ! Molar-mixing ratio carbon dioxide - cld_frac, & ! Cloud-fraction for stratiform clouds - cld_lwp, & ! Water path for stratiform liquid cloud-particles - cld_reliq, & ! Effective radius for stratiform liquid cloud-particles - cld_iwp, & ! Water path for stratiform ice cloud-particles - cld_reice, & ! Effective radius for stratiform ice cloud-particles - cld_swp, & ! Water path for snow hydrometeors - cld_resnow, & ! Effective radius for snow hydrometeors - cld_rwp, & ! Water path for rain hydrometeors - cld_rerain, & ! Effective radius for rain hydrometeors - precip_frac, & ! Precipitation fraction (not active, currently precipitation optics uses cloud-fraction) - cld_cnv_lwp, & ! Water path for convective liquid cloud-particles - cld_cnv_reliq, & ! Effective radius for convective liquid cloud-particles - cld_cnv_iwp, & ! Water path for convective ice cloud-particles - cld_cnv_reice, & ! Effective radius for convective ice cloud-particles - cld_pbl_lwp, & ! Water path for PBL liquid cloud-particles - cld_pbl_reliq, & ! Effective radius for PBL liquid cloud-particles - cld_pbl_iwp, & ! Water path for PBL ice cloud-particles - cld_pbl_reice, & ! Effective radius for PBL ice cloud-particles - cloud_overlap_param ! Cloud overlap parameter + p_lay, & !< Pressure @ model layer-centers (Pa) + t_lay, & !< Temperature (K) + p_lev, & !< Pressure @ model layer-interfaces (Pa) + t_lev, & !< Temperature @ model levels (K) + vmr_o2, & !< Molar-mixing ratio oxygen + vmr_h2o, & !< Molar-mixing ratio water vapor + vmr_o3, & !< Molar-mixing ratio ozone + vmr_ch4, & !< Molar-mixing ratio methane + vmr_n2o, & !< Molar-mixing ratio nitrous oxide + vmr_co2, & !< Molar-mixing ratio carbon dioxide + cld_frac, & !< Cloud-fraction for stratiform clouds + cld_lwp, & !< Water path for stratiform liquid cloud-particles + cld_reliq, & !< Effective radius for stratiform liquid cloud-particles + cld_iwp, & !< Water path for stratiform ice cloud-particles + cld_reice, & !< Effective radius for stratiform ice cloud-particles + cld_swp, & !< Water path for snow hydrometeors + cld_resnow, & !< Effective radius for snow hydrometeors + cld_rwp, & !< Water path for rain hydrometeors + cld_rerain, & !< Effective radius for rain hydrometeors + precip_frac, & !< Precipitation fraction (not active, currently precipitation optics uses cloud-fraction) + cld_cnv_lwp, & !< Water path for convective liquid cloud-particles + cld_cnv_reliq, & !< Effective radius for convective liquid cloud-particles + cld_cnv_iwp, & !< Water path for convective ice cloud-particles + cld_cnv_reice, & !< Effective radius for convective ice cloud-particles + cld_pbl_lwp, & !< Water path for PBL liquid cloud-particles + cld_pbl_reliq, & !< Effective radius for PBL liquid cloud-particles + cld_pbl_iwp, & !< Water path for PBL ice cloud-particles + cld_pbl_reice, & !< Effective radius for PBL ice cloud-particles + cloud_overlap_param !< Cloud overlap parameter real(kind_phys), dimension(:,:,:), intent(in) :: & - aerlw_tau, & ! Aerosol optical depth - aerlw_ssa, & ! Aerosol single scattering albedo - aerlw_g ! Aerosol asymmetry paramter + aerlw_tau, & !< Aerosol optical depth + aerlw_ssa, & !< Aerosol single scattering albedo + aerlw_g !< Aerosol asymmetry paramter character(len=*), dimension(:), intent(in) :: & - active_gases_array ! List of active gases from namelist as array + active_gases_array !< List of active gases from namelist as array ! Outputs real(kind_phys), dimension(:,:), intent(inout) :: & - fluxlwUP_jac, & ! Jacobian of upwelling LW surface radiation (W/m2/K) - fluxlwUP_allsky, & ! All-sky flux (W/m2) - fluxlwDOWN_allsky, & ! All-sky flux (W/m2) - fluxlwUP_clrsky, & ! Clear-sky flux (W/m2) - fluxlwDOWN_clrsky, & ! All-sky flux (W/m2) - fluxlwUP_radtime, & ! Copy of fluxes (Used for coupling) - fluxlwDOWN_radtime ! + fluxlwUP_jac, & !< Jacobian of upwelling LW surface radiation (W/m2/K) + fluxlwUP_allsky, & !< All-sky flux (W/m2) + fluxlwDOWN_allsky, & !< All-sky flux (W/m2) + fluxlwUP_clrsky, & !< Clear-sky flux (W/m2) + fluxlwDOWN_clrsky, & !< All-sky flux (W/m2) + fluxlwUP_radtime, & !< Copy of fluxes (Used for coupling) + fluxlwDOWN_radtime !< character(len=*), intent(out) :: & - errmsg ! CCPP error message + errmsg !< CCPP error message integer, intent(out) :: & - errflg ! CCPP error flag + errflg !< CCPP error flag ! Local variables type(ty_fluxes_byband) :: flux_allsky, flux_clrsky @@ -605,5 +591,4 @@ subroutine rrtmgp_lw_main_run(doLWrad, doLWclrsky, top_at_1, doGP_lwscat, enddo end subroutine rrtmgp_lw_main_run -!> @} end module rrtmgp_lw_main diff --git a/physics/Radiation/RRTMGP/rrtmgp_sw_gas_optics.F90 b/physics/Radiation/RRTMGP/rrtmgp_sw_gas_optics.F90 index 5713d188d..3229d2f16 100644 --- a/physics/Radiation/RRTMGP/rrtmgp_sw_gas_optics.F90 +++ b/physics/Radiation/RRTMGP/rrtmgp_sw_gas_optics.F90 @@ -1,10 +1,7 @@ !> \file rrtmgp_sw_gas_optics.F90 -!! -!> \defgroup rrtmgp_sw_gas_optics rrtmgp_sw_gas_optics.F90 -!! -!! \brief This module contains a routine to initialize the k-distribution data used +!! This module contains a routine to initialize the k-distribution data used !! by the RRTMGP shortwave radiation scheme. -!! + module rrtmgp_sw_gas_optics use machine, only: kind_phys use mo_rte_kind, only: wl @@ -79,43 +76,34 @@ module rrtmgp_sw_gas_optics scale_by_complement_upperSW ! Absorption is scaled by concentration of scaling_gas (F) or its complement (T) contains - ! ###################################################################################### -!>\defgroup rrtmgp_sw_gas_optics_mod GFS RRTMGP-SW Gas Optics Module -!> @{ -!! \section arg_table_rrtmgp_sw_gas_optics_init +!> \section arg_table_rrtmgp_sw_gas_optics_init Argument Table !! \htmlinclude rrtmgp_sw_gas_optics.html !! -!> \ingroup rrtmgp_sw_gas_optics -!! !! RRTMGP relies heavility on derived-data-types, which contain type-bound procedures !! that are referenced frequently throughout the RRTMGP shortwave scheme. The data needed !! for the correlated k-distribution is also contained within this type. Within this module, !! the full k-distribution data is read in, reduced by the "active gases" provided, and !! loaded into the RRTMGP DDT, ty_gas_optics_rrtmgp. -!! -!! \section rrtmgp_sw_gas_optics_init -!> @{ - ! ###################################################################################### subroutine rrtmgp_sw_gas_optics_init(rrtmgp_root_dir, rrtmgp_sw_file_gas, & active_gases_array, mpicomm, mpirank, mpiroot, errmsg, errflg) ! Inputs character(len=128),intent(in) :: & - rrtmgp_root_dir, & ! RTE-RRTMGP root directory - rrtmgp_sw_file_gas ! RRTMGP file containing K-distribution data + rrtmgp_root_dir, & !< RTE-RRTMGP root directory + rrtmgp_sw_file_gas !< RRTMGP file containing K-distribution data character(len=*), dimension(:), intent(in) :: & - active_gases_array ! List of active gases from namelist as array + active_gases_array !< List of active gases from namelist as array type(MPI_Comm),intent(in) :: & - mpicomm ! MPI communicator + mpicomm !< MPI communicator integer,intent(in) :: & - mpirank, & ! Current MPI rank - mpiroot ! Master MPI rank + mpirank, & !< Current MPI rank + mpiroot !< Master MPI rank ! Outputs character(len=*), intent(out) :: & - errmsg ! CCPP error message + errmsg !< CCPP error message integer, intent(out) :: & - errflg ! CCPP error code + errflg !< CCPP error code ! Local variables integer :: status, ncid, dimid, varID, mpierr, iChar @@ -497,6 +485,5 @@ subroutine rrtmgp_sw_gas_optics_init(rrtmgp_root_dir, rrtmgp_sw_file_gas, sb_defaultSW, rayl_lowerSW, rayl_upperSW)) end subroutine rrtmgp_sw_gas_optics_init -!> @} end module rrtmgp_sw_gas_optics diff --git a/physics/Radiation/RRTMGP/rrtmgp_sw_main.F90 b/physics/Radiation/RRTMGP/rrtmgp_sw_main.F90 index ab379cc9e..77691d836 100644 --- a/physics/Radiation/RRTMGP/rrtmgp_sw_main.F90 +++ b/physics/Radiation/RRTMGP/rrtmgp_sw_main.F90 @@ -99,95 +99,95 @@ subroutine rrtmgp_sw_main_run(doSWrad, doSWclrsky, top_at_1, doGP_sgs_cnv, doGP_ ! Inputs logical, intent(in) :: & - doSWrad, & ! Flag to perform shortwave calculation - doSWclrsky, & ! Flag to compute clear-sky fluxes - top_at_1, & ! Flag for vertical ordering convention - doGP_sgs_pbl, & ! Flag to include sgs PBL clouds - doGP_sgs_cnv ! Flag to include sgs convective clouds + doSWrad, & !< Flag to perform shortwave calculation + doSWclrsky, & !< Flag to compute clear-sky fluxes + top_at_1, & !< Flag for vertical ordering convention + doGP_sgs_pbl, & !< Flag to include sgs PBL clouds + doGP_sgs_cnv !< Flag to include sgs convective clouds integer,intent(in) :: & - nCol, & ! Number of horizontal points - nDay, & ! Number of daytime points - nLay, & ! Number of vertical grid points. - nGases, & ! Number of active gases - rrtmgp_phys_blksz, & ! Number of horizontal points to process at once. - iovr, & ! Choice of cloud-overlap method - iovr_convcld, & ! Choice of convective cloud-overlap - iovr_max, & ! Flag for maximum cloud overlap method - iovr_maxrand, & ! Flag for maximum-random cloud overlap method - iovr_rand, & ! Flag for random cloud overlap method - iovr_dcorr, & ! Flag for decorrelation-length cloud overlap method - iovr_exp, & ! Flag for exponential cloud overlap method - iovr_exprand, & ! Flag for exponential-random cloud overlap method - isubc_sw, & ! + nCol, & !< Number of horizontal points + nDay, & !< Number of daytime points + nLay, & !< Number of vertical grid points. + nGases, & !< Number of active gases + rrtmgp_phys_blksz, & !< Number of horizontal points to process at once. + iovr, & !< Choice of cloud-overlap method + iovr_convcld, & !< Choice of convective cloud-overlap + iovr_max, & !< Flag for maximum cloud overlap method + iovr_maxrand, & !< Flag for maximum-random cloud overlap method + iovr_rand, & !< Flag for random cloud overlap method + iovr_dcorr, & !< Flag for decorrelation-length cloud overlap method + iovr_exp, & !< Flag for exponential cloud overlap method + iovr_exprand, & !< Flag for exponential-random cloud overlap method + isubc_sw, & !< iSFC integer,intent(in),dimension(:) :: & - idx, & ! Index array for daytime points - icseed_sw ! Seed for random number generation for shortwave radiation + idx, & !< Index array for daytime points + icseed_sw !< Seed for random number generation for shortwave radiation real(kind_phys), dimension(:), intent(in) :: & - sfc_alb_nir_dir, & ! Surface albedo (direct) - sfc_alb_nir_dif, & ! Surface albedo (diffuse) - sfc_alb_uvvis_dir, & ! Surface albedo (direct) - sfc_alb_uvvis_dif, & ! Surface albedo (diffuse) - coszen ! Cosize of SZA + sfc_alb_nir_dir, & !< Surface albedo (direct) + sfc_alb_nir_dif, & !< Surface albedo (diffuse) + sfc_alb_uvvis_dir, & !< Surface albedo (direct) + sfc_alb_uvvis_dif, & !< Surface albedo (diffuse) + coszen !< Cosize of SZA real(kind_phys), dimension(:,:), intent(in) :: & - p_lay, & ! Pressure @ model layer-centers (Pa) - t_lay, & ! Temperature (K) - p_lev, & ! Pressure @ model layer-interfaces (Pa) - t_lev, & ! Temperature @ model levels (K) - vmr_o2, & ! Molar-mixing ratio oxygen - vmr_h2o, & ! Molar-mixing ratio water vapor - vmr_o3, & ! Molar-mixing ratio ozone - vmr_ch4, & ! Molar-mixing ratio methane - vmr_n2o, & ! Molar-mixing ratio nitrous oxide - vmr_co2, & ! Molar-mixing ratio carbon dioxide - cld_frac, & ! Cloud-fraction for stratiform clouds - cld_lwp, & ! Water path for stratiform liquid cloud-particles - cld_reliq, & ! Effective radius for stratiform liquid cloud-particles - cld_iwp, & ! Water path for stratiform ice cloud-particles - cld_reice, & ! Effective radius for stratiform ice cloud-particles - cld_swp, & ! Water path for snow hydrometeors - cld_resnow, & ! Effective radius for snow hydrometeors - cld_rwp, & ! Water path for rain hydrometeors - cld_rerain, & ! Effective radius for rain hydrometeors - precip_frac, & ! Precipitation fraction - cld_cnv_lwp, & ! Water path for convective liquid cloud-particles - cld_cnv_reliq, & ! Effective radius for convective liquid cloud-particles - cld_cnv_iwp, & ! Water path for convective ice cloud-particles - cld_cnv_reice, & ! Effective radius for convective ice cloud-particles - cld_pbl_lwp, & ! Water path for PBL liquid cloud-particles - cld_pbl_reliq, & ! Effective radius for PBL liquid cloud-particles - cld_pbl_iwp, & ! Water path for PBL ice cloud-particles - cld_pbl_reice, & ! Effective radius for PBL ice cloud-particles - cloud_overlap_param ! + p_lay, & !< Pressure @ model layer-centers (Pa) + t_lay, & !< Temperature (K) + p_lev, & !< Pressure @ model layer-interfaces (Pa) + t_lev, & !< Temperature @ model levels (K) + vmr_o2, & !< Molar-mixing ratio oxygen + vmr_h2o, & !< Molar-mixing ratio water vapor + vmr_o3, & !< Molar-mixing ratio ozone + vmr_ch4, & !< Molar-mixing ratio methane + vmr_n2o, & !< Molar-mixing ratio nitrous oxide + vmr_co2, & !< Molar-mixing ratio carbon dioxide + cld_frac, & !< Cloud-fraction for stratiform clouds + cld_lwp, & !< Water path for stratiform liquid cloud-particles + cld_reliq, & !< Effective radius for stratiform liquid cloud-particles + cld_iwp, & !< Water path for stratiform ice cloud-particles + cld_reice, & !< Effective radius for stratiform ice cloud-particles + cld_swp, & !< Water path for snow hydrometeors + cld_resnow, & !< Effective radius for snow hydrometeors + cld_rwp, & !< Water path for rain hydrometeors + cld_rerain, & !< Effective radius for rain hydrometeors + precip_frac, & !< Precipitation fraction + cld_cnv_lwp, & !< Water path for convective liquid cloud-particles + cld_cnv_reliq, & !< Effective radius for convective liquid cloud-particles + cld_cnv_iwp, & !< Water path for convective ice cloud-particles + cld_cnv_reice, & !< Effective radius for convective ice cloud-particles + cld_pbl_lwp, & !< Water path for PBL liquid cloud-particles + cld_pbl_reliq, & !< Effective radius for PBL liquid cloud-particles + cld_pbl_iwp, & !< Water path for PBL ice cloud-particles + cld_pbl_reice, & !< Effective radius for PBL ice cloud-particles + cloud_overlap_param !< real(kind_phys), dimension(:,:,:), intent(in) :: & - aersw_tau, & ! Aerosol optical depth - aersw_ssa, & ! Aerosol single scattering albedo - aersw_g ! Aerosol asymmetry paramter + aersw_tau, & !< Aerosol optical depth + aersw_ssa, & !< Aerosol single scattering albedo + aersw_g !< Aerosol asymmetry paramter character(len=*), dimension(:), intent(in) :: & - active_gases_array ! List of active gases from namelist as array + active_gases_array !< List of active gases from namelist as array real(kind_phys), intent(in) :: & - solcon ! Solar constant + solcon !< Solar constant ! Outputs character(len=*), intent(out) :: & - errmsg ! CCPP error message + errmsg !< CCPP error message integer, intent(out) :: & - errflg ! CCPP error flag + errflg !< CCPP error flag real(kind_phys), dimension(:,:), intent(inout) :: & - cldtausw ! Approx 10.mu band layer cloud optical depth + cldtausw !< Approx 10.mu band layer cloud optical depth real(kind_phys), dimension(:,:), intent(inout) :: & - fluxswUP_allsky, & ! RRTMGP upward all-sky flux profiles (W/m2) - fluxswDOWN_allsky, & ! RRTMGP downward all-sky flux profiles (W/m2) - fluxswUP_clrsky, & ! RRTMGP upward clear-sky flux profiles (W/m2) - fluxswDOWN_clrsky ! RRTMGP downward clear-sky flux profiles (W/m2) + fluxswUP_allsky, & !< RRTMGP upward all-sky flux profiles (W/m2) + fluxswDOWN_allsky, & !< RRTMGP downward all-sky flux profiles (W/m2) + fluxswUP_clrsky, & !< RRTMGP upward clear-sky flux profiles (W/m2) + fluxswDOWN_clrsky !< RRTMGP downward clear-sky flux profiles (W/m2) type(cmpfsw_type), dimension(:), intent(inout) :: & - scmpsw ! 2D surface fluxes, components: - ! uvbfc - total sky downward uv-b flux (W/m2) - ! uvbf0 - clear sky downward uv-b flux (W/m2) - ! nirbm - downward nir direct beam flux (W/m2) - ! nirdf - downward nir diffused flux (W/m2) - ! visbm - downward uv+vis direct beam flux (W/m2) - ! visdf - downward uv+vis diffused flux (W/m2) + scmpsw !< 2D surface fluxes, components: + !< uvbfc - total sky downward uv-b flux (W/m2) + !< uvbf0 - clear sky downward uv-b flux (W/m2) + !< nirbm - downward nir direct beam flux (W/m2) + !< nirdf - downward nir diffused flux (W/m2) + !< visbm - downward uv+vis direct beam flux (W/m2) + !< visdf - downward uv+vis diffused flux (W/m2) ! Local variables type(cmpfsw_type), dimension(rrtmgp_phys_blksz) :: scmpsw_clrsky, scmpsw_allsky diff --git a/physics/docs/_doxygen/custom.css b/physics/docs/_doxygen/custom.css new file mode 100644 index 000000000..ad6f35a52 --- /dev/null +++ b/physics/docs/_doxygen/custom.css @@ -0,0 +1,57 @@ +.github-corner svg { + fill: var(--primary-light-color); + color: var(--page-background-color); + width: 72px; + height: 72px; +} + +@media screen and (max-width: 767px) { + .github-corner svg { + width: 50px; + height: 50px; + } + #projectnumber { + margin-right: 22px; + } +} + +.alter-theme-button { + display: inline-block; + cursor: pointer; + background: var(--primary-color); + color: var(--page-background-color) !important; + border-radius: var(--border-radius-medium); + padding: var(--spacing-small) var(--spacing-medium); + text-decoration: none; +} + +.alter-theme-button:hover { + background: var(--primary-dark-color); +} + +html.dark-mode .darkmode_inverted_image img, /* < doxygen 1.9.3 */ +html.dark-mode .darkmode_inverted_image object[type="image/svg+xml"] /* doxygen 1.9.3 */ { + filter: brightness(89%) hue-rotate(180deg) invert(); +} + +.bordered_image { + border-radius: var(--border-radius-small); + border: 1px solid var(--separator-color); + display: inline-block; + overflow: hidden; +} + +html.dark-mode .bordered_image img, /* < doxygen 1.9.3 */ +html.dark-mode .bordered_image object[type="image/svg+xml"] /* doxygen 1.9.3 */ { + border-radius: var(--border-radius-small); +} + +.title_screenshot { + filter: drop-shadow(0px 3px 10px rgba(0,0,0,0.22)); + max-width: 500px; + margin: var(--spacing-large) 0; +} + +.title_screenshot .caption { + display: none; +} diff --git a/physics/docs/_doxygen/doxygen-awesome.css b/physics/docs/_doxygen/doxygen-awesome.css index 217fdedfc..5643749c2 100644 --- a/physics/docs/_doxygen/doxygen-awesome.css +++ b/physics/docs/_doxygen/doxygen-awesome.css @@ -894,7 +894,7 @@ div.contents p, div.contents li { } div.contents div.dyncontent { - margin: var(--spacing-medium) 0; + margin: var(--spacing-medium) 0; overflow-x: scroll; } @media (prefers-color-scheme: dark) { diff --git a/physics/docs/_doxygen/header.html b/physics/docs/_doxygen/header.html index 2e72051ea..8896efc85 100644 --- a/physics/docs/_doxygen/header.html +++ b/physics/docs/_doxygen/header.html @@ -1,22 +1,38 @@ - - + + + + + + + + + + $projectname: $title $title + + + + + + - $treeview $search $mathjax @@ -24,6 +40,13 @@ $extrastylesheet + + + + + +
    diff --git a/physics/docs/ccpp_doxyfile b/physics/docs/ccpp_doxyfile index b1f079541..2dc1ac4de 100644 --- a/physics/docs/ccpp_doxyfile +++ b/physics/docs/ccpp_doxyfile @@ -42,7 +42,7 @@ DOXYFILE_ENCODING = UTF-8 # title of most generated pages and in a few other places. # The default value is: My Project. -PROJECT_NAME = "CCPP SciDoc" +PROJECT_NAME = "CCPP SciDoc v7.0.0" # The PROJECT_NUMBER tag can be used to enter a project or revision number. This # could be handy for archiving the generated documentation or if some version @@ -168,7 +168,7 @@ INLINE_INHERITED_MEMB = NO # shortest path that makes the file name unique will be used # The default value is: YES. -FULL_PATH_NAMES = NO +FULL_PATH_NAMES = YES # The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. # Stripping is only done if one of the specified strings matches the left-hand @@ -1364,7 +1364,8 @@ HTML_STYLESHEET = HTML_EXTRA_STYLESHEET = _doxygen/doxygen-awesome.css \ _doxygen/doxygen-awesome-sidebar-only.css \ _doxygen/doxygen-awesome-sidebar-only-darkmode-toggle.css \ - _doxygen/doxygen-awesome-ccpp.css + _doxygen/doxygen-awesome-ccpp.css \ + _doxygen/custom.css # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or # other source files which should be copied to the HTML output directory. Note @@ -1388,7 +1389,7 @@ HTML_EXTRA_FILES = _doxygen/doxygen-awesome-darkmode-toggle.js \ # The default value is: AUTO_LIGHT. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_COLORSTYLE = AUTO_LIGHT +HTML_COLORSTYLE = LIGHT # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen # will adjust the colors in the style sheet and background images according to diff --git a/physics/docs/library.bib b/physics/docs/library.bib index 77f167de8..d622bca48 100644 --- a/physics/docs/library.bib +++ b/physics/docs/library.bib @@ -1,13 +1,62 @@ %% This BibTeX bibliography file was created using BibDesk. %% https://bibdesk.sourceforge.io/ -%% Created for Man Zhang at 2024-06-17 12:34:22 -0600 +%% Created for Man Zhang at 2024-06-24 12:44:05 -0600 %% Saved with string encoding Unicode (UTF-8) +@article{Mansell_2020, + author = {Mansell, Edward R. and Dawson II, Daniel T. and Straka, Jerry M.}, + date-added = {2024-06-24 12:43:58 -0600}, + date-modified = {2024-06-24 12:43:58 -0600}, + doi = {10.1175/jas-d-19-0268.1}, + issn = {1520-0469}, + journal = {Journal of the Atmospheric Sciences}, + month = oct, + number = {10}, + pages = {3361{\^a}€“3385}, + publisher = {American Meteorological Society}, + title = {Bin-Emulating Hail Melting in Three-Moment Bulk Microphysics}, + url = {http://dx.doi.org/10.1175/JAS-D-19-0268.1}, + volume = {77}, + year = {2020}, + bdsk-url-1 = {http://dx.doi.org/10.1175/JAS-D-19-0268.1}} + +@article{tsiringakis_et_al_2017, + abstract = {At present atmospheric models for weather and climate use enhanced turbulent drag under stable conditions, because these empirically provide the necessary momentum drag for accurate forecast of synoptic systems. The enhanced mixing (also known as the `long tail'), introduces drag that cannot be physically justified and degrades the score for near-surface temperature, wind and boundary-layer height, and degrades fog and frost forecasting. This study hypothesizes that the insufficient representation of small-scale orographic gravity wave drag in the stable boundary layer may explain the need for the enhanced drag formulation. Hence, we introduce a new scheme in the Weather Research and Forecasting model that accounts for this drag as a superposition on the turbulent drag induced by a so-called short-tail mixing function. The latter is consistent with boundary-layer observations and large-eddy simulations. We evaluate this scheme, against a short-tail and a long-tail scheme for sixteen eight-day forecasts over the Atlantic Ocean and Europe in winter. The new scheme outperforms the short- and long-tail schemes on sea-level pressure, height of the 500 hPa field, 10 m wind and the cyclonic core pressure. Cyclonic core pressure bias is reduced by approximately 45 to 80\% compared to the short-tail scheme. Sea-level pressure bias is reduced by up to 0.48 hPa (50\%) over the whole domain compared to the short-tail run. The new scheme has even smaller biases than the long-tail scheme, supporting our hypothesis that small-scale gravity wave drag may explain the need for a long-tail function. Near-surface wind bias is reduced by up to 40\% compared to the long-tail and up to 32\% compared to the short-tail scheme, while the 2 m temperature bias is only slightly increased (19\%).}, + author = {Tsiringakis, A. and Steeneveld, G. J. and Holtslag, A. A. M.}, + doi = {https://doi.org/10.1002/qj.3021}, + eprint = {https://rmets.onlinelibrary.wiley.com/doi/pdf/10.1002/qj.3021}, + journal = {Quarterly Journal of the Royal Meteorological Society}, + keywords = {orographic gravity wave drag, stable boundary layer, WRF model, parametrization, meteorology}, + number = {704}, + pages = {1504-1516}, + title = {Small-scale orographic gravity wave drag in stable boundary layers and its impact on synoptic systems and near-surface meteorology}, + url = {https://rmets.onlinelibrary.wiley.com/doi/abs/10.1002/qj.3021}, + volume = {143}, + year = {2017}, + bdsk-url-1 = {https://rmets.onlinelibrary.wiley.com/doi/abs/10.1002/qj.3021}, + bdsk-url-2 = {https://doi.org/10.1002/qj.3021}} + +@article{choi_and_hong_2015, + abstract = {Abstract A subgrid orographic parameterization (SOP) is updated by including the effects of orographic anisotropy and flow-blocking drag (FBD). The impact of the updated SOP on short-range forecasts is investigated using a global atmospheric forecast model applied to a heavy snowfall event over Korea on 4 January 2010. When the SOP is updated, the orographic drag in the lower troposphere noticeably increases owing to the additional FBD over mountainous regions. The enhanced drag directly weakens the excessive wind speed in the low troposphere and indirectly improves the temperature and mass fields over East Asia. In addition, the snowfall overestimation over Korea is improved by the reduced heat fluxes from the surface. The forecast improvements are robust regardless of the horizontal resolution of the model between T126 and T510. The parameterization is statistically evaluated based on the skill of the medium-range forecasts for February 2014. For the medium-range forecasts, the skill improvements of the wind speed and temperature in the low troposphere are observed globally and for East Asia while both positive and negative effects appear indirectly in the middle-upper troposphere. The statistical skill for the precipitation is mostly improved due to the improvements in the synoptic fields. The improvements are also found for seasonal simulation throughout the troposphere and stratosphere during boreal winter.}, + author = {Choi, Hyun-Joo and Hong, Song-You}, + doi = {https://doi.org/10.1002/2015JD024230}, + eprint = {https://agupubs.onlinelibrary.wiley.com/doi/pdf/10.1002/2015JD024230}, + journal = {Journal of Geophysical Research: Atmospheres}, + keywords = {subgrid orographic parameterization, orographic anisotropy, flow-blocking drag, forecast skills, GRIMs}, + number = {24}, + pages = {12445-12457}, + title = {An updated subgrid orographic parameterization for global atmospheric forecast models}, + url = {https://agupubs.onlinelibrary.wiley.com/doi/abs/10.1002/2015JD024230}, + volume = {120}, + year = {2015}, + bdsk-url-1 = {https://agupubs.onlinelibrary.wiley.com/doi/abs/10.1002/2015JD024230}, + bdsk-url-2 = {https://doi.org/10.1002/2015JD024230}} + @article{Liou_1973, author = {Liou, Kuo-Nan}, date-added = {2024-06-17 12:33:23 -0600}, diff --git a/physics/docs/pdftxt/NSSLMICRO.txt b/physics/docs/pdftxt/NSSLMICRO.txt index 44d1f069b..57472a7e7 100644 --- a/physics/docs/pdftxt/NSSLMICRO.txt +++ b/physics/docs/pdftxt/NSSLMICRO.txt @@ -2,7 +2,7 @@ \page NSSLMICRO_page NSSL 2-moment Cloud Microphysics Scheme \section nssl2m_descrp Description -The NSSL 2/3-moment bulk microphysical parameterization scheme that describes form and phase changes among a range of liquid and ice hydrometeors, as described in Mansell et al. (2010) \cite Mansell_etal_2010, Mansell and Ziegler (2013) \cite Mansell_2013, and Mansell et al. (2020) \cite Mansell_etal_2020. The microphysical parameterization predicts the mass mixing ratio and number concentration of cloud droplets, raindrops, cloud ice crystals (columns), snow particles (including large crystals and aggregates), graupel, and (optionally) hail. Optionally, a third moment (reflectivity or 6th moment) of rain, graupel, and hail can be activated. +The NSSL 2/3-moment bulk microphysical parameterization scheme that describes form and phase changes among a range of liquid and ice hydrometeors, as described in Mansell et al. (2010) \cite Mansell_etal_2010, Mansell and Ziegler (2013) \cite Mansell_2013, and Mansell et al. (2020) \cite Mansell_2020. The microphysical parameterization predicts the mass mixing ratio and number concentration of cloud droplets, raindrops, cloud ice crystals (columns), snow particles (including large crystals and aggregates), graupel, and (optionally) hail. Optionally, a third moment (reflectivity or 6th moment) of rain, graupel, and hail can be activated. The graupel and hail particle densities are also calculated by predicting the total particle volume. The graupel category therefore emulates a range of characteristics from high-density frozen drops (includes small hail) to low-density graupel (from rimed ice crystals/snow) in its size and density spectrum. The hail category is designed to simulate larger hail sizes. Hail is only produced from higher-density large graupel. diff --git a/physics/docs/pdftxt/RE7/input_RRFS_v1.nml b/physics/docs/pdftxt/RE7/input_RRFS_v1.nml index f15c4e8ff..e80c532fa 100644 --- a/physics/docs/pdftxt/RE7/input_RRFS_v1.nml +++ b/physics/docs/pdftxt/RE7/input_RRFS_v1.nml @@ -1,40 +1,40 @@ !>[GFS_PHYSICS_NML] &gfs_physics_nml - addsmoke_flag = 1 - aero_dir_fdb = .true. - aero_ind_fdb = .false. - bl_mynn_edmf = 1 - bl_mynn_edmf_mom = 1 + addsmoke_flag = 1 + aero_dir_fdb = .true. + aero_ind_fdb = .false. + bl_mynn_edmf = 1 + bl_mynn_edmf_mom = 1 bl_mynn_tkeadvect = .true. - cal_pre = .false. - cdmbgwd = 3.5, 1.0 - clm_debug_print = .false. - clm_lake_debug = .false. - cnvcld = .false. - cnvgwd = .false. + cal_pre = .false. + cdmbgwd = 3.5, 1.0 + clm_debug_print = .false. + clm_lake_debug = .false. + cnvcld = .false. + cnvgwd = .false. coarsepm_settling = 1 - cplflx = .false. - diag_log = .true. - debug = .false. - do_deep = .true. + cplflx = .false. + diag_log = .true. + debug = .false. + do_deep = .true. do_gsl_drag_ls_bl = .true. - do_gsl_drag_ss = .true. - do_gsl_drag_tofd = .true. - do_mynnedmf = .true. - do_mynnsfclay = .true. - do_plumerise = .true. + do_gsl_drag_ss = .true. + do_gsl_drag_tofd = .true. + do_mynnedmf = .true. + do_mynnsfclay = .true. + do_plumerise = .true. do_smoke_transport = .true. - do_tofd = .false. - do_ugwp = .false. - do_ugwp_v0 = .false. + do_tofd = .false. + do_ugwp = .false. + do_ugwp_v0 = .false. do_ugwp_v0_nst_only = .false. do_ugwp_v0_orog_only = .false. - drydep_opt = 1 - dspheat = .true. - dt_inner = 36 - dust_alpha = 10.0 + drydep_opt = 1 + dspheat = .true. + dt_inner = 36 + dust_alpha = 10.0 dust_drylimit_factor = 0.5 - dust_gamma = 1.3 + dust_gamma = 1.3 dust_moist_correction = 2.0 dust_opt = 1 ebb_dcycle = 2 diff --git a/physics/docs/pdftxt/suite_input.nml.txt b/physics/docs/pdftxt/suite_input.nml.txt index b2ad620fc..23558a468 100644 --- a/physics/docs/pdftxt/suite_input.nml.txt +++ b/physics/docs/pdftxt/suite_input.nml.txt @@ -45,6 +45,7 @@ show some variables in the namelist that must match the SDF. cpl_imp_dbg use_cice_alb rrfs_sd +rrfs_smoke_debug lsidea @@ -552,6 +553,7 @@ show some variables in the namelist that must match the SDF. 1 lsoil lsm_noah number of soil layers 4 +lsoil_lsm rdlai lsm_ruc flag to read leaf area index from input files .false. ivegsrc lsm_noah, lsm_ruc, \ref noahmpdrv, sfc_diff flag for vegetation type dataset choice: \n
      @@ -703,6 +705,8 @@ show some variables in the namelist that must match the SDF. lakedepth_threshold \ref clm_lake lakedepth must be greater than this value to enable a lake model 1.0 lakefrac_threshold \ref clm_lake lakefrac must be greater than this value to enable a lake model 0.0 use_lake2m \ref clm_lake use 2m T&Q from CLM lake model .false. +clm_debug_print +clm_lake_debug nstf_name(5) sfc_nst NSST related paramters:\n
      • nstf_name(1): 0=NSST off, 1= NSST on but uncoupled, 2= NSST on and coupled @@ -748,23 +752,17 @@ show some variables in the namelist that must match the SDF.
      • .false.: use reference pressure of 1000 hPa to define potential temperature. This is the alternative method proposed by GSL
      .false. -h0facu -h0facs -fscav_aero -lightning_threat -do_ccpp_suite_sim -fh_dfi_radar -radar_tten_limits -do_cap_suppress -\b RRFS-SD \b parameters -dust_drylimit_factor -dust_moist_correction -dust_moist_opt -dust_alpha -dust_gamma -wetdep_ls_alpha -ebb_dcycle -seas_opt +h0facu GFS_surface_composites_post, GFS_surface_generic_post canopy heat storage factor for sensible heat flux in unstable surface layer 0.25 +h0facs GFS_surface_composites_post, GFS_surface_generic_post canopy heat storage factor for sensible heat flux in stable surface layer 1.0 +fscav_aero cs_conv,cs_conv_pre,samfshalcnv,samfdeepcnv, samfaerosols,cu_gf_driver aerosol scavenging factors +lightning_threat maximum_hourly_diagnostics report lightning threat indices .false. +do_ccpp_suite_sim GFS_ccpp_suite_sim_pre, ccpp_suite_simulator CCPP suite simulator .false. +fh_dfi_radar begin&end of four timespans over which radar_tten is applied -2e10 +radar_tten_limits(2) radar_tten values outside this range (min,max) are discarded +do_cap_suppress set .true. to turn on convection suppression in Grell-Freitas scheme during limited intervals when fh_dfi_radar is enabled .true. +iccn +kice number of layers in ice 2 +lrefres flag for radar reflectivity in restart file diff --git a/physics/hooks/machine.F b/physics/hooks/machine.F index 0269db53c..d6f36305b 100644 --- a/physics/hooks/machine.F +++ b/physics/hooks/machine.F @@ -1,8 +1,6 @@ - module machine - -!! \section arg_table_machine -!! \htmlinclude machine.html +!>\file machine.F !! + module machine implicit none From 9b53b71a4ad790068843479d54b0340dcfee674c Mon Sep 17 00:00:00 2001 From: Man Zhang Date: Mon, 24 Jun 2024 17:00:54 -0600 Subject: [PATCH 23/80] code cleanup --- physics/GWD/ugwpv1_gsldrag.F90 | 3 - .../GFS_ccpp_suite_sim_pre.F90 | 7 +- .../UFS_SCM_NEPTUNE/GFS_cloud_diagnostics.F90 | 2 +- .../UFS_SCM_NEPTUNE/GFS_physics_post.F90 | 51 +++---- .../UFS_SCM_NEPTUNE/GFS_rad_time_vary.fv3.F90 | 6 +- .../UFS_SCM_NEPTUNE/GFS_rad_time_vary.scm.F90 | 6 +- .../UFS_SCM_NEPTUNE/GFS_radiation_surface.F90 | 4 - .../UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_mp.F90 | 39 ++--- .../UFS_SCM_NEPTUNE/GFS_rrtmgp_post.F90 | 18 +-- .../UFS_SCM_NEPTUNE/GFS_rrtmgp_pre.F90 | 139 ++++++++---------- .../UFS_SCM_NEPTUNE/GFS_rrtmgp_setup.F90 | 16 +- .../GFS_suite_stateout_update.F90 | 5 +- .../GFS_surface_loop_control_part1.F90 | 10 +- .../UFS_SCM_NEPTUNE/scm_sfc_flux_spec.F90 | 3 +- .../Radiation/RRTMG/rrtmg_sw_cloud_optics.F90 | 3 + .../RRTMGP/rrtmgp_aerosol_optics.F90 | 73 +++++---- .../RRTMGP/rrtmgp_lw_cloud_optics.F90 | 88 +++++------ .../Radiation/RRTMGP/rrtmgp_lw_gas_optics.F90 | 90 ++++++------ .../RRTMGP/rrtmgp_sw_cloud_optics.F90 | 83 +++++------ .../Radiation/RRTMGP/rrtmgp_sw_gas_optics.F90 | 78 +++++----- physics/Radiation/RRTMGP/rrtmgp_sw_main.F90 | 10 +- physics/docs/ccpp_doxyfile | 5 +- physics/docs/pdftxt/GFS_RRTMGP.txt | 4 - physics/docs/pdftxt/suite_input.nml.txt | 84 +++++------ physics/photochem/module_ozphys.F90 | 6 - 25 files changed, 354 insertions(+), 479 deletions(-) diff --git a/physics/GWD/ugwpv1_gsldrag.F90 b/physics/GWD/ugwpv1_gsldrag.F90 index 9303e0221..992a0854d 100644 --- a/physics/GWD/ugwpv1_gsldrag.F90 +++ b/physics/GWD/ugwpv1_gsldrag.F90 @@ -62,9 +62,6 @@ module ugwpv1_gsldrag !>@brief The subroutine initializes the unified UGWP !> \section arg_table_ugwpv1_gsldrag_init Argument Table !! \htmlinclude ugwpv1_gsldrag_init.html -!! -! ----------------------------------------------------------------------- -! subroutine ugwpv1_gsldrag_init ( & me, master, nlunit, input_nml_file, logunit, & fn_nml2, jdat, lonr, latr, levs, ak, bk, dtp, & diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_ccpp_suite_sim_pre.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_ccpp_suite_sim_pre.F90 index 2c276ca8c..96a5993a7 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_ccpp_suite_sim_pre.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_ccpp_suite_sim_pre.F90 @@ -20,12 +20,7 @@ module GFS_ccpp_suite_sim_pre public GFS_ccpp_suite_sim_pre_run, load_ccpp_suite_sim contains - ! ###################################################################################### - ! - ! SUBROUTINE GFS_ccpp_suite_sim_pre_run - ! - ! ###################################################################################### -!> \section arg_table_GFS_ccpp_suite_sim_pre_run +!> \section arg_table_GFS_ccpp_suite_sim_pre_run Argument Table !! \htmlinclude GFS_ccpp_suite_sim_pre_run.html !! subroutine GFS_ccpp_suite_sim_pre_run(do_ccpp_suite_sim, dtend, ntqv, dtidx, dtp, & diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_cloud_diagnostics.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_cloud_diagnostics.F90 index 86dc2b518..75df87b2e 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_cloud_diagnostics.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_cloud_diagnostics.F90 @@ -28,7 +28,7 @@ module GFS_cloud_diagnostics !! This was bundled together with the prognostic cloud modules within the RRTMG implementation. !! For the RRTMGP implementation we propose to keep these diagnostics independent. !> @{ -!> \section arg_table_GFS_cloud_diagnostics_run +!> \section arg_table_GFS_cloud_diagnostics_run Argument Table !! \htmlinclude GFS_cloud_diagnostics_run.html !! subroutine GFS_cloud_diagnostics_run(nCol, nLev, iovr, iovr_rand, iovr_maxrand, & diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_physics_post.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_physics_post.F90 index fe5409353..cfe16be53 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_physics_post.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_physics_post.F90 @@ -1,4 +1,3 @@ -! ########################################################################################### !> \file GFS_physics_post.F90 !! !! This module contains GFS specific calculations (e.g. diagnostics) and suite specific @@ -13,10 +12,7 @@ module GFS_physics_post public GFS_physics_post_run contains -! ########################################################################################### -! SUBROUTINE GFS_physics_post_run -! ########################################################################################### -!! \section arg_table_GFS_physics_post_run Argument Table +!> \section arg_table_GFS_physics_post_run Argument Table !! \htmlinclude GFS_physics_post_run.html !! subroutine GFS_physics_post_run(nCol, nLev, ntoz, ntracp100, nprocess, nprocess_summed, & @@ -26,39 +22,39 @@ subroutine GFS_physics_post_run(nCol, nLev, ntoz, ntracp100, nprocess, nprocess_ ! Inputs integer, intent(in) :: & - nCol, & ! Horizontal dimension - nLev, & ! Number of vertical layers - ntoz, & ! Index for ozone mixing ratio - ntracp100, & ! Number of tracers plus 100 - nprocess, & ! Number of processes that cause changes in state variables - nprocess_summed,& ! Number of causes in dtidx per tracer summed for total physics tendency - ip_physics, & ! Index for process in diagnostic tendency output - ip_photochem, & ! Index for process in diagnostic tendency output - ip_prod_loss, & ! Index for process in diagnostic tendency output - ip_ozmix, & ! Index for process in diagnostic tendency output - ip_temp, & ! Index for process in diagnostic tendency output - ip_overhead_ozone ! Index for process in diagnostic tendency output + nCol, & !< Horizontal dimension + nLev, & !< Number of vertical layers + ntoz, & !< Index for ozone mixing ratio + ntracp100, & !< Number of tracers plus 100 + nprocess, & !< Number of processes that cause changes in state variables + nprocess_summed,& !< Number of causes in dtidx per tracer summed for total physics tendency + ip_physics, & !< Index for process in diagnostic tendency output + ip_photochem, & !< Index for process in diagnostic tendency output + ip_prod_loss, & !< Index for process in diagnostic tendency output + ip_ozmix, & !< Index for process in diagnostic tendency output + ip_temp, & !< Index for process in diagnostic tendency output + ip_overhead_ozone !< Index for process in diagnostic tendency output integer, intent(in), dimension(:,:) :: & - dtidx ! Bookkeeping indices for GFS diagnostic tendencies + dtidx !< Bookkeeping indices for GFS diagnostic tendencies logical, intent(in) :: & - ldiag3d ! Flag for 3d diagnostic fields + ldiag3d !< Flag for 3d diagnostic fields logical, intent(in), dimension(:) :: & - is_photochem ! Flags for photochemistry processes to sum + is_photochem !< Flags for photochemistry processes to sum ! Inputs (optional) real(kind=kind_phys), intent(in), dimension(:,:), pointer, optional :: & - do3_dt_prd, & ! Physics tendency: production and loss effect - do3_dt_ozmx, & ! Physics tendency: ozone mixing ratio effect - do3_dt_temp, & ! Physics tendency: temperature effect - do3_dt_ohoz ! Physics tendency: overhead ozone effect + do3_dt_prd, & !< Physics tendency: production and loss effect + do3_dt_ozmx, & !< Physics tendency: ozone mixing ratio effect + do3_dt_temp, & !< Physics tendency: temperature effect + do3_dt_ohoz !< Physics tendency: overhead ozone effect ! Outputs real(kind=kind_phys), intent(inout), dimension(:,:,:) :: & - dtend ! Diagnostic tendencies for state variables + dtend !< Diagnostic tendencies for state variables character(len=*), intent(out) :: & - errmsg ! CCPP error message + errmsg !< CCPP error message integer, intent(out) :: & - errflg ! CCPP error flag + errflg !< CCPP error flag ! Locals integer :: idtend, ichem, iphys, itrac @@ -123,6 +119,7 @@ subroutine GFS_physics_post_run(nCol, nLev, ntoz, ntracp100, nprocess, nprocess_ contains +!> subroutine sum_it(isum,itrac,sum_me) integer, intent(in) :: isum ! third index of dtend of summary process integer, intent(in) :: itrac ! tracer or state variable being summed diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rad_time_vary.fv3.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rad_time_vary.fv3.F90 index 978dc177f..f12d0595f 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rad_time_vary.fv3.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rad_time_vary.fv3.F90 @@ -10,12 +10,9 @@ module GFS_rad_time_vary contains -!>\defgroup mod_GFS_rad_time_vary GFS Radiation Time Update -!! This module contains code related to GFS radiation setup. -!> @{ +!> This module contains code related to GFS radiation setup. !> \section arg_table_GFS_rad_time_vary_timestep_init Argument Table !! \htmlinclude GFS_rad_time_vary_timestep_init.html -!! subroutine GFS_rad_time_vary_timestep_init (lrseeds, rseeds, & lslwr, lsswr, isubc_lw, isubc_sw, icsdsw, icsdlw, cnx, cny, isc, jsc, & imap, jmap, sec, kdt, imp_physics, imp_physics_zhao_carr, ipsd0, ipsdlim,& @@ -97,6 +94,5 @@ subroutine GFS_rad_time_vary_timestep_init (lrseeds, rseeds, endif end subroutine GFS_rad_time_vary_timestep_init -!> @} end module GFS_rad_time_vary diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rad_time_vary.scm.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rad_time_vary.scm.F90 index 3f730eaf5..cd745bcc1 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rad_time_vary.scm.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rad_time_vary.scm.F90 @@ -10,12 +10,9 @@ module GFS_rad_time_vary contains -!>\defgroup mod_GFS_rad_time_vary GFS Radiation Time Update -!! This module contains code related to GFS radiation setup. -!> @{ +!> This module contains code related to GFS radiation setup. !> \section arg_table_GFS_rad_time_vary_timestep_init Argument Table !! \htmlinclude GFS_rad_time_vary_timestep_init.html -!! subroutine GFS_rad_time_vary_timestep_init (lrseeds, rseeds, & lslwr, lsswr, isubc_lw, isubc_sw, icsdsw, icsdlw, cnx, cny, isc, jsc, & imap, jmap, sec, kdt, imp_physics, imp_physics_zhao_carr, ipsd0, ipsdlim,& @@ -97,6 +94,5 @@ subroutine GFS_rad_time_vary_timestep_init (lrseeds, rseeds, endif end subroutine GFS_rad_time_vary_timestep_init -!> @} end module GFS_rad_time_vary diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_radiation_surface.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_radiation_surface.F90 index f6067a86c..c2af54b69 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_radiation_surface.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_radiation_surface.F90 @@ -9,14 +9,11 @@ module GFS_radiation_surface contains -!>\defgroup GFS_radiation_surface_mod GFS Radiation Surface Module !! This module contains calls to module_radiation_surface::setemis() to set up !! surface emissivity for LW radiation and to module_radiation_surface::setalb() !! to set up surface albedo for SW radiation. -!> @{ !> \section arg_table_GFS_radiation_surface_init Argument Table !! \htmlinclude GFS_radiation_surface_init.html -!! subroutine GFS_radiation_surface_init (me, ialb, iems, semis_file, con_pi, errmsg, errflg) use module_radiation_surface, only: sfc_init @@ -192,5 +189,4 @@ subroutine GFS_radiation_surface_run ( & end subroutine GFS_radiation_surface_run -!> @} end module GFS_radiation_surface diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_mp.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_mp.F90 index 79ae1559a..b089398e2 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_mp.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_mp.F90 @@ -1,8 +1,5 @@ !> \file GFS_rrtmgp_cloud_mp.F90 -!! -!> \defgroup GFS_rrtmgp_cloud_mp GFS_rrtmgp_cloud_mp.F90 -!! -!! \brief This module contains the interface for ALL cloud microphysics assumptions and +!! This module contains the interface for ALL cloud microphysics assumptions and !! the RRTMGP radiation scheme. Specific details below in subroutines. !! module GFS_rrtmgp_cloud_mp @@ -31,17 +28,11 @@ module GFS_rrtmgp_cloud_mp contains -!>\defgroup gfs_rrtmgp_cloud_mp_mod GFS RRTMGP Cloud MP Module -!! \section arg_table_GFS_rrtmgp_cloud_mp_run +!> \section arg_table_GFS_rrtmgp_cloud_mp_run Argument Table !! \htmlinclude GFS_rrtmgp_cloud_mp_run_html -!! -!> \ingroup GFS_rrtmgp_cloud_mp -!! !! Here the cloud-radiative properties (optical-path, particle-size and sometimes cloud- !! fraction) are computed for cloud producing physics schemes (e.g GFDL-MP, Thompson-MP, !! MYNN-EDMF-pbl, GF-convective, and SAMF-convective clouds). -!! -!! \section GFS_rrtmgp_cloud_mp_run subroutine GFS_rrtmgp_cloud_mp_run(nCol, nLev, nTracers, ncnd, i_cldliq, i_cldice, & i_cldrain, i_cldsnow, i_cldgrpl, i_cldtot, i_cldliq_nc, i_cldice_nc, i_twa, kdt, & imfdeepcnv, imfdeepcnv_gf, imfdeepcnv_samf, doSWrad, doLWrad, effr_in, lmfshal, & @@ -310,8 +301,7 @@ subroutine GFS_rrtmgp_cloud_mp_run(nCol, nLev, nTracers, ncnd, i_cldliq, i_cldic end subroutine GFS_rrtmgp_cloud_mp_run -!> \ingroup GFS_rrtmgp_cloud_mp -!! Compute cloud radiative properties for Grell-Freitas convective cloud scheme. +!> Compute cloud radiative properties for Grell-Freitas convective cloud scheme. !! (Adopted from module_SGSCloud_RadPre) !! !! - The total convective cloud condensate is partitoned by phase, using temperature, into @@ -390,8 +380,7 @@ subroutine cloud_mp_GF(nCol, nLev, lsmask, t_lay, p_lev, p_lay, qs_lay, relhum, enddo end subroutine cloud_mp_GF -!> \ingroup GFS_rrtmgp_cloud_mp -!! Compute cloud radiative properties for MYNN-EDMF PBL cloud scheme. +!> Compute cloud radiative properties for MYNN-EDMF PBL cloud scheme. !! (Adopted from module_SGSCloud_RadPre) !! !! - Cloud-fraction, liquid, and ice condensate mixing-ratios from MYNN-EDMF cloud scheme @@ -463,8 +452,7 @@ subroutine cloud_mp_MYNN(nCol, nLev, lsmask, t_lay, p_lev, p_lay, qs_lay, relhum end subroutine cloud_mp_MYNN -!> \ingroup GFS_rrtmgp_cloud_mp -!! Compute cloud radiative properties for SAMF convective cloud scheme. +!> Compute cloud radiative properties for SAMF convective cloud scheme. !! !! - The total-cloud convective mixing-ratio is partitioned by phase into liquid/ice !! cloud properties. LWP and IWP are computed. @@ -527,8 +515,7 @@ subroutine cloud_mp_SAMF(nCol, nLev, t_lay, p_lev, p_lay, qs_lay, relhum, end subroutine cloud_mp_SAMF -!> \ingroup GFS_rrtmgp_cloud_mp -!! This routine computes the cloud radiative properties for a "unified cloud". +!> This routine computes the cloud radiative properties for a "unified cloud". !! - "unified cloud" implies that the cloud-fraction is PROVIDED. !! - The cloud water path is computed for all provided cloud mixing-ratios and hydrometeors. !! - If particle sizes are provided, they are used. If not, default values are assigned. @@ -658,8 +645,8 @@ subroutine cloud_mp_uni(nCol, nLev, nTracers, ncnd, i_cldliq, i_cldice, i_cldrai enddo ! nLev end subroutine cloud_mp_uni -!> \ingroup GFS_rrtmgp_cloud_mp -!! This routine computes the cloud radiative properties for the Thompson cloud micro- + +!> This routine computes the cloud radiative properties for the Thompson cloud micro- !! physics scheme. !! !! - The cloud water path is computed for all provided cloud mixing-ratios and hydrometeors. @@ -791,8 +778,7 @@ subroutine cloud_mp_thompson(nCol, nLev, nTracers, ncnd, i_cldliq, i_cldice, i_c end subroutine cloud_mp_thompson -!> \ingroup GFS_rrtmgp_cloud_mp -!! This function computes the cloud-fraction following. +!> This function computes the cloud-fraction following. !! Xu-Randall(1996) A Semiempirical Cloudiness Parameterization for Use in Climate Models !! https://doi.org/10.1175/1520-0469(1996)053<3084:ASCPFU>2.0.CO;2 !! @@ -835,11 +821,8 @@ function cld_frac_XuRandall(p_lay, qs_lay, relhum, cld_mr, alpha) return end function - ! ###################################################################################### - ! This routine is a wrapper to update the Thompson effective particle sizes used by the - ! RRTMGP radiation scheme. - ! - ! ###################################################################################### + !> This routine is a wrapper to update the Thompson effective particle sizes used by the + !! RRTMGP radiation scheme. subroutine cmp_reff_Thompson(nLev, nCol, i_cldliq, i_cldice, i_cldsnow, i_cldice_nc, & i_cldliq_nc, i_twa, q_lay, p_lay, t_lay, tracer, con_eps, con_rd, ltaerosol, & mraerosol, lsmask, effrin_cldliq, effrin_cldice, effrin_cldsnow) diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_post.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_post.F90 index 22fe2fc21..c8a8b59ed 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_post.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_post.F90 @@ -1,8 +1,5 @@ !> \file GFS_rrtmgp_post.F90 -!! -!> \defgroup GFS_rrtmgp_post GFS_rrtmgp_post.F90 -!! -!! \brief RRTMGP post-processing routine. +!! RRTMGP post-processing routine. !! module GFS_rrtmgp_post use machine, only: kind_phys @@ -15,23 +12,16 @@ module GFS_rrtmgp_post public GFS_rrtmgp_post_run contains - ! ######################################################################################## -!>\defgroup gfs_rrtmgp_post_mod GFS RRTMGP Post Module -!> \section arg_table_GFS_rrtmgp_post_run + +!> \section arg_table_GFS_rrtmgp_post_run Argument Table !! \htmlinclude GFS_rrtmgp_post.html -!! -!! \ingroup GFS_rrtmgp_post -!! -!! \brief The all-sky radiation tendency is computed, the clear-sky tendency is computed +!!The all-sky radiation tendency is computed, the clear-sky tendency is computed !! if requested. !! !! RRTMGP surface and TOA fluxes are copied to fields that persist between radiation/physics !! calls. !! !! (optional) Save additional diagnostics. -!! -!! \section GFS_rrtmgp_post_run - ! ######################################################################################## subroutine GFS_rrtmgp_post_run (nCol, nLev, nDay, iSFC, iTOA, idxday, doLWrad, doSWrad, & do_lw_clrsky_hr, do_sw_clrsky_hr, save_diag, fhlwr, fhswr, sfc_alb_nir_dir, & sfc_alb_nir_dif, sfc_alb_uvvis_dir, sfc_alb_uvvis_dif, p_lev, tsfa, coszen, coszdg, & diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_pre.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_pre.F90 index cbf8d161b..2e0ea7f78 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_pre.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_pre.F90 @@ -1,9 +1,7 @@ !> \file GFS_rrtmgp_pre.F90 -!! -!> \defgroup GFS_rrtmgp_pre GFS_rrtmgp_pre.F90 -!! !! \brief This module contains code to prepare model fields for use by the RRTMGP !! radiation scheme. + module GFS_rrtmgp_pre use machine, only: kind_phys use funcphys, only: fpvs @@ -33,29 +31,23 @@ module GFS_rrtmgp_pre public GFS_rrtmgp_pre_run,GFS_rrtmgp_pre_init contains -!>\defgroup gfs_rrtmgp_pre GFS RRTMGP Pre Module -!! \section arg_table_GFS_rrtmgp_pre_init +!> \section arg_table_GFS_rrtmgp_pre_init Argument Table !! \htmlinclude GFS_rrtmgp_pre_init.html -!! -!> \ingroup GFS_rrtmgp_pre -!! -!! \brief Actuve gas-names are read from namelist. Set to interstitial%active_gases. -!! -!! \section GFS_rrtmgp_pre_init +!! Actuve gas-names are read from namelist. Set to interstitial%active_gases. subroutine GFS_rrtmgp_pre_init(nGases, active_gases, active_gases_array, errmsg, errflg) ! Inputs integer, intent(in) :: & - nGases ! Number of active gases in RRTMGP + nGases !< Number of active gases in RRTMGP character(len=*), intent(in) :: & - active_gases ! List of active gases from namelist + active_gases !< List of active gases from namelist character(len=*), dimension(:), intent(out) :: & - active_gases_array ! List of active gases from namelist as array + active_gases_array !< List of active gases from namelist as array ! Outputs character(len=*), intent(out) :: & - errmsg ! Error message + errmsg !< Error message integer, intent(out) :: & - errflg ! Error flag + errflg !< Error flag ! Local variables character(len=1) :: tempstr @@ -101,16 +93,9 @@ subroutine GFS_rrtmgp_pre_init(nGases, active_gases, active_gases_array, errmsg, end subroutine GFS_rrtmgp_pre_init - ! ######################################################################################### -!> \section arg_table_GFS_rrtmgp_pre_run +!> \section arg_table_GFS_rrtmgp_pre_run Argument Table !! \htmlinclude GFS_rrtmgp_pre_run.html -!! -!> \ingroup GFS_rrtmgp_pre -!! -!! \brief Sanitize inputs for use in RRTMGP. -!! -!! \section GFS_rrtmgp_pre_run - ! ######################################################################################### +!! Sanitize inputs for use in RRTMGP. subroutine GFS_rrtmgp_pre_run(me, nCol, nLev, i_o3, doSWrad, doLWrad, fhswr, fhlwr, & xlat, xlon, prsl, tgrs, prslk, prsi, qgrs, tsfc, coslat, sinlat, con_g, con_rd, & con_eps, con_epsm1, con_fvirt, con_epsqs, solhr, raddt, p_lay, t_lay, p_lev, t_lev, & @@ -122,79 +107,79 @@ subroutine GFS_rrtmgp_pre_run(me, nCol, nLev, i_o3, doSWrad, doLWrad, fhswr, fhl ! Inputs integer, intent(in) :: & - me, & ! MPI rank - nCol, & ! Number of horizontal grid points - nLev, & ! Number of vertical layers - ico2, & ! Flag for co2 radiation scheme - i_o3 ! Index into tracer array for ozone + me, & !< MPI rank + nCol, & !< Number of horizontal grid points + nLev, & !< Number of vertical layers + ico2, & !< Flag for co2 radiation scheme + i_o3 !< Index into tracer array for ozone type(ty_ozphys),intent(in) :: & ozphys logical, intent(in) :: & - doSWrad, & ! Call SW radiation? - doLWrad ! Call LW radiation + doSWrad, & !< Call SW radiation? + doLWrad !< Call LW radiation real(kind_phys), intent(in) :: & - fhswr, & ! Frequency of SW radiation call. - fhlwr ! Frequency of LW radiation call. + fhswr, & !< Frequency of SW radiation call. + fhlwr !< Frequency of LW radiation call. real(kind_phys), intent(in) :: & - con_g, & ! Physical constant: gravitational constant - con_rd, & ! Physical constant: gas-constant for dry air - con_eps, & ! Physical constant: Epsilon (Rd/Rv) - con_epsm1, & ! Physical constant: Epsilon (Rd/Rv) minus one - con_fvirt, & ! Physical constant: Inverse of epsilon minus one - con_epsqs, & ! Physical constant: Minimum saturation mixing-ratio (kg/kg) - con_pi, & ! Physical constant: Pi - solhr ! Time in hours after 00z at the current timestep + con_g, & !< Physical constant: gravitational constant + con_rd, & !< Physical constant: gas-constant for dry air + con_eps, & !< Physical constant: Epsilon (Rd/Rv) + con_epsm1, & !< Physical constant: Epsilon (Rd/Rv) minus one + con_fvirt, & !< Physical constant: Inverse of epsilon minus one + con_epsqs, & !< Physical constant: Minimum saturation mixing-ratio (kg/kg) + con_pi, & !< Physical constant: Pi + solhr !< Time in hours after 00z at the current timestep real(kind_phys), dimension(:), intent(in) :: & - xlon, & ! Longitude - xlat, & ! Latitude - tsfc, & ! Surface skin temperature (K) - coslat, & ! Cosine(latitude) - sinlat, & ! Sine(latitude) + xlon, & !< Longitude + xlat, & !< Latitude + tsfc, & !< Surface skin temperature (K) + coslat, & !< Cosine(latitude) + sinlat, & !< Sine(latitude) semis real(kind_phys), dimension(:,:), intent(in) :: & - prsl, & ! Pressure at model-layer centers (Pa) - tgrs, & ! Temperature at model-layer centers (K) - prslk, & ! Exner function at model layer centers (1) - prsi ! Pressure at model-interfaces (Pa) + prsl, & !< Pressure at model-layer centers (Pa) + tgrs, & !< Temperature at model-layer centers (K) + prslk, & !< Exner function at model layer centers (1) + prsi !< Pressure at model-interfaces (Pa) real(kind_phys), dimension(:,:,:), intent(in) :: & - qgrs ! Tracer concentrations (kg/kg) + qgrs !< Tracer concentrations (kg/kg) character(len=*), dimension(:), intent(in) :: & - active_gases_array ! List of active gases from namelist as array + active_gases_array !< List of active gases from namelist as array ! Outputs character(len=*), intent(out) :: & - errmsg ! Error message + errmsg !< Error message integer, intent(out) :: & - errflg, & ! Error flag + errflg, & !< Error flag nDay integer, intent(inout) :: & - iSFC, & ! Vertical index for surface - iTOA ! Vertical index for TOA + iSFC, & !< Vertical index for surface + iTOA !< Vertical index for TOA logical, intent(inout) :: & - top_at_1 ! Vertical ordering flag + top_at_1 !< Vertical ordering flag real(kind_phys), intent(inout) :: & - raddt ! Radiation time-step + raddt !< Radiation time-step real(kind_phys), dimension(:), intent(inout) :: & - tsfg, & ! Ground temperature - tsfa, & ! Skin temperature - tsfc_radtime, & ! Surface temperature at radiation timestep - coszen, & ! Cosine of SZA - coszdg ! Cosine of SZA, daytime + tsfg, & !< Ground temperature + tsfa, & !< Skin temperature + tsfc_radtime, & !< Surface temperature at radiation timestep + coszen, & !< Cosine of SZA + coszdg !< Cosine of SZA, daytime integer, dimension(:), intent(inout) :: & - idxday ! Indices for daylit points + idxday !< Indices for daylit points real(kind_phys), dimension(:,:), intent(inout) :: & - p_lay, & ! Pressure at model-layer - t_lay, & ! Temperature at model layer - q_lay, & ! Water-vapor mixing ratio (kg/kg) - tv_lay, & ! Virtual temperature at model-layers - relhum, & ! Relative-humidity at model-layers - qs_lay, & ! Saturation vapor pressure at model-layers - deltaZ, & ! Layer thickness (m) - deltaZc, & ! Layer thickness (m) (between layer centers) - deltaP, & ! Layer thickness (Pa) - p_lev, & ! Pressure at model-interface - sfc_emiss_byband, & ! - t_lev, & ! Temperature at model-interface + p_lay, & !< Pressure at model-layer + t_lay, & !< Temperature at model layer + q_lay, & !< Water-vapor mixing ratio (kg/kg) + tv_lay, & !< Virtual temperature at model-layers + relhum, & !< Relative-humidity at model-layers + qs_lay, & !< Saturation vapor pressure at model-layers + deltaZ, & !< Layer thickness (m) + deltaZc, & !< Layer thickness (m) (between layer centers) + deltaP, & !< Layer thickness (Pa) + p_lev, & !< Pressure at model-interface + sfc_emiss_byband, & !< + t_lev, & !< Temperature at model-interface vmr_o2, vmr_h2o, vmr_o3, vmr_ch4, vmr_n2o, vmr_co2 ! Local variables diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_setup.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_setup.F90 index 2739c951b..2d84db985 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_setup.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_setup.F90 @@ -31,10 +31,8 @@ module GFS_rrtmgp_setup contains -!> \defgroup GFS_rrtmgp_setup_mod GFS RRTMGP Scheme Setup Module -!! \section arg_table_GFS_rrtmgp_setup_init +!> \section arg_table_GFS_rrtmgp_setup_init Argument Table !! \htmlinclude GFS_rrtmgp_setup_init.html -!! subroutine GFS_rrtmgp_setup_init(do_RRTMGP, imp_physics, imp_physics_fer_hires, & imp_physics_gfdl, imp_physics_thompson, imp_physics_wsm6, imp_physics_zhao_carr, & imp_physics_zhao_carr_pdf, imp_physics_mg, si, levr, ictm, isol, ico2, iaer, & @@ -140,12 +138,8 @@ subroutine GFS_rrtmgp_setup_init(do_RRTMGP, imp_physics, imp_physics_fer_hires, return end subroutine GFS_rrtmgp_setup_init - ! ######################################################################################### - ! SUBROUTINE GFS_rrtmgp_setup_timestep_init - ! ######################################################################################### -!> \section arg_table_GFS_rrtmgp_setup_timestep_init +!> \section arg_table_GFS_rrtmgp_setup_timestep_init Argument Table !! \htmlinclude GFS_rrtmgp_setup_timestep_init.html -!! subroutine GFS_rrtmgp_setup_timestep_init (idate, jdate, deltsw, deltim, doSWrad, me, & iaermdl, aeros_file, isol, slag, sdec, cdec, solcon, con_pi, co2dat_file, & co2gbl_file, ictm, ico2, ntoz, ozphys, errmsg, errflg) @@ -251,12 +245,8 @@ subroutine GFS_rrtmgp_setup_timestep_init (idate, jdate, deltsw, deltim, doSWrad return end subroutine GFS_rrtmgp_setup_timestep_init - ! ######################################################################################### - ! SUBROUTINE GFS_rrtmgp_setup_finalize - ! ######################################################################################### -!> \section arg_table_GFS_rrtmgp_setup_finalize +!> \section arg_table_GFS_rrtmgp_setup_finalize Argument Table !! \htmlinclude GFS_rrtmgp_setup_finalize.html -!! subroutine GFS_rrtmgp_setup_finalize (errmsg, errflg) character(len=*), intent( out) :: errmsg integer, intent( out) :: errflg diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_stateout_update.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_stateout_update.F90 index 53867f6cc..b222885e9 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_stateout_update.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_stateout_update.F90 @@ -1,20 +1,17 @@ -! ######################################################################################### !> \file GFS_suite_stateout_update.f90 !! Update the state variables due to process-split physics from accumulated tendencies !! during that phase. !! Update gas concentrations, if using prognostic photolysis schemes. !! Also, set bounds on the mass-weighted rime factor when using Ferrier-Aligo microphysics. -! ######################################################################################### module GFS_suite_stateout_update use machine, only: kind_phys use module_ozphys, only: ty_ozphys implicit none contains -! ######################################################################################### + !> \section arg_table_GFS_suite_stateout_update_run Argument Table !! \htmlinclude GFS_suite_stateout_update_run.html !! -! ######################################################################################### subroutine GFS_suite_stateout_update_run (im, levs, ntrac, dtp, tgrs, ugrs, vgrs, qgrs, & dudt, dvdt, dtdt, dqdt, gt0, gu0, gv0, gq0, oz0, ntiw, nqrimef, imp_physics, & imp_physics_fer_hires, epsq, ozphys, oz_phys_2015, oz_phys_2006, con_1ovg, prsl, & diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_loop_control_part1.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_loop_control_part1.F90 index c3030c144..32d15f867 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_loop_control_part1.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_loop_control_part1.F90 @@ -1,19 +1,14 @@ !> \file GFS_surface_loop_control_part1.F90 !! This file contains the GFS_surface_loop_control_part1 scheme. -!> \defgroup GFS_surface_loop_control GFS_surface_loop_control_part1 scheme -!! This module contains the GFS_surface_loop_control_part1 scheme. -!! @{ +!> This module contains the GFS_surface_loop_control_part1 scheme. module GFS_surface_loop_control_part1 contains -!> \brief Brief description of the subroutine +!> Brief description of the subroutine !! !! \section arg_table_GFS_surface_loop_control_part1_run Arguments !! \htmlinclude GFS_surface_loop_control_part1_run.html -!! -!! \section gen_loop1 General Algorithm -!! \section detailed_loop1 Detailed Algorithm subroutine GFS_surface_loop_control_part1_run (im, iter, & wind, flag_guess, errmsg, errflg) @@ -45,4 +40,3 @@ subroutine GFS_surface_loop_control_part1_run (im, iter, & end subroutine GFS_surface_loop_control_part1_run end module GFS_surface_loop_control_part1 -!> @} diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/scm_sfc_flux_spec.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/scm_sfc_flux_spec.F90 index a3cf2d740..797a1cd95 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/scm_sfc_flux_spec.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/scm_sfc_flux_spec.F90 @@ -15,8 +15,7 @@ module scm_sfc_flux_spec CONTAINS !******************************************************************************************* -!! -!! \section arg_table_scm_sfc_flux_spec_init Argument Table +!> \section arg_table_scm_sfc_flux_spec_init Argument Table !! \htmlinclude scm_sfc_flux_spec_init.html !! subroutine scm_sfc_flux_spec_init(lheatstrg, errmsg, errflg) diff --git a/physics/Radiation/RRTMG/rrtmg_sw_cloud_optics.F90 b/physics/Radiation/RRTMG/rrtmg_sw_cloud_optics.F90 index 01cab76e2..7a6f649b7 100644 --- a/physics/Radiation/RRTMG/rrtmg_sw_cloud_optics.F90 +++ b/physics/Radiation/RRTMG/rrtmg_sw_cloud_optics.F90 @@ -1,3 +1,6 @@ +!>\file rrtmg_sw_cloud_optics.F90 +!! + module mo_rrtmg_sw_cloud_optics use machine, only: kind_phys use mersenne_twister, only: random_setseed, random_number, random_stat diff --git a/physics/Radiation/RRTMGP/rrtmgp_aerosol_optics.F90 b/physics/Radiation/RRTMGP/rrtmgp_aerosol_optics.F90 index 9a92ea98a..bd4a81a25 100644 --- a/physics/Radiation/RRTMGP/rrtmgp_aerosol_optics.F90 +++ b/physics/Radiation/RRTMGP/rrtmgp_aerosol_optics.F90 @@ -15,13 +15,7 @@ module rrtmgp_aerosol_optics contains - ! ######################################################################################### - ! SUBROUTINE rrtmgp_aerosol_optics_run() - ! ######################################################################################### - -!>\defgroup rrtmgp_aerosol_optics_mod GFS RRTMGP Aerosol Optics Module -!> @{ -!! \section arg_table_rrtmgp_aerosol_optics_run +!> \section arg_table_rrtmgp_aerosol_optics_run Argument Table !! \htmlinclude rrtmgp_aerosol_optics_run.html !! subroutine rrtmgp_aerosol_optics_run(doSWrad, doLWrad, nCol, nLev, nDay, idxday, p_lev, & @@ -31,53 +25,53 @@ subroutine rrtmgp_aerosol_optics_run(doSWrad, doLWrad, nCol, nLev, nDay, idxday, ! Inputs logical, intent(in) :: & - doSWrad, & ! Logical flag for shortwave radiation call - doLWrad, & ! Logical flag for longwave radiation call - top_at_1 ! Logical flag for vertical grid direcetion + doSWrad, & !< Logical flag for shortwave radiation call + doLWrad, & !< Logical flag for longwave radiation call + top_at_1 !< Logical flag for vertical grid direcetion integer, intent(in) :: & - nCol, & ! Number of horizontal grid points - nDay, & ! Number of daylit points - nLev, & ! Number of vertical layers - iaermdl, & ! Aerosol model scheme flag - iaerflg ! Aerosol effects to include + nCol, & !< Number of horizontal grid points + nDay, & !< Number of daylit points + nLev, & !< Number of vertical layers + iaermdl, & !< Aerosol model scheme flag + iaerflg !< Aerosol effects to include integer,intent(in),dimension(:) :: & - idxday ! Indices for daylit points. + idxday !< Indices for daylit points. real(kind_phys),intent(in) :: & - con_pi, & ! Physical constant (pi) - con_rd, & ! Physical constant (gas constant for dry-air) - con_g ! Physical constant (gravitational constant) + con_pi, & !< Physical constant (pi) + con_rd, & !< Physical constant (gas constant for dry-air) + con_g !< Physical constant (gravitational constant) real(kind_phys), dimension(:), intent(in) :: & - lon, & ! Longitude - lat, & ! Latitude - lsmask ! Land/sea/sea-ice mask + lon, & !< Longitude + lat, & !< Latitude + lsmask !< Land/sea/sea-ice mask real(kind_phys), dimension(:,:),intent(in) :: & - p_lay, & ! Pressure @ layer-centers (Pa) - tv_lay, & ! Virtual-temperature @ layer-centers (K) - relhum, & ! Relative-humidity @ layer-centers - p_lk ! Exner function @ layer-centers (1) + p_lay, & !< Pressure @ layer-centers (Pa) + tv_lay, & !< Virtual-temperature @ layer-centers (K) + relhum, & !< Relative-humidity @ layer-centers + p_lk !< Exner function @ layer-centers (1) real(kind_phys), dimension(:, :,:),intent(in) :: & - tracer ! trace gas concentrations + tracer !< trace gas concentrations real(kind_phys), dimension(:, :,:),intent(in) :: & - aerfld ! aerosol input concentrations + aerfld !< aerosol input concentrations real(kind_phys), dimension(:,:),intent(in) :: & - p_lev ! Pressure @ layer-interfaces (Pa) + p_lev !< Pressure @ layer-interfaces (Pa) real (kind=kind_phys), dimension(:,:), intent(out) :: & - ext550 ! 3d optical extinction for total aerosol species + ext550 !< 3d optical extinction for total aerosol species ! Outputs real(kind_phys), dimension(:,:), intent(out) :: & - aerodp ! Vertical integrated optical depth for various aerosol species + aerodp !< Vertical integrated optical depth for various aerosol species real(kind_phys), dimension(:,:,:), intent(out) :: & - aerlw_tau, & ! Longwave aerosol optical depth - aerlw_ssa, & ! Longwave aerosol single scattering albedo - aerlw_g, & ! Longwave aerosol asymmetry parameter - aersw_tau, & ! Shortwave aerosol optical depth - aersw_ssa, & ! Shortwave aerosol single scattering albedo - aersw_g ! Shortwave aerosol asymmetry parameter + aerlw_tau, & !< Longwave aerosol optical depth + aerlw_ssa, & !< Longwave aerosol single scattering albedo + aerlw_g, & !< Longwave aerosol asymmetry parameter + aersw_tau, & !< Shortwave aerosol optical depth + aersw_ssa, & !< Shortwave aerosol single scattering albedo + aersw_g !< Shortwave aerosol asymmetry parameter integer, intent(out) :: & - errflg ! CCPP error flag + errflg !< CCPP error flag character(len=*), intent(out) :: & - errmsg ! CCPP error message + errmsg !< CCPP error message ! Local variables real(kind_phys), dimension(nCol, nLev, lw_gas_props%get_nband(), 3) :: & @@ -124,5 +118,4 @@ subroutine rrtmgp_aerosol_optics_run(doSWrad, doLWrad, nCol, nLev, nDay, idxday, endif end subroutine rrtmgp_aerosol_optics_run -!> @} end module rrtmgp_aerosol_optics diff --git a/physics/Radiation/RRTMGP/rrtmgp_lw_cloud_optics.F90 b/physics/Radiation/RRTMGP/rrtmgp_lw_cloud_optics.F90 index bcac97595..cafffe72c 100644 --- a/physics/Radiation/RRTMGP/rrtmgp_lw_cloud_optics.F90 +++ b/physics/Radiation/RRTMGP/rrtmgp_lw_cloud_optics.F90 @@ -23,49 +23,49 @@ module rrtmgp_lw_cloud_optics nrghice_fromfileLW, nBandLW, nSize_liqLW, nSize_iceLW, nSizeRegLW, & nCoeff_extLW, nCoeff_ssa_gLW, nBoundLW, npairsLW real(kind_phys) :: & - radliq_facLW, & ! Factor for calculating LUT interpolation indices for liquid - radice_facLW ! Factor for calculating LUT interpolation indices for ice + radliq_facLW, & !< Factor for calculating LUT interpolation indices for liquid + radice_facLW !< Factor for calculating LUT interpolation indices for ice real(kind_phys), dimension(:,:), allocatable :: & - lut_extliqLW, & ! LUT shortwave liquid extinction coefficient - lut_ssaliqLW, & ! LUT shortwave liquid single scattering albedo - lut_asyliqLW, & ! LUT shortwave liquid asymmetry parameter - band_limsCLDLW ! Beginning and ending wavenumber [cm -1] for each band + lut_extliqLW, & !< LUT shortwave liquid extinction coefficient + lut_ssaliqLW, & !< LUT shortwave liquid single scattering albedo + lut_asyliqLW, & !< LUT shortwave liquid asymmetry parameter + band_limsCLDLW !< Beginning and ending wavenumber [cm -1] for each band real(kind_phys), dimension(:,:,:), allocatable :: & - lut_exticeLW, & ! LUT shortwave ice extinction coefficient - lut_ssaiceLW, & ! LUT shortwave ice single scattering albedo - lut_asyiceLW ! LUT shortwave ice asymmetry parameter + lut_exticeLW, & !< LUT shortwave ice extinction coefficient + lut_ssaiceLW, & !< LUT shortwave ice single scattering albedo + lut_asyiceLW !< LUT shortwave ice asymmetry parameter real(kind_phys), dimension(:), allocatable :: & - pade_sizereg_extliqLW, & ! Particle size regime boundaries for shortwave liquid extinction - ! coefficient for Pade interpolation - pade_sizereg_ssaliqLW, & ! Particle size regime boundaries for shortwave liquid single - ! scattering albedo for Pade interpolation - pade_sizereg_asyliqLW, & ! Particle size regime boundaries for shortwave liquid asymmetry - ! parameter for Pade interpolation - pade_sizereg_exticeLW, & ! Particle size regime boundaries for shortwave ice extinction - ! coefficient for Pade interpolation - pade_sizereg_ssaiceLW, & ! Particle size regime boundaries for shortwave ice single - ! scattering albedo for Pade interpolation - pade_sizereg_asyiceLW ! Particle size regime boundaries for shortwave ice asymmetry - ! parameter for Pade interpolation + pade_sizereg_extliqLW, & !< Particle size regime boundaries for shortwave liquid extinction + !< coefficient for Pade interpolation + pade_sizereg_ssaliqLW, & !< Particle size regime boundaries for shortwave liquid single + !< scattering albedo for Pade interpolation + pade_sizereg_asyliqLW, & !< Particle size regime boundaries for shortwave liquid asymmetry + !< parameter for Pade interpolation + pade_sizereg_exticeLW, & !< Particle size regime boundaries for shortwave ice extinction + !< coefficient for Pade interpolation + pade_sizereg_ssaiceLW, & !< Particle size regime boundaries for shortwave ice single + !< scattering albedo for Pade interpolation + pade_sizereg_asyiceLW !< Particle size regime boundaries for shortwave ice asymmetry + !< parameter for Pade interpolation real(kind_phys), dimension(:,:,:), allocatable :: & - pade_extliqLW, & ! PADE coefficients for shortwave liquid extinction - pade_ssaliqLW, & ! PADE coefficients for shortwave liquid single scattering albedo - pade_asyliqLW ! PADE coefficients for shortwave liquid asymmetry parameter + pade_extliqLW, & !< PADE coefficients for shortwave liquid extinction + pade_ssaliqLW, & !< PADE coefficients for shortwave liquid single scattering albedo + pade_asyliqLW !< PADE coefficients for shortwave liquid asymmetry parameter real(kind_phys), dimension(:,:,:,:), allocatable :: & - pade_exticeLW, & ! PADE coefficients for shortwave ice extinction - pade_ssaiceLW, & ! PADE coefficients for shortwave ice single scattering albedo - pade_asyiceLW ! PADE coefficients for shortwave ice asymmetry parameter + pade_exticeLW, & !< PADE coefficients for shortwave ice extinction + pade_ssaiceLW, & !< PADE coefficients for shortwave ice single scattering albedo + pade_asyiceLW !< PADE coefficients for shortwave ice asymmetry parameter ! Parameters used for rain and snow(+groupel) RRTMGP cloud-optics real(kind_phys), parameter :: & - absrain = 0.33e-3, & ! Rain drop absorption coefficient \f$(m^{2}/g)\f$ . - abssnow0 = 1.5, & ! Snow flake absorption coefficient (micron), fu coeff - abssnow1 = 2.34e-3 ! Snow flake absorption coefficient \f$(m^{2}/g)\f$, ncar coef + absrain = 0.33e-3, & !< Rain drop absorption coefficient \f$(m^{2}/g)\f$ . + abssnow0 = 1.5, & !< Snow flake absorption coefficient (micron), fu coeff + abssnow1 = 2.34e-3 !< Snow flake absorption coefficient \f$(m^{2}/g)\f$, ncar coef real(kind_phys) :: & - radliq_lwrLW, & ! Liquid particle size lower bound for LUT interpolation - radliq_uprLW, & ! Liquid particle size upper bound for LUT interpolation - radice_lwrLW, & ! Ice particle size upper bound for LUT interpolation - radice_uprLW ! Ice particle size lower bound for LUT interpolation + radliq_lwrLW, & !< Liquid particle size lower bound for LUT interpolation + radliq_uprLW, & !< Liquid particle size upper bound for LUT interpolation + radice_lwrLW, & !< Ice particle size upper bound for LUT interpolation + radice_uprLW !< Ice particle size lower bound for LUT interpolation contains @@ -79,25 +79,25 @@ subroutine rrtmgp_lw_cloud_optics_init(rrtmgp_root_dir, rrtmgp_lw_file_clouds, ! Inputs character(len=128),intent(in) :: & - rrtmgp_root_dir, & ! RTE-RRTMGP root directory - rrtmgp_lw_file_clouds ! RRTMGP file containing clouds optics data + rrtmgp_root_dir, & !< RTE-RRTMGP root directory + rrtmgp_lw_file_clouds !< RRTMGP file containing clouds optics data logical, intent(in) :: & - doGP_cldoptics_PADE,& ! Use RRTMGP cloud-optics: PADE approximation? - doGP_cldoptics_LUT ! Use RRTMGP cloud-optics: LUTs? + doGP_cldoptics_PADE,& !< Use RRTMGP cloud-optics: PADE approximation? + doGP_cldoptics_LUT !< Use RRTMGP cloud-optics: LUTs? integer, intent(inout) :: & - nrghice ! Number of ice-roughness categories + nrghice !< Number of ice-roughness categories type(MPI_Comm), intent(in) :: & - mpicomm ! MPI communicator + mpicomm !< MPI communicator integer, intent(in) :: & - mpirank, & ! Current MPI rank - mpiroot ! Master MPI rank + mpirank, & !< Current MPI rank + mpiroot !< Master MPI rank ! Outputs character(len=*), intent(out) :: & - errmsg ! Error message + errmsg !< Error message integer, intent(out) :: & - errflg ! Error code + errflg !< Error code ! Local variables integer :: dimID,varID,status,ncid,mpierr diff --git a/physics/Radiation/RRTMGP/rrtmgp_lw_gas_optics.F90 b/physics/Radiation/RRTMGP/rrtmgp_lw_gas_optics.F90 index 81c4687f3..fd2dbae32 100644 --- a/physics/Radiation/RRTMGP/rrtmgp_lw_gas_optics.F90 +++ b/physics/Radiation/RRTMGP/rrtmgp_lw_gas_optics.F90 @@ -24,77 +24,75 @@ module rrtmgp_lw_gas_optics nminor_absorber_intervals_lowerLW, nminor_absorber_intervals_upperLW, & ncontributors_lowerLW, ncontributors_upperLW, nfit_coeffsLW integer, dimension(:), allocatable :: & - kminor_start_lowerLW, & ! Starting index in the [1, nContributors] vector for a contributor - ! given by \"minor_gases_lower\" (lower atmosphere) - kminor_start_upperLW ! Starting index in the [1, nContributors] vector for a contributor - ! given by \"minor_gases_upper\" (upper atmosphere) + kminor_start_lowerLW, & !< Starting index in the [1, nContributors] vector for a contributor + !< given by \"minor_gases_lower\" (lower atmosphere) + kminor_start_upperLW !< Starting index in the [1, nContributors] vector for a contributor + !< given by \"minor_gases_upper\" (upper atmosphere) integer, dimension(:,:), allocatable :: & - band2gptLW, & ! Beginning and ending gpoint for each band - minor_limits_gpt_lowerLW, & ! Beginning and ending gpoint for each minor interval in lower atmosphere - minor_limits_gpt_upperLW ! Beginning and ending gpoint for each minor interval in upper atmosphere + band2gptLW, & !< Beginning and ending gpoint for each band + minor_limits_gpt_lowerLW, & !< Beginning and ending gpoint for each minor interval in lower atmosphere + minor_limits_gpt_upperLW !< Beginning and ending gpoint for each minor interval in upper atmosphere integer, dimension(:,:,:), allocatable :: & - key_speciesLW ! Key species pair for each band + key_speciesLW !< Key species pair for each band real(kind_phys) :: & - press_ref_tropLW, & ! Reference pressure separating the lower and upper atmosphere [Pa] - temp_ref_pLW, & ! Standard spectroscopic reference pressure [Pa] - temp_ref_tLW ! Standard spectroscopic reference temperature [K] + press_ref_tropLW, & !< Reference pressure separating the lower and upper atmosphere [Pa] + temp_ref_pLW, & !< Standard spectroscopic reference pressure [Pa] + temp_ref_tLW !< Standard spectroscopic reference temperature [K] real(kind_phys), dimension(:), allocatable :: & - press_refLW, & ! Pressures for reference atmosphere; press_ref(# reference layers) [Pa] - temp_refLW ! Temperatures for reference atmosphere; temp_ref(# reference layers) [K] + press_refLW, & !< Pressures for reference atmosphere; press_ref(# reference layers) [Pa] + temp_refLW !< Temperatures for reference atmosphere; temp_ref(# reference layers) [K] real(kind_phys), dimension(:,:), allocatable :: & - band_limsLW, & ! Beginning and ending wavenumber [cm -1] for each band - totplnkLW, & ! Integrated Planck function by band + band_limsLW, & !< Beginning and ending wavenumber [cm -1] for each band + totplnkLW, & !< Integrated Planck function by band optimal_angle_fitLW real(kind_phys), dimension(:,:,:), allocatable :: & - vmr_refLW, & ! volume mixing ratios for reference atmospherer - kminor_lowerLW, & ! (transformed from [nTemp x nEta x nGpt x nAbsorbers] array to - ! [nTemp x nEta x nContributors] array) - kminor_upperLW, & ! (transformed from [nTemp x nEta x nGpt x nAbsorbers] array to - ! [nTemp x nEta x nContributors] array) - rayl_lowerLW, & ! Not used in LW, rather allocated(rayl_lower) is used - rayl_upperLW ! Not used in LW, rather allocated(rayl_upper) is used + vmr_refLW, & !< volume mixing ratios for reference atmospherer + kminor_lowerLW, & !< (transformed from [nTemp x nEta x nGpt x nAbsorbers] array to + !< [nTemp x nEta x nContributors] array) + kminor_upperLW, & !< (transformed from [nTemp x nEta x nGpt x nAbsorbers] array to + !< [nTemp x nEta x nContributors] array) + rayl_lowerLW, & !< Not used in LW, rather allocated(rayl_lower) is used + rayl_upperLW !< Not used in LW, rather allocated(rayl_upper) is used real(kind_phys), dimension(:,:,:,:), allocatable :: & - kmajorLW, & ! Stored absorption coefficients due to major absorbing gases - planck_fracLW ! Planck fractions + kmajorLW, & !< Stored absorption coefficients due to major absorbing gases + planck_fracLW !< Planck fractions character(len=32), dimension(:), allocatable :: & - gas_namesLW, & ! Names of absorbing gases - gas_minorLW, & ! Name of absorbing minor gas - identifier_minorLW, & ! Unique string identifying minor gas - minor_gases_lowerLW, & ! Names of minor absorbing gases in lower atmosphere - minor_gases_upperLW, & ! Names of minor absorbing gases in upper atmosphere - scaling_gas_lowerLW, & ! Absorption also depends on the concentration of this gas - scaling_gas_upperLW ! Absorption also depends on the concentration of this gas + gas_namesLW, & !< Names of absorbing gases + gas_minorLW, & !< Name of absorbing minor gas + identifier_minorLW, & !< Unique string identifying minor gas + minor_gases_lowerLW, & !< Names of minor absorbing gases in lower atmosphere + minor_gases_upperLW, & !< Names of minor absorbing gases in upper atmosphere + scaling_gas_lowerLW, & !< Absorption also depends on the concentration of this gas + scaling_gas_upperLW !< Absorption also depends on the concentration of this gas logical(wl), dimension(:), allocatable :: & - minor_scales_with_density_lowerLW, & ! Density scaling is applied to minor absorption coefficients - minor_scales_with_density_upperLW, & ! Density scaling is applied to minor absorption coefficients - scale_by_complement_lowerLW, & ! Absorption is scaled by concentration of scaling_gas (F) or its complement (T) - scale_by_complement_upperLW ! Absorption is scaled by concentration of scaling_gas (F) or its complement (T) + minor_scales_with_density_lowerLW, & !< Density scaling is applied to minor absorption coefficients + minor_scales_with_density_upperLW, & !< Density scaling is applied to minor absorption coefficients + scale_by_complement_lowerLW, & !< Absorption is scaled by concentration of scaling_gas (F) or its complement (T) + scale_by_complement_upperLW !< Absorption is scaled by concentration of scaling_gas (F) or its complement (T) contains - ! ######################################################################################### - ! SUBROUTINE rrtmgp_lw_gas_optics_init - ! ######################################################################################### +!> subroutine rrtmgp_lw_gas_optics_init(rrtmgp_root_dir, rrtmgp_lw_file_gas, & active_gases_array, mpicomm, mpirank, mpiroot, errmsg, errflg) ! Inputs character(len=128),intent(in) :: & - rrtmgp_root_dir, & ! RTE-RRTMGP root directory - rrtmgp_lw_file_gas ! RRTMGP file containing K-distribution data + rrtmgp_root_dir, & !< RTE-RRTMGP root directory + rrtmgp_lw_file_gas !< RRTMGP file containing K-distribution data character(len=*), dimension(:), intent(in) :: & - active_gases_array ! List of active gases from namelist as array + active_gases_array !< List of active gases from namelist as array type(MPI_Comm),intent(in) :: & - mpicomm ! MPI communicator + mpicomm !< MPI communicator integer,intent(in) :: & - mpirank, & ! Current MPI rank - mpiroot ! Master MPI rank + mpirank, & !< Current MPI rank + mpiroot !< Master MPI rank ! Outputs character(len=*), intent(out) :: & - errmsg ! CCPP error message + errmsg !< CCPP error message integer, intent(out) :: & - errflg ! CCPP error code + errflg !< CCPP error code ! Local variables integer :: ncid, dimID, varID, status, ii, mpierr, iChar diff --git a/physics/Radiation/RRTMGP/rrtmgp_sw_cloud_optics.F90 b/physics/Radiation/RRTMGP/rrtmgp_sw_cloud_optics.F90 index f3bc656fc..7198f8e91 100644 --- a/physics/Radiation/RRTMGP/rrtmgp_sw_cloud_optics.F90 +++ b/physics/Radiation/RRTMGP/rrtmgp_sw_cloud_optics.F90 @@ -19,43 +19,43 @@ module rrtmgp_sw_cloud_optics nrghice_fromfileSW, nBandSW, nSize_liqSW, nSize_iceSW, nSizeregSW, & nCoeff_extSW, nCoeff_ssa_gSW, nBoundSW, nPairsSW real(kind_phys) :: & - radliq_facSW, & ! Factor for calculating LUT interpolation indices for liquid - radice_facSW ! Factor for calculating LUT interpolation indices for ice + radliq_facSW, & !< Factor for calculating LUT interpolation indices for liquid + radice_facSW !< Factor for calculating LUT interpolation indices for ice real(kind_phys), dimension(:,:), allocatable :: & - lut_extliqSW, & ! LUT shortwave liquid extinction coefficient - lut_ssaliqSW, & ! LUT shortwave liquid single scattering albedo - lut_asyliqSW, & ! LUT shortwave liquid asymmetry parameter - band_limsCLDSW ! Beginning and ending wavenumber [cm -1] for each band + lut_extliqSW, & !< LUT shortwave liquid extinction coefficient + lut_ssaliqSW, & !< LUT shortwave liquid single scattering albedo + lut_asyliqSW, & !< LUT shortwave liquid asymmetry parameter + band_limsCLDSW !< Beginning and ending wavenumber [cm -1] for each band real(kind_phys), dimension(:,:,:), allocatable :: & - lut_exticeSW, & ! LUT shortwave ice extinction coefficient - lut_ssaiceSW, & ! LUT shortwave ice single scattering albedo - lut_asyiceSW ! LUT shortwave ice asymmetry parameter + lut_exticeSW, & !< LUT shortwave ice extinction coefficient + lut_ssaiceSW, & !< LUT shortwave ice single scattering albedo + lut_asyiceSW !< LUT shortwave ice asymmetry parameter real(kind_phys), dimension(:), allocatable :: & - pade_sizereg_extliqSW, & ! Particle size regime boundaries for shortwave liquid extinction - ! coefficient for Pade interpolation - pade_sizereg_ssaliqSW, & ! Particle size regime boundaries for shortwave liquid single - ! scattering albedo for Pade interpolation - pade_sizereg_asyliqSW, & ! Particle size regime boundaries for shortwave liquid asymmetry - ! parameter for Pade interpolation - pade_sizereg_exticeSW, & ! Particle size regime boundaries for shortwave ice extinction - ! coefficient for Pade interpolation - pade_sizereg_ssaiceSW, & ! Particle size regime boundaries for shortwave ice single - ! scattering albedo for Pade interpolation - pade_sizereg_asyiceSW ! Particle size regime boundaries for shortwave ice asymmetry - ! parameter for Pade interpolation + pade_sizereg_extliqSW, & !< Particle size regime boundaries for shortwave liquid extinction + !< coefficient for Pade interpolation + pade_sizereg_ssaliqSW, & !< Particle size regime boundaries for shortwave liquid single + !< scattering albedo for Pade interpolation + pade_sizereg_asyliqSW, & !< Particle size regime boundaries for shortwave liquid asymmetry + !< parameter for Pade interpolation + pade_sizereg_exticeSW, & !< Particle size regime boundaries for shortwave ice extinction + !< coefficient for Pade interpolation + pade_sizereg_ssaiceSW, & !< Particle size regime boundaries for shortwave ice single + !< scattering albedo for Pade interpolation + pade_sizereg_asyiceSW !< Particle size regime boundaries for shortwave ice asymmetry + !< parameter for Pade interpolation real(kind_phys), dimension(:,:,:), allocatable :: & - pade_extliqSW, & ! PADE coefficients for shortwave liquid extinction - pade_ssaliqSW, & ! PADE coefficients for shortwave liquid single scattering albedo - pade_asyliqSW ! PADE coefficients for shortwave liquid asymmetry parameter + pade_extliqSW, & !< PADE coefficients for shortwave liquid extinction + pade_ssaliqSW, & !< PADE coefficients for shortwave liquid single scattering albedo + pade_asyliqSW !< PADE coefficients for shortwave liquid asymmetry parameter real(kind_phys), dimension(:,:,:,:), allocatable :: & - pade_exticeSW, & ! PADE coefficients for shortwave ice extinction - pade_ssaiceSW, & ! PADE coefficients for shortwave ice single scattering albedo - pade_asyiceSW ! PADE coefficients for shortwave ice asymmetry parameter + pade_exticeSW, & !< PADE coefficients for shortwave ice extinction + pade_ssaiceSW, & !< PADE coefficients for shortwave ice single scattering albedo + pade_asyiceSW !< PADE coefficients for shortwave ice asymmetry parameter real(kind_phys) :: & - radliq_lwrSW, & ! Liquid particle size lower bound for LUT interpolation - radliq_uprSW, & ! Liquid particle size upper bound for LUT interpolation - radice_lwrSW, & ! Ice particle size upper bound for LUT interpolation - radice_uprSW ! Ice particle size lower bound for LUT interpolation + radliq_lwrSW, & !< Liquid particle size lower bound for LUT interpolation + radliq_uprSW, & !< Liquid particle size upper bound for LUT interpolation + radice_lwrSW, & !< Ice particle size upper bound for LUT interpolation + radice_uprSW !< Ice particle size lower bound for LUT interpolation ! Parameters used for rain and snow(+groupel) RRTMGP cloud-optics. *NOTE* Same as in RRTMG ! Need to document these magic numbers below. @@ -69,30 +69,31 @@ module rrtmgp_sw_cloud_optics ! ###################################################################################### ! SUBROUTINE sw_cloud_optics_init ! ###################################################################################### +!> subroutine rrtmgp_sw_cloud_optics_init( rrtmgp_root_dir, rrtmgp_sw_file_clouds, & doGP_cldoptics_PADE, doGP_cldoptics_LUT, nrghice, mpicomm, mpirank, mpiroot, & errmsg, errflg) ! Inputs character(len=128),intent(in) :: & - rrtmgp_root_dir, & ! RTE-RRTMGP root directory - rrtmgp_sw_file_clouds ! RRTMGP file containing cloud-optic data + rrtmgp_root_dir, & !< RTE-RRTMGP root directory + rrtmgp_sw_file_clouds !< RRTMGP file containing cloud-optic data logical, intent(in) :: & - doGP_cldoptics_PADE,& ! Use RRTMGP cloud-optics: PADE approximation? - doGP_cldoptics_LUT ! Use RRTMGP cloud-optics: LUTs? + doGP_cldoptics_PADE,& !< Use RRTMGP cloud-optics: PADE approximation? + doGP_cldoptics_LUT !< Use RRTMGP cloud-optics: LUTs? integer, intent(inout) :: & - nrghice ! Number of ice-roughness categories + nrghice !< Number of ice-roughness categories type(MPI_Comm), intent(in) :: & - mpicomm ! MPI communicator + mpicomm !< MPI communicator integer, intent(in) :: & - mpirank, & ! Current MPI rank - mpiroot ! Master MPI rank + mpirank, & !< Current MPI rank + mpiroot !< Master MPI rank ! Outputs character(len=*), intent(out) :: & - errmsg ! CCPP error message + errmsg !< CCPP error message integer, intent(out) :: & - errflg ! CCPP error code + errflg !< CCPP error code ! Local variables integer :: status,ncid,dimid,varID,mpierr diff --git a/physics/Radiation/RRTMGP/rrtmgp_sw_gas_optics.F90 b/physics/Radiation/RRTMGP/rrtmgp_sw_gas_optics.F90 index 3229d2f16..4862acdd1 100644 --- a/physics/Radiation/RRTMGP/rrtmgp_sw_gas_optics.F90 +++ b/physics/Radiation/RRTMGP/rrtmgp_sw_gas_optics.F90 @@ -26,54 +26,54 @@ module rrtmgp_sw_gas_optics nmixingfracsSW, nlayersSW, nbndsSW, npairsSW, nminor_absorber_intervals_lowerSW,& nminor_absorber_intervals_upperSW, ncontributors_lowerSW, ncontributors_upperSW integer, dimension(:), allocatable :: & - kminor_start_lowerSW, & ! Starting index in the [1, nContributors] vector for a contributor - ! given by \"minor_gases_lower\" (lower atmosphere) - kminor_start_upperSW ! Starting index in the [1, nContributors] vector for a contributor - ! given by \"minor_gases_upper\" (upper atmosphere) + kminor_start_lowerSW, & !< Starting index in the [1, nContributors] vector for a contributor + !< given by \"minor_gases_lower\" (lower atmosphere) + kminor_start_upperSW !< Starting index in the [1, nContributors] vector for a contributor + !< given by \"minor_gases_upper\" (upper atmosphere) integer, dimension(:,:), allocatable :: & - band2gptSW, & ! Beginning and ending gpoint for each band - minor_limits_gpt_lowerSW, & ! Beginning and ending gpoint for each minor interval in lower atmosphere - minor_limits_gpt_upperSW ! Beginning and ending gpoint for each minor interval in upper atmosphere + band2gptSW, & !< Beginning and ending gpoint for each band + minor_limits_gpt_lowerSW, & !< Beginning and ending gpoint for each minor interval in lower atmosphere + minor_limits_gpt_upperSW !< Beginning and ending gpoint for each minor interval in upper atmosphere integer, dimension(:,:,:), allocatable :: & - key_speciesSW ! Key species pair for each band + key_speciesSW !< Key species pair for each band real(kind_phys) :: & - press_ref_tropSW, & ! Reference pressure separating the lower and upper atmosphere [Pa] - temp_ref_pSW, & ! Standard spectroscopic reference pressure [Pa] - temp_ref_tSW, & ! Standard spectroscopic reference temperature [K] - tsi_defaultSW, & ! - mg_defaultSW, & ! Mean value of Mg2 index over the average solar cycle from the NRLSSI2 model of solar variability - sb_defaultSW ! Mean value of sunspot index over the average solar cycle from the NRLSSI2 model of solar variability + press_ref_tropSW, & !< Reference pressure separating the lower and upper atmosphere [Pa] + temp_ref_pSW, & !< Standard spectroscopic reference pressure [Pa] + temp_ref_tSW, & !< Standard spectroscopic reference temperature [K] + tsi_defaultSW, & !< + mg_defaultSW, & !< Mean value of Mg2 index over the average solar cycle from the NRLSSI2 model of solar variability + sb_defaultSW !< Mean value of sunspot index over the average solar cycle from the NRLSSI2 model of solar variability real(kind_phys), dimension(:), allocatable :: & - press_refSW, & ! Pressures for reference atmosphere; press_ref(# reference layers) [Pa] - temp_refSW, & ! Temperatures for reference atmosphere; temp_ref(# reference layers) [K] - solar_quietSW, & ! Spectrally-dependent quiet sun irradiance from the NRLSSI2 model of solar variability - solar_facularSW, & ! Spectrally-dependent facular term from the NRLSSI2 model of solar variability - solar_sunspotSW ! Spectrally-dependent sunspot term from the NRLSSI2 model of solar variability + press_refSW, & !< Pressures for reference atmosphere; press_ref(# reference layers) [Pa] + temp_refSW, & !< Temperatures for reference atmosphere; temp_ref(# reference layers) [K] + solar_quietSW, & !< Spectrally-dependent quiet sun irradiance from the NRLSSI2 model of solar variability + solar_facularSW, & !< Spectrally-dependent facular term from the NRLSSI2 model of solar variability + solar_sunspotSW !< Spectrally-dependent sunspot term from the NRLSSI2 model of solar variability real(kind_phys), dimension(:,:), allocatable :: & - band_limsSW ! Beginning and ending wavenumber [cm -1] for each band + band_limsSW !< Beginning and ending wavenumber [cm -1] for each band real(kind_phys), dimension(:,:,:), allocatable :: & - vmr_refSW, & ! Volume mixing ratios for reference atmosphere - kminor_lowerSW, & ! (transformed from [nTemp x nEta x nGpt x nAbsorbers] array to - ! [nTemp x nEta x nContributors] array) - kminor_upperSW, & ! (transformed from [nTemp x nEta x nGpt x nAbsorbers] array to - ! [nTemp x nEta x nContributors] array) - rayl_lowerSW, & ! Stored coefficients due to rayleigh scattering contribution - rayl_upperSW ! Stored coefficients due to rayleigh scattering contribution + vmr_refSW, & !< Volume mixing ratios for reference atmosphere + kminor_lowerSW, & !< (transformed from [nTemp x nEta x nGpt x nAbsorbers] array to + !< [nTemp x nEta x nContributors] array) + kminor_upperSW, & !< (transformed from [nTemp x nEta x nGpt x nAbsorbers] array to + !< [nTemp x nEta x nContributors] array) + rayl_lowerSW, & !< Stored coefficients due to rayleigh scattering contribution + rayl_upperSW !< Stored coefficients due to rayleigh scattering contribution real(kind_phys), dimension(:,:,:,:), allocatable :: & - kmajorSW ! Stored absorption coefficients due to major absorbing gases + kmajorSW !< Stored absorption coefficients due to major absorbing gases character(len=32), dimension(:), allocatable :: & - gas_namesSW, & ! Names of absorbing gases - gas_minorSW, & ! Name of absorbing minor gas - identifier_minorSW, & ! Unique string identifying minor gas - minor_gases_lowerSW, & ! Names of minor absorbing gases in lower atmosphere - minor_gases_upperSW, & ! Names of minor absorbing gases in upper atmosphere - scaling_gas_lowerSW, & ! Absorption also depends on the concentration of this gas - scaling_gas_upperSW ! Absorption also depends on the concentration of this gas + gas_namesSW, & !< Names of absorbing gases + gas_minorSW, & !< Name of absorbing minor gas + identifier_minorSW, & !< Unique string identifying minor gas + minor_gases_lowerSW, & !< Names of minor absorbing gases in lower atmosphere + minor_gases_upperSW, & !< Names of minor absorbing gases in upper atmosphere + scaling_gas_lowerSW, & !< Absorption also depends on the concentration of this gas + scaling_gas_upperSW !< Absorption also depends on the concentration of this gas logical(wl), dimension(:), allocatable :: & - minor_scales_with_density_lowerSW, & ! Density scaling is applied to minor absorption coefficients - minor_scales_with_density_upperSW, & ! Density scaling is applied to minor absorption coefficients - scale_by_complement_lowerSW, & ! Absorption is scaled by concentration of scaling_gas (F) or its complement (T) - scale_by_complement_upperSW ! Absorption is scaled by concentration of scaling_gas (F) or its complement (T) + minor_scales_with_density_lowerSW, & !< Density scaling is applied to minor absorption coefficients + minor_scales_with_density_upperSW, & !< Density scaling is applied to minor absorption coefficients + scale_by_complement_lowerSW, & !< Absorption is scaled by concentration of scaling_gas (F) or its complement (T) + scale_by_complement_upperSW !< Absorption is scaled by concentration of scaling_gas (F) or its complement (T) contains !> \section arg_table_rrtmgp_sw_gas_optics_init Argument Table diff --git a/physics/Radiation/RRTMGP/rrtmgp_sw_main.F90 b/physics/Radiation/RRTMGP/rrtmgp_sw_main.F90 index 77691d836..38e250707 100644 --- a/physics/Radiation/RRTMGP/rrtmgp_sw_main.F90 +++ b/physics/Radiation/RRTMGP/rrtmgp_sw_main.F90 @@ -26,10 +26,7 @@ module rrtmgp_sw_main contains - ! ######################################################################################### - ! SUBROUTINE rrtmgp_sw_main_init - ! ######################################################################################### -!> \section arg_table_rrtmgp_sw_main_init +!> \section arg_table_rrtmgp_sw_main_init Argument Table !! \htmlinclude rrtmgp_sw_main_init.html !! subroutine rrtmgp_sw_main_init(rrtmgp_root_dir, rrtmgp_sw_file_gas, rrtmgp_sw_file_clouds,& @@ -79,10 +76,7 @@ subroutine rrtmgp_sw_main_init(rrtmgp_root_dir, rrtmgp_sw_file_gas, rrtmgp_sw_fi end subroutine rrtmgp_sw_main_init - ! ######################################################################################### - ! SUBROUTINE rrtmgp_sw_main_run - ! ######################################################################################### -!> \section arg_table_rrtmgp_sw_main_run +!> \section arg_table_rrtmgp_sw_main_run Argument Table !! \htmlinclude rrtmgp_sw_main_run.html !! subroutine rrtmgp_sw_main_run(doSWrad, doSWclrsky, top_at_1, doGP_sgs_cnv, doGP_sgs_pbl, & diff --git a/physics/docs/ccpp_doxyfile b/physics/docs/ccpp_doxyfile index 2dc1ac4de..9d7140566 100644 --- a/physics/docs/ccpp_doxyfile +++ b/physics/docs/ccpp_doxyfile @@ -654,7 +654,7 @@ SHOW_HEADERFILE = YES # the files that are included by a file in the documentation of that file. # The default value is: YES. -SHOW_INCLUDE_FILES = NO +SHOW_INCLUDE_FILES = YES # If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each # grouped member an include statement to the documentation, telling the reader @@ -986,7 +986,6 @@ INPUT = pdftxt/mainpage.txt \ ../SFC_Models \ ../photochem \ ../Radiation \ - ../smoke_dust \ ../hooks \ ../tools \ ../Interstitials @@ -2750,7 +2749,7 @@ DOT_IMAGE_FORMAT = SVG # The default value is: NO. # This tag requires that the tag HAVE_DOT is set to YES. -INTERACTIVE_SVG = NO +INTERACTIVE_SVG = YES # The DOT_PATH tag can be used to specify the path where the dot tool can be # found. If left blank, it is assumed the dot tool can be found in the path. diff --git a/physics/docs/pdftxt/GFS_RRTMGP.txt b/physics/docs/pdftxt/GFS_RRTMGP.txt index 891dd6565..b5a40df8e 100644 --- a/physics/docs/pdftxt/GFS_RRTMGP.txt +++ b/physics/docs/pdftxt/GFS_RRTMGP.txt @@ -4,11 +4,7 @@ \section des_rrtmgp Description \section intraphysics_rrtmgp Intraphysics Communication - + For RRTMG-Longwave radiation parameterization (\ref arg_table_rrtmg_lw_run) - + For RRTMG-Shortwave radiation parameterization (\ref arg_table_rrtmg_sw_run) \section gen_al_rrtmgp General Algorithm - + \ref gen_lwrad - + \ref gen_swrad */ diff --git a/physics/docs/pdftxt/suite_input.nml.txt b/physics/docs/pdftxt/suite_input.nml.txt index 23558a468..68d10a05f 100644 --- a/physics/docs/pdftxt/suite_input.nml.txt +++ b/physics/docs/pdftxt/suite_input.nml.txt @@ -22,6 +22,7 @@ While there is not a one-to-one correspondence between the namelist and the SDF, show some variables in the namelist that must match the SDF. +
      NML Description
      Option CCPP scheme or interstitial Description Default Value @@ -31,24 +32,6 @@ show some variables in the namelist that must match the SDF.
      ldiag3d see \a GFS_typedefs.F90 flag for 3D diagnostic fields .false.
      qdiag3d see \a GFS_typedefs.F90 flag for 3D tracer diagnostic fields .false.
      lssav see \a GFS_typedefs.F90 flag for storing diagnostics .false. -
      \b Coupling \b parameters -
      cplflx see \a GFS_typedefs.F90 flag for using fluxes provided by an external model .false. -
      cplice see \a GFS_typedefs.F90 flag for ice to atm coupling (use together with cplflx) .false. -
      cplocn2atm see \a GFS_typedefs.F90 flag for turning on the feedback from ocean to atm .true. -
      cplwav see \a GFS_typedefs.F90 flag for using information produced by an external ocean wave model .false. -
      cplwav2atm see \a GFS_typedefs.F90 flag for wave to atm coupling .false. -
      cplaqm see \a GFS_typedefs.F90 flag for AQM to atm coupling .false. -
      cplchm see \a GFS_typedefs.F90 flag for coupled chemistry diagnostics .false. -
      cpllnd see \a GFS_typedefs.F90 -
      cpllnd2atm -
      cpl_imp_mrg -
      cpl_imp_dbg -
      use_cice_alb -
      rrfs_sd -rrfs_smoke_debug -
      lsidea - -
      oz_phys_2015 ozphys_2015 flag for new (2015) ozone physics .false.
      fhcyc gfs_phys_time_vary frequency for surface data cycling in hours 0.0
      use_ufo gfs_phys_time_vary flag for using unfiltered orography surface option .false. @@ -555,7 +538,7 @@ rrfs_smoke_debug
      lsoil lsm_noah number of soil layers 4 lsoil_lsm
      rdlai lsm_ruc flag to read leaf area index from input files .false. -
      ivegsrc lsm_noah, lsm_ruc, \ref noahmpdrv, sfc_diff flag for vegetation type dataset choice: \n +
      ivegsrc lsm_noah, lsm_ruc, noahmpdrv, sfc_diff flag for vegetation type dataset choice: \n
      • 0: USGS
      • 1: IGBP(20 category): IGBP must be selected if NoahMP is used @@ -565,7 +548,7 @@ lsoil_lsm
      • 5: MODIS-RUC (21 category, NOAH WRFv4 only)
      2 -
      isot lsm_noah, lsm_ruc, \ref noahmpdrv flag for soil type dataset choice:\n +
      isot lsm_noah, lsm_ruc, noahmpdrv flag for soil type dataset choice:\n
      • 0: Zobler soil type (9 category)
      • 1: STATSGO soil type (19 category): STATSGO must be selected if NoahMP is used @@ -573,7 +556,7 @@ lsoil_lsm
      0
      exticeden lsm_noah,lsm_ruc flag for calculating frozen precip ice density outside of the LSM .false. -
      iopt_dveg \ref noahmpdrv options for dynamic vegetation \n +
      iopt_dveg noahmpdrv options for dynamic vegetation \n
      • 1: off (use table LAI; use FVEG = SHDFAC from input)
      • 2: on (together with \a iopt_crs = 1) @@ -586,20 +569,20 @@ lsoil_lsm
      • 9: off (use input LAI; use maximum vegetation fraction)
      4 -
      iopt_crs \ref noahmpdrv options for canopy stomatal resistance \n +
      iopt_crs noahmpdrv options for canopy stomatal resistance \n
      • 1: Ball-Berry
      • 2: Jarvis
      1 -
      iopt_btr \ref noahmpdrv options for soil moisture factor for stomatal resistance \n +
      iopt_btr noahmpdrv options for soil moisture factor for stomatal resistance \n
      • 1: Noah (soil moisture)
      • 2: CLM (matric potential)
      • 3: SSIB (matric potential)
      1 -
      iopt_run \ref noahmpdrv options for runoff and groundwater \n +
      iopt_run noahmpdrv options for runoff and groundwater \n
      • 1: TOPMODEL with groundwater (Niu et al. 2007 \cite niu_et_al_2007)
      • 2: TOPMODEL with an equilibrium water table (Niu et al. 2005 \cite niu_et_al_2005) @@ -608,39 +591,39 @@ lsoil_lsm
      • 5: Miguez-macho&Fan groundwater scheme (Miguez-Macho et al. 2007 \cite miguez_et_al_2007; Fan et al. 2007 \cite fan_et_al_2007; needs further testing for public use)
      3 -
      iopt_sfc \ref noahmpdrv options for surface layer drag coeff (CH&CM) \n +
      iopt_sfc noahmpdrv options for surface layer drag coeff (CH&CM) \n
      • 1: m-o
      • 2: original Noah (Chen et al. 1997 \cite chen_et_al_1997)
      • 4: MYNN surface layer scheme
      1 -
      iopt_frz \ref noahmpdrv options for supercooled liquid water (or ice fraction) \n +
      iopt_frz noahmpdrv options for supercooled liquid water (or ice fraction) \n
      • 1: no interation (Niu and Yang (2006) \cite niu_and_yang_2006 )
      • 2: Koren's iteration
      1 -
      iopt_inf \ref noahmpdrv options for frozen soil permeability \n +
      iopt_inf noahmpdrv options for frozen soil permeability \n
      • 1: linear effects, more permeable (Niu and Yang (2006) \cite niu_and_yang_2006)
      • 2: nonlinear effects, less permeable (old)
      1 -
      iopt_rad \ref noahmpdrv options for radiation transfer \n +
      iopt_rad noahmpdrv options for radiation transfer \n
      • 1: modified two-stream (gap = f(solar angle, 3d structure ...)<1-fveg)
      • 2: two-stream applied to grid-cell (gap = 0)
      • 3: two-stream applied to vegetated fraction (gap=1-FVEG)
      3 -
      iopt_alb \ref noahmpdrv options for ground snow surface albedo \n +
      iopt_alb noahmpdrv options for ground snow surface albedo \n
      • 1: BATS
      • 2: CLASS
      2 -
      iopt_snf \ref noahmpdrv options for partitioning precipitation into rainfall and snowfall \n +
      iopt_snf noahmpdrv options for partitioning precipitation into rainfall and snowfall \n
      • 1: Jordan (1991)
      • 2: BATS: when sfctmp < tfrz+2.2 @@ -648,20 +631,20 @@ lsoil_lsm
      • 4: use WRF microphysics output
      1 -
      iopt_tbot \ref noahmpdrv options for lower boundary condition of soil temperature \n +
      iopt_tbot noahmpdrv options for lower boundary condition of soil temperature \n
      • 1: zero heat flux from bottom (zbot and tbot not used)
      • 2: tbot at zbot (8m) read from a file (original Noah)
      2 -
      iopt_stc \ref noahmpdrv options for snow/soil temperature time scheme (only layer 1) \n +
      iopt_stc noahmpdrv options for snow/soil temperature time scheme (only layer 1) \n
      • 1: semi-implicit; flux top boundary condition
      • 2: full implicit (original Noah); temperature top boundary condition
      • 3: same as 1, but fsno for ts calculation (generally improve snow; v3.7)
      1 -
      iopt_trs \ref noahmpdrv options for thermal roughness scheme:\n +
      iopt_trs noahmpdrv options for thermal roughness scheme:\n
      • 1: z0h=z0m
      • 2: canopy based czil @@ -669,30 +652,30 @@ lsoil_lsm
      • 4: kb inversed
      2 -
      iopt_diag \ref noampdrv options for surface 2-m t/q diagnostic approach: \n +
      iopt_diag noampdrv options for surface 2-m t/q diagnostic approach: \n
      • 1: external GFS sfc_diag
      • 2: original NoahMP 2-title
      • 3: NoahMP2-title + internal GFS sfc_diag
      2 -
      mosaic_lu \ref lsm_ruc control for use of fractional landuse in RUC land surface model +
      mosaic_lu lsm_ruc control for use of fractional landuse in RUC land surface model
      • 1: use of fractional landuse in RUC LSM
      0 -
      mosaic_soil \ref lsm_ruc control for use of fractional soil in RUC land surface model +
      mosaic_soil lsm_ruc control for use of fractional soil in RUC land surface model
      • 1: use of fractional soil in RUC LSM
      0 -
      isncond_opt \ref lsm_ruc control for soil thermal conductivity option in RUC land surface model +
      isncond_opt lsm_ruc control for soil thermal conductivity option in RUC land surface model
      • 1: constant
      • 2: Sturm et al.(1997) \cite sturm_1997
      1 -
      isncovr_opt \ref lsm_ruc control for snow cover fraction option in RUC land surface model +
      isncovr_opt lsm_ruc control for snow cover fraction option in RUC land surface model
      • 1: original formulation using threshold snow depth to compute snow fraction
      • 2: Niu-Yang(2007) \cite Niu_2007 @@ -700,13 +683,13 @@ lsoil_lsm
      1
      \b Parameters \b related \b to \b other \b surface \b scheme \b options -
      lkm \ref clm_lake 0: no lake; 1: lake; 2: lake&nsst 0 -
      iopt_lake \ref clm_lake 1: flake; 2: CLM lake 2 -
      lakedepth_threshold \ref clm_lake lakedepth must be greater than this value to enable a lake model 1.0 -
      lakefrac_threshold \ref clm_lake lakefrac must be greater than this value to enable a lake model 0.0 -
      use_lake2m \ref clm_lake use 2m T&Q from CLM lake model .false. -clm_debug_print -clm_lake_debug +
      lkm clm_lake 0: no lake; 1: lake; 2: lake&nsst 0 +
      iopt_lake clm_lake 1: flake; 2: CLM lake 2 +
      lakedepth_threshold clm_lake lakedepth must be greater than this value to enable a lake model 1.0 +
      lakefrac_threshold clm_lake lakefrac must be greater than this value to enable a lake model 0.0 +
      use_lake2m clm_lake use 2m T&Q from CLM lake model .false. +
      clm_debug_print enables prints in clm_lake .false. +
      clm_lake_debug verbose debugging in clm_lake .false.
      nstf_name(5) sfc_nst NSST related paramters:\n
      • nstf_name(1): 0=NSST off, 1= NSST on but uncoupled, 2= NSST on and coupled @@ -757,13 +740,12 @@ clm_lake_debug
      fscav_aero cs_conv,cs_conv_pre,samfshalcnv,samfdeepcnv, samfaerosols,cu_gf_driver aerosol scavenging factors
      lightning_threat maximum_hourly_diagnostics report lightning threat indices .false.
      do_ccpp_suite_sim GFS_ccpp_suite_sim_pre, ccpp_suite_simulator CCPP suite simulator .false. -
      fh_dfi_radar begin&end of four timespans over which radar_tten is applied -2e10 -
      radar_tten_limits(2) radar_tten values outside this range (min,max) are discarded -
      do_cap_suppress set .true. to turn on convection suppression in Grell-Freitas scheme during limited intervals when fh_dfi_radar is enabled .true. +
      fh_dfi_radar GFS_MP_generic_post, cu_gf_driver, cu_c3_driver begin&end of four timespans over which radar_tten is applied -2e10 +
      radar_tten_limits(2) GFS_MP_generic_post radar_tten values outside this range (min,max) are discarded +
      do_cap_suppress cu_gf_driver, cu_c3_driver set .true. to turn on convection suppression in Grell-Freitas scheme during limited intervals when fh_dfi_radar is enabled .true. iccn -
      kice number of layers in ice 2 -
      lrefres flag for radar reflectivity in restart file +
      kice sfc_sice number of layers in ice 2 +
      lrefres flag for radar reflectivity in restart file .false.
      - */ diff --git a/physics/photochem/module_ozphys.F90 b/physics/photochem/module_ozphys.F90 index fcc5ac7ad..99f281daa 100644 --- a/physics/photochem/module_ozphys.F90 +++ b/physics/photochem/module_ozphys.F90 @@ -45,14 +45,8 @@ module module_ozphys public ty_ozphys -! ######################################################################################### -!> \section arg_table_ty_ozphys Argument Table -!! \htmlinclude ty_ozphys.html -!! !> Derived type containing data and procedures needed by ozone photochemistry parameterization !! *Note* All data field are ordered from surface-to-toa. -!! -! ######################################################################################### type ty_ozphys ! Prognostic ozone. integer :: nlat !< Number of latitudes. From b73269fcd3660b5c69cc110f796ef4a4b4e227be Mon Sep 17 00:00:00 2001 From: Lisa Bengtsson Date: Tue, 25 Jun 2024 18:08:51 +0000 Subject: [PATCH 24/80] update xkinv1 to 0.15 --- physics/PBL/SATMEDMF/satmedmfvdifq.F | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/physics/PBL/SATMEDMF/satmedmfvdifq.F b/physics/PBL/SATMEDMF/satmedmfvdifq.F index 95a1e35e5..c0e43e809 100644 --- a/physics/PBL/SATMEDMF/satmedmfvdifq.F +++ b/physics/PBL/SATMEDMF/satmedmfvdifq.F @@ -275,7 +275,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw, & parameter(elmfac=1.0,elefac=1.0,cql=100.) parameter(dw2min=1.e-4,dkmax=1000.,xkgdx=1000.) parameter(qlcr=3.5e-5,zstblmax=2500.) - parameter(xkinv1=0.4,xkinv2=0.3) + parameter(xkinv1=0.15,xkinv2=0.3) parameter(h1=0.33333333,hcrinv=250.) parameter(vegflo=0.1,vegfup=1.0,z0lo=0.1,z0up=1.0) parameter(vc0=1.0,zc0=1.0) From 891959c2680b91ba745e4edbd7a7c98e17101d12 Mon Sep 17 00:00:00 2001 From: Lisa Bengtsson Date: Tue, 25 Jun 2024 21:03:28 +0000 Subject: [PATCH 25/80] add check if progsigma is true --- physics/CONV/SAMF/samfdeepcnv.f | 10 +++++++--- physics/CONV/SAMF/samfshalcnv.f | 10 +++++++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/physics/CONV/SAMF/samfdeepcnv.f b/physics/CONV/SAMF/samfdeepcnv.f index 90ff4dfd4..be43795b4 100644 --- a/physics/CONV/SAMF/samfdeepcnv.f +++ b/physics/CONV/SAMF/samfdeepcnv.f @@ -3431,9 +3431,13 @@ subroutine samfdeepcnv_run (im,km,first_time_step,restart, & if (cnvflg(i) .and. rn(i) > 0.) then if (k >= kbcon(i) .and. k < ktcon(i)) then cnvw(i,k) = cnvwt(i,k) * xmb(i) * dt2 - tem=max(sigmaout(i,k),0.) - tem1=min(tem,1.0) - cnvw(i,k)=cnvw(i,k)*tem1 + if(progsigma)then + tem=max(sigmaout(i,k),0.) + tem1=min(tem,1.0) + cnvw(i,k)=cnvw(i,k)*tem1 + else + cnvw(i,k)=cnvw(i,k)*sigmagfm(i) + endif endif endif enddo diff --git a/physics/CONV/SAMF/samfshalcnv.f b/physics/CONV/SAMF/samfshalcnv.f index 41f0124c6..fa9d77a53 100644 --- a/physics/CONV/SAMF/samfshalcnv.f +++ b/physics/CONV/SAMF/samfshalcnv.f @@ -2405,9 +2405,13 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, & if (cnvflg(i)) then if (k >= kbcon(i) .and. k < ktcon(i)) then cnvw(i,k) = cnvwt(i,k) * xmb(i) * dt2 - tem=max(sigmaout(i,k),0.) - tem1=min(tem,1.0) - cnvw(i,k)=cnvw(i,k)*tem1 + if(progsigma)then + tem=max(sigmaout(i,k),0.) + tem1=min(tem,1.0) + cnvw(i,k)=cnvw(i,k)*tem1 + else + cnvw(i,k)=cnvw(i,k)*sigmagfm(i) + endif endif endif enddo From de95e37109358a4afc848eb35a25aed8b81bebc3 Mon Sep 17 00:00:00 2001 From: Lisa Bengtsson Date: Wed, 26 Jun 2024 17:23:09 +0000 Subject: [PATCH 26/80] Output tendency_of_vertically_diffused_tracer_concentration from MYNN PBL --- physics/PBL/MYNN_EDMF/mynnedmf_wrapper.F90 | 25 +++++++++++++++--- physics/PBL/MYNN_EDMF/mynnedmf_wrapper.meta | 29 +++++++++++++++++++++ 2 files changed, 51 insertions(+), 3 deletions(-) diff --git a/physics/PBL/MYNN_EDMF/mynnedmf_wrapper.F90 b/physics/PBL/MYNN_EDMF/mynnedmf_wrapper.F90 index 6dc068758..5c990dc5b 100644 --- a/physics/PBL/MYNN_EDMF/mynnedmf_wrapper.F90 +++ b/physics/PBL/MYNN_EDMF/mynnedmf_wrapper.F90 @@ -140,7 +140,7 @@ SUBROUTINE mynnedmf_wrapper_run( & & dqdt_cloud_droplet_num_conc, dqdt_ice_num_conc, & ! <=== ntlnc, ntinc & dqdt_water_aer_num_conc, dqdt_ice_aer_num_conc,& ! <=== ntwa, ntia & dqdt_cccn, & ! <=== ntccn - & flag_for_pbl_generic_tend, & + & tmf, flag_for_pbl_generic_tend, & & dtend, dtidx, index_of_temperature, & & index_of_x_wind, index_of_y_wind, ntke, & & ntqv, ntcw, ntiw, ntsw, & @@ -155,7 +155,8 @@ SUBROUTINE mynnedmf_wrapper_run( & & icloud_bl, do_mynnsfclay, & & imp_physics, imp_physics_gfdl, & & imp_physics_thompson, imp_physics_wsm6, & - & imp_physics_fa, & + & imp_physics_fa, imfdeepcnv, imfdeepcnv_c3, & + & imfdeepcnv_samf, & & chem3d, frp, mix_chem, rrfs_sd, enh_mix, & & nchem, ndvel, vdep, smoke_dbg, & & imp_physics_nssl, nssl_ccn_on, & @@ -205,7 +206,8 @@ SUBROUTINE mynnedmf_wrapper_run( & & bl_mynn_output, & & imp_physics, imp_physics_wsm6, & & imp_physics_thompson, imp_physics_gfdl, & - & imp_physics_nssl, imp_physics_fa, & + & imp_physics_nssl, imp_physics_fa, imfdeepcnv, & + & imfdeepcnv_c3, imfdeepcnv_samf, & & spp_pbl, & & tke_budget real(kind_phys), intent(in) :: & @@ -252,6 +254,7 @@ SUBROUTINE mynnedmf_wrapper_run( & & EL_PBL, Sh3D, Sm3D, qc_bl, qi_bl, cldfra_bl, dqdt_cccn real(kind_phys), dimension(:,:), intent(inout) :: & & qke_adv + real(kind_phys), dimension(:,:,:), intent(out) :: tmf !These 10 arrays are only allocated when bl_mynn_output > 0 real(kind_phys), dimension(:,:), intent(inout), optional :: & & edmf_a,edmf_w,edmf_qt, & @@ -555,6 +558,13 @@ SUBROUTINE mynnedmf_wrapper_run( & enddo enddo + do k=1,levs + do i=1,im + tmf(i,k,1)=0. + enddo + enddo + + ! Check incoming moist species to ensure non-negative values ! First, create height difference (dz) do k=1,levs @@ -1028,6 +1038,15 @@ SUBROUTINE mynnedmf_wrapper_run( & deallocate(save_qke_adv) endif + if(imfdeepcnv == imfdeepcnv_c3 .or. imfdeepcnv == imfdeepcnv_samf)then + !LB: save PBL q-tendency for use in prognostic closure + do k=1,levs + do i=1,im + tmf(i,k,1)=dqdt_water_vapor(i,k) + enddo + enddo + endif + CONTAINS SUBROUTINE dtend_helper(itracer,field,mult) diff --git a/physics/PBL/MYNN_EDMF/mynnedmf_wrapper.meta b/physics/PBL/MYNN_EDMF/mynnedmf_wrapper.meta index f2adfc4f5..94f30ad52 100644 --- a/physics/PBL/MYNN_EDMF/mynnedmf_wrapper.meta +++ b/physics/PBL/MYNN_EDMF/mynnedmf_wrapper.meta @@ -1150,6 +1150,14 @@ kind = kind_phys intent = inout optional = True +[tmf] + standard_name = tendency_of_vertically_diffused_tracer_concentration + long_name = updated tendency of the tracers due to vertical diffusion in PBL scheme + units = kg kg-1 s-1 + dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_vertical_diffusion_tracers) + type = real + kind = kind_phys + intent = out [flag_for_pbl_generic_tend] standard_name = flag_for_generic_tendency_due_to_planetary_boundary_layer long_name = true if GFS_PBL_generic should calculate tendencies @@ -1428,6 +1436,27 @@ dimensions = () type = integer intent = in +[imfdeepcnv] + standard_name = control_for_deep_convection_scheme + long_name = flag for mass-flux deep convection scheme + units = flag + dimensions = () + type = integer + intent = in +[imfdeepcnv_c3] + standard_name = identifier_for_c3_deep_convection + long_name = flag for C3 deep convection scheme + units = flag + dimensions = () + type = integer + intent = in +[imfdeepcnv_samf] + standard_name = identifer_for_scale_aware_mass_flux_deep_convection + long_name = flag for SAMF deep convection scheme + units = flag + dimensions = () + type = integer + intent = in [nssl_ccn_on] standard_name = nssl_ccn_on long_name = CCN activation flag in NSSL micro From 0e86a0ac0a2aebde405dc43660b49654ad75a673 Mon Sep 17 00:00:00 2001 From: Man Zhang Date: Thu, 27 Jun 2024 14:21:31 -0600 Subject: [PATCH 27/80] save scidoc progress --- physics/GWD/ugwpv1_gsldrag.F90 | 2 +- .../UFS_SCM_NEPTUNE/GFS_GWD_generic_pre.F90 | 1 - .../UFS_SCM_NEPTUNE/GFS_MP_generic_post.F90 | 6 +- .../UFS_SCM_NEPTUNE/GFS_radiation_surface.F90 | 2 +- .../UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_mp.F90 | 443 +++++++++--------- .../GFS_rrtmgp_cloud_overlap.F90 | 87 ++-- .../UFS_SCM_NEPTUNE/GFS_rrtmgp_post.F90 | 136 +++--- .../UFS_SCM_NEPTUNE/GFS_rrtmgp_setup.F90 | 16 +- .../UFS_SCM_NEPTUNE/GFS_stochastics.F90 | 5 +- .../RRTMGP/rrtmgp_lw_cloud_optics.F90 | 4 +- physics/docs/library.bib | 31 +- 11 files changed, 356 insertions(+), 377 deletions(-) diff --git a/physics/GWD/ugwpv1_gsldrag.F90 b/physics/GWD/ugwpv1_gsldrag.F90 index 992a0854d..8c931bb3e 100644 --- a/physics/GWD/ugwpv1_gsldrag.F90 +++ b/physics/GWD/ugwpv1_gsldrag.F90 @@ -291,7 +291,7 @@ end subroutine ugwpv1_gsldrag_finalize !>@brief These subroutines and modules execute the CIRES UGWP Version 0 !>\defgroup ugwpv1_gsldrag_run Unified Gravity Wave Physics General Algorithm !> @{ -!! The physics of NGWs in the UGWP framework (Yudin et al. 2018 \cite yudin_et_al_2018) is represented by four GW-solvers, which is introduced in Lindzen (1981) \cite lindzen_1981, Hines (1997) \cite hines_1997, Alexander and Dunkerton (1999) \cite alexander_and_dunkerton_1999, and Scinocca (2003) \cite scinocca_2003. The major modification of these GW solvers is represented by the addition of the background dissipation of temperature and winds to the saturation criteria for wave breaking. This feature is important in the mesosphere and thermosphere for WAM applications and it considers appropriate scale-dependent dissipation of waves near the model top lid providing the momentum and energy conservation in the vertical column physics (Shaw and Shepherd 2009 \cite shaw_and_shepherd_2009). In the UGWP-v0, the modification of Scinocca (2003) \cite scinocca_2003 scheme for NGWs with non-hydrostatic and rotational effects for GW propagations and background dissipation is represented by the subroutine \ref fv3_ugwp_solv2_v0. In the next release of UGWP, additional GW-solvers will be implemented along with physics-based triggering of waves and stochastic approaches for selection of GW modes characterized by horizontal phase velocities, azimuthal directions and magnitude of the vertical momentum flux (VMF). +!! The physics of NGWs in the UGWP framework (Yudin et al. 2018 \cite yudin_et_al_2018) is represented by four GW-solvers, which is introduced in Lindzen (1981) \cite lindzen_1981, Hines (1997) \cite hines_1997, Alexander and Dunkerton (1999) \cite alexander_and_dunkerton_1999, and Scinocca (2003) \cite scinocca_2003. The major modification of these GW solvers is represented by the addition of the background dissipation of temperature and winds to the saturation criteria for wave breaking. This feature is important in the mesosphere and thermosphere for WAM applications and it considers appropriate scale-dependent dissipation of waves near the model top lid providing the momentum and energy conservation in the vertical column physics (Shaw and Shepherd 2009 \cite shaw_and_shepherd_2009). In the UGWP-v0, the modification of Scinocca (2003) \cite scinocca_2003 scheme for NGWs with non-hydrostatic and rotational effects for GW propagations and background dissipation is represented by the subroutine fv3_ugwp_solv2_v0. In the next release of UGWP, additional GW-solvers will be implemented along with physics-based triggering of waves and stochastic approaches for selection of GW modes characterized by horizontal phase velocities, azimuthal directions and magnitude of the vertical momentum flux (VMF). !! !! In UGWP-v0, the specification for the VMF function is adopted from the GEOS-5 global atmosphere model of GMAO NASA/GSFC, as described in Molod et al. (2015) \cite molod_et_al_2015 and employed in the MERRRA-2 reanalysis (Gelaro et al., 2017 \cite gelaro_et_al_2017). The Fortran subroutine \ref slat_geos5_tamp describes the latitudinal shape of VMF-function as displayed in Figure 3 of Molod et al. (2015) \cite molod_et_al_2015. It shows that the enhanced values of VMF in the equatorial region gives opportunity to simulate the QBO-like oscillations in the equatorial zonal winds and lead to more realistic simulations of the equatorial dynamics in GEOS-5 operational and MERRA-2 reanalysis products. For the first vertically extended version of FV3GFS in the stratosphere and mesosphere, this simplified function of VMF allows us to tune the model climate and to evaluate multi-year simulations of FV3GFS with the MERRA-2 and ERA-5 reanalysis products, along with temperature, ozone, and water vapor observations of current satellite missions. After delivery of the UGWP-code, the EMC group developed and tested approach to modulate the zonal mean NGW forcing by 3D-distributions of the total precipitation as a proxy for the excitation of NGWs by convection and the vertically-integrated (surface - tropopause) Turbulent Kinetic Energy (TKE). The verification scores with updated NGW forcing, as reported elsewhere by EMC researchers, display noticeable improvements in the forecast scores produced by FV3GFS configuration extended into the mesosphere. !! diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_GWD_generic_pre.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_GWD_generic_pre.F90 index 51a76c989..b91e36634 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_GWD_generic_pre.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_GWD_generic_pre.F90 @@ -9,7 +9,6 @@ module GFS_GWD_generic_pre !> \section arg_table_GFS_GWD_generic_pre_run Argument Table !! \htmlinclude GFS_GWD_generic_pre_run.html !! -!! \section gfs_gwd_ge_pre_ga General Algorithm subroutine GFS_GWD_generic_pre_run( & & im, levs, nmtvr, mntvar, & & oc, oa4, clx, theta, & diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_MP_generic_post.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_MP_generic_post.F90 index d9d30fb90..09f7433ee 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_MP_generic_post.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_MP_generic_post.F90 @@ -8,16 +8,13 @@ module GFS_MP_generic_post contains -!>\defgroup gfs_calpreciptype GFS Precipitation Type Diagnostics Module -!! \brief If dominant precip type is requested (i.e., Zhao-Carr MP scheme), 4 more algorithms in calpreciptype() +!> If dominant precip type is requested (i.e., Zhao-Carr MP scheme), 4 more algorithms in calpreciptype() !! will be called. the tallies are then summed in calwxt_dominant(). For GFDL cloud MP scheme, determine convective !! rain/snow by surface temperature; and determine explicit rain/snow by rain/snow coming out directly from MP. !! !> \section arg_table_GFS_MP_generic_post_run Argument Table !! \htmlinclude GFS_MP_generic_post_run.html !! -!> \section gfs_mp_gen GFS MP Generic Post General Algorithm -!> @{ subroutine GFS_MP_generic_post_run( & im, levs, kdt, nrcm, nncl, ntcw, ntrac, imp_physics, imp_physics_gfdl, imp_physics_thompson, imp_physics_nssl, & imp_physics_mg, imp_physics_fer_hires, cal_pre, cplflx, cplchm, cpllnd, progsigma, con_g, rhowater, rainmin, dtf, & @@ -546,6 +543,5 @@ subroutine GFS_MP_generic_post_run( endif end subroutine GFS_MP_generic_post_run -!> @} end module GFS_MP_generic_post diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_radiation_surface.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_radiation_surface.F90 index c2af54b69..03ca29b56 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_radiation_surface.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_radiation_surface.F90 @@ -9,7 +9,7 @@ module GFS_radiation_surface contains -!! This module contains calls to module_radiation_surface::setemis() to set up +!> This module contains calls to module_radiation_surface::setemis() to set up !! surface emissivity for LW radiation and to module_radiation_surface::setalb() !! to set up surface albedo for SW radiation. !> \section arg_table_GFS_radiation_surface_init Argument Table diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_mp.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_mp.F90 index b089398e2..b1fb9cac2 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_mp.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_mp.F90 @@ -17,12 +17,12 @@ module GFS_rrtmgp_cloud_mp real (kind_phys), parameter :: & cld_limit_lower = 0.001, & cld_limit_ovcst = 1.0 - 1.0e-8, & - reliq_def = 10.0 , & ! Default liq radius to 10 micron (used when effr_in=F) - reice_def = 50.0, & ! Default ice radius to 50 micron (used when effr_in=F) - rerain_def = 1000.0, & ! Default rain radius to 1000 micron (used when effr_in=F) - resnow_def = 250.0, & ! Default snow radius to 250 micron (used when effr_in=F) - reice_min = 10.0, & ! Minimum ice size allowed by GFDL MP scheme - reice_max = 150.0 ! Maximum ice size allowed by GFDL MP scheme + reliq_def = 10.0 , & !< Default liq radius to 10 micron (used when effr_in=F) + reice_def = 50.0, & !< Default ice radius to 50 micron (used when effr_in=F) + rerain_def = 1000.0, & !< Default rain radius to 1000 micron (used when effr_in=F) + resnow_def = 250.0, & !< Default snow radius to 250 micron (used when effr_in=F) + reice_min = 10.0, & !< Minimum ice size allowed by GFDL MP scheme + reice_max = 150.0 !< Maximum ice size allowed by GFDL MP scheme public GFS_rrtmgp_cloud_mp_init, GFS_rrtmgp_cloud_mp_run, GFS_rrtmgp_cloud_mp_finalize @@ -51,109 +51,109 @@ subroutine GFS_rrtmgp_cloud_mp_run(nCol, nLev, nTracers, ncnd, i_cldliq, i_cldic ! Inputs integer, intent(in) :: & - nCol, & ! Number of horizontal grid points - nLev, & ! Number of vertical layers - ncnd, & ! Number of cloud condensation types. - nTracers, & ! Number of tracers from model. - i_cldliq, & ! Index into tracer array for cloud liquid. - i_cldice, & ! Index into tracer array for cloud ice. - i_cldrain, & ! Index into tracer array for cloud rain. - i_cldsnow, & ! Index into tracer array for cloud snow. - i_cldgrpl, & ! Index into tracer array for cloud groupel. - i_cldtot, & ! Index into tracer array for cloud total amount. - i_cldliq_nc, & ! cloud liquid number concentration. - i_cldice_nc, & ! cloud ice number concentration. - i_twa, & ! water friendly aerosol. - imfdeepcnv, & ! Choice of mass-flux deep convection scheme - imfdeepcnv_gf, & ! Flag for Grell-Freitas deep convection scheme - imfdeepcnv_samf, & ! Flag for scale awware mass flux convection scheme - kdt, & ! Current forecast iteration - imp_physics, & ! Choice of microphysics scheme - imp_physics_thompson, & ! Choice of Thompson - imp_physics_gfdl, & ! Choice of GFDL - icloud ! Control for cloud are fraction option + nCol, & !< Number of horizontal grid points + nLev, & !< Number of vertical layers + ncnd, & !< Number of cloud condensation types. + nTracers, & !< Number of tracers from model. + i_cldliq, & !< Index into tracer array for cloud liquid. + i_cldice, & !< Index into tracer array for cloud ice. + i_cldrain, & !< Index into tracer array for cloud rain. + i_cldsnow, & !< Index into tracer array for cloud snow. + i_cldgrpl, & !< Index into tracer array for cloud groupel. + i_cldtot, & !< Index into tracer array for cloud total amount. + i_cldliq_nc, & !< cloud liquid number concentration. + i_cldice_nc, & !< cloud ice number concentration. + i_twa, & !< water friendly aerosol. + imfdeepcnv, & !< Choice of mass-flux deep convection scheme + imfdeepcnv_gf, & !< Flag for Grell-Freitas deep convection scheme + imfdeepcnv_samf, & !< Flag for scale awware mass flux convection scheme + kdt, & !< Current forecast iteration + imp_physics, & !< Choice of microphysics scheme + imp_physics_thompson, & !< Choice of Thompson + imp_physics_gfdl, & !< Choice of GFDL + icloud !< Control for cloud are fraction option logical, intent(in) :: & - doSWrad, & ! Call SW radiation? - doLWrad, & ! Call LW radiation? - effr_in, & ! Provide hydrometeor radii from macrophysics? - lmfshal, & ! Flag for mass-flux shallow convection scheme used by Xu-Randall - ltaerosol, & ! Flag for aerosol option - mraerosol, & ! Flag for aerosol option - lgfdlmprad, & ! Flag for GFDLMP radiation interaction - do_mynnedmf, & ! Flag to activate MYNN-EDMF - uni_cld, & ! Flag for unified cloud scheme - lmfdeep2, & ! Flag for mass flux deep convection - doGP_cldoptics_LUT, & ! Flag to do GP cloud-optics (LUTs) - doGP_cldoptics_PADE, & ! (PADE approximation) - doGP_smearclds ! If true, add sgs clouds to gridmean clouds + doSWrad, & !< Call SW radiation? + doLWrad, & !< Call LW radiation? + effr_in, & !< Provide hydrometeor radii from macrophysics? + lmfshal, & !< Flag for mass-flux shallow convection scheme used by Xu-Randall + ltaerosol, & !< Flag for aerosol option + mraerosol, & !< Flag for aerosol option + lgfdlmprad, & !< Flag for GFDLMP radiation interaction + do_mynnedmf, & !< Flag to activate MYNN-EDMF + uni_cld, & !< Flag for unified cloud scheme + lmfdeep2, & !< Flag for mass flux deep convection + doGP_cldoptics_LUT, & !< Flag to do GP cloud-optics (LUTs) + doGP_cldoptics_PADE, & !< (PADE approximation) + doGP_smearclds !< If true, add sgs clouds to gridmean clouds real(kind_phys), intent(in) :: & - con_g, & ! Physical constant: gravitational constant - con_rd, & ! Physical constant: gas-constant for dry air - con_ttp, & ! Triple point temperature of water (K) - con_eps ! Physical constant: gas constant air / gas constant H2O + con_g, & !< Physical constant: gravitational constant + con_rd, & !< Physical constant: gas-constant for dry air + con_ttp, & !< Triple point temperature of water (K) + con_eps !< Physical constant: gas constant air / gas constant H2O real(kind_phys), dimension(:), intent(in) :: & - lsmask, & ! Land/Sea mask - xlon, & ! Longitude - xlat, & ! Latitude - dx ! Characteristic grid lengthscale (m) + lsmask, & !< Land/Sea mask + xlon, & !< Longitude + xlat, & !< Latitude + dx !< Characteristic grid lengthscale (m) real(kind_phys), dimension(:,:), intent(in) :: & - tv_lay, & ! Virtual temperature (K) - t_lay, & ! Temperature (K) - qs_lay, & ! Saturation vapor pressure (Pa) - q_lay, & ! water-vapor mixing ratio (kg/kg) - relhum, & ! Relative humidity - p_lay, & ! Pressure at model-layers (Pa) - cnv_mixratio, & ! Convective cloud mixing-ratio (kg/kg) - qci_conv, & ! Convective cloud condesate after rainout (kg/kg) - deltaZ, & ! Layer-thickness (m) - deltaZc, & ! Layer-thickness, from layer centers (m) - deltaP, & ! Layer-thickness (Pa) - qc_mynn, & ! - qi_mynn, & ! - cld_pbl_frac ! + tv_lay, & !< Virtual temperature (K) + t_lay, & !< Temperature (K) + qs_lay, & !< Saturation vapor pressure (Pa) + q_lay, & !< water-vapor mixing ratio (kg/kg) + relhum, & !< Relative humidity + p_lay, & !< Pressure at model-layers (Pa) + cnv_mixratio, & !< Convective cloud mixing-ratio (kg/kg) + qci_conv, & !< Convective cloud condesate after rainout (kg/kg) + deltaZ, & !< Layer-thickness (m) + deltaZc, & !< Layer-thickness, from layer centers (m) + deltaP, & !< Layer-thickness (Pa) + qc_mynn, & !< + qi_mynn, & !< + cld_pbl_frac !< real(kind_phys), dimension(:,:), intent(inout) :: & - effrin_cldliq, & ! Effective radius for stratiform liquid cloud-particles (microns) - effrin_cldice, & ! Effective radius for stratiform ice cloud-particles (microns) - effrin_cldsnow ! Effective radius for stratiform snow cloud-particles (microns) + effrin_cldliq, & !< Effective radius for stratiform liquid cloud-particles (microns) + effrin_cldice, & !< Effective radius for stratiform ice cloud-particles (microns) + effrin_cldsnow !< Effective radius for stratiform snow cloud-particles (microns) real(kind_phys), dimension(:,:), intent(in) :: & - effrin_cldrain ! Effective radius for stratiform rain cloud-particles (microns) + effrin_cldrain !< Effective radius for stratiform rain cloud-particles (microns) real(kind_phys), dimension(:,:), intent(in) :: & - p_lev ! Pressure at model-level interfaces (Pa) + p_lev !< Pressure at model-level interfaces (Pa) real(kind_phys), dimension(:,:,:),intent(in) :: & - tracer ! Cloud condensate amount in layer by type () + tracer !< Cloud condensate amount in layer by type () ! Outputs real(kind_phys), dimension(:), intent(inout) :: & - lwp_ex, & ! Total liquid water path from explicit microphysics - iwp_ex, & ! Total ice water path from explicit microphysics - lwp_fc, & ! Total liquid water path from cloud fraction scheme - iwp_fc ! Total ice water path from cloud fraction scheme + lwp_ex, & !< Total liquid water path from explicit microphysics + iwp_ex, & !< Total ice water path from explicit microphysics + lwp_fc, & !< Total liquid water path from cloud fraction scheme + iwp_fc !< Total ice water path from cloud fraction scheme real(kind_phys), dimension(:), intent(out) :: & - cldfra2d ! Instantaneous 2D (max-in-column) cloud fraction + cldfra2d !< Instantaneous 2D (max-in-column) cloud fraction real(kind_phys), dimension(:,:),intent(inout) :: & - cld_frac, & ! Cloud-fraction for stratiform clouds - cld_lwp, & ! Water path for stratiform liquid cloud-particles - cld_reliq, & ! Effective radius for stratiform liquid cloud-particles - cld_iwp, & ! Water path for stratiform ice cloud-particles - cld_reice, & ! Effective radius for stratiform ice cloud-particles - cld_swp, & ! Water path for snow hydrometeors - cld_resnow, & ! Effective radius for snow hydrometeors - cld_rwp, & ! Water path for rain hydrometeors - cld_rerain, & ! Effective radius for rain hydrometeors - precip_frac, & ! Precipitation fraction - cld_cnv_frac, & ! Cloud-fraction for convective clouds - cld_cnv_lwp, & ! Water path for convective liquid cloud-particles - cld_cnv_reliq, & ! Effective radius for convective liquid cloud-particles - cld_cnv_iwp, & ! Water path for convective ice cloud-particles - cld_cnv_reice, & ! Effective radius for convective ice cloud-particles - cld_pbl_lwp, & ! Water path for SGS PBL liquid cloud-particles - cld_pbl_reliq, & ! Effective radius for SGS PBL liquid cloud-particles - cld_pbl_iwp, & ! Water path for SGS PBL ice cloud-particles - cld_pbl_reice ! Effective radius for SGS PBL ice cloud-particles + cld_frac, & !< Cloud-fraction for stratiform clouds + cld_lwp, & !< Water path for stratiform liquid cloud-particles + cld_reliq, & !< Effective radius for stratiform liquid cloud-particles + cld_iwp, & !< Water path for stratiform ice cloud-particles + cld_reice, & !< Effective radius for stratiform ice cloud-particles + cld_swp, & !< Water path for snow hydrometeors + cld_resnow, & !< Effective radius for snow hydrometeors + cld_rwp, & !< Water path for rain hydrometeors + cld_rerain, & !< Effective radius for rain hydrometeors + precip_frac, & !< Precipitation fraction + cld_cnv_frac, & !< Cloud-fraction for convective clouds + cld_cnv_lwp, & !< Water path for convective liquid cloud-particles + cld_cnv_reliq, & !< Effective radius for convective liquid cloud-particles + cld_cnv_iwp, & !< Water path for convective ice cloud-particles + cld_cnv_reice, & !< Effective radius for convective ice cloud-particles + cld_pbl_lwp, & !< Water path for SGS PBL liquid cloud-particles + cld_pbl_reliq, & !< Effective radius for SGS PBL liquid cloud-particles + cld_pbl_iwp, & !< Water path for SGS PBL ice cloud-particles + cld_pbl_reice !< Effective radius for SGS PBL ice cloud-particles character(len=*), intent(out) :: & - errmsg ! Error message + errmsg !< Error message integer, intent(out) :: & - errflg ! Error flag + errflg !< Error flag ! Local integer :: iCol, iLay @@ -315,7 +315,6 @@ end subroutine GFS_rrtmgp_cloud_mp_run !! Xu-Randall? Xu-Randall is consistent with the Thompson MP scheme, but !! not GFDL-EMC) !! -!! \section cloud_mp_GF_gen General Algorithm subroutine cloud_mp_GF(nCol, nLev, lsmask, t_lay, p_lev, p_lay, qs_lay, relhum, & qci_conv, con_ttp, con_g, alpha0, cld_cnv_lwp, cld_cnv_reliq, cld_cnv_iwp, & cld_cnv_reice, cld_cnv_frac) @@ -323,28 +322,28 @@ subroutine cloud_mp_GF(nCol, nLev, lsmask, t_lay, p_lev, p_lay, qs_lay, relhum, ! Inputs integer, intent(in) :: & - nCol, & ! Number of horizontal grid points - nLev ! Number of vertical layers + nCol, & !< Number of horizontal grid points + nLev !< Number of vertical layers real(kind_phys), dimension(:), intent(in) :: & - lsmask ! Land/Sea mask + lsmask !< Land/Sea mask real(kind_phys), intent(in) :: & - con_g, & ! Physical constant: gravitational constant - con_ttp, & ! Triple point temperature of water (K) - alpha0 ! + con_g, & !< Physical constant: gravitational constant + con_ttp, & !< Triple point temperature of water (K) + alpha0 !< real(kind_phys), dimension(:,:),intent(in) :: & - t_lay, & ! Temperature at layer centers (K) - p_lev, & ! Pressure at layer interfaces (Pa) - p_lay, & ! - qs_lay, & ! - relhum, & ! - qci_conv ! + t_lay, & !< Temperature at layer centers (K) + p_lev, & !< Pressure at layer interfaces (Pa) + p_lay, & !< + qs_lay, & !< + relhum, & !< + qci_conv !< ! Outputs real(kind_phys), dimension(:,:),intent(inout) :: & - cld_cnv_lwp, & ! Convective cloud liquid water path - cld_cnv_reliq, & ! Convective cloud liquid effective radius - cld_cnv_iwp, & ! Convective cloud ice water path - cld_cnv_reice, & ! Convective cloud ice effecive radius - cld_cnv_frac ! Convective cloud-fraction (1) + cld_cnv_lwp, & !< Convective cloud liquid water path + cld_cnv_reliq, & !< Convective cloud liquid effective radius + cld_cnv_iwp, & !< Convective cloud ice water path + cld_cnv_reice, & !< Convective cloud ice effecive radius + cld_cnv_frac !< Convective cloud-fraction (1) ! Local integer :: iCol, iLay real(kind_phys) :: tem1, deltaP, clwc, qc, qi @@ -389,7 +388,6 @@ end subroutine cloud_mp_GF !! - The liquid and ice cloud effective particle sizes are assigned reference values*. !! *TODO* Find references, include DOIs, parameterize magic numbers, etc... !! -!! \section cloud_mp_MYNN_gen General Algorithm subroutine cloud_mp_MYNN(nCol, nLev, lsmask, t_lay, p_lev, p_lay, qs_lay, relhum, & qc_mynn, qi_mynn, con_ttp, con_g, cld_pbl_lwp, cld_pbl_reliq, cld_pbl_iwp, & cld_pbl_reice, cld_pbl_frac) @@ -397,28 +395,28 @@ subroutine cloud_mp_MYNN(nCol, nLev, lsmask, t_lay, p_lev, p_lay, qs_lay, relhum ! Inputs integer, intent(in) :: & - nCol, & ! Number of horizontal grid points - nLev ! Number of vertical layers + nCol, & !< Number of horizontal grid points + nLev !< Number of vertical layers real(kind_phys), dimension(:), intent(in) :: & - lsmask ! Land/Sea mask + lsmask !< Land/Sea mask real(kind_phys), intent(in) :: & - con_g, & ! Physical constant: gravitational constant - con_ttp ! Triple point temperature of water (K) + con_g, & !< Physical constant: gravitational constant + con_ttp !< Triple point temperature of water (K) real(kind_phys), dimension(:,:),intent(in) :: & - t_lay, & ! Temperature at layer centers (K) - p_lev, & ! Pressure at layer interfaces (Pa) - p_lay, & ! - qs_lay, & ! - relhum, & ! - qc_mynn, & ! Liquid cloud mixing-ratio (MYNN PBL cloud) - qi_mynn, & ! Ice cloud mixing-ratio (MYNN PBL cloud) - cld_pbl_frac ! Cloud-fraction (MYNN PBL cloud) + t_lay, & !< Temperature at layer centers (K) + p_lev, & !< Pressure at layer interfaces (Pa) + p_lay, & !< + qs_lay, & !< + relhum, & !< + qc_mynn, & !< Liquid cloud mixing-ratio (MYNN PBL cloud) + qi_mynn, & !< Ice cloud mixing-ratio (MYNN PBL cloud) + cld_pbl_frac !< Cloud-fraction (MYNN PBL cloud) ! Outputs real(kind_phys), dimension(:,:),intent(inout) :: & - cld_pbl_lwp, & ! Convective cloud liquid water path - cld_pbl_reliq, & ! Convective cloud liquid effective radius - cld_pbl_iwp, & ! Convective cloud ice water path - cld_pbl_reice ! Convective cloud ice effecive radius + cld_pbl_lwp, & !< Convective cloud liquid water path + cld_pbl_reliq, & !< Convective cloud liquid effective radius + cld_pbl_iwp, & !< Convective cloud ice water path + cld_pbl_reice !< Convective cloud ice effecive radius ! Local integer :: iCol, iLay @@ -462,7 +460,6 @@ end subroutine cloud_mp_MYNN !! - The convective cloud-fraction is computed using Xu-Randall (1996). !! (DJS asks: Does the SAMF scheme produce a cloud-fraction?) !! -!! \section cloud_mp_SAMF_gen General Algorithm subroutine cloud_mp_SAMF(nCol, nLev, t_lay, p_lev, p_lay, qs_lay, relhum, & cnv_mixratio, con_ttp, con_g, alpha0, cld_cnv_lwp, cld_cnv_reliq, cld_cnv_iwp, & cld_cnv_reice, cld_cnv_frac) @@ -470,26 +467,26 @@ subroutine cloud_mp_SAMF(nCol, nLev, t_lay, p_lev, p_lay, qs_lay, relhum, ! Inputs integer, intent(in) :: & - nCol, & ! Number of horizontal grid points - nLev ! Number of vertical layers + nCol, & !< Number of horizontal grid points + nLev !< Number of vertical layers real(kind_phys), intent(in) :: & - con_g, & ! Physical constant: gravity (m s-2) - con_ttp, & ! Triple point temperature of water (K) - alpha0 ! + con_g, & !< Physical constant: gravity (m s-2) + con_ttp, & !< Triple point temperature of water (K) + alpha0 !< real(kind_phys), dimension(:,:),intent(in) :: & - t_lay, & ! Temperature at layer-centers (K) - p_lev, & ! Pressure at layer-interfaces (Pa) - p_lay, & ! Presure at layer-centers (Pa) - qs_lay, & ! Specific-humidity at layer-centers (kg/kg) - relhum, & ! Relative-humidity (1) - cnv_mixratio ! Convective cloud mixing-ratio (kg/kg) + t_lay, & !< Temperature at layer-centers (K) + p_lev, & !< Pressure at layer-interfaces (Pa) + p_lay, & !< Presure at layer-centers (Pa) + qs_lay, & !< Specific-humidity at layer-centers (kg/kg) + relhum, & !< Relative-humidity (1) + cnv_mixratio !< Convective cloud mixing-ratio (kg/kg) ! Outputs real(kind_phys), dimension(:,:),intent(inout) :: & - cld_cnv_lwp, & ! Convective cloud liquid water path - cld_cnv_reliq, & ! Convective cloud liquid effective radius - cld_cnv_iwp, & ! Convective cloud ice water path - cld_cnv_reice, & ! Convective cloud ice effecive radius - cld_cnv_frac ! Convective cloud-fraction + cld_cnv_lwp, & !< Convective cloud liquid water path + cld_cnv_reliq, & !< Convective cloud liquid effective radius + cld_cnv_iwp, & !< Convective cloud ice water path + cld_cnv_reice, & !< Convective cloud ice effecive radius + cld_cnv_frac !< Convective cloud-fraction ! Local integer :: iCol, iLay real(kind_phys) :: tem0, tem1, deltaP, clwc @@ -519,7 +516,6 @@ end subroutine cloud_mp_SAMF !! - "unified cloud" implies that the cloud-fraction is PROVIDED. !! - The cloud water path is computed for all provided cloud mixing-ratios and hydrometeors. !! - If particle sizes are provided, they are used. If not, default values are assigned. -!! \section cloud_mp_uni_gen General Algorithm subroutine cloud_mp_uni(nCol, nLev, nTracers, ncnd, i_cldliq, i_cldice, i_cldrain, & i_cldsnow, i_cldgrpl, i_cldtot, effr_in, kdt, lsmask, p_lev, p_lay, t_lay, tv_lay,& effrin_cldliq, effrin_cldice, effrin_cldsnow, tracer, con_g, con_rd, con_ttp, & @@ -529,50 +525,50 @@ subroutine cloud_mp_uni(nCol, nLev, nTracers, ncnd, i_cldliq, i_cldice, i_cldrai ! Inputs integer, intent(in) :: & - nCol, & ! Number of horizontal grid points - nLev, & ! Number of vertical layers - ncnd, & ! Number of cloud condensation types. - nTracers, & ! Number of tracers from model. - i_cldliq, & ! Index into tracer array for cloud liquid. - i_cldice, & ! Index into tracer array for cloud ice. - i_cldrain, & ! Index into tracer array for cloud rain. - i_cldsnow, & ! Index into tracer array for cloud snow. - i_cldgrpl, & ! Index into tracer array for cloud groupel. - i_cldtot, & ! Index into tracer array for cloud total amount. + nCol, & !< Number of horizontal grid points + nLev, & !< Number of vertical layers + ncnd, & !< Number of cloud condensation types. + nTracers, & !< Number of tracers from model. + i_cldliq, & !< Index into tracer array for cloud liquid. + i_cldice, & !< Index into tracer array for cloud ice. + i_cldrain, & !< Index into tracer array for cloud rain. + i_cldsnow, & !< Index into tracer array for cloud snow. + i_cldgrpl, & !< Index into tracer array for cloud groupel. + i_cldtot, & !< Index into tracer array for cloud total amount. kdt logical, intent(in) :: & - effr_in ! Provide hydrometeor radii from macrophysics? + effr_in !< Provide hydrometeor radii from macrophysics? real(kind_phys), intent(in) :: & - con_g, & ! Physical constant: gravitational constant - con_ttp, & ! Triple point temperature of water (K) - con_rd ! Physical constant: gas-constant for dry air + con_g, & !< Physical constant: gravitational constant + con_ttp, & !< Triple point temperature of water (K) + con_rd !< Physical constant: gas-constant for dry air real(kind_phys), dimension(:), intent(in) :: & lsmask real(kind_phys), dimension(:,:), intent(in) :: & - t_lay, & ! Temperature at model-layers (K) - tv_lay, & ! Virtual temperature (K) - p_lay, & ! Pressure at model-layers (Pa) - cld_frac, & ! Total cloud fraction - effrin_cldliq, & ! Effective radius for liquid cloud-particles (microns) - effrin_cldice, & ! Effective radius for ice cloud-particles (microns) - effrin_cldsnow ! Effective radius for snow cloud-particles (microns) + t_lay, & !< Temperature at model-layers (K) + tv_lay, & !< Virtual temperature (K) + p_lay, & !< Pressure at model-layers (Pa) + cld_frac, & !< Total cloud fraction + effrin_cldliq, & !< Effective radius for liquid cloud-particles (microns) + effrin_cldice, & !< Effective radius for ice cloud-particles (microns) + effrin_cldsnow !< Effective radius for snow cloud-particles (microns) real(kind_phys), dimension(:,:), intent(in) ,optional :: & - effrin_cldrain ! Effective radius for rain cloud-particles (microns) + effrin_cldrain !< Effective radius for rain cloud-particles (microns) real(kind_phys), dimension(:,:), intent(in) :: & - p_lev ! Pressure at model-level interfaces (Pa) + p_lev !< Pressure at model-level interfaces (Pa) real(kind_phys), dimension(:,:,:),intent(in) :: & - tracer ! Cloud condensate amount in layer by type () + tracer !< Cloud condensate amount in layer by type () ! Outputs real(kind_phys), dimension(:,:),intent(inout) :: & - cld_lwp, & ! Cloud liquid water path - cld_reliq, & ! Cloud liquid effective radius - cld_iwp, & ! Cloud ice water path - cld_reice, & ! Cloud ice effecive radius - cld_swp, & ! Cloud snow water path - cld_resnow, & ! Cloud snow effective radius - cld_rwp, & ! Cloud rain water path - cld_rerain ! Cloud rain effective radius + cld_lwp, & !< Cloud liquid water path + cld_reliq, & !< Cloud liquid effective radius + cld_iwp, & !< Cloud ice water path + cld_reice, & !< Cloud ice effecive radius + cld_swp, & !< Cloud snow water path + cld_resnow, & !< Cloud snow effective radius + cld_rwp, & !< Cloud rain water path + cld_rerain !< Cloud rain effective radius ! Local variables real(kind_phys) :: tem1,tem2,tem3,pfac,deltaP @@ -657,7 +653,6 @@ end subroutine cloud_mp_uni !! - The cloud-fraction is computed using Xu-Randall** (1996). !! **Additionally, Conditioned on relative-humidity** !! -!! \section cloud_mp_thompson_gen General Algorithm subroutine cloud_mp_thompson(nCol, nLev, nTracers, ncnd, i_cldliq, i_cldice, i_cldrain,& i_cldsnow, i_cldgrpl, p_lev, p_lay, tv_lay, t_lay, tracer, qs_lay, q_lay, relhum, & con_ttp, con_g, con_rd, con_eps, alpha0, cnv_mixratio, lwp_ex, iwp_ex, lwp_fc, & @@ -666,49 +661,49 @@ subroutine cloud_mp_thompson(nCol, nLev, nTracers, ncnd, i_cldliq, i_cldice, i_c ! Inputs logical, intent(in), optional :: & - cond_cfrac_onRH, & ! If true, cloud-fracion set to unity when rh>99% - doGP_smearclds ! If true, add sgs clouds to gridmean clouds + cond_cfrac_onRH, & !< If true, cloud-fracion set to unity when rh>99% + doGP_smearclds !< If true, add sgs clouds to gridmean clouds integer, intent(in) :: & - nCol, & ! Number of horizontal grid points - nLev, & ! Number of vertical layers - ncnd, & ! Number of cloud condensation types. - nTracers, & ! Number of tracers from model. - i_cldliq, & ! Index into tracer array for cloud liquid amount. - i_cldice, & ! cloud ice amount. - i_cldrain, & ! cloud rain amount. - i_cldsnow, & ! cloud snow amount. - i_cldgrpl ! cloud groupel amount. + nCol, & !< Number of horizontal grid points + nLev, & !< Number of vertical layers + ncnd, & !< Number of cloud condensation types. + nTracers, & !< Number of tracers from model. + i_cldliq, & !< Index into tracer array for cloud liquid amount. + i_cldice, & !< cloud ice amount. + i_cldrain, & !< cloud rain amount. + i_cldsnow, & !< cloud snow amount. + i_cldgrpl !< cloud groupel amount. real(kind_phys), intent(in) :: & - con_ttp, & ! Triple point temperature of water (K) - con_g, & ! Physical constant: gravitational constant - con_rd, & ! Physical constant: gas-constant for dry air - con_eps, & ! Physical constant: gas constant air / gas constant H2O - alpha0 ! + con_ttp, & !< Triple point temperature of water (K) + con_g, & !< Physical constant: gravitational constant + con_rd, & !< Physical constant: gas-constant for dry air + con_eps, & !< Physical constant: gas constant air / gas constant H2O + alpha0 !< real(kind_phys), dimension(:,:), intent(in) :: & - tv_lay, & ! Virtual temperature (K) - t_lay, & ! Temperature (K) - qs_lay, & ! Saturation vapor pressure (Pa) - q_lay, & ! water-vapor mixing ratio (kg/kg) - relhum, & ! Relative humidity - p_lay, & ! Pressure at model-layers (Pa) - cnv_mixratio ! Convective cloud mixing-ratio (kg/kg) + tv_lay, & !< Virtual temperature (K) + t_lay, & !< Temperature (K) + qs_lay, & !< Saturation vapor pressure (Pa) + q_lay, & !< water-vapor mixing ratio (kg/kg) + relhum, & !< Relative humidity + p_lay, & !< Pressure at model-layers (Pa) + cnv_mixratio !< Convective cloud mixing-ratio (kg/kg) real(kind_phys), dimension(:,:), intent(in) :: & - p_lev ! Pressure at model-level interfaces (Pa) + p_lev !< Pressure at model-level interfaces (Pa) real(kind_phys), dimension(:,:,:),intent(in) :: & - tracer ! Cloud condensate amount in layer by type () + tracer !< Cloud condensate amount in layer by type () ! In/Outs real(kind_phys), dimension(:), intent(inout) :: & - lwp_ex, & ! total liquid water path from explicit microphysics - iwp_ex, & ! total ice water path from explicit microphysics - lwp_fc, & ! total liquid water path from cloud fraction scheme - iwp_fc ! total ice water path from cloud fraction scheme + lwp_ex, & !< total liquid water path from explicit microphysics + iwp_ex, & !< total ice water path from explicit microphysics + lwp_fc, & !< total liquid water path from cloud fraction scheme + iwp_fc !< total ice water path from cloud fraction scheme real(kind_phys), dimension(:,:), intent(inout) :: & - cld_frac, & ! Total cloud fraction - cld_lwp, & ! Cloud liquid water path - cld_iwp, & ! Cloud ice water path - cld_swp, & ! Cloud snow water path - cld_rwp ! Cloud rain water path + cld_frac, & !< Total cloud fraction + cld_lwp, & !< Cloud liquid water path + cld_iwp, & !< Cloud ice water path + cld_swp, & !< Cloud snow water path + cld_rwp !< Cloud rain water path ! Local variables real(kind_phys) :: tem1, pfac, cld_mr, deltaP, tem2 @@ -778,22 +773,18 @@ subroutine cloud_mp_thompson(nCol, nLev, nTracers, ncnd, i_cldliq, i_cldice, i_c end subroutine cloud_mp_thompson -!> This function computes the cloud-fraction following. -!! Xu-Randall(1996) A Semiempirical Cloudiness Parameterization for Use in Climate Models -!! https://doi.org/10.1175/1520-0469(1996)053<3084:ASCPFU>2.0.CO;2 +!> This function computes the cloud-fraction following +!! Xu-Randall(1996) \cite xu_and_randall_1996 !! -!! cld_frac = {1-exp[-alpha*cld_mr/((1-relhum)*qs_lay)**lambda]}*relhum**P -!! -!! \section cld_frac_XuRandall_gen General Algorithm function cld_frac_XuRandall(p_lay, qs_lay, relhum, cld_mr, alpha) implicit none ! Inputs real(kind_phys), intent(in) :: & - p_lay, & ! Pressure (Pa) - qs_lay, & ! Saturation vapor-pressure (Pa) - relhum, & ! Relative humidity - cld_mr, & ! Total cloud mixing ratio - alpha ! Scheme parameter (default=100) + p_lay, & !< Pressure (Pa) + qs_lay, & !< Saturation vapor-pressure (Pa) + relhum, & !< Relative humidity + cld_mr, & !< Total cloud mixing ratio + alpha !< Scheme parameter (default=100) ! Outputs real(kind_phys) :: cld_frac_XuRandall diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_overlap.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_overlap.F90 index 0094f8165..df0a2a41a 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_overlap.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_overlap.F90 @@ -1,8 +1,5 @@ !> \file GFS_rrtmgp_cloud_overlap.F90 -!! -!> \defgroup GFS_rrtmgp_cloud_overlap GFS_rrtmgp_cloud_overlap.F90 -!! -!! \brief This module contains EMC's interface to the different assumptions of vertical cloud +!! This file contains EMC's interface to the different assumptions of vertical cloud !! structuce, cloud overlap, used by McICA for cloud sampling in the RRTMGP longwave !! and shortwave schemes. !! @@ -15,20 +12,14 @@ module GFS_rrtmgp_cloud_overlap contains -!>\defgroup gfs_rrtmgp_cloud_overlap_mod GFS RRTMGP Cloud Overlap Module -!! \section arg_table_GFS_rrtmgp_cloud_overlap_run +!> \section arg_table_GFS_rrtmgp_cloud_overlap_run Argument Table !! \htmlinclude GFS_rrtmgp_cloud_overlap_run.html -!! -!> \ingroup GFS_rrtmgp_cloud_overlap -!! !! This is identical (shares common-code) to RRTMG. The motivation for RRTMGP to have !! its own scheme is both organizational and philosophical*. !! !! *The number of "clouds" being produced by the model physics is often greater than one. !! rte-rrtmgp can accomodate multiple cloud-types. This module preservers this enhancement !! in the EMCs coupling to the RRTMGP scheme. -!! -!! \section GFS_rrtmgp_cloud_overlap_run subroutine GFS_rrtmgp_cloud_overlap_run(nCol, nLev, yearlen, doSWrad, doLWrad, & julian, lat, p_lev, p_lay, tv_lay, deltaZc, con_pi, con_g, con_rd, con_epsq, & dcorr_con, idcor, iovr, iovr_dcorr, iovr_exp, iovr_exprand, idcor_con, & @@ -39,54 +30,54 @@ subroutine GFS_rrtmgp_cloud_overlap_run(nCol, nLev, yearlen, doSWrad, doLWrad, ! Inputs integer, intent(in) :: & - nCol, & ! Number of horizontal grid points - nLev, & ! Number of vertical layers - yearlen, & ! Length of current year (365/366) WTF? - imfdeepcnv, & ! - imfdeepcnv_gf, & ! - imfdeepcnv_samf, & ! - iovr, & ! Choice of cloud-overlap method - iovr_convcld, & ! Choice of convective cloud-overlap method - iovr_dcorr, & ! Flag for decorrelation-length cloud overlap method - iovr_exp, & ! Flag for exponential cloud overlap method - iovr_exprand, & ! Flag for exponential-random cloud overlap method - idcor, & ! Choice of method for decorrelation length computation - idcor_con, & ! Flag for decorrelation-length. Use constant value - idcor_hogan, & ! Flag for decorrelation-length. (https://rmets.onlinelibrary.wiley.com/doi/full/10.1002/qj.647) - idcor_oreopoulos ! Flag for decorrelation-length. (10.5194/acp-12-9097-2012) + nCol, & !< Number of horizontal grid points + nLev, & !< Number of vertical layers + yearlen, & !< Length of current year (365/366) WTF? + imfdeepcnv, & !< + imfdeepcnv_gf, & !< + imfdeepcnv_samf, & !< + iovr, & !< Choice of cloud-overlap method + iovr_convcld, & !< Choice of convective cloud-overlap method + iovr_dcorr, & !< Flag for decorrelation-length cloud overlap method + iovr_exp, & !< Flag for exponential cloud overlap method + iovr_exprand, & !< Flag for exponential-random cloud overlap method + idcor, & !< Choice of method for decorrelation length computation + idcor_con, & !< Flag for decorrelation-length. Use constant value + idcor_hogan, & !< Flag for decorrelation-length. (https://rmets.onlinelibrary.wiley.com/doi/full/10.1002/qj.647) + idcor_oreopoulos !< Flag for decorrelation-length. (10.5194/acp-12-9097-2012) logical, intent(in) :: & - top_at_1, & ! Vertical ordering flag - doSWrad, & ! Call SW radiation? - doLWrad ! Call LW radiation + top_at_1, & !< Vertical ordering flag + doSWrad, & !< Call SW radiation? + doLWrad !< Call LW radiation real(kind_phys), intent(in) :: & - julian, & ! Julian day - con_pi, & ! Physical constant: pi - con_g, & ! Physical constant: gravitational constant - con_rd, & ! Physical constant: gas-constant for dry air - con_epsq, & ! Physical constant: Minimum value for specific humidity - dcorr_con ! Decorrelation-length (used if idcor = idcor_con) + julian, & !< Julian day + con_pi, & !< Physical constant: pi + con_g, & !< Physical constant: gravitational constant + con_rd, & !< Physical constant: gas-constant for dry air + con_epsq, & !< Physical constant: Minimum value for specific humidity + dcorr_con !< Decorrelation-length (used if idcor = idcor_con) real(kind_phys), dimension(:), intent(in) :: & - lat ! Latitude + lat !< Latitude real(kind_phys), dimension(:,:), intent(in) :: & - tv_lay, & ! Virtual temperature (K) - p_lay, & ! Pressure at model-layers (Pa) - cld_frac, & ! Total cloud fraction - cld_cnv_frac ! Convective cloud-fraction + tv_lay, & !< Virtual temperature (K) + p_lay, & !< Pressure at model-layers (Pa) + cld_frac, & !< Total cloud fraction + cld_cnv_frac !< Convective cloud-fraction real(kind_phys), dimension(:,:), intent(in) :: & - p_lev, & ! Pressure at model-level interfaces (Pa) - deltaZc ! Layer thickness (from layer-centers)(m) + p_lev, & !< Pressure at model-level interfaces (Pa) + deltaZc !< Layer thickness (from layer-centers)(m) ! Outputs real(kind_phys), dimension(:),intent(out) :: & - de_lgth ! Decorrelation length + de_lgth !< Decorrelation length real(kind_phys), dimension(:,:),intent(out) :: & - cloud_overlap_param, & ! Cloud-overlap parameter - cnv_cloud_overlap_param,& ! Convective cloud-overlap parameter - precip_overlap_param ! Precipitation overlap parameter + cloud_overlap_param, & !< Cloud-overlap parameter + cnv_cloud_overlap_param,& !< Convective cloud-overlap parameter + precip_overlap_param !< Precipitation overlap parameter character(len=*), intent(out) :: & - errmsg ! Error message + errmsg !< Error message integer, intent(out) :: & - errflg ! Error flag + errflg !< Error flag ! Local variables integer :: iCol,iLay diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_post.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_post.F90 index c8a8b59ed..c0ac9a896 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_post.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_post.F90 @@ -34,99 +34,99 @@ subroutine GFS_rrtmgp_post_run (nCol, nLev, nDay, iSFC, iTOA, idxday, doLWrad, d ! Inputs integer, intent(in) :: & - nCol, & ! Horizontal loop extent - nLev, & ! Number of vertical layers - nDay, & ! Number of daylit columns - iSFC, & ! Vertical index for surface level - iTOA ! Vertical index for TOA level + nCol, & !< Horizontal loop extent + nLev, & !< Number of vertical layers + nDay, & !< Number of daylit columns + iSFC, & !< Vertical index for surface level + iTOA !< Vertical index for TOA level integer, intent(in), dimension(:) :: & - idxday ! Index array for daytime points + idxday !< Index array for daytime points integer, intent(in), dimension(:,:) :: & - mbota, & ! Vertical indices for low, middle and high cloud tops - mtopa ! ertical indices for low, middle and high cloud bases + mbota, & !< Vertical indices for low, middle and high cloud tops + mtopa !< ertical indices for low, middle and high cloud bases logical, intent(in) :: & - doLWrad, & ! Logical flags for lw radiation calls - doSWrad, & ! Logical flags for sw radiation calls - do_lw_clrsky_hr, & ! Output clear-sky LW heating-rate? - do_sw_clrsky_hr, & ! Output clear-sky SW heating-rate? - save_diag ! Output radiation diagnostics? + doLWrad, & !< Logical flags for lw radiation calls + doSWrad, & !< Logical flags for sw radiation calls + do_lw_clrsky_hr, & !< Output clear-sky LW heating-rate? + do_sw_clrsky_hr, & !< Output clear-sky SW heating-rate? + save_diag !< Output radiation diagnostics? real(kind_phys), intent(in) :: & - fhlwr, & ! Frequency for LW radiation calls - fhswr ! Frequency for SW radiation calls + fhlwr, & !< Frequency for LW radiation calls + fhswr !< Frequency for SW radiation calls real(kind_phys), dimension(:), intent(in) :: & - tsfa, & ! Lowest model layer air temperature for radiation (K) - coszen, & ! Cosine(SZA) - coszdg, & ! Cosine(SZA), daytime - sfc_alb_nir_dir, & ! Surface albedo (direct) - sfc_alb_nir_dif, & ! Surface albedo (diffuse) - sfc_alb_uvvis_dir, & ! Surface albedo (direct) - sfc_alb_uvvis_dif ! Surface albedo (diffuse) + tsfa, & !< Lowest model layer air temperature for radiation (K) + coszen, & !< Cosine(SZA) + coszdg, & !< Cosine(SZA), daytime + sfc_alb_nir_dir, & !< Surface albedo (direct) + sfc_alb_nir_dif, & !< Surface albedo (diffuse) + sfc_alb_uvvis_dir, & !< Surface albedo (direct) + sfc_alb_uvvis_dif !< Surface albedo (diffuse) real(kind_phys), dimension(:,:), intent(in) :: & - p_lev, & ! Pressure @ model layer-interfaces (Pa) - fluxlwUP_allsky, & ! RRTMGP longwave all-sky flux (W/m2) - fluxlwDOWN_allsky, & ! RRTMGP longwave all-sky flux (W/m2) - fluxlwUP_clrsky, & ! RRTMGP longwave clear-sky flux (W/m2) - fluxlwDOWN_clrsky, & ! RRTMGP longwave clear-sky flux (W/m2) - fluxswUP_allsky, & ! RRTMGP shortwave all-sky flux (W/m2) - fluxswDOWN_allsky, & ! RRTMGP shortwave all-sky flux (W/m2) - fluxswUP_clrsky, & ! RRTMGP shortwave clear-sky flux (W/m2) - fluxswDOWN_clrsky ! RRTMGP shortwave clear-sky flux (W/m2) + p_lev, & !< Pressure @ model layer-interfaces (Pa) + fluxlwUP_allsky, & !< RRTMGP longwave all-sky flux (W/m2) + fluxlwDOWN_allsky, & !< RRTMGP longwave all-sky flux (W/m2) + fluxlwUP_clrsky, & !< RRTMGP longwave clear-sky flux (W/m2) + fluxlwDOWN_clrsky, & !< RRTMGP longwave clear-sky flux (W/m2) + fluxswUP_allsky, & !< RRTMGP shortwave all-sky flux (W/m2) + fluxswDOWN_allsky, & !< RRTMGP shortwave all-sky flux (W/m2) + fluxswUP_clrsky, & !< RRTMGP shortwave clear-sky flux (W/m2) + fluxswDOWN_clrsky !< RRTMGP shortwave clear-sky flux (W/m2) real(kind_phys), intent(in) :: & - raddt ! Radiation time step + raddt !< Radiation time step real(kind_phys), dimension(:,:), intent(in) :: & - aerodp, & ! Vertical integrated optical depth for various aerosol species - cldsa, & ! Fraction of clouds for low, middle, high, total and BL - cld_frac, & ! Total cloud fraction in each layer - cldtaulw, & ! approx 10.mu band layer cloud optical depth - cldtausw ! approx .55mu band layer cloud optical depth + aerodp, & !< Vertical integrated optical depth for various aerosol species + cldsa, & !< Fraction of clouds for low, middle, high, total and BL + cld_frac, & !< Total cloud fraction in each layer + cldtaulw, & !< approx 10.mu band layer cloud optical depth + cldtausw !< approx .55mu band layer cloud optical depth type(cmpfsw_type), dimension(:), intent(in) :: & - scmpsw ! 2D surface fluxes, components: - ! uvbfc - total sky downward uv-b flux at (W/m2) - ! uvbf0 - clear sky downward uv-b flux at (W/m2) - ! nirbm - downward nir direct beam flux (W/m2) - ! nirdf - downward nir diffused flux (W/m2) - ! visbm - downward uv+vis direct beam flux (W/m2) - ! visdf - downward uv+vis diffused flux (W/m2) + scmpsw !< 2D surface fluxes, components: + !!\n uvbfc - total sky downward uv-b flux at (W/m2) + !!\n uvbf0 - clear sky downward uv-b flux at (W/m2) + !!\n nirbm - downward nir direct beam flux (W/m2) + !!\n nirdf - downward nir diffused flux (W/m2) + !!\n visbm - downward uv+vis direct beam flux (W/m2) + !!\n visdf - downward uv+vis diffused flux (W/m2) real(kind=kind_phys), dimension(:,:), intent(inout) :: fluxr ! Outputs (mandatory) real(kind_phys), dimension(:), intent(inout) :: & - tsflw, & ! LW sfc air temp during calculation (K) - sfcdlw, & ! LW sfc all-sky downward flux (W/m2) - sfculw, & ! LW sfc all-sky upward flux (W/m2) - nirbmdi, & ! SW sfc nir beam downward flux (W/m2) - nirdfdi, & ! SW sfc nir diff downward flux (W/m2) - visbmdi, & ! SW sfc uv+vis beam downward flux (W/m2) - visdfdi, & ! SW sfc uv+vis diff downward flux (W/m2) - nirbmui, & ! SW sfc nir beam upward flux (W/m2) - nirdfui, & ! SW sfc nir diff upward flux (W/m2) - visbmui, & ! SW sfc uv+vis beam upward flux (W/m2) - visdfui, & ! SW sfc uv+vis diff upward flux (W/m2) - sfcnsw, & ! SW sfc all-sky net flux (W/m2) flux into ground - sfcdsw ! SW sfc all-sky downward flux (W/m2) + tsflw, & !> LW sfc air temp during calculation (K) + sfcdlw, & !> LW sfc all-sky downward flux (W/m2) + sfculw, & !> LW sfc all-sky upward flux (W/m2) + nirbmdi, & !> SW sfc nir beam downward flux (W/m2) + nirdfdi, & !> SW sfc nir diff downward flux (W/m2) + visbmdi, & !> SW sfc uv+vis beam downward flux (W/m2) + visdfdi, & !> SW sfc uv+vis diff downward flux (W/m2) + nirbmui, & !> SW sfc nir beam upward flux (W/m2) + nirdfui, & !> SW sfc nir diff upward flux (W/m2) + visbmui, & !> SW sfc uv+vis beam upward flux (W/m2) + visdfui, & !> SW sfc uv+vis diff upward flux (W/m2) + sfcnsw, & !> SW sfc all-sky net flux (W/m2) flux into ground + sfcdsw !> SW sfc all-sky downward flux (W/m2) real(kind_phys), dimension(:,:), intent(inout) :: & - htrlw, & ! LW all-sky heating rate (K/s) - htrsw, & ! SW all-sky heating rate (K/s) - htrlwu ! LW all-sky heating-rate updated in-between radiation calls. + htrlw, & !> LW all-sky heating rate (K/s) + htrsw, & !> SW all-sky heating rate (K/s) + htrlwu !> LW all-sky heating-rate updated in-between radiation calls. type(sfcflw_type), dimension(:), intent(inout) :: & - sfcflw ! LW radiation fluxes at sfc + sfcflw !> LW radiation fluxes at sfc type(sfcfsw_type), dimension(:), intent(inout) :: & - sfcfsw ! SW radiation fluxes at sfc + sfcfsw !> SW radiation fluxes at sfc type(topfsw_type), dimension(:), intent(inout) :: & - topfsw ! SW fluxes at top atmosphere + topfsw !> SW fluxes at top atmosphere type(topflw_type), dimension(:), intent(inout) :: & - topflw ! LW fluxes at top atmosphere + topflw !> LW fluxes at top atmosphere character(len=*), intent(out) :: & - errmsg ! CCPP error message + errmsg !> CCPP error message integer, intent(out) :: & - errflg ! CCPP error code + errflg !> CCPP error code ! Outputs (optional) real(kind_phys),dimension(:,:),intent(inout),optional :: & - htrlwc, & ! LW clear-sky heating-rate (K/s) - htrswc ! SW clear-sky heating rate (K/s) + htrlwc, & !> LW clear-sky heating-rate (K/s) + htrswc !> SW clear-sky heating rate (K/s) ! Local variables integer :: i, j, k, itop, ibtc diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_setup.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_setup.F90 index 2d84db985..679185746 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_setup.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_setup.F90 @@ -44,14 +44,14 @@ subroutine GFS_rrtmgp_setup_init(do_RRTMGP, imp_physics, imp_physics_fer_hires, ! Inputs logical, intent(in) :: do_RRTMGP integer, intent(in) :: & - imp_physics, & ! Flag for MP scheme - imp_physics_fer_hires, & ! Flag for fer-hires scheme - imp_physics_gfdl, & ! Flag for gfdl scheme - imp_physics_thompson, & ! Flag for thompsonscheme - imp_physics_wsm6, & ! Flag for wsm6 scheme - imp_physics_zhao_carr, & ! Flag for zhao-carr scheme - imp_physics_zhao_carr_pdf, & ! Flag for zhao-carr+PDF scheme - imp_physics_mg ! Flag for MG scheme + imp_physics, & !< Flag for MP scheme + imp_physics_fer_hires, & !< Flag for fer-hires scheme + imp_physics_gfdl, & !< Flag for gfdl scheme + imp_physics_thompson, & !< Flag for thompsonscheme + imp_physics_wsm6, & !< Flag for wsm6 scheme + imp_physics_zhao_carr, & !< Flag for zhao-carr scheme + imp_physics_zhao_carr_pdf, & !< Flag for zhao-carr+PDF scheme + imp_physics_mg !< Flag for MG scheme real(kind_phys), intent(in) :: & con_pi, con_t0c, con_c, con_boltz, con_plnk, con_solr_2008, con_solr_2002 real(kind_phys), dimension(:), intent(in) :: & diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_stochastics.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_stochastics.F90 index 36ed2815a..fbd44a94a 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_stochastics.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_stochastics.F90 @@ -5,9 +5,7 @@ module GFS_stochastics contains -!>\defgroup gfs_stoch_mod GFS Stochastics Physics Module -!> @{ -!! This is the GFS stochastics physics driver module. +!> This is the GFS stochastics physics driver module. !! !> \section arg_table_GFS_stochastics_init Argument Table !! \htmlinclude GFS_stochastics_init.html @@ -372,5 +370,4 @@ subroutine GFS_stochastics_run (im, km, kdt, delt, do_sppt, pert_mp, use_zmtnblc endif end subroutine GFS_stochastics_run -!> @} end module GFS_stochastics diff --git a/physics/Radiation/RRTMGP/rrtmgp_lw_cloud_optics.F90 b/physics/Radiation/RRTMGP/rrtmgp_lw_cloud_optics.F90 index cafffe72c..3adbe40b8 100644 --- a/physics/Radiation/RRTMGP/rrtmgp_lw_cloud_optics.F90 +++ b/physics/Radiation/RRTMGP/rrtmgp_lw_cloud_optics.F90 @@ -58,9 +58,9 @@ module rrtmgp_lw_cloud_optics ! Parameters used for rain and snow(+groupel) RRTMGP cloud-optics real(kind_phys), parameter :: & - absrain = 0.33e-3, & !< Rain drop absorption coefficient \f$(m^{2}/g)\f$ . + absrain = 0.33e-3, & !< Rain drop absorption coefficient m2/g . abssnow0 = 1.5, & !< Snow flake absorption coefficient (micron), fu coeff - abssnow1 = 2.34e-3 !< Snow flake absorption coefficient \f$(m^{2}/g)\f$, ncar coef + abssnow1 = 2.34e-3 !< Snow flake absorption coefficient m2/g, ncar coef real(kind_phys) :: & radliq_lwrLW, & !< Liquid particle size lower bound for LUT interpolation radliq_uprLW, & !< Liquid particle size upper bound for LUT interpolation diff --git a/physics/docs/library.bib b/physics/docs/library.bib index d622bca48..0ca85a7b0 100644 --- a/physics/docs/library.bib +++ b/physics/docs/library.bib @@ -1,13 +1,30 @@ %% This BibTeX bibliography file was created using BibDesk. %% https://bibdesk.sourceforge.io/ -%% Created for Man Zhang at 2024-06-24 12:44:05 -0600 +%% Created for Man Zhang at 2024-06-27 13:18:41 -0600 %% Saved with string encoding Unicode (UTF-8) +@article{xu_and_randall_1996, + author = {Xu, Kuan-Man and Randall, David A.}, + date-added = {2024-06-27 13:17:39 -0600}, + date-modified = {2024-06-27 13:18:31 -0600}, + doi = {10.1175/1520-0469(1996)053<3084:ascpfu>2.0.co;2}, + issn = {1520-0469}, + journal = {Journal of the Atmospheric Sciences}, + month = nov, + number = {21}, + pages = {3084{\^a}€“3102}, + publisher = {American Meteorological Society}, + title = {A Semiempirical Cloudiness Parameterization for Use in Climate Models}, + url = {http://dx.doi.org/10.1175/1520-0469(1996)053<3084:ASCPFU>2.0.CO;2}, + volume = {53}, + year = {1996}, + bdsk-url-1 = {http://dx.doi.org/10.1175/1520-0469(1996)053%3C3084:ASCPFU%3E2.0.CO;2}} + @article{Mansell_2020, author = {Mansell, Edward R. and Dawson II, Daniel T. and Straka, Jerry M.}, date-added = {2024-06-24 12:43:58 -0600}, @@ -3314,18 +3331,6 @@ @article{businger_et_al_1971 bdsk-file-1 = {YnBsaXN0MDDSAQIDBFxyZWxhdGl2ZVBhdGhZYWxpYXNEYXRhXxBELi4vLi4vQ2xvdWRTdGF0aW9uL2ZpcmxfbGlicmFyeS9maXJsX2xpYnJhcnlfZmlsZXMvQnVzaW5nZXIvMTk3MS5wZGZPEQHMAAAAAAHMAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAADR5yRSSCsAAAAodUUIMTk3MS5wZGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACh1cbTPIxwAAAAAAAAAAAACAAUAAAkgAAAAAAAAAAAAAAAAAAAACEJ1c2luZ2VyABAACAAA0ed4sgAAABEACAAAtM+FjAAAAAEAGAAodUUAKGyWAChsiwAoZ3sAG14HAAKYXAACAF5NYWNpbnRvc2ggSEQ6VXNlcnM6AGdyYW50ZjoAQ2xvdWRTdGF0aW9uOgBmaXJsX2xpYnJhcnk6AGZpcmxfbGlicmFyeV9maWxlczoAQnVzaW5nZXI6ADE5NzEucGRmAA4AEgAIADEAOQA3ADEALgBwAGQAZgAPABoADABNAGEAYwBpAG4AdABvAHMAaAAgAEgARAASAEtVc2Vycy9ncmFudGYvQ2xvdWRTdGF0aW9uL2ZpcmxfbGlicmFyeS9maXJsX2xpYnJhcnlfZmlsZXMvQnVzaW5nZXIvMTk3MS5wZGYAABMAAS8AABUAAgAN//8AAAAIAA0AGgAkAGsAAAAAAAACAQAAAAAAAAAFAAAAAAAAAAAAAAAAAAACOw==}, bdsk-url-1 = {http://ws.isiknowledge.com/cps/openurl/service?url_ver=Z39.88-2004&rft_id=info:ut/A1971I822800004}} -@article{xu_and_randall_1996, - author = {K.-M. Xu and D. A. Randall}, - date-added = {2016-05-20 16:22:45 +0000}, - date-modified = {2016-05-20 16:24:47 +0000}, - journal = {J. Atmos. Sci.}, - month = {3102}, - number = {21}, - pages = {3084}, - title = {A semiempirical cloudiness parameterization for use in climate models}, - volume = {53}, - year = {1996}} - @article{clough_et_al_1992, author = {S. A. Clough and M. J. Iacono and J. L. Moncet}, date-added = {2016-05-20 15:32:24 +0000}, From fe9b68d899f430462ce33152eaad6ff9b2879340 Mon Sep 17 00:00:00 2001 From: Man Zhang Date: Fri, 28 Jun 2024 16:26:58 -0600 Subject: [PATCH 28/80] address developer's feedback --- physics/docs/pdftxt/NSSLMICRO.txt | 2 +- physics/docs/pdftxt/RRFS_v1_suite.txt | 4 +--- physics/docs/pdftxt/suite_input.nml.txt | 10 +++++----- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/physics/docs/pdftxt/NSSLMICRO.txt b/physics/docs/pdftxt/NSSLMICRO.txt index 57472a7e7..01eb4081d 100644 --- a/physics/docs/pdftxt/NSSLMICRO.txt +++ b/physics/docs/pdftxt/NSSLMICRO.txt @@ -1,5 +1,5 @@ /** -\page NSSLMICRO_page NSSL 2-moment Cloud Microphysics Scheme +\page NSSLMICRO_page NSSL 2/3-moment Cloud Microphysics Scheme \section nssl2m_descrp Description The NSSL 2/3-moment bulk microphysical parameterization scheme that describes form and phase changes among a range of liquid and ice hydrometeors, as described in Mansell et al. (2010) \cite Mansell_etal_2010, Mansell and Ziegler (2013) \cite Mansell_2013, and Mansell et al. (2020) \cite Mansell_2020. The microphysical parameterization predicts the mass mixing ratio and number concentration of cloud droplets, raindrops, cloud ice crystals (columns), snow particles (including large crystals and aggregates), graupel, and (optionally) hail. Optionally, a third moment (reflectivity or 6th moment) of rain, graupel, and hail can be activated. diff --git a/physics/docs/pdftxt/RRFS_v1_suite.txt b/physics/docs/pdftxt/RRFS_v1_suite.txt index 542641494..f44321b3f 100644 --- a/physics/docs/pdftxt/RRFS_v1_suite.txt +++ b/physics/docs/pdftxt/RRFS_v1_suite.txt @@ -4,9 +4,7 @@ \section RRFS_v1_suite_overview Overview The RRFS_v1 suite is one of the candidates for the future operational implementation of -the Rapid Refresh Forecast System (RRFS), which can be configured using the UFS SRW App. This suite is most -applicable for runs at 3-km resolution since it does not parameterize -deep convection. +the Rapid Refresh Forecast System (RRFS), which can be configured using the UFS SRW App. The RRFS_v1beta suite uses the parameterizations in the following order: - \ref SGSCLOUD_page diff --git a/physics/docs/pdftxt/suite_input.nml.txt b/physics/docs/pdftxt/suite_input.nml.txt index 68d10a05f..d8080f813 100644 --- a/physics/docs/pdftxt/suite_input.nml.txt +++ b/physics/docs/pdftxt/suite_input.nml.txt @@ -49,7 +49,7 @@ show some variables in the namelist that must match the SDF.
    • 10: Morrison-Gettelman microphysics scheme
    • 11: GFDL microphysics scheme
    • 15: Ferrier-Aligo microphysics scheme -
    • 17: NSSL microphysics scheme with background CCN +
    • 17: NSSL microphysics multimoment scheme
    • 18: NSSL microphysics scheme with predicted CCN (compatibility: 18 = 17 + nssl_ccn_on=.true.)
    99 @@ -427,15 +427,15 @@ show some variables in the namelist that must match the SDF. xr_cnvcld GFS_rrtmg_pre flag for including suspended convective clouds in Xu-Randall cloud fraction .true. lgfdlmprad gfs_rrtmg_pre flag for GFDL mp scheme and radiation consistency .false. nssl_cccn mp_nssl CCN concentration (m^-3) 0.6e9 -nssl_alphah mp_nssl graupel shape parameter 0.0 -nssl_alphahl mp_nssl hail shape parameter 1.0 -nssl_alphar mp_nssl shape paramter for rain (imurain=1 only) 0.0 +nssl_alphah mp_nssl graupel PSD shape parameter 0.0 +nssl_alphahl mp_nssl hail PSD shape parameter 1.0 +nssl_alphar mp_nssl PSD shape parameter for rain 0.0 nssl_ehw0 mp_nssl constant or max assumed graupel-droplet collection efficiency 0.9 nssl_ehlw0 mp_nssl constant or max assumed hail-droplet collection efficiency 0.9 nssl_hail_on mp_nssl NSSL flag to activate the hail category .false. nssl_3moment mp_nssl NSSL flag to activate 3-moment for rain/graupel (and hail if activated).false. ssl_ccn_on mp_nssl NSSL flag to activate the CCN category .true. -nssl_invertccn mp_nssl NSSL flag to treat CCN as activated or unactivated .true. +nssl_invertccn mp_nssl NSSL flag to treat CCN as activated (.true.) or unactivated (.false.) .true. \b Parameters \b related \b to \b gravity \b drag \b scheme \b options knob_ugwp_version cires_ugwp parameter selects a version of the UGWP implementation in FV3GFS-127L \n
      From c9e5f21b6cd40018799fffce5c38b4d2a21ec696 Mon Sep 17 00:00:00 2001 From: Man Zhang Date: Mon, 1 Jul 2024 11:42:45 -0600 Subject: [PATCH 29/80] scidoc update --- physics/docs/pdftxt/GFS_RRTMG.txt | 28 +- physics/docs/pdftxt/GFS_v17_HR3_GP_suite.txt | 16 +- physics/docs/pdftxt/GFS_v17_HR3_suite.txt | 16 +- physics/docs/pdftxt/RE7/input_RRFS_v1.nml | 274 +++++++++---------- physics/docs/pdftxt/RE7/input_WoFS_v0.nml | 192 ++++++------- 5 files changed, 263 insertions(+), 263 deletions(-) diff --git a/physics/docs/pdftxt/GFS_RRTMG.txt b/physics/docs/pdftxt/GFS_RRTMG.txt index 13d9201a3..39628ab93 100644 --- a/physics/docs/pdftxt/GFS_RRTMG.txt +++ b/physics/docs/pdftxt/GFS_RRTMG.txt @@ -86,26 +86,26 @@ radiation_clouds_prop can connect to the calculations of the cloud radiation properties for all the microphysics schemes. Summary of the major changes: -- radiation_clouds.f +- \ref radiation_clouds.f - A new subroutine “radiation_clouds_prop” was added to radiation_clouds.f. This new subroutine calculates all cloud radiation properties for all the microphysics schemes. Subroutines "progcld*" were renamed based on the input variables \p imp_physics, and the inactive subroutines were removed from file radiation_clouds.f - - 'progcld1' --- > progcld_zhao_carr - - 'progcld3' --- > progcld_zhao_carr_pdf - - 'progcld4' --- > progcld_gfdl_lin - - 'progcld5' --- > progcld_fer_hires - - 'progcld6' --- > progcld_thompson_wsm6 - - 'progclduni' --- > progclduni - - 'progcld_thompson'--- > progcld_thompson + A new subroutine module_radiation_clouds::radiation_clouds_prop was added to radiation_clouds.f. This new subroutine calculates all cloud radiation properties for all the microphysics schemes. + - module_radiation_clouds::progcld_zhao_carr() + - module_radiation_clouds::progcld_zhao_carr_pdf() + - module_radiation_clouds::progcld_gfdl_lin() + - module_radiation_clouds::progcld_fer_hires() + - module_radiation_clouds::progcld_thompson_wsm6() + - module_radiation_clouds::progclduni() + - module_radiation_clouds::progcld_thompson() -- GFS_rrtmg_pre.F90 +- \ref GFS_rrtmg_pre.F90 - Removed the “progcld” subroutine calls, and replaced them with a single subroutine call to “radiation_clouds_prop”. + Removed the “progcld” subroutine calls, and replaced them with a single subroutine call to module_radiation_clouds::radiation_clouds_prop. -- radiation_cloud_overlap.F90 +- \ref radiation_cloud_overlap.F90 - Replaced subroutine “get_alpha_exp” with “get_alpha_exper”. The new subroutine revises alpha for exponential random cloud overlap option. This new subroutine is used in programs GFS_rrtmgp_cloud_overlap_pre.F90 and GFS_rrtmgp_gfdlmp_pre.F90. + Replaced subroutine “get_alpha_exp” with module_radiation_cloud_overlap::get_alpha_exper(). The new subroutine revises alpha for exponential random cloud overlap option. This new subroutine is used in programs GFS_rrtmgp_cloud_overlap_pre.F90 and GFS_rrtmgp_gfdlmp_pre.F90. -- Subroutine getml() has been modified. The subroutine computes low, mid, high, total and boundary clouds, and is used in GFS_cloud_diagnostics.F90. +- Subroutine module_radiation_clouds::gethml() has been modified. The subroutine computes low, mid, high, total and boundary clouds, and is used in GFS_cloud_diagnostics.F90. \section intraphysics_rrtmg Intraphysics Communication + \b GFS_suite_interstitial_rad_reset: \ref arg_table_GFS_suite_interstitial_rad_reset_run diff --git a/physics/docs/pdftxt/GFS_v17_HR3_GP_suite.txt b/physics/docs/pdftxt/GFS_v17_HR3_GP_suite.txt index c6dcf94b0..6366d8086 100644 --- a/physics/docs/pdftxt/GFS_v17_HR3_GP_suite.txt +++ b/physics/docs/pdftxt/GFS_v17_HR3_GP_suite.txt @@ -59,14 +59,14 @@ The GFS_v17 suite uses the parameterizations in the following order: - \b C3072: cdmbgwd_gsl="0.625,14.1,1.0,1.0" - Grid-spacing dependency of \p knob_ugwp_tauamp -- \b C48: knob_ugwp_tauamp=6.0e-3 -- \b C96: knob_ugwp_tauamp=3.0e-3 -- \b C192: knob_ugwp_tauamp=1.5e-3 -- \b C384: knob_ugwp_tauamp=0.8e-3 -- \b C768: knob_ugwp_tauamp=0.5e-3 -- \b C1152: knob_ugwp_tauamp=0.35e-3 -- \b C3072: knob_ugwp_tauamp=0.13e-3 + - \b C48: knob_ugwp_tauamp=6.0e-3 + - \b C96: knob_ugwp_tauamp=3.0e-3 + - \b C192: knob_ugwp_tauamp=1.5e-3 + - \b C384: knob_ugwp_tauamp=0.8e-3 + - \b C768: knob_ugwp_tauamp=0.5e-3 + - \b C1152: knob_ugwp_tauamp=0.35e-3 + - \b C3072: knob_ugwp_tauamp=0.13e-3 - Grid-spacing dependency of \p xr_cnvcld -- \b C48 and \b C96: xr_cnvcld =.false. + - \b C48 and \b C96: xr_cnvcld =.false. */ diff --git a/physics/docs/pdftxt/GFS_v17_HR3_suite.txt b/physics/docs/pdftxt/GFS_v17_HR3_suite.txt index 5891cd3e7..dd0b27d4e 100644 --- a/physics/docs/pdftxt/GFS_v17_HR3_suite.txt +++ b/physics/docs/pdftxt/GFS_v17_HR3_suite.txt @@ -59,14 +59,14 @@ The GFS_v17 suite uses the parameterizations in the following order: - \b C3072: cdmbgwd_gsl="0.625,14.1,1.0,1.0" - Grid-spacing dependency of \p knob_ugwp_tauamp -- \b C48: knob_ugwp_tauamp=6.0e-3 -- \b C96: knob_ugwp_tauamp=3.0e-3 -- \b C192: knob_ugwp_tauamp=1.5e-3 -- \b C384: knob_ugwp_tauamp=0.8e-3 -- \b C768: knob_ugwp_tauamp=0.5e-3 -- \b C1152: knob_ugwp_tauamp=0.35e-3 -- \b C3072: knob_ugwp_tauamp=0.13e-3 + - \b C48: knob_ugwp_tauamp=6.0e-3 + - \b C96: knob_ugwp_tauamp=3.0e-3 + - \b C192: knob_ugwp_tauamp=1.5e-3 + - \b C384: knob_ugwp_tauamp=0.8e-3 + - \b C768: knob_ugwp_tauamp=0.5e-3 + - \b C1152: knob_ugwp_tauamp=0.35e-3 + - \b C3072: knob_ugwp_tauamp=0.13e-3 - Grid-spacing dependency of \p xr_cnvcld -- \b C48 and \b C96: xr_cnvcld =.false. + - \b C48 and \b C96: xr_cnvcld =.false. */ diff --git a/physics/docs/pdftxt/RE7/input_RRFS_v1.nml b/physics/docs/pdftxt/RE7/input_RRFS_v1.nml index e80c532fa..9b8cbb1e0 100644 --- a/physics/docs/pdftxt/RE7/input_RRFS_v1.nml +++ b/physics/docs/pdftxt/RE7/input_RRFS_v1.nml @@ -1,149 +1,149 @@ !>[GFS_PHYSICS_NML] &gfs_physics_nml - addsmoke_flag = 1 - aero_dir_fdb = .true. - aero_ind_fdb = .false. - bl_mynn_edmf = 1 - bl_mynn_edmf_mom = 1 - bl_mynn_tkeadvect = .true. - cal_pre = .false. - cdmbgwd = 3.5, 1.0 - clm_debug_print = .false. - clm_lake_debug = .false. - cnvcld = .false. - cnvgwd = .false. - coarsepm_settling = 1 - cplflx = .false. - diag_log = .true. - debug = .false. - do_deep = .true. - do_gsl_drag_ls_bl = .true. - do_gsl_drag_ss = .true. - do_gsl_drag_tofd = .true. - do_mynnedmf = .true. - do_mynnsfclay = .true. - do_plumerise = .true. - do_smoke_transport = .true. - do_tofd = .false. - do_ugwp = .false. - do_ugwp_v0 = .false. - do_ugwp_v0_nst_only = .false. + addsmoke_flag = 1 + aero_dir_fdb = .true. + aero_ind_fdb = .false. + bl_mynn_edmf = 1 + bl_mynn_edmf_mom = 1 + bl_mynn_tkeadvect = .true. + cal_pre = .false. + cdmbgwd = 3.5, 1.0 + clm_debug_print = .false. + clm_lake_debug = .false. + cnvcld = .false. + cnvgwd = .false. + coarsepm_settling = 1 + cplflx = .false. + diag_log = .true. + debug = .false. + do_deep = .true. + do_gsl_drag_ls_bl = .true. + do_gsl_drag_ss = .true. + do_gsl_drag_tofd = .true. + do_mynnedmf = .true. + do_mynnsfclay = .true. + do_plumerise = .true. + do_smoke_transport = .true. + do_tofd = .false. + do_ugwp = .false. + do_ugwp_v0 = .false. + do_ugwp_v0_nst_only = .false. do_ugwp_v0_orog_only = .false. - drydep_opt = 1 - dspheat = .true. - dt_inner = 36 - dust_alpha = 10.0 + drydep_opt = 1 + dspheat = .true. + dt_inner = 36 + dust_alpha = 10.0 dust_drylimit_factor = 0.5 - dust_gamma = 1.3 + dust_gamma = 1.3 dust_moist_correction = 2.0 - dust_opt = 1 - ebb_dcycle = 2 - effr_in = .true. - enh_mix = .false. - fhcyc = 0 - fhlwr = 900.0 - fhswr = 900.0 - fhzero = 1.0 - frac_ice = .true. - gwd_opt = 3 - h2o_phys = .true. - hybedmf = .false. - iaer = 1011 - ialb = 2 - iau_delthrs = 6 - iau_inc_files = '' - iaufhrs = 30 - iccn = 2 - icliq_sw = 2 - icloud_bl = 1 - ico2 = 2 - iems = 2 - imfdeepcnv = 3 - imfshalcnv = -1 - imp_physics = 8 - iopt_alb = 2 - iopt_btr = 1 - iopt_crs = 1 - iopt_dveg = 2 - iopt_frz = 1 - iopt_inf = 1 - iopt_lake = 2 - iopt_rad = 1 - iopt_run = 1 - iopt_sfc = 1 - iopt_snf = 4 - iopt_stc = 1 - iopt_tbot = 2 - iovr = 3 - isncond_opt = 2 - isncovr_opt = 3 - isol = 2 - isot = 1 - isubc_lw = 2 - isubc_sw = 2 - ivegsrc = 1 - kice = 9 - ldiag3d = .true. - ldiag_ugwp = .false. - lgfdlmprad = .false. - lheatstrg = .false. - lightning_threat = .true. - lkm = 1 - lradar = .true. - lrefres = .true. - lsm = 3 - lsoil = 9 - lsoil_lsm = 9 - ltaerosol = .true. - lwhtr = .true. - min_lakeice = 0.15 - min_seaice = 0.15 - mix_chem = .true. - mosaic_lu = 1 - mosaic_soil = 1 - nsfullradar_diag = 3600 - oz_phys = .false. - oz_phys_2015 = .true. - pdfcld = .false. - plume_wind_eff = 1 - plumerisefire_frq = 60 - pre_rad = .false. - print_diff_pgr = .true. - prslrd0 = 0.0 - qdiag3d = .true. - random_clds = .false. - redrag = .true. - rrfs_sd = .true. - rrfs_smoke_debug = .false. - satmedmf = .false. - seas_opt = 0 - sfclay_compute_flux = .true. - shal_cnv = .false. - smoke_conv_wet_coef = 0.5, 0.5, 0.5 - smoke_forecast = 1 - swhtr = .true. - thsfc_loc = .false. - trans_trac = .true. - ttendlim = -999 - use_ufo = .true. - wetdep_ls_alpha = 0.5 - wetdep_ls_opt = 1 + dust_opt = 1 + ebb_dcycle = 2 + effr_in = .true. + enh_mix = .false. + fhcyc = 0 + fhlwr = 900.0 + fhswr = 900.0 + fhzero = 1.0 + frac_ice = .true. + gwd_opt = 3 + h2o_phys = .true. + hybedmf = .false. + iaer = 1011 + ialb = 2 + iau_delthrs = 6 + iau_inc_files = '' + iaufhrs = 30 + iccn = 2 + icliq_sw = 2 + icloud_bl = 1 + ico2 = 2 + iems = 2 + imfdeepcnv = 3 + imfshalcnv = -1 + imp_physics = 8 + iopt_alb = 2 + iopt_btr = 1 + iopt_crs = 1 + iopt_dveg = 2 + iopt_frz = 1 + iopt_inf = 1 + iopt_lake = 2 + iopt_rad = 1 + iopt_run = 1 + iopt_sfc = 1 + iopt_snf = 4 + iopt_stc = 1 + iopt_tbot = 2 + iovr = 3 + isncond_opt = 2 + isncovr_opt = 3 + isol = 2 + isot = 1 + isubc_lw = 2 + isubc_sw = 2 + ivegsrc = 1 + kice = 9 + ldiag3d = .true. + ldiag_ugwp = .false. + lgfdlmprad = .false. + lheatstrg = .false. + lightning_threat = .true. + lkm = 1 + lradar = .true. + lrefres = .true. + lsm = 3 + lsoil = 9 + lsoil_lsm = 9 + ltaerosol = .true. + lwhtr = .true. + min_lakeice = 0.15 + min_seaice = 0.15 + mix_chem = .true. + mosaic_lu = 1 + mosaic_soil = 1 + nsfullradar_diag = 3600 + oz_phys = .false. + oz_phys_2015 = .true. + pdfcld = .false. + plume_wind_eff = 1 + plumerisefire_frq = 60 + pre_rad = .false. + print_diff_pgr = .true. + prslrd0 = 0.0 + qdiag3d = .true. + random_clds = .false. + redrag = .true. + rrfs_sd = .true. + rrfs_smoke_debug = .false. + satmedmf = .false. + seas_opt = 0 + sfclay_compute_flux = .true. + shal_cnv = .false. + smoke_conv_wet_coef = 0.5, 0.5, 0.5 + smoke_forecast = 1 + swhtr = .true. + thsfc_loc = .false. + trans_trac = .true. + ttendlim = -999 + use_ufo = .true. + wetdep_ls_alpha = 0.5 + wetdep_ls_opt = 1 / !! [GFS_PHYSICS_NML] !>[CIRES_UGWP_NML] &cires_ugwp_nml - knob_ugwp_azdir = 2, 4, 4, 4 - knob_ugwp_doaxyz = 1 - knob_ugwp_doheat = 1 - knob_ugwp_dokdis = 1 - knob_ugwp_effac = 1, 1, 1, 1 - knob_ugwp_ndx4lh = 1 - knob_ugwp_solver = 2 - knob_ugwp_source = 1, 1, 0, 0 - knob_ugwp_stoch = 0, 0, 0, 0 - knob_ugwp_version = 0 - knob_ugwp_wvspec = 1, 25, 25, 25 - launch_level = 25 + knob_ugwp_azdir = 2, 4, 4, 4 + knob_ugwp_doaxyz = 1 + knob_ugwp_doheat = 1 + knob_ugwp_dokdis = 1 + knob_ugwp_effac = 1, 1, 1, 1 + knob_ugwp_ndx4lh = 1 + knob_ugwp_solver = 2 + knob_ugwp_source = 1, 1, 0, 0 + knob_ugwp_stoch = 0, 0, 0, 0 + knob_ugwp_version = 0 + knob_ugwp_wvspec = 1, 25, 25, 25 + launch_level = 25 / !! [CIRES_UGWP_NML] diff --git a/physics/docs/pdftxt/RE7/input_WoFS_v0.nml b/physics/docs/pdftxt/RE7/input_WoFS_v0.nml index ab27b9a0e..6e7035a3b 100644 --- a/physics/docs/pdftxt/RE7/input_WoFS_v0.nml +++ b/physics/docs/pdftxt/RE7/input_WoFS_v0.nml @@ -1,105 +1,105 @@ !> [GFS_PHYSICS_NML] &gfs_physics_nml - bl_mynn_edmf = 1 - bl_mynn_edmf_mom = 1 - bl_mynn_tkeadvect = .true. - cal_pre = .false. - cdmbgwd = 3.5, 0.25 - cnvcld = .false. - cnvgwd = .false. - cplflx = .false. - debug = .false. - do_deep = .false. - do_mynnedmf = .true. - do_mynnsfclay = .true. - do_shum = .false. - do_skeb = .false. - do_spp = .false. - do_sppt = .false. - dspheat = .true. - effr_in = .true. - fhcyc = 0 - fhlwr = 1200.0 - fhswr = 1200.0 - fhzero = 1.0 - h2o_phys = .true. - hybedmf = .false. - iaer = 111 - ialb = 1 - iau_delthrs = 6 - iau_inc_files = '' - iaufhrs = 30 - icloud_bl = 1 - ico2 = 2 - iems = 1 - imfdeepcnv = -1 - imfshalcnv = -1 - imp_physics = 17 - iopt_alb = 2 - iopt_btr = 1 - iopt_crs = 1 - iopt_dveg = 2 - iopt_frz = 1 - iopt_inf = 1 - iopt_rad = 1 - iopt_run = 1 - iopt_sfc = 1 - iopt_snf = 4 - iopt_stc = 1 - iopt_tbot = 2 - isol = 2 - isot = 1 - isubc_lw = 2 - isubc_sw = 2 - ivegsrc = 1 - ldiag3d = .true. - lheatstrg = .false. - lndp_type = 0 - lradar = .true. - lsm = 1 - lsoil = 4 - lsoil_lsm = 4 - ltaerosol = .true. - lwhtr = .true. - n_var_lndp = 0 - n_var_spp = 0 - nsfullradar_diag = 3600 - nssl_cccn = 600000000.0 - nssl_ccn_on = .true. - nssl_hail_on = .true. - nst_anl = .true. - nstf_name = 2, 1, 0, 0, 0 - oz_phys = .false. - oz_phys_2015 = .true. - pdfcld = .false. - pre_rad = .false. - print_diff_pgr = .false. - prslrd0 = 0.0 - qdiag3d = .true. - random_clds = .false. - redrag = .true. - satmedmf = .false. - shal_cnv = .false. - swhtr = .true. - trans_trac = .true. - ttendlim = -999 - use_ufo = .true. + bl_mynn_edmf = 1 + bl_mynn_edmf_mom = 1 + bl_mynn_tkeadvect = .true. + cal_pre = .false. + cdmbgwd = 3.5, 0.25 + cnvcld = .false. + cnvgwd = .false. + cplflx = .false. + debug = .false. + do_deep = .false. + do_mynnedmf = .true. + do_mynnsfclay = .true. + do_shum = .false. + do_skeb = .false. + do_spp = .false. + do_sppt = .false. + dspheat = .true. + effr_in = .true. + fhcyc = 0 + fhlwr = 1200.0 + fhswr = 1200.0 + fhzero = 1.0 + h2o_phys = .true. + hybedmf = .false. + iaer = 111 + ialb = 1 + iau_delthrs = 6 + iau_inc_files = '' + iaufhrs = 30 + icloud_bl = 1 + ico2 = 2 + iems = 1 + imfdeepcnv = -1 + imfshalcnv = -1 + imp_physics = 17 + iopt_alb = 2 + iopt_btr = 1 + iopt_crs = 1 + iopt_dveg = 2 + iopt_frz = 1 + iopt_inf = 1 + iopt_rad = 1 + iopt_run = 1 + iopt_sfc = 1 + iopt_snf = 4 + iopt_stc = 1 + iopt_tbot = 2 + isol = 2 + isot = 1 + isubc_lw = 2 + isubc_sw = 2 + ivegsrc = 1 + ldiag3d = .true. + lheatstrg = .false. + lndp_type = 0 + lradar = .true. + lsm = 1 + lsoil = 4 + lsoil_lsm = 4 + ltaerosol = .true. + lwhtr = .true. + n_var_lndp = 0 + n_var_spp = 0 + nsfullradar_diag = 3600 + nssl_cccn = 600000000.0 + nssl_ccn_on = .true. + nssl_hail_on = .true. + nst_anl = .true. + nstf_name = 2, 1, 0, 0, 0 + oz_phys = .false. + oz_phys_2015 = .true. + pdfcld = .false. + pre_rad = .false. + print_diff_pgr = .false. + prslrd0 = 0.0 + qdiag3d = .true. + random_clds = .false. + redrag = .true. + satmedmf = .false. + shal_cnv = .false. + swhtr = .true. + trans_trac = .true. + ttendlim = -999 + use_ufo = .true. / !! [GFS_PHYSICS_NML] !>[CIRES_UGWP_NML] &cires_ugwp_nml - knob_ugwp_azdir = 2, 4, 4, 4 - knob_ugwp_doaxyz = 1 - knob_ugwp_doheat = 1 - knob_ugwp_dokdis = 1 - knob_ugwp_effac = 1, 1, 1, 1 - knob_ugwp_ndx4lh = 1 - knob_ugwp_solver = 2 - knob_ugwp_source = 1, 1, 0, 0 - knob_ugwp_stoch = 0, 0, 0, 0 - knob_ugwp_version = 0 - knob_ugwp_wvspec = 1, 25, 25, 25 - launch_level = 25 + knob_ugwp_azdir = 2, 4, 4, 4 + knob_ugwp_doaxyz = 1 + knob_ugwp_doheat = 1 + knob_ugwp_dokdis = 1 + knob_ugwp_effac = 1, 1, 1, 1 + knob_ugwp_ndx4lh = 1 + knob_ugwp_solver = 2 + knob_ugwp_source = 1, 1, 0, 0 + knob_ugwp_stoch = 0, 0, 0, 0 + knob_ugwp_version = 0 + knob_ugwp_wvspec = 1, 25, 25, 25 + launch_level = 25 / !![CIRES_UGWP_NML] From 3a361b2440e73f8c734d05a2ddcae2d69d7abc85 Mon Sep 17 00:00:00 2001 From: helin wei Date: Tue, 2 Jul 2024 16:32:04 +0000 Subject: [PATCH 30/80] update noahmp table for hr4 --- .../SFC_Models/Land/Noahmp/noahmptable.tbl | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/physics/SFC_Models/Land/Noahmp/noahmptable.tbl b/physics/SFC_Models/Land/Noahmp/noahmptable.tbl index 3ffd5b532..44531919e 100644 --- a/physics/SFC_Models/Land/Noahmp/noahmptable.tbl +++ b/physics/SFC_Models/Land/Noahmp/noahmptable.tbl @@ -217,7 +217,7 @@ !--------------------------------------------------------------------------------------------------------------------------------------------------------------------- ch2op = 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, dleaf = 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, - z0mvt = 1.09, 1.10, 0.85, 0.80, 0.80, 0.20, 0.06, 0.60, 0.50, 0.12, 0.30, 0.15, 1.00, 0.14, 0.00, 0.00, 0.00, 0.30, 0.20, 0.03, + z0mvt = 1.00, 1.50, 0.75, 0.90, 0.85, 0.20, 0.10, 0.90, 0.60, 0.20, 0.30, 0.25, 1.00, 0.25, 0.00, 0.015, 0.00, 0.30, 0.10, 0.05, hvt = 20.0, 20.0, 18.0, 16.0, 16.0, 1.10, 1.10, 13.0, 10.0, 1.00, 5.00, 2.00, 15.0, 1.50, 0.00, 0.00, 0.00, 4.00, 2.00, 0.50, hvb = 8.50, 8.00, 7.00, 11.5, 10.0, 0.10, 0.10, 0.10, 0.10, 0.05, 0.10, 0.10, 1.00, 0.10, 0.00, 0.00, 0.00, 0.30, 0.20, 0.10, z0mhvt= 0.0545, 0.055, 0.047, 0.050, 0.050, 0.182, 0.0545, 0.046, 0.050, 0.120, 0.060, 0.075, 0.067, 0.093, 0.000, 0.000, 0.000, 0.075, 0.100, 0.060, @@ -226,32 +226,34 @@ !mfsno = 2.50, 2.50, 2.50, 2.50, 2.50, 2.50, 2.50, 2.50, 2.50, 2.50, 2.50, 2.50, 2.50, 2.50, 2.50, 2.50, 2.50, 2.50, 2.50, 2.50, ! c. he 12/17/2020: optimized mfsno values dependent on land type based on evaluation with snotel swe and modis scf, surface albedo mfsno = 1.00, 1.00, 1.00, 1.00, 1.00, 2.00, 2.00, 2.00, 2.00, 2.00, 3.00, 3.00, 4.00, 4.00, 2.50, 3.00, 3.00, 3.50, 3.50, 3.50, +!mfsno = 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, ! c. he 12/17/2020: optimized snow cover factor (m) in scf formulation to replace original constant 2.5*z0,z0=0.002m, based on evaluation with snotel swe and modis scf, surface albedo ! scffac = 0.008, 0.008, 0.008, 0.008, 0.008, 0.016, 0.016, 0.020, 0.020, 0.020, 0.020, 0.014, 0.042, 0.026, 0.030, 0.016, 0.030, 0.030, 0.030, 0.030, - scffac = 0.005, 0.005, 0.005, 0.005, 0.005, 0.008, 0.008, 0.010, 0.010, 0.010, 0.010, 0.007, 0.021, 0.013, 0.015, 0.008, 0.015, 0.015, 0.015, 0.015, + scffac = 0.005, 0.005, 0.005, 0.005, 0.005, 0.008, 0.008, 0.010, 0.010, 0.010, 0.010, 0.007, 0.021, 0.013, 0.015, 0.008, 0.015, 0.015, 0.015, 0.015, +! scffac = 0.059, 0.059, 0.059, 0.059, 0.059, 0.059, 0.059, 0.059, 0.059, 0.059, 0.059, 0.059, 0.059, 0.059, 0.059, 0.059, 0.059, 0.059, 0.059, 0.059, cbiom = 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, ! row 1: vis ! row 2: near ir rhol_vis=0.07, 0.10, 0.07, 0.10, 0.10, 0.07, 0.07, 0.07, 0.10, 0.11, 0.105, 0.11, 0.00, 0.11, 0.00, 0.00, 0.00, 0.10, 0.10, 0.10, - rhol_nir=0.35, 0.45, 0.35, 0.45, 0.45, 0.35, 0.35, 0.35, 0.45, 0.58, 0.515, 0.58, 0.00, 0.58, 0.00, 0.00, 0.00, 0.45, 0.45, 0.45, + rhol_nir=0.35, 0.45, 0.35, 0.45, 0.45, 0.35, 0.35, 0.35, 0.45, 0.35, 0.515, 0.35, 0.00, 0.35, 0.00, 0.00, 0.00, 0.45, 0.45, 0.45, ! row 1: vis ! row 2: near ir - rhos_vis=0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.36, 0.26, 0.36, 0.00, 0.36, 0.00, 0.00, 0.00, 0.16, 0.16, 0.16, - rhos_nir=0.39, 0.39, 0.39, 0.39, 0.39, 0.39, 0.39, 0.39, 0.39, 0.58, 0.485, 0.58, 0.00, 0.58, 0.00, 0.00, 0.00, 0.39, 0.39, 0.39, + rhos_vis=0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.31, 0.26, 0.31, 0.00, 0.31, 0.00, 0.00, 0.00, 0.16, 0.16, 0.16, + rhos_nir=0.39, 0.39, 0.39, 0.39, 0.39, 0.39, 0.39, 0.39, 0.39, 0.53, 0.485, 0.53, 0.00, 0.53, 0.00, 0.00, 0.00, 0.39, 0.39, 0.39, ! row 1: vis ! row 2: near ir - taul_vis=0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.07, 0.06, 0.07, 0.00, 0.07, 0.00, 0.00, 0.00, 0.05, 0.05, 0.05, - taul_nir=0.10, 0.25, 0.10, 0.25, 0.25, 0.10, 0.10, 0.10, 0.25, 0.25, 0.25, 0.25, 0.00, 0.25, 0.00, 0.00, 0.00, 0.25, 0.25, 0.25, + taul_vis=0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.06, 0.05, 0.00, 0.05, 0.00, 0.00, 0.00, 0.05, 0.05, 0.05, + taul_nir=0.10, 0.25, 0.10, 0.25, 0.25, 0.10, 0.10, 0.10, 0.25, 0.34, 0.25, 0.34, 0.00, 0.34, 0.00, 0.00, 0.00, 0.25, 0.25, 0.25, ! row 1: vis ! row 2: near ir - taus_vis=0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.220, 0.1105, 0.220, 0.000, 0.220, 0.000, 0.000, 0.000, 0.001, 0.001, 0.001, - taus_nir=0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.380, 0.1905, 0.380, 0.000, 0.380, 0.000, 0.000, 0.000, 0.001, 0.001, 0.001, + taus_vis=0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.120, 0.1105, 0.120, 0.000, 0.120, 0.000, 0.000, 0.000, 0.001, 0.001, 0.001, + taus_nir=0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.250, 0.1905, 0.250, 0.000, 0.250, 0.000, 0.000, 0.000, 0.001, 0.001, 0.001, - xl = 0.010, 0.010, 0.010, 0.250, 0.250, 0.010, 0.010, 0.010, 0.010, -0.30, -0.025, -0.30, 0.000, -0.30, 0.000, 0.000, 0.000, 0.250, 0.250, 0.250, + xl = 0.010, 0.10, 0.010, 0.250, 0.250, 0.010, 0.010, 0.010, 0.010, -0.30, -0.025, -0.30, 0.000, -0.30, 0.000, 0.000, 0.000, 0.250, 0.250, 0.250, ! make cwpvt vegetation dependent according to j. goudriaan, crop micrometeorology: a simulation study (simulation monographs), 1977). c. he, 12/17/2020 ! cwpvt = 0.18, 0.67, 0.18, 0.67, 0.29, 1.0, 2.0, 1.3, 1.0, 5.0, 1.17, 1.67, 1.67, 1.67, 0.18, 0.18, 0.18, 0.67, 1.0, 0.18, cwpvt = 0.09, 0.335, 0.09, 0.335, 0.145, 0.5, 1.0, 0.65, 0.5, 2.5, 0.585, 0.835, 0.835, 0.835, 0.09, 0.09, 0.09, 0.335, 0.5, 0.09, @@ -335,10 +337,10 @@ !-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ! 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 soil color index for soil albedo !-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - albsat_vis = 0.25, 0.23, 0.21, 0.20, 0.19, 0.18, 0.17, 0.16, 0.15, 0.14, 0.13, 0.12, 0.11, 0.10, 0.09, 0.08, 0.07, 0.06, 0.05, 0.04 ! saturated soil albedos - albsat_nir = 0.50, 0.46, 0.42, 0.40, 0.38, 0.36, 0.34, 0.32, 0.30, 0.28, 0.26, 0.24, 0.22, 0.20, 0.18, 0.16, 0.14, 0.12, 0.10, 0.08 ! saturated soil albedos - albdry_vis = 0.36, 0.34, 0.32, 0.31, 0.30, 0.29, 0.28, 0.27, 0.26, 0.25, 0.24, 0.23, 0.22, 0.20, 0.18, 0.16, 0.14, 0.12, 0.10, 0.08 ! dry soil albedos - albdry_nir = 0.61, 0.57, 0.53, 0.51, 0.49, 0.48, 0.45, 0.43, 0.41, 0.39, 0.37, 0.35, 0.33, 0.31, 0.29, 0.27, 0.25, 0.23, 0.21, 0.16 ! dry soil albedos + albsat_vis = 0.21, 0.20, 0.18, 0.17, 0.16, 0.15, 0.14, 0.13, 0.13, 0.12, 0.11, 0.10, 0.10, 0.09, 0.08, 0.08, 0.08, 0.07, 0.07, 0.06 ! saturated soil albedos + albsat_nir = 0.42, 0.40, 0.36, 0.34, 0.32, 0.30, 0.28, 0.26, 0.26, 0.24, 0.22, 0.20, 0.20, 0.18, 0.16, 0.16, 0.16, 0.14, 0.14, 0.13 ! saturated soil albedos + albdry_vis = 0.31, 0.30, 0.28, 0.27, 0.26, 0.24, 0.23, 0.22, 0.22, 0.22, 0.20, 0.19, 0.20, 0.18, 0.16, 0.16, 0.16, 0.14, 0.14, 0.13 ! dry soil albedos + albdry_nir = 0.52, 0.50, 0.46, 0.44, 0.42, 0.40, 0.38, 0.37, 0.36, 0.34, 0.32, 0.30, 0.30, 0.28, 0.27, 0.27, 0.27, 0.26, 0.25, 0.25 ! dry soil albedos albice = 0.80, 0.55 ! albedo land ice: 1=vis, 2=nir alblak = 0.60, 0.40 ! albedo frozen lakes: 1=vis, 2=nir omegas = 0.8 , 0.4 ! two-stream parameter omega for snow @@ -397,7 +399,7 @@ class_sno_age = 3600.0 ! snow aging e-folding time (s) in class albedo scheme class_alb_new = 0.84 ! fresh snow albedo in class scheme psiwlt = -150.0 !metric potential for wilting point (m) - z0soil = 0.002 ! bare-soil roughness length (m) (i.e., under the canopy) + z0soil = 0.015 ! bare-soil roughness length (m) (i.e., under the canopy) z0lake = 0.01 ! lake surface roughness length (m) / From 0b6405727053f15b0308ce2d93260f0754cc3177 Mon Sep 17 00:00:00 2001 From: Man Zhang Date: Wed, 3 Jul 2024 16:31:27 -0600 Subject: [PATCH 31/80] add seperate page for cellular automata and physics update summary --- physics/docs/ccpp_doxyfile | 2 + physics/docs/library.bib | 55 ++++++- physics/docs/pdftxt/GFS_CAUTOMATA.txt | 143 +++++++++++++++++ physics/docs/pdftxt/GFS_SAMFdeep.txt | 176 +++------------------ physics/docs/pdftxt/RRFS_v1_suite.txt | 2 +- physics/docs/pdftxt/all_schemes_list.txt | 2 +- physics/docs/pdftxt/ccppv7_phy_updates.txt | 77 +++++++++ physics/docs/pdftxt/mainpage.txt | 6 - 8 files changed, 296 insertions(+), 167 deletions(-) create mode 100644 physics/docs/pdftxt/GFS_CAUTOMATA.txt create mode 100644 physics/docs/pdftxt/ccppv7_phy_updates.txt diff --git a/physics/docs/ccpp_doxyfile b/physics/docs/ccpp_doxyfile index 9d7140566..1b6423813 100644 --- a/physics/docs/ccpp_doxyfile +++ b/physics/docs/ccpp_doxyfile @@ -943,6 +943,7 @@ WARN_LOGFILE = # Note: If this tag is empty the current directory is searched. INPUT = pdftxt/mainpage.txt \ + pdftxt/ccppv7_phy_updates.txt \ pdftxt/all_schemes_list.txt \ pdftxt/GFS_v16_suite.txt \ pdftxt/GFS_v17_HR3_suite.txt \ @@ -968,6 +969,7 @@ INPUT = pdftxt/mainpage.txt \ pdftxt/GFS_OZPHYS.txt \ pdftxt/GFS_H2OPHYS.txt \ pdftxt/GFS_SAMFdeep.txt \ + pdftxt/GFS_CAUTOMATA.txt \ pdftxt/GFS_SAMFshal.txt \ pdftxt/GFDL_cloud.txt \ pdftxt/NSSLMICRO.txt \ diff --git a/physics/docs/library.bib b/physics/docs/library.bib index 0ca85a7b0..06d1c46b5 100644 --- a/physics/docs/library.bib +++ b/physics/docs/library.bib @@ -1,12 +1,65 @@ %% This BibTeX bibliography file was created using BibDesk. %% https://bibdesk.sourceforge.io/ -%% Created for Man Zhang at 2024-06-27 13:18:41 -0600 +%% Created for Man Zhang at 2024-07-02 13:44:09 -0600 %% Saved with string encoding Unicode (UTF-8) +@article{han_2021, + author = {J. Han, J. Peng, W. Li, W. Wang, Z. Zhang, F. Yang and W. Zheng}, + date-added = {2024-07-02 13:49:10 -0600}, + date-modified = {2024-07-02 13:49:10 -0600}, + doi = {10.25923/CYBH-W893}, + publisher = {National Centers for Environmental Prediction (U.S.)}, + title = {Updates in the NCEP GFS Cumulus Convection, Vertical Turbulent Mixing, and Surface Layer Physics}, + url = {https://repository.library.noaa.gov/view/noaa/33881}, + year = {2021}} + + + +@article{Han_2024, + author = {Han, Jongil and Peng, Jiayi and Li, Wei and Wang, Weiguo and Zhang, Zhan and Yang, Fanglin and Zheng, Weizhong}, + date-added = {2024-07-02 13:44:05 -0600}, + date-modified = {2024-07-02 13:44:05 -0600}, + doi = {10.1175/waf-d-23-0134.1}, + issn = {1520-0434}, + journal = {Weather and Forecasting}, + month = apr, + number = {4}, + pages = {679{\^a}€“688}, + publisher = {American Meteorological Society}, + title = {Updates in the NCEP GFS PBL and Convection Models with Environmental Wind Shear Effect and Modified Entrainment and Detrainment Rates and Their Impacts on the GFS Hurricane and CAPE Forecasts}, + url = {http://dx.doi.org/10.1175/WAF-D-23-0134.1}, + volume = {39}, + year = {2024}, + bdsk-url-1 = {http://dx.doi.org/10.1175/WAF-D-23-0134.1}} + +@article{Bengtsson_et_al_2020, + abstract = {Abstract In the atmosphere, convection can organize from smaller scale updrafts into more coherent structures on various scales. In bulk-plume cumulus convection parameterizations, this type of organization has to be represented in terms of how the resolved flow would ``feel'' convection if more coherent structures were present on the subgrid. This type of subgrid organization acts as building blocks for larger scale tropical convective organization known to modulate local and remote weather. In this work a parameterization for subgrid (and cross-grid) organization in a bulk-plume convection scheme is proposed using the stochastic, self-organizing, properties of cellular automata (CA). We investigate the effects of using a CA which can interact with three different components of the bulk-plume scheme that modulate convective activity: entrainment, triggering, and closure. The impacts of the revised schemes are studied in terms of the model's ability to organize convectively coupled equatorial waves (CCEWs). The differing impacts of adopting the stochastic CA scheme, as compared to the widely used Stochastically Perturbed Physics Tendency (SPPT) scheme, are also assessed. Results show that with the CA scheme, precipitation is more spatially and temporally organized, and there is a systematic shift in equatorial wave phase speed not seen with SPPT. Previous studies have noted a linear relationship between Gross Moist Stability (GMS) and Kelvin wave phase speed. Analysis of GMS in this study shows an increase in Kelvin wave phase speed and an increase in GMS with the CA scheme, which is tied to a shift from large-scale precipitation to convective precipitation.}, + author = {Bengtsson, Lisa and Dias, Juliana and Tulich, Stefan and Gehne, Maria and Bao, Jian-Wen}, + doi = {https://doi.org/10.1029/2020MS002260}, + eprint = {https://agupubs.onlinelibrary.wiley.com/doi/pdf/10.1029/2020MS002260}, + journal = {Journal of Advances in Modeling Earth Systems}, + keywords = {cellular automata, cumulus convection, convective organization, stochastic physics}, + note = {e2020MS002260 2020MS002260}, + number = {1}, + pages = {e2020MS002260}, + title = {A Stochastic Parameterization of Organized Tropical Convection Using Cellular Automata for Global Forecasts in NOAA's Unified Forecast System}, + url = {https://agupubs.onlinelibrary.wiley.com/doi/abs/10.1029/2020MS002260}, + volume = {13}, + year = {2021}, + bdsk-url-1 = {https://agupubs.onlinelibrary.wiley.com/doi/abs/10.1029/2020MS002260}, + bdsk-url-2 = {https://doi.org/10.1029/2020MS002260}} + +@article{Han_et_al_2022, + author = {J. Han, F. Yang, R. Montuoro, W. Li, R. Sun}, + date-added = {2024-07-02 11:17:39 -0600}, + date-modified = {2024-07-02 11:20:58 -0600}, + institution = {NCEP Office Note 506}, + title = {Implementation of a positive definite mass-flux scheme and a method for removing the negative tracers in the NCEP GFS planetary boundary layer and cumulus convection scheme}, + year = {2022}} @article{xu_and_randall_1996, author = {Xu, Kuan-Man and Randall, David A.}, diff --git a/physics/docs/pdftxt/GFS_CAUTOMATA.txt b/physics/docs/pdftxt/GFS_CAUTOMATA.txt new file mode 100644 index 000000000..7780612e2 --- /dev/null +++ b/physics/docs/pdftxt/GFS_CAUTOMATA.txt @@ -0,0 +1,143 @@ +/** +\page cellular_automata Cellular Automata Stochastic Convective Organization Scheme + +\b Scientific \b Background + +Cumulus clouds in the atmosphere can organize into a variety of sizes, ranging +from small fair‐weather cumulus clouds, rain showers and thunderstorms, to +larger scale weather systems. In weather and climate models, such organization +is traditionally not well-represented as the motions associated with cumulus +clouds are generally too small to be resolved by the numerical model. +In this scheme we use a stochastic cellular automaton (CA), a mathematical +model often used to describe self‐organizing behavior in physical systems to +represent the effects of convective organization. The scheme addresses the +effect of convective organization in a bulk-plume cumulus convection +parameterizations (saSAS), where this type of organization has to be +represented in terms of how the resolved flow would “feel” convection if +more coherent structures were present on the subgrid. + +In addition, for longer range forecasts (seasonal, decadal, climate), +the relevance of stochastic cumulus convection in numerical models can also +be discussed in terms of noise induced forcing. As an example, on the +time scale of organized convectively coupled waves, the small scale individual +convective plumes grow and decay so rapidly that they are not predictable +on time-scales longer than a few hours, whereas the organized larger scale +convectively coupled wave envelope can have a deterministic limit of +predictability of about two weeks. Thus, for longer range forecasts, +individual convective plumes can be viewed as stochastic noise - they can +have an impact on the convectively coupled waves (due to noise forcing), +but they are not predictable on their own. By providing the CA with a +stochastic initialization, the effect of stochastic cumulus convection +is also represented by the scheme. + +The scientific motivation for the scheme, the CA rulesets explored, and +the impact on convectively coupled equatorial waves can be found in the +following references; Bengtsson et al. 2011 \cite Bengtsson_2011, +Bengtsson et al. 2013 \cite bengtsson_et_al_2013, +Bengtsson and Kornich (2016) \cite bengtsson_and_kornich_2016, +Bengtsson et al 2019 \cite Bengtsson_2019, +and Bengtsson et al. 2021 \cite bengtsson_et_al_2021. + +\b Technical \b remarks + +The CA source code is located in the stochastic physics submodule in +the ufs-weather-model: https://github.com/noaa-psd/stochastic_physics . +In the UFS Weather Model, the main call to the CA routines are made +from FV3/stochastic_physics_driver.F90. + +There are currently two options to evolve the CA (can be done simultaneously); +(\p ca_global) a large scale global pattern which evolves the ruleset according +to game of life with cell history, or (\p ca_sgs) a sub-grid scale pattern +which is conditioned on a forcing from the atmospheric model. The two options +are controlled by namelist and are evolved in cellular_automata_globa.F90 +and cellular_automata_sgs.F90 respectively. Both approaches use the main +CA module update_ca.F90 to evolve the CA in time. Since the CA needs to know +about its neighborhood it uses the halo information to gather the state +in adjacent MPI domains and/or adjacent cube sphere interfaces. + +\b The \p ca_sgs \b option - \b Coupled \b to \b saSAS \b cumulus \b convection \b scheme + +The evolution of the CA is an extension to the automaton family known as “Generations,” +which in turn is based on the “Game of Life”(Chopard & Droz, 1998 \cite Chopard_1998) + but adds cell history to the rule set. It is a deterministic CA ruleset, initialized +with Gaussian white noise. Thus, when used in an ensemble system, each ensemble +member can provide a different seed to the random number generator governing +the initial state to then generate a different evolution for each member. +By cell history we refer to newborn cells being given a “lifetime,”τ, +that is incrementally reduced by 1 each time step where the rules are not met, + in contrast to going directly from 1 to 0. The CA is conditioned on a +forcing from the host model through the lifetime variable τ such that: + +\f[ +\tau =N\left( \frac{\int_{l=1}^{l=top}E\frac{dp }{g} }{\max\left( \int_{l=1}^{l=top} E\frac{d p}{g}\right)} \right) +\f] + +here, N is an integer that when multiplied by the model time-step represents +a physical time scale, such that τ is longer in regions where the forcing is larger, +E is the vertically integrated convective rain evaporation from the +saSAS cumulus convection scheme stored in Coupling%condition. The denominator is +the maximum value of the forcing in the global domain. While the grid-scale +forcing in practice could be any two-dimensional field, we choose here +to set it as the vertically integrated subgrid rain evaporation amount, +serving as an indicator of geographical regions where enhanced subgrid +organization may arise through convective cold-pools. + +The CA is evolved on a finer grid than the numerical prediction +host model (size controlled by namelist), and can be either coarse +grained back to the host model grid as a fraction, or (in case of \p nca_plumes = .true.) +give back the maximum number of connected “plumes” (represented by +connected CA cells), and their associated size within each numerical +prediction host model grid-box. nca_plumes is default true and the +maximum cluster size is passed to the saSAS cumulus convection scheme +in the Coupling%ca_deep container. + +Depending on the activated namelist options, the CA can feed back to +the saSAS convection scheme via the entrainment (\p ca_entr), closure +(\p ca_closure) or convective initiation (\p ca_trigger) in the following way: + +- Entrainment (\p ca_entr): In entraining plume model bulk mass-flux schemes, +the upward mass-flux is typically parameterized as a function of environmental +air being entrained into the rising plume (as well as parcel properties at +cloud base). The fractional entrainment is described as a function of the +plume radius. Larger thermals (plumes) have smaller fractional entrainment, +which is a consequence of the fact that larger areas have relatively smaller +perimeters. In this scheme, the assumption is that subgrid organization will +lead to a few larger plumes rather than several smaller plumes, such that +the grid-box average fractional entrainment is reduced. Thus, after +the CA is updated, we count the number of plumes, and their associated +size within each NWP grid-box (\p nca_plumes = true). If the largest +cluster of cells found on the subgrid is larger than a set radius, then the +fractional entrainment rate is reduced at that grid-point by 30% +(selected based on experimentation) + +- Triggering (\p ca_trigger): In NWP models physical processes are parameterized +in columns, and the horizontal interaction between physical processes takes +place only through advection and diffusion. As the CA can organize clusters +across adjacent NWP model grid-boxes, the method offers a novel approach to +enhance the probability of triggering of convection in nearby areas, +representing subgrid fluctuations in temperature and humidity, and triggering +in premoistened regions if convection is triggered in a cluster. The +stochastic nature of the CA may enhance organization in different +directions within the grid-box, and across grid-boxes, depending on the +initial seed. If the model is run as an ensemble, the convection scheme's +stochastic triggering function can help to improve uncertainty estimates +associated with subgrid fluctuations of temperature and humidity and +randomness in organization. In this work, model grid boxes in which the +CA's largest connecting plume exceeds a given threshold will be considered +as candidates for convective activation, in addition to saSAS’s current +triggering criteria. + +- Closure (\p ca_closure): We assume that convection that organizes into +plumes with larger radii tends to cover a larger area fraction of the +grid-box and thereby acts to enhance the cloud base mass flux. In this +coupling strategy, we again count the number of plumes (represented by +connected cellular automaton cells), and their associated size within +each NWP grid-box. If the largest cluster of cells found on the subgrid +is larger than a set radius, then the cloud base mass-flux is enhanced in +that grid-box by 25% (selected based on experimentation). This option is +being revisited by reformulating the entire closure using a prognostic +evolution of the updraft area fraction, and is in its current formulation +not recommended. + + +*/ diff --git a/physics/docs/pdftxt/GFS_SAMFdeep.txt b/physics/docs/pdftxt/GFS_SAMFdeep.txt index 1112cb05c..99ea4cb13 100644 --- a/physics/docs/pdftxt/GFS_SAMFdeep.txt +++ b/physics/docs/pdftxt/GFS_SAMFdeep.txt @@ -28,7 +28,7 @@ downdrafts and only one cloud type (the deepest possible), rather than a spectrum based on cloud top heights or assumed entrainment rates. The scheme was implemented for the GFS in 1995 by Pan and Wu (1995) \cite pan_and_wu_1995, - with further modifications discussed in Han and Pan (2011) \cite han_and_pan_2011 , including the calculation + with further modifications discussed in Han and Pan (2011) \cite han_and_pan_2011, including the calculation of cloud top, a greater CFL-criterion-based maximum cloud base mass flux, updated cloud model entrainment and detrainment, improved convective transport of horizontal momentum, a more general triggering function, @@ -50,7 +50,10 @@ cloud condensate in the updraft. The lateral entrainment is also enhanced to more strongly suppress convection in a drier environment. - In further update for FY19 GFS implementation, interaction with turbulent + +\subsection gfsv16updates GFSv16 Updates + + In further update for FY19 GFSv16 implementation, interaction with turbulent kinetic energy (TKE), which is a prognostic variable used in a scale-aware TKE-based moist EDMF vertical turbulent mixing scheme, is included. Entrainment rates in updrafts and downdrafts are proportional to sub-cloud @@ -58,167 +61,24 @@ cumulus convection is deduced from cumulus mass flux. On the other hand, tracers such as ozone and aerosol are also transported by cumulus convection. - Occasional model crashes have been occurred when stochastic physics is on, - due to too much convective cooling and heating tendencies near the cumulus - top which are amplified by stochastic physics. To reduce too much convective - cooling at the cloud top, the convection schemes have been modified for the + Occasional model crashes occurred when stochastic physics is on, + due to too strong convective cooling and heating tendencies near the cumulus + top which are amplified by stochastic physics. In order to alleviate this, + the convection schemes were modified for the rain conversion rate, entrainment and detrainment rates, overshooting layers, and maximum allowable cloudbase mass flux (as of June 2018). -\subsection ca_page Cellular Automata Stochastic Convective Organization Scheme - -\b Scientific \b Background - -Cumulus clouds in the atmosphere can organize into a variety of sizes, ranging -from small fair‐weather cumulus clouds, rain showers and thunderstorms, to -larger scale weather systems. In weather and climate models, such organization -is traditionally not well-represented as the motions associated with cumulus -clouds are generally too small to be resolved by the numerical model. -In this scheme we use a stochastic cellular automaton (CA), a mathematical -model often used to describe self‐organizing behavior in physical systems to -represent the effects of convective organization. The scheme addresses the -effect of convective organization in a bulk-plume cumulus convection -parameterizations (saSAS), where this type of organization has to be -represented in terms of how the resolved flow would “feel” convection if -more coherent structures were present on the subgrid. - -In addition, for longer range forecasts (seasonal, decadal, climate), -the relevance of stochastic cumulus convection in numerical models can also -be discussed in terms of noise induced forcing. As an example, on the -time scale of organized convectively coupled waves, the small scale individual -convective plumes grow and decay so rapidly that they are not predictable -on time-scales longer than a few hours, whereas the organized larger scale -convectively coupled wave envelope can have a deterministic limit of -predictability of about two weeks. Thus, for longer range forecasts, -individual convective plumes can be viewed as stochastic noise - they can -have an impact on the convectively coupled waves (due to noise forcing), -but they are not predictable on their own. By providing the CA with a -stochastic initialization, the effect of stochastic cumulus convection -is also represented by the scheme. - -The scientific motivation for the scheme, the CA rulesets explored, and -the impact on convectively coupled equatorial waves can be found in the -following references; Bengtsson et al. 2011 \cite Bengtsson_2011, -Bengtsson et al. 2013 \cite bengtsson_et_al_2013, -Bengtsson and Kornich (2016) \cite bengtsson_and_kornich_2016, -Bengtsson et al 2019 \cite Bengtsson_2019, -and Bengtsson et al. 2021 \cite bengtsson_et_al_2021. - -\b Technical \b remarks - -The CA source code is located in the stochastic physics submodule in -the ufs-weather-model: https://github.com/noaa-psd/stochastic_physics . -In the UFS Weather Model, the main call to the CA routines are made -from FV3/stochastic_physics_driver.F90. - -There are currently two options to evolve the CA (can be done simultaneously); -(\p ca_global) a large scale global pattern which evolves the ruleset according -to game of life with cell history, or (\p ca_sgs) a sub-grid scale pattern -which is conditioned on a forcing from the atmospheric model. The two options -are controlled by namelist and are evolved in cellular_automata_globa.F90 -and cellular_automata_sgs.F90 respectively. Both approaches use the main -CA module update_ca.F90 to evolve the CA in time. Since the CA needs to know -about its neighborhood it uses the halo information to gather the state -in adjacent MPI domains and/or adjacent cube sphere interfaces. - -\b The \p ca_sgs \b option - \b Coupled \b to \b saSAS \b cumulus \b convection \b scheme - -The evolution of the CA is an extension to the automaton family known as “Generations,” -which in turn is based on the “Game of Life”(Chopard & Droz, 1998 \cite Chopard_1998) - but adds cell history to the rule set. It is a deterministic CA ruleset, initialized -with Gaussian white noise. Thus, when used in an ensemble system, each ensemble -member can provide a different seed to the random number generator governing -the initial state to then generate a different evolution for each member. -By cell history we refer to newborn cells being given a “lifetime,”τ, -that is incrementally reduced by 1 each time step where the rules are not met, - in contrast to going directly from 1 to 0. The CA is conditioned on a -forcing from the host model through the lifetime variable τ such that: - -\f[ -\tau =N\left( \frac{\int_{l=1}^{l=top}E\frac{dp }{g} }{\max\left( \int_{l=1}^{l=top} E\frac{d p}{g}\right)} \right) -\f] - -here, N is an integer that when multiplied by the model time-step represents -a physical time scale, such that τ is longer in regions where the forcing is larger, -E is the vertically integrated convective rain evaporation from the -saSAS cumulus convection scheme stored in Coupling%condition. The denominator is -the maximum value of the forcing in the global domain. While the grid-scale -forcing in practice could be any two-dimensional field, we choose here -to set it as the vertically integrated subgrid rain evaporation amount, -serving as an indicator of geographical regions where enhanced subgrid -organization may arise through convective cold-pools. - -The CA is evolved on a finer grid than the numerical prediction -host model (size controlled by namelist), and can be either coarse -grained back to the host model grid as a fraction, or (in case of \p nca_plumes = .true.) -give back the maximum number of connected “plumes” (represented by -connected CA cells), and their associated size within each numerical -prediction host model grid-box. nca_plumes is default true and the -maximum cluster size is passed to the saSAS cumulus convection scheme -in the Coupling%ca_deep container. - -Depending on the activated namelist options, the CA can feed back to -the saSAS convection scheme via the entrainment (\p ca_entr), closure -(\p ca_closure) or convective initiation (\p ca_trigger) in the following way: - -- Entrainment (\p ca_entr): In entraining plume model bulk mass-flux schemes, -the upward mass-flux is typically parameterized as a function of environmental -air being entrained into the rising plume (as well as parcel properties at -cloud base). The fractional entrainment is described as a function of the -plume radius. Larger thermals (plumes) have smaller fractional entrainment, -which is a consequence of the fact that larger areas have relatively smaller -perimeters. In this scheme, the assumption is that subgrid organization will -lead to a few larger plumes rather than several smaller plumes, such that -the grid-box average fractional entrainment is reduced. Thus, after -the CA is updated, we count the number of plumes, and their associated -size within each NWP grid-box (\p nca_plumes = true). If the largest -cluster of cells found on the subgrid is larger than a set radius, then the -fractional entrainment rate is reduced at that grid-point by 30% -(selected based on experimentation) - -- Triggering (\p ca_trigger): In NWP models physical processes are parameterized -in columns, and the horizontal interaction between physical processes takes -place only through advection and diffusion. As the CA can organize clusters -across adjacent NWP model grid-boxes, the method offers a novel approach to -enhance the probability of triggering of convection in nearby areas, -representing subgrid fluctuations in temperature and humidity, and triggering -in premoistened regions if convection is triggered in a cluster. The -stochastic nature of the CA may enhance organization in different -directions within the grid-box, and across grid-boxes, depending on the -initial seed. If the model is run as an ensemble, the convection scheme's -stochastic triggering function can help to improve uncertainty estimates -associated with subgrid fluctuations of temperature and humidity and -randomness in organization. In this work, model grid boxes in which the -CA's largest connecting plume exceeds a given threshold will be considered -as candidates for convective activation, in addition to saSAS’s current -triggering criteria. - -- Closure (\p ca_closure): We assume that convection that organizes into -plumes with larger radii tends to cover a larger area fraction of the -grid-box and thereby acts to enhance the cloud base mass flux. In this -coupling strategy, we again count the number of plumes (represented by -connected cellular automaton cells), and their associated size within -each NWP grid-box. If the largest cluster of cells found on the subgrid -is larger than a set radius, then the cloud base mass-flux is enhanced in -that grid-box by 25% (selected based on experimentation). This option is -being revisited by reformulating the entire closure using a prognostic -evolution of the updraft area fraction, and is in its current formulation -not recommended. +\subsection gfsv17updates_samf GFS saSAS Scheme Updates in GFSv17 + The updates to the SAMF parameterization described above, between GFSv16 and GFSv17 + are carefully outlined in Bengtsson and Han (2004)(submitted to WAF). The main updates include: -\subsection gen_enh Physics Updates in GFS Cumulus Convection + - Implementation of a positive definition mass-flux scheme and a method for removing the negative tracers (Han et al. 2022 \cite Han_et_al_2022) + - Introduction of a new closure based on a prognostic evolution of the convective updraft area fraction in both shallow and deep convection (Bengtsson et al. 2022 \cite Bengtsson_2022) + - Introduction of 3D effects of cold-pool dynamics and stochastic initiation using self-organizing \ref cellular_automata (Bengtsson et al. 2021 \cite bengtsson_et_al_2021) + - Introduction of environmental wind shear and TKE dependence in convection, to seek improvements in hurricane forecast prediction (Han et al. 2024 \cite Han_2024) + - Stricter convective initiation criteria to allow for more CAPE to build up to address a low CAPE bias in GFSv16 (Han et al. 2021 \cite han_2021) + - Reduction of convective rain evaporation rate to address a systematic cold bias near the surface in GFSv16 (Han et al. 2021 \cite han_2021) -- To enhance the surface-based convective available potential energy (CAPE), -more strict convection trigger conditions are applied. -- Enhanced downdraft detrainments start from 60 mb above the ground surface -rather than from the cloud base. -- Reduced rain evaporation with the removal of wind shear dependency, which -helps to reduce cold bias in tropospheric temperature profile especially over Tropics. -- Separation cloud depth of deep and shallow convection is -increased to 200 hPa from 150 hPa. -- Updraft entrainment rates for moisture, hydrometeors, and tracers are -increased by about 30%. -- A positive definite TVD (Total Variation Diminishing) mass-flux transport -scheme for moisture, hydrometeors and tracers and a method for removing negative tracer mixing ratio values have been implemented. \sa NCEP Office Note 505 \cite https://doi.org/10.25923/cybh-w893 and 506 \cite https://doi.org/10.25923/5051-3r70 \section intra_deep Intraphysics Communication diff --git a/physics/docs/pdftxt/RRFS_v1_suite.txt b/physics/docs/pdftxt/RRFS_v1_suite.txt index f44321b3f..568bc4872 100644 --- a/physics/docs/pdftxt/RRFS_v1_suite.txt +++ b/physics/docs/pdftxt/RRFS_v1_suite.txt @@ -6,7 +6,7 @@ The RRFS_v1 suite is one of the candidates for the future operational implementation of the Rapid Refresh Forecast System (RRFS), which can be configured using the UFS SRW App. -The RRFS_v1beta suite uses the parameterizations in the following order: +The RRFS_v1 suite uses the parameterizations in the following order: - \ref SGSCLOUD_page - \ref GFS_RRTMG_page - \ref SFC_MYNNSFL diff --git a/physics/docs/pdftxt/all_schemes_list.txt b/physics/docs/pdftxt/all_schemes_list.txt index aa28e26ce..82d081e38 100644 --- a/physics/docs/pdftxt/all_schemes_list.txt +++ b/physics/docs/pdftxt/all_schemes_list.txt @@ -24,7 +24,7 @@ which facilitates model development and code maintenance. While some individual \b Cumulus \b Parameterizations - \subpage GFS_SAMFdeep - - \ref ca_page + - \subpage cellular_automata - \subpage GFS_SAMFshal - \subpage CU_GF diff --git a/physics/docs/pdftxt/ccppv7_phy_updates.txt b/physics/docs/pdftxt/ccppv7_phy_updates.txt new file mode 100644 index 000000000..661ff2ff6 --- /dev/null +++ b/physics/docs/pdftxt/ccppv7_phy_updates.txt @@ -0,0 +1,77 @@ +/** +\page ccppv7_phy Physics Update Summary + +\b General \b Changes: + Add GFS_v17, GFS_v16_RRTMGP, and RRFS_v1 suites as new supported suite +- New the Community Lake Model \ref CLM_LAKE_model in RRFS_v1 suite +- New \ref GFS_ugwpv1_gsldrag in GFS_v17 suite +- New \ref GFS_RRTMGP_page in GFS_v16_RRTMGP suite +- New RRFS SD scheme in RRFS_v1 suite +- rename GSL drag suite to \todo gsldrag + +\b GFS \b Scale-aware \b TKE-EDMF \b PBL \b and \b Cumulus \b Schemes: + +The updates between GFSv16 and GFSv17 are carefully outlined in Bengtsson and Han (2004)(submitted to WAF). The main updates include: + +- Implementation of a positive definition mass-flux scheme and a method for removing the negative tracers (Han et al. 2022 \cite Han_et_al_2022) +- Introduction of a new closure based on a prognostic evolution of the convective updraft area fraction in both shallow and deep convection (Bengtsson et al. 2022 \cite Bengtsson_2022) +- Introduction of 3D effects of cold-pool dynamics and stochastic initiation using self-organizing \ref cellular_automata (Bengtsson et al. 2021 \cite bengtsson_et_al_2021) +- Introduction of environmental wind shear and TKE dependence in convection, to seek improvements in hurricane forecast prediction (Han et al. 2024 \cite Han_2024) +- Stricter convective initiation criteria to allow for more CAPE to build up to address a low CAPE bias in GFSv16 (Han et al. 2021 \cite han_2021) +- Reduction of convective rain evaporation rate to address a systematic cold bias near the surface in GFSv16 (Han et al. 2021 \cite han_2021) + +\b Thompson \b Microphysics \b Scheme: +- Ice generation supersaturation requirement reduced from 0.25 to 0.15 to generate more ice at the upper +levels and reduce the outgoing longwave radiation bias +- Cloud number concentration divided into two parts (over land and others). Number concentration over +ocean reduced to a smaller number (50/L) from its previous default (100/L). Both changes were made to reduce +excessive surface downward shortwave radiative flux off coastal regions including the Southeast Pacific +- Small fixes to the minimum size of snow and collision constants + +\note The above improvements were tested with the non-aerosol option (in GFS_v17 suite), so results with the aerosol-aware +Thompson (in RRFS_v1 suite) may vary. + +\b NoahMP \b Land \b Surface \b Model: +- Option for using the unified frozen precipitation fraction in NoahMP +- Diagnostic 2-meter temperature and humidity now based on vegetation and bare-ground tiles (new namelist option \a iopt_diag) +- Bug fixes for GFS-based thermal roughness length scheme +- New soil color dataset introduced to improve soil albedo to reduce the large warm bias found in the Sahel desert +- Wet leaf contribution factor is included +- Leaf-area index now depends on momentum roughness length + +\b RUC \b Land \b Surface \b Model: +- Initialization of land and ice emissivity and albedo with consideration of partial snow cover +- Initialization of water vapor mixing ratio over land ice +- Initialization of fractions of soil and vegetation types in a grid cell +- Changes in the computation of a flag for sea ice: set to true only if \a flag_ice=.false. (atmosphere uncoupled from the sea ice model) +- Separate variable for sea ice, for example: \a snowfallac is replaced with \a snowfallac_ice +- Solar angle dependence of albedo for snow-free land +- Stochastic physics perturbations (SPP) introduced for emissivity, albedo and vegetation fraction +- Coefficient in soil resistance formulation (Sakaguchi and Zeng, 2009 \cite sakaguchi_and_zeng_2009) raised from 0.7 to 1.0 to increase soil resistance to evaporation +- Computation of snow cover fraction and snow thermal conductivity updated + + +\b MYNN-EDMF \b PBL \b Scheme: +- Small increase of buoyancy length scale in convective environment +- Patch for ensuring non-zero cloud fractions for all grid cells where cloud mixing ratio is greater than 1e-6 or ice mixing ratio is greater than 1e-9 + +\b Subgrid-scale \b (SGS) \b Clouds \b Scheme: +- Bug fix for cloud condensate input into RRTMG radiation +- New code section for use with SAS cumulus scheme +- Cloud fraction now computed as a mix between the area-dependent form and the modified Chaboureau and Bechtold (2005) \cite Chaboureau_2005 form +- Adjusted limit for the boundary flux functions + +\b MYNN \b Surface-layer \b Scheme +- Reintroduce friction velocity averaging over water to reduce noise in 10-m winds in the hurricane regime + +\b Grell-Freitas \b Scale \b and \b Aerosol \b Aware \b Convection \b Scheme: +- Update for aerosol-awareness (experimental) +- Scale-awareness turned off when explicit microphysics is not active anywhere in the column +- Convection is completely suppressed at grid points where the MYNN PBL sheme produces shallow convection +- Radar reflectivity considers mass flux PDF as well as whether scale-awareness is turned on at the gird point in equation + +\b Unified \b Gravity \b Wave \b Physics \b Scheme: +\todo UGWP updates for HR4 + + +*/ diff --git a/physics/docs/pdftxt/mainpage.txt b/physics/docs/pdftxt/mainpage.txt index 6a5d0250b..b6314d4d4 100644 --- a/physics/docs/pdftxt/mainpage.txt +++ b/physics/docs/pdftxt/mainpage.txt @@ -23,12 +23,6 @@ by the Development Testbed Center (DTC), supports suites: - \ref RRFS_v1_page - \ref WoFS_v0_page - -New schemes and capability highlights in this release: -- \ref GFS_ugwpv1_gsldrag -- \ref GFS_RRTMGP_page -- \ref CLM_LAKE_model - In this website you will find documentation on various aspects of each parameterization, including a high-level overview of its function, the input/output argument list, and a description of the algorithm. From 642449283d21cc873328ec048e7d6f632fc01311 Mon Sep 17 00:00:00 2001 From: masih Date: Wed, 18 Oct 2023 15:18:32 -0600 Subject: [PATCH 32/80] add fire behavior tendencies to physics * added hflx_fire and evap_fire to GFS_surface_composite_post * added cpl_fire flag --- .../GFS_surface_composites_post.F90 | 14 +++++++---- .../GFS_surface_composites_post.meta | 23 +++++++++++++++++++ 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.F90 index 01617aa1b..76599d475 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.F90 @@ -23,22 +23,22 @@ module GFS_surface_composites_post !! \htmlinclude GFS_surface_composites_post_run.html !! subroutine GFS_surface_composites_post_run ( & - im, kice, km, rd, rvrdm1, cplflx, cplwav2atm, frac_grid, flag_cice, thsfc_loc, islmsk, dry, wet, icy, wind, t1, q1, prsl1, & + im, kice, km, rd, rvrdm1, cplflx, cplwav2atm, cpl_fire, frac_grid, flag_cice, thsfc_loc, islmsk, dry, wet, icy, wind, t1, q1, prsl1, & landfrac, lakefrac, oceanfrac, zorl, zorlo, zorll, zorli, garea, frac_ice, & cd, cd_wat, cd_lnd, cd_ice, cdq, cdq_wat, cdq_lnd, cdq_ice, rb, rb_wat, rb_lnd, rb_ice, stress, stress_wat, stress_lnd, & stress_ice, ffmm, ffmm_wat, ffmm_lnd, ffmm_ice, ffhh, ffhh_wat, ffhh_lnd, ffhh_ice, uustar, uustar_wat, uustar_lnd, & uustar_ice, fm10, fm10_wat, fm10_lnd, fm10_ice, fh2, fh2_wat, fh2_lnd, fh2_ice, tsurf_wat, tsurf_lnd, tsurf_ice, & cmm, cmm_wat, cmm_lnd, cmm_ice, chh, chh_wat, chh_lnd, chh_ice, gflx, gflx_wat, gflx_lnd, gflx_ice, ep1d, ep1d_wat, & ep1d_lnd, ep1d_ice, weasd, weasd_lnd, weasd_ice, snowd, snowd_lnd, snowd_ice, tprcp, tprcp_wat, & - tprcp_lnd, tprcp_ice, evap, evap_wat, evap_lnd, evap_ice, hflx, hflx_wat, hflx_lnd, hflx_ice, qss, qss_wat, qss_lnd, & - qss_ice, tsfc, tsfco, tsfcl, tsfc_wat, tisfc, hice, cice, tiice, & + tprcp_lnd, tprcp_ice, evap, evap_wat, evap_lnd, evap_ice, hflx, hflx_wat, hflx_lnd, hflx_ice, hflx_fire, evap_fire, & + qss, qss_wat, qss_lnd, qss_ice, tsfc, tsfco, tsfcl, tsfc_wat, tisfc, hice, cice, tiice, & sigmaf, zvfun, lheatstrg, h0facu, h0facs, hflxq, hffac, stc, lkm, iopt_lake, iopt_lake_clm, use_lake_model, & grav, prsik1, prslk1, prslki, z1, ztmax_wat, ztmax_lnd, ztmax_ice, huge, errmsg, errflg) implicit none integer, intent(in) :: im, kice, km, lkm, iopt_lake, iopt_lake_clm - logical, intent(in) :: cplflx, frac_grid, cplwav2atm, frac_ice + logical, intent(in) :: cplflx, frac_grid, cplwav2atm, frac_ice, cpl_fire logical, intent(in) :: lheatstrg logical, dimension(:), intent(in) :: flag_cice, dry, icy logical, dimension(:), intent(in) :: wet @@ -49,7 +49,7 @@ subroutine GFS_surface_composites_post_run ( fm10_wat, fm10_lnd, fm10_ice, fh2_wat, fh2_lnd, fh2_ice, tsurf_wat, tsurf_lnd, tsurf_ice, cmm_wat, cmm_lnd, cmm_ice, & chh_wat, chh_lnd, chh_ice, gflx_wat, gflx_lnd, gflx_ice, ep1d_wat, ep1d_lnd, ep1d_ice, weasd_lnd, weasd_ice, & snowd_lnd, snowd_ice, tprcp_wat, tprcp_lnd, tprcp_ice, evap_wat, evap_lnd, evap_ice, hflx_wat, hflx_lnd, & - hflx_ice, qss_wat, qss_lnd, qss_ice, tsfc_wat, zorlo, zorll, zorli, garea + hflx_ice, hflx_fire, evap_fire, qss_wat, qss_lnd, qss_ice, tsfc_wat, zorlo, zorll, zorli, garea real(kind=kind_phys), dimension(:), intent(inout) :: zorl, cd, cdq, rb, stress, ffmm, ffhh, uustar, fm10, & fh2, cmm, chh, gflx, ep1d, weasd, snowd, tprcp, evap, hflx, qss, tsfc, tsfco, tsfcl, tisfc @@ -275,6 +275,10 @@ subroutine GFS_surface_composites_post_run ( else if (islmsk(i) == 1) then !-- land call composite_land + if (cpl_fire) then + hflx(i) = hflx(i) + hflx_fire(i) + evap(i) = evap(i) + evap_fire(i) + endif elseif (islmsk(i) == 0) then !-- water call composite_wet diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.meta index 7224d7221..e4a364e04 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.meta @@ -816,6 +816,29 @@ type = real kind = kind_phys intent = in +[hflx_fire] + standard_name = kinematic_surface_upward_sensible_heat_flux_of_fire + long_name = kinematic surface upward sensible heat flux of fire + units = K m s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in +[evap_fire] + standard_name = surface_upward_specific_humidity_flux_of_fire + long_name = kinematic surface upward latent heat flux of fire + units = kg kg-1 m s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in +[cpl_fire] + standard_name = do_fire_coupling + long_name = flag controlling fire_behavior collection (default off) + units = flag + dimensions = () + type = logical + intent = in [qss] standard_name = surface_specific_humidity long_name = surface air saturation specific humidity From 26402ca9717c55f74d35443572452adef5799828 Mon Sep 17 00:00:00 2001 From: masih Date: Tue, 2 Jan 2024 15:30:57 -0700 Subject: [PATCH 33/80] fire_behavior smoke coupling * added fsmoke tracer * added surface emissions to fsmoke in rrfs_smoke_wrapper --- physics/smoke_dust/rrfs_smoke_wrapper.F90 | 27 ++++++++++++++++---- physics/smoke_dust/rrfs_smoke_wrapper.meta | 29 ++++++++++++++++++++++ 2 files changed, 51 insertions(+), 5 deletions(-) diff --git a/physics/smoke_dust/rrfs_smoke_wrapper.F90 b/physics/smoke_dust/rrfs_smoke_wrapper.F90 index b6da50ca0..47e6d7a94 100755 --- a/physics/smoke_dust/rrfs_smoke_wrapper.F90 +++ b/physics/smoke_dust/rrfs_smoke_wrapper.F90 @@ -110,28 +110,30 @@ end subroutine rrfs_smoke_wrapper_init !! !>\section rrfs_smoke_wrapper rrfs-sd Scheme General Algorithm !> @{ - subroutine rrfs_smoke_wrapper_run(im, kte, kme, ktau, dt, garea, land, jdate, & + subroutine rrfs_smoke_wrapper_run(im, flag_init, kte, kme, ktau, dt, garea, land, jdate, & u10m, v10m, ustar, rlat, rlon, tskin, pb2d, t2m, dpt2m, & pr3d, ph3d,phl3d, prl3d, tk3d, us3d, vs3d, spechum, w, & nsoil, smc, tslb, vegtype_dom, vegtype_frac, soiltyp, nlcat, & - dswsfc, zorl, snow, julian,recmol, & + dswsfc, zorl, snow, julian, recmol, & idat, rain_cpl, rainc_cpl, hf2d, g, pi, con_cp, con_rd, con_fv, & dust12m_in, emi_ant_in, smoke_RRFS, smoke2d_RRFS, & ntrac, qgrs, gq0, chem3d, tile_num, & - ntsmoke, ntdust, ntcoarsepm, imp_physics, imp_physics_thompson, & + ntfsmoke, ntsmoke, ntdust, ntcoarsepm, & + imp_physics, imp_physics_thompson, & nwfa, nifa, emanoc, emdust, emseas, drydep_flux_out, wetdpr, & ebb_smoke_in, frp_output, coef_bb, fire_type_out, & ebu_smoke,fhist,min_fplume, & max_fplume, hwp, hwp_ave, wetness, ndvel, ddvel_inout, & + smoke_fire, cpl_fire, & peak_hr_out,lu_nofire_out,lu_qfire_out, & fire_heat_flux_out, frac_grid_burned_out, kpbl,oro, & uspdavg, hpbl_thetav, mpicomm, mpirank, mpiroot, errmsg,errflg ) - implicit none integer, intent(in) :: im,kte,kme,ktau,nsoil,tile_num,jdate(8),idat(8) - integer, intent(in) :: ntrac, ntsmoke, ntdust, ntcoarsepm, ndvel, nlcat + integer, intent(in) :: ntrac, ntfsmoke, ntsmoke, ntdust, ntcoarsepm, ndvel, nlcat + logical, intent(in) :: flag_init real(kind_phys),intent(in) :: dt, julian, g, pi, con_cp, con_rd, con_fv integer, parameter :: ids=1,jds=1,jde=1, kds=1 @@ -166,6 +168,8 @@ subroutine rrfs_smoke_wrapper_run(im, kte, kme, ktau, dt, garea, land, jdate, real(kind_phys), dimension(:), intent(in), optional :: wetness real(kind_phys), dimension(:), intent(out), optional :: lu_nofire_out,lu_qfire_out integer, dimension(:), intent(out), optional :: fire_type_out + real(kind_phys), dimension(:), intent(in), optional :: smoke_fire + logical, intent(in) :: cpl_fire integer, intent(in) :: imp_physics, imp_physics_thompson integer, dimension(:), intent(in) :: kpbl real(kind_phys), dimension(:), intent(in) :: oro @@ -235,6 +239,19 @@ subroutine rrfs_smoke_wrapper_run(im, kte, kme, ktau, dt, garea, land, jdate, errmsg = '' errflg = 0 + if (cpl_fire) then + if (flag_init) then + do i=1,im + do k=kts,kte + qgrs(i,k,ntfsmoke) = 0. + end do + end do + endif + do i=1,im + qgrs(i,kts,ntfsmoke) = qgrs(i,kts,ntfsmoke) + smoke_fire(i) + end do + endif + if (.not. do_rrfs_sd) return ! -- set domain diff --git a/physics/smoke_dust/rrfs_smoke_wrapper.meta b/physics/smoke_dust/rrfs_smoke_wrapper.meta index c7afc1d97..0929c8be3 100755 --- a/physics/smoke_dust/rrfs_smoke_wrapper.meta +++ b/physics/smoke_dust/rrfs_smoke_wrapper.meta @@ -200,6 +200,13 @@ dimensions = () type = integer intent = in +[flag_init] + standard_name = flag_for_first_timestep + long_name = flag signaling first time step for time integration loop + units = flag + dimensions = () + type = logical + intent = in [kte] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -642,6 +649,13 @@ dimensions = () type = integer intent = in +[ntfsmoke] + standard_name = index_for_fire_smoke_in_tracer_concentration_array + long_name = tracer index for fire smoke + units = index + dimensions = () + type = integer + intent = in [ntdust] standard_name = index_for_dust_in_tracer_concentration_array long_name = tracer index for dust @@ -946,6 +960,21 @@ type = real kind = kind_phys intent = in +[smoke_fire] + standard_name = smoke_emission_of_fire + long_name = smoke emission of fire + units = kg m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in +[cpl_fire] + standard_name = do_fire_coupling + long_name = flag controlling fire_behavior collection (default off) + units = flag + dimensions = () + type = logical + intent = in [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP From 430e1ae94fa91dc2fd1a6db080f217d4bb831651 Mon Sep 17 00:00:00 2001 From: masih Date: Mon, 20 May 2024 10:56:40 -0600 Subject: [PATCH 34/80] added fire flag for t2, q2 and surface pres --- .../GFS_surface_generic_post.F90 | 17 +++++++++++++---- .../GFS_surface_generic_post.meta | 7 +++++++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_generic_post.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_generic_post.F90 index 8e3e0fdbf..648f6bf81 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_generic_post.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_generic_post.F90 @@ -45,7 +45,7 @@ end subroutine GFS_surface_generic_post_init !> \section arg_table_GFS_surface_generic_post_run Argument Table !! \htmlinclude GFS_surface_generic_post_run.html !! - subroutine GFS_surface_generic_post_run (im, cplflx, cplaqm, cplchm, cplwav, cpllnd, lssav, dry, icy, wet, & + subroutine GFS_surface_generic_post_run (im, cplflx, cplaqm, cplchm, cplwav, cpllnd, cpl_fire, lssav, dry, icy, wet, & lsm, lsm_noahmp, dtf, ep1d, gflx, tgrs_1, qgrs_1, ugrs_1, vgrs_1, & adjsfcdlw, adjsfcdsw, adjnirbmd, adjnirdfd, adjvisbmd, adjvisdfd, adjsfculw, adjsfculw_wat, adjnirbmu, adjnirdfu, & adjvisbmu, adjvisdfu, t2m, q2m, u10m, v10m, tsfc, tsfc_wat, pgr, xcosz, evbs, evcw, trans, sbsno, snowc, snohf, pah, pahi, & @@ -59,7 +59,7 @@ subroutine GFS_surface_generic_post_run (im, cplflx, cplaqm, cplchm, cplwav, cpl implicit none integer, intent(in) :: im - logical, intent(in) :: cplflx, cplaqm, cplchm, cplwav, cpllnd, lssav + logical, intent(in) :: cplflx, cplaqm, cplchm, cplwav, cpllnd, cpl_fire, lssav logical, dimension(:), intent(in) :: dry, icy, wet integer, intent(in) :: lsm, lsm_noahmp real(kind=kind_phys), intent(in) :: dtf @@ -136,9 +136,20 @@ subroutine GFS_surface_generic_post_run (im, cplflx, cplaqm, cplchm, cplwav, cpl dswsfci_cpl (i) = adjsfcdsw(i) dlwsfc_cpl (i) = dlwsfc_cpl(i) + adjsfcdlw(i)*dtf dswsfc_cpl (i) = dswsfc_cpl(i) + adjsfcdsw(i)*dtf + enddo + endif + + if (cplflx .or. cpllnd .or. cpl_fire) then + do i=1,im psurfi_cpl (i) = pgr(i) enddo endif + if (cplflx .or. cpl_fire) then + do i=1,im + t2mi_cpl (i) = t2m(i) + q2mi_cpl (i) = q2m(i) + enddo + endif if (cplflx) then do i=1,im @@ -155,8 +166,6 @@ subroutine GFS_surface_generic_post_run (im, cplflx, cplaqm, cplchm, cplwav, cpl nlwsfci_cpl(i) = adjsfcdlw(i) - adjsfculw_wat(i) endif nlwsfc_cpl (i) = nlwsfc_cpl(i) + nlwsfci_cpl(i)*dtf - t2mi_cpl (i) = t2m(i) - q2mi_cpl (i) = q2m(i) enddo endif diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_generic_post.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_generic_post.meta index 2c8ae74c0..5e7949b8f 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_generic_post.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_generic_post.meta @@ -126,6 +126,13 @@ dimensions = () type = logical intent = in +[cpl_fire] + standard_name = do_fire_coupling + long_name = flag controlling fire_behavior collection (default off) + units = flag + dimensions = () + type = logical + intent = in [lssav] standard_name = flag_for_diagnostics long_name = logical flag for storing diagnostics From 420317e6b8e4adb57c68b1ea9381d1a15f4cc86f Mon Sep 17 00:00:00 2001 From: Dustin Swales Date: Mon, 15 Jul 2024 20:03:52 +0000 Subject: [PATCH 35/80] Address reviewers comments --- .../UFS_SCM_NEPTUNE/GFS_photochemistry.F90 | 11 ++++++++--- .../UFS_SCM_NEPTUNE/GFS_photochemistry.meta | 3 ++- .../GFS_suite_stateout_update.meta | 2 +- physics/MP/Thompson/mp_thompson.F90 | 13 ++++++------- physics/MP/Thompson/mp_thompson.meta | 18 ++++++++++++++++++ physics/photochem/module_h2ophys.meta | 3 ++- 6 files changed, 37 insertions(+), 13 deletions(-) diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_photochemistry.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_photochemistry.F90 index 4a679713e..94c6d1c3b 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_photochemistry.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_photochemistry.F90 @@ -29,14 +29,19 @@ subroutine GFS_photochemistry_init(oz_phys_2006, oz_phys_2015, h2o_phys, errmsg, errflg = 0 ! If no photchemical scheme is on, but SDF has this module, report an error? - ! DJS2024 Asks: If everything in _run() is controlled by these logicals, we probably don't - ! need to kill it here, since the run phase will be harmless? if ((.not. oz_phys_2006) .and. (.not. oz_phys_2015) .and. (.not. h2o_phys)) then write (errmsg,'(*(a))') 'Logic error: One of [oz_phys_2006, oz_phys_2015, or h2o_phys] must == .true. ' errflg = 1 return endif - + + ! Only one ozone scheme can be on. Otherwise, return and report error. + if (oz_phys_2006 .and. oz_phys_2015) then + write (errmsg,'(*(a))') 'Logic error: Only one ozone scheme can be enabled at a time' + errflg = 1 + return + endif + end subroutine GFS_photochemistry_init ! ######################################################################################### diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_photochemistry.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_photochemistry.meta index 4e26241fb..f8874fef7 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_photochemistry.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_photochemistry.meta @@ -207,4 +207,5 @@ units = 1 dimensions = () type = integer - intent = out \ No newline at end of file + intent = out + \ No newline at end of file diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_stateout_update.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_stateout_update.meta index 2b7572789..8a0d784f2 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_stateout_update.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_stateout_update.meta @@ -3,7 +3,7 @@ name = GFS_suite_stateout_update type = scheme dependencies = ../../hooks/machine.F - + ######################################################################## [ccpp-arg-table] name = GFS_suite_stateout_update_run diff --git a/physics/MP/Thompson/mp_thompson.F90 b/physics/MP/Thompson/mp_thompson.F90 index 3b99deec1..ea1320714 100644 --- a/physics/MP/Thompson/mp_thompson.F90 +++ b/physics/MP/Thompson/mp_thompson.F90 @@ -21,8 +21,6 @@ module mp_thompson private - logical :: is_initialized = .False. - integer, parameter :: ext_ndiag3d = 37 contains @@ -40,7 +38,7 @@ subroutine mp_thompson_init(ncol, nlev, con_g, con_rd, con_eps, & nwfa, nifa, tgrs, prsl, phil, area, & aerfld, mpicomm, mpirank, mpiroot, & threads, ext_diag, diag3d, & - errmsg, errflg) + is_initialized, errmsg, errflg) implicit none @@ -49,6 +47,7 @@ subroutine mp_thompson_init(ncol, nlev, con_g, con_rd, con_eps, & integer, intent(in ) :: nlev real(kind_phys), intent(in ) :: con_g, con_rd, con_eps logical, intent(in ) :: restart + logical, intent(inout) :: is_initialized integer, intent(in ) :: imp_physics integer, intent(in ) :: imp_physics_thompson ! Hydrometeors @@ -338,12 +337,12 @@ subroutine mp_thompson_run(ncol, nlev, con_g, con_rd, & spp_prt_list, spp_var_list, & spp_stddev_cutoff, & cplchm, pfi_lsan, pfl_lsan, & - errmsg, errflg) + is_initialized, errmsg, errflg) implicit none ! Interface variables - + logical, intent(inout) :: is_initialized ! Dimensions and constants integer, intent(in ) :: ncol integer, intent(in ) :: nlev @@ -915,10 +914,10 @@ end subroutine mp_thompson_run !> \section arg_table_mp_thompson_finalize Argument Table !! \htmlinclude mp_thompson_finalize.html !! - subroutine mp_thompson_finalize(errmsg, errflg) + subroutine mp_thompson_finalize(is_initialized, errmsg, errflg) implicit none - + logical, intent(inout) :: is_initialized character(len=*), intent( out) :: errmsg integer, intent( out) :: errflg diff --git a/physics/MP/Thompson/mp_thompson.meta b/physics/MP/Thompson/mp_thompson.meta index 7d750ee93..26e0c72be 100644 --- a/physics/MP/Thompson/mp_thompson.meta +++ b/physics/MP/Thompson/mp_thompson.meta @@ -282,6 +282,12 @@ kind = kind_phys intent = in optional = True +[is_initialized] + standard_name = flag_for_thompson_mp_scheme_initialization + long_name = flag carrying scheme initialization status + units = flag + type = logical + intent = inout [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -782,6 +788,12 @@ kind = kind_phys intent = inout optional = True +[is_initialized] + standard_name = flag_for_thompson_mp_scheme_initialization + long_name = flag carrying scheme initialization status + units = flag + type = logical + intent = inout [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP @@ -802,6 +814,12 @@ [ccpp-arg-table] name = mp_thompson_finalize type = scheme +[is_initialized] + standard_name = flag_for_thompson_mp_scheme_initialization + long_name = flag carrying scheme initialization status + units = flag + type = logical + intent = inout [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP diff --git a/physics/photochem/module_h2ophys.meta b/physics/photochem/module_h2ophys.meta index a4af0b21c..030050acb 100644 --- a/physics/photochem/module_h2ophys.meta +++ b/physics/photochem/module_h2ophys.meta @@ -21,4 +21,5 @@ long_name = definition of type ty_h2ophys units = DDT dimensions = () - type = ty_h2ophys \ No newline at end of file + type = ty_h2ophys + \ No newline at end of file From 8ca13740a1566dc0cebf1308cdc4a5ab46c35937 Mon Sep 17 00:00:00 2001 From: Man Zhang Date: Mon, 15 Jul 2024 14:21:03 -0600 Subject: [PATCH 36/80] scidoc updates --- physics/docs/pdftxt/GFS_SATMEDMFVDIFQ.txt | 11 -------- physics/docs/pdftxt/GFS_drag_suite.txt | 4 +-- physics/docs/pdftxt/GFS_ugwpv1_gsldrag.txt | 4 +-- physics/docs/pdftxt/ccppv7_phy_updates.txt | 30 +++++++++++++++++----- 4 files changed, 26 insertions(+), 23 deletions(-) diff --git a/physics/docs/pdftxt/GFS_SATMEDMFVDIFQ.txt b/physics/docs/pdftxt/GFS_SATMEDMFVDIFQ.txt index 270df521f..6f6e1f79b 100644 --- a/physics/docs/pdftxt/GFS_SATMEDMFVDIFQ.txt +++ b/physics/docs/pdftxt/GFS_SATMEDMFVDIFQ.txt @@ -42,17 +42,6 @@ and tracers and a method for removing negative tracer mixing ratio values have b \sa NCEP Office Note 505 \cite https://doi.org/10.25923/cybh-w893 and 506 \cite https://doi.org/10.25923/5051-3r70 -\section v6_pbl_enh CCPP Physics Updates -\version CCPP-SCM v7.0.0 -- To reduce the negative hurricane intensity biases, a parameterization for environmental wind shear effect -is included in the GFS TKE-EDMF PBL and cumulus schemes. In addition, the entrainment rates are enhanced -proportional to the sub-cloud or PBL mean TKE (turbulent kinetic energy) when TKE is larger than a threshold -value. - -- To enhance the underestimated CAPE forecasts in the GFS, the entrainment rate in the TKE-EDMF PBL scheme is -increased as a function of vegetation fraction and surface roughness length. - - \section intra_satmedmfvdifq Intraphysics Communication - \ref arg_table_satmedmfvdifq_run diff --git a/physics/docs/pdftxt/GFS_drag_suite.txt b/physics/docs/pdftxt/GFS_drag_suite.txt index ed059e1f9..0dafa54d5 100644 --- a/physics/docs/pdftxt/GFS_drag_suite.txt +++ b/physics/docs/pdftxt/GFS_drag_suite.txt @@ -1,8 +1,8 @@ /** -\page GFS_drag_suite GSL Drag Suite Scheme +\page GFS_drag_suite GFS Orographic Drag Scheme \section des_drag Description -The GSL drag suite, developed by NOAA's Global Systems Laboratory, is a set of subgrid-scale orographic drag parameterizations that calculate momentum tendencies due to the effects of unresolved topography. The drag forces they represent are those due to: 1) large-scale gravity (mountain) waves that propagate vertically and break in the free atmosphere of the troposphere, stratosphere and above; 2) low-level flow blocking; 3) small-scale gravity wave drag (GWD) due to mountain waves generated in stable planetary boundary layer (PBL) conditions, typically at nighttime, which break at or near the PBL top; and 4) turbulent orographic form drag (TOFD), which is generated by turbulent pressure perturbations that are correlated with the terrain slope. The distinction between the large-scale and small-scale gravity waves are that the former are generated by topography with horizontal scales on the order of 5 km and greater, which can support vertical propagation through the typical static stabilities found in the free atmosphere, while the latter are generated by topography with smaller horizontal scales down to about 1 km, which can support vertical propagation only in very stable conditions, typically found in nocturnal PBLs. +The GFS orographic drag suite, developed by NOAA's Global Systems Laboratory, Physical Sciences Laboratory and Environmental Modeling Center is a set of subgrid-scale orographic drag parameterizations that calculate momentum tendencies due to the effects of unresolved topography. The drag forces they represent are those due to: 1) large-scale gravity (mountain) waves that propagate vertically and break in the free atmosphere of the troposphere, stratosphere and above; 2) low-level flow blocking; 3) small-scale gravity wave drag (GWD) due to mountain waves generated in stable planetary boundary layer (PBL) conditions, typically at nighttime, which break at or near the PBL top; and 4) turbulent orographic form drag (TOFD), which is generated by turbulent pressure perturbations that are correlated with the terrain slope. The distinction between the large-scale and small-scale gravity waves are that the former are generated by topography with horizontal scales on the order of 5 km and greater, which can support vertical propagation through the typical static stabilities found in the free atmosphere, while the latter are generated by topography with smaller horizontal scales down to about 1 km, which can support vertical propagation only in very stable conditions, typically found in nocturnal PBLs. The large-scale GWD scheme is based on Kim and Doyle (2005) \cite kim_and_doyle_2005 and Choi and Hong (2015)\cite choi_and_hong_2015 and the code originated from the NCAR Weather Research and Forecasting (WRF) model and NOAA RAP/HRRR. The low-level blocking scheme is adapted from Kim and Doyle (2005)\cite kim_and_doyle_2005, with the code also originating from the WRF and RAP/HRRR. The small-scale orographic GWD scheme is based on Steeneveld et al.(2008)\cite steeneveld_et_al_2008 and Tsiringakis et al. (2017) \cite tsiringakis_et_al_2017, and the TOFD scheme is adapted from Beljaars et al. (2004)\cite beljaars_et_al_2004. diff --git a/physics/docs/pdftxt/GFS_ugwpv1_gsldrag.txt b/physics/docs/pdftxt/GFS_ugwpv1_gsldrag.txt index 7c96bbb2e..687f950b7 100644 --- a/physics/docs/pdftxt/GFS_ugwpv1_gsldrag.txt +++ b/physics/docs/pdftxt/GFS_ugwpv1_gsldrag.txt @@ -2,9 +2,7 @@ \page GFS_ugwpv1_gsldrag GFS Unified UGWP Version 1 Scheme \section des_ugwpv1 Description -The "ugwpv1_gsldrag" combines the orographic gravity wave drag (GWD) parameterizations of the GSL drag suite with the version 1 UGWP non-stationary gravity wave drag (NGW) scheme of \cite yudin_et_al_2020. - -For information on the GSL drag suite, click here. +The GFS Unified UGWP version 1 combines the \ref GFS_drag_suite with the version 1 UGWP non-stationary gravity wave drag (NGW) scheme of Yudin et al. (2020)\cite yudin_et_al_2020. The NGW physics scheme parameterizes the effects of non-stationary waves unresolved by dynamical cores. These non-stationary oscillations with periods diff --git a/physics/docs/pdftxt/ccppv7_phy_updates.txt b/physics/docs/pdftxt/ccppv7_phy_updates.txt index 661ff2ff6..a5b1eec66 100644 --- a/physics/docs/pdftxt/ccppv7_phy_updates.txt +++ b/physics/docs/pdftxt/ccppv7_phy_updates.txt @@ -4,23 +4,32 @@ \b General \b Changes: Add GFS_v17, GFS_v16_RRTMGP, and RRFS_v1 suites as new supported suite - New the Community Lake Model \ref CLM_LAKE_model in RRFS_v1 suite -- New \ref GFS_ugwpv1_gsldrag in GFS_v17 suite +- New \ref GFS_ugwpv1_gsldrag in GFS_v17 suite combines the \ref GFS_drag_suite with the version 1 UGWP non-stationary gravity wave drag (NGW) scheme of Yudin et al. (2020)\cite yudin_et_al_2020 - New \ref GFS_RRTMGP_page in GFS_v16_RRTMGP suite -- New RRFS SD scheme in RRFS_v1 suite -- rename GSL drag suite to \todo gsldrag +- New RRFS smoke/dust scheme in RRFS_v1 suite -\b GFS \b Scale-aware \b TKE-EDMF \b PBL \b and \b Cumulus \b Schemes: +\b GFS \b Scale-aware \b SAS \b Cumulus \b Schemes: The updates between GFSv16 and GFSv17 are carefully outlined in Bengtsson and Han (2004)(submitted to WAF). The main updates include: - Implementation of a positive definition mass-flux scheme and a method for removing the negative tracers (Han et al. 2022 \cite Han_et_al_2022) - Introduction of a new closure based on a prognostic evolution of the convective updraft area fraction in both shallow and deep convection (Bengtsson et al. 2022 \cite Bengtsson_2022) - Introduction of 3D effects of cold-pool dynamics and stochastic initiation using self-organizing \ref cellular_automata (Bengtsson et al. 2021 \cite bengtsson_et_al_2021) -- Introduction of environmental wind shear and TKE dependence in convection, to seek improvements in hurricane forecast prediction (Han et al. 2024 \cite Han_2024) +- Introduction of environmental wind shear effect and subgrid TKE dependence in convection, to seek improvements in hurricane forecast prediction (Han et al. 2024 \cite Han_2024) - Stricter convective initiation criteria to allow for more CAPE to build up to address a low CAPE bias in GFSv16 (Han et al. 2021 \cite han_2021) - Reduction of convective rain evaporation rate to address a systematic cold bias near the surface in GFSv16 (Han et al. 2021 \cite han_2021) -\b Thompson \b Microphysics \b Scheme: +\b GFS \b Scale-aware \b TKE-EDMF \b PBL \b Scheme: +- To reduce the negative hurricane intensity biases, a parameterization for environmental wind shear effect +is included in the GFS TKE-EDMF PBL and cumulus schemes. In addition, the entrainment rates are enhanced +proportional to the sub-cloud or PBL mean TKE (turbulent kinetic energy) when TKE is larger than a threshold +value. +- To enhance the underestimated CAPE forecasts in the GFS, the entrainment rate in the TKE-EDMF PBL scheme is +increased as a function of vegetation fraction and surface roughness length. + +\sa Han et al.(2024) \cite Han_2024 + +\b Thompson \b Cloud \b Microphysics \b Scheme: - Ice generation supersaturation requirement reduced from 0.25 to 0.15 to generate more ice at the upper levels and reduce the outgoing longwave radiation bias - Cloud number concentration divided into two parts (over land and others). Number concentration over @@ -55,7 +64,7 @@ Thompson (in RRFS_v1 suite) may vary. - Small increase of buoyancy length scale in convective environment - Patch for ensuring non-zero cloud fractions for all grid cells where cloud mixing ratio is greater than 1e-6 or ice mixing ratio is greater than 1e-9 -\b Subgrid-scale \b (SGS) \b Clouds \b Scheme: +\b Subgrid-scale (\b SGS) \b Clouds \b Scheme: - Bug fix for cloud condensate input into RRTMG radiation - New code section for use with SAS cumulus scheme - Cloud fraction now computed as a mix between the area-dependent form and the modified Chaboureau and Bechtold (2005) \cite Chaboureau_2005 form @@ -73,5 +82,12 @@ Thompson (in RRFS_v1 suite) may vary. \b Unified \b Gravity \b Wave \b Physics \b Scheme: \todo UGWP updates for HR4 +\b NSSL \b Cloud \b Microphysics \b Scheme: +- Update NSSL microphysics with 3-moment option + +\b Radiation +- Coupling of GOCART aerosols with radiation (iaer=2011) +- Add the convective cloud water (liquid water + ice water) in the calculations of cloud water path and ice water path for radiation cloud properties + */ From 1e9b0dd6c9c9da577349e02c1bb6fc912d29ceba Mon Sep 17 00:00:00 2001 From: Lisa Bengtsson Date: Tue, 16 Jul 2024 16:20:14 +0000 Subject: [PATCH 37/80] address seg fault if progsigma=F --- physics/CONV/SAMF/samfdeepcnv.f | 33 +++++++++++++++----------- physics/CONV/SAMF/samfshalcnv.f | 42 +++++++++++++++++---------------- 2 files changed, 41 insertions(+), 34 deletions(-) diff --git a/physics/CONV/SAMF/samfdeepcnv.f b/physics/CONV/SAMF/samfdeepcnv.f index be43795b4..3ad067657 100644 --- a/physics/CONV/SAMF/samfdeepcnv.f +++ b/physics/CONV/SAMF/samfdeepcnv.f @@ -215,7 +215,8 @@ subroutine samfdeepcnv_run (im,km,first_time_step,restart, & ! ! parameters for prognostic sigma closure real(kind=kind_phys) omega_u(im,km),zdqca(im,km),tmfq(im,km), - & omegac(im),zeta(im,km),dbyo1(im,km),sigmab(im),qadv(im,km) + & omegac(im),zeta(im,km),dbyo1(im,km),sigmab(im),qadv(im,km), + & sigmaoutx(im) real(kind=kind_phys) gravinv,invdelt,sigmind,sigminm,sigmins parameter(sigmind=0.01,sigmins=0.03,sigminm=0.01) logical flag_shallow, flag_mid @@ -3423,24 +3424,28 @@ subroutine samfdeepcnv_run (im,km,first_time_step,restart, & endif enddo c -c convective cloud water +! + if(progsigma)then + do i = 1, im + sigmaoutx(i)=max(sigmaout(i,1),0.0) + sigmaoutx(i)=min(sigmaoutx(i),1.0) + enddo + endif c !> - Calculate convective cloud water. do k = 1, km - do i = 1, im - if (cnvflg(i) .and. rn(i) > 0.) then - if (k >= kbcon(i) .and. k < ktcon(i)) then - cnvw(i,k) = cnvwt(i,k) * xmb(i) * dt2 - if(progsigma)then - tem=max(sigmaout(i,k),0.) - tem1=min(tem,1.0) - cnvw(i,k)=cnvw(i,k)*tem1 - else - cnvw(i,k)=cnvw(i,k)*sigmagfm(i) + do i = 1, im + if (cnvflg(i) .and. rn(i) > 0.) then + if (k >= kbcon(i) .and. k < ktcon(i)) then + cnvw(i,k) = cnvwt(i,k) * xmb(i) * dt2 + if(progsigma)then + cnvw(i,k) = cnvw(i,k) * sigmaoutx(i) + else + cnvw(i,k) = cnvw(i,k) * sigmagfm(i) + endif endif endif - endif - enddo + enddo enddo c c convective cloud cover diff --git a/physics/CONV/SAMF/samfshalcnv.f b/physics/CONV/SAMF/samfshalcnv.f index fa9d77a53..ce783ea15 100644 --- a/physics/CONV/SAMF/samfshalcnv.f +++ b/physics/CONV/SAMF/samfshalcnv.f @@ -162,7 +162,7 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, & ! parameters for prognostic sigma closure real(kind=kind_phys) omega_u(im,km),zdqca(im,km),tmfq(im,km), & omegac(im),zeta(im,km),dbyo1(im,km), - & sigmab(im),qadv(im,km) + & sigmab(im),qadv(im,km),sigmaoutx(im) real(kind=kind_phys) gravinv,dxcrtas,invdelt,sigmind,sigmins, & sigminm logical flag_shallow,flag_mid @@ -2397,27 +2397,29 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, & endif enddo c -c convective cloud water -c -!> - Calculate shallow convective cloud water. + if(progsigma)then + do i = 1, im + sigmaoutx(i)=max(sigmaout(i,1),0.0) + sigmaoutx(i)=min(sigmaoutx(i),1.0) + enddo + endif + +c convective cloud water do k = 1, km - do i = 1, im - if (cnvflg(i)) then - if (k >= kbcon(i) .and. k < ktcon(i)) then - cnvw(i,k) = cnvwt(i,k) * xmb(i) * dt2 - if(progsigma)then - tem=max(sigmaout(i,k),0.) - tem1=min(tem,1.0) - cnvw(i,k)=cnvw(i,k)*tem1 - else - cnvw(i,k)=cnvw(i,k)*sigmagfm(i) - endif - endif - endif - enddo + do i = 1, im + if (cnvflg(i)) then + if (k >= kbcon(i) .and. k < ktcon(i)) then + cnvw(i,k) = cnvwt(i,k) * xmb(i) * dt2 + if (progsigma) then + cnvw(i,k) = cnvw(i,k) * sigmaoutx(i) + else + cnvw(i,k) = cnvw(i,k) * sigmagfm(i) + endif + endif + endif + enddo enddo - -c +c c convective cloud cover c !> - Calculate convective cloud cover, which is used when pdf-based cloud fraction is used (i.e., pdfcld=.true.). From 35b15e3c499d6fa3ca742fa3f662286b2dd94990 Mon Sep 17 00:00:00 2001 From: helin wei Date: Tue, 16 Jul 2024 17:31:40 +0000 Subject: [PATCH 38/80] remove unnecessary comments for the snow temperature initialization --- .../UFS_SCM_NEPTUNE/GFS_phys_time_vary.fv3.F90 | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.fv3.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.fv3.F90 index c5e9c8dd9..08d1d0b49 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.fv3.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.fv3.F90 @@ -594,22 +594,8 @@ subroutine GFS_phys_time_vary_init ( isnow = nint(snowxy(ix))+1 ! snowxy <=0.0, dzsno >= 0.0 ! using stc and tgxy to linearly interpolate the snow temp for each layer -!Calculate the total thickness -! total_thickness = sum(dzsno) -! Calculate the temperature difference -! temp_diff=tgxy(ix)-stc(ix,1) -! Calculate the mid-points and interpolate temperatures for each layer -! accumulated_thickness = 0.0 -! do is = isnow, 0 -! accumulated_thickness = accumulated_thickness + dzsno(is) -! mid_points(is) = accumulated_thickness - dzsno(is) / 2.0 -! layer_temp = tgxy(ix) + (mid_points(is) / total_thickness) * temp_diff -! tsnoxy(ix,is) = layer_temp -! end do do is = isnow,0 -! tsnoxy(ix,is) = tgxy(ix) -! tsnoxy(ix,is) = tgxy(ix) + (( sum(dzsno(isnow:is)) -0.5*dzsno(is) )/snd)*(tgxy(ix)-stc(ix,1)) tsnoxy(ix,is) = tgxy(ix) + (( sum(dzsno(isnow:is)) -0.5*dzsno(is) )/snd)*(stc(ix,1)-tgxy(ix)) snliqxy(ix,is) = zero snicexy(ix,is) = one * dzsno(is) * weasd(ix)/snd From 8c89db50f292d1befea953d2f1048589a9ee9908 Mon Sep 17 00:00:00 2001 From: masih Date: Wed, 17 Jul 2024 12:41:50 -0600 Subject: [PATCH 39/80] Fixed fire variable definition optional --- .../UFS_SCM_NEPTUNE/GFS_surface_composites_post.F90 | 3 ++- .../UFS_SCM_NEPTUNE/GFS_surface_composites_post.meta | 2 ++ physics/smoke_dust/rrfs_smoke_wrapper.meta | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.F90 index 76599d475..7623f23da 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.F90 @@ -49,8 +49,9 @@ subroutine GFS_surface_composites_post_run ( fm10_wat, fm10_lnd, fm10_ice, fh2_wat, fh2_lnd, fh2_ice, tsurf_wat, tsurf_lnd, tsurf_ice, cmm_wat, cmm_lnd, cmm_ice, & chh_wat, chh_lnd, chh_ice, gflx_wat, gflx_lnd, gflx_ice, ep1d_wat, ep1d_lnd, ep1d_ice, weasd_lnd, weasd_ice, & snowd_lnd, snowd_ice, tprcp_wat, tprcp_lnd, tprcp_ice, evap_wat, evap_lnd, evap_ice, hflx_wat, hflx_lnd, & - hflx_ice, hflx_fire, evap_fire, qss_wat, qss_lnd, qss_ice, tsfc_wat, zorlo, zorll, zorli, garea + hflx_ice, qss_wat, qss_lnd, qss_ice, tsfc_wat, zorlo, zorll, zorli, garea + real(kind=kind_phys), dimension(:), intent(in), optional :: hflx_fire, evap_fire real(kind=kind_phys), dimension(:), intent(inout) :: zorl, cd, cdq, rb, stress, ffmm, ffhh, uustar, fm10, & fh2, cmm, chh, gflx, ep1d, weasd, snowd, tprcp, evap, hflx, qss, tsfc, tsfco, tsfcl, tisfc diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.meta index e4a364e04..e70eaaa4e 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.meta @@ -824,6 +824,7 @@ type = real kind = kind_phys intent = in + optional = True [evap_fire] standard_name = surface_upward_specific_humidity_flux_of_fire long_name = kinematic surface upward latent heat flux of fire @@ -832,6 +833,7 @@ type = real kind = kind_phys intent = in + optional = True [cpl_fire] standard_name = do_fire_coupling long_name = flag controlling fire_behavior collection (default off) diff --git a/physics/smoke_dust/rrfs_smoke_wrapper.meta b/physics/smoke_dust/rrfs_smoke_wrapper.meta index 0929c8be3..739a43d70 100755 --- a/physics/smoke_dust/rrfs_smoke_wrapper.meta +++ b/physics/smoke_dust/rrfs_smoke_wrapper.meta @@ -968,6 +968,7 @@ type = real kind = kind_phys intent = in + optional = True [cpl_fire] standard_name = do_fire_coupling long_name = flag controlling fire_behavior collection (default off) From d6490c5f09e119c1aa322ce9d43894f13f320716 Mon Sep 17 00:00:00 2001 From: Dusan Jovic Date: Thu, 18 Jul 2024 14:59:14 +0000 Subject: [PATCH 40/80] Declare SIG1T as an array in gcycle.F90 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes Intel LLVM compiler (ifx) error: physics/Interstitials/UFS_SCM_NEPTUNE/gcycle.F90(237): error #8284: If the actual argument is scalar, the dummy argument shall be scalar unless the actual argument is of type character or is an element of an array that is not assumed shape, pointer, or polymorphic.   [SIG1T]      CALL SFCCYCLE (9998, npts, max(lsoil,lsoil_lsm), sig1t, fhcyc, & -----------^ --- physics/Interstitials/UFS_SCM_NEPTUNE/gcycle.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/gcycle.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/gcycle.F90 index c2949f9a4..101977960 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/gcycle.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/gcycle.F90 @@ -107,7 +107,7 @@ subroutine gcycle (me, nthrds, nx, ny, isc, jsc, nsst, tile_num, nlunit, fn_nml, real (kind=kind_io8) :: min_ice(nx*ny) integer :: i_indx(nx*ny), j_indx(nx*ny) character(len=6) :: tile_num_ch - real(kind=kind_phys) :: sig1t + real(kind=kind_phys) :: sig1t(nx*ny) integer :: npts, nb, ix, jx, ls, ios, ll logical :: exists From 58d9673cbb21610bbfcfee15bd38df659b391d57 Mon Sep 17 00:00:00 2001 From: Man Zhang Date: Mon, 22 Jul 2024 17:02:55 -0600 Subject: [PATCH 41/80] finalize the suite names --- .../UFS_SCM_NEPTUNE/GFS_rrtmgp_post.F90 | 2 +- physics/docs/ccpp_doxyfile | 6 +- physics/docs/library.bib | 27 ++- physics/docs/pdftxt/GFS_RRTMGP.txt | 86 ++++++++- physics/docs/pdftxt/GFS_v16_RRTMGP_suite.txt | 42 +++++ physics/docs/pdftxt/GFS_v17_HR3_GP_suite.txt | 72 -------- ..._suite.txt => GFS_v17_p8_ugwpv1_suite.txt} | 19 +- .../{RRFS_v1_suite.txt => HRRR_gf_suite.txt} | 16 +- .../docs/pdftxt/RE7/input_GFS_v16_RRTMGP.nml | 163 ++++++++++++++++++ ...17_HR3.nml => input_GFS_v17_p8_ugwpv1.nml} | 0 .../{input_RRFS_v1.nml => input_HRRR_gf.nml} | 0 .../pdftxt/RE7/suite_SCM_GFS_v16_RRTMGP.xml | 81 +++++++++ ...R3.xml => suite_SCM_GFS_v17_p8_ugwpv1.xml} | 2 +- ..._SCM_RRFS_v1.xml => suite_SCM_HRRR_gf.xml} | 4 +- physics/docs/pdftxt/mainpage.txt | 6 +- 15 files changed, 415 insertions(+), 111 deletions(-) create mode 100644 physics/docs/pdftxt/GFS_v16_RRTMGP_suite.txt delete mode 100644 physics/docs/pdftxt/GFS_v17_HR3_GP_suite.txt rename physics/docs/pdftxt/{GFS_v17_HR3_suite.txt => GFS_v17_p8_ugwpv1_suite.txt} (78%) rename physics/docs/pdftxt/{RRFS_v1_suite.txt => HRRR_gf_suite.txt} (50%) create mode 100644 physics/docs/pdftxt/RE7/input_GFS_v16_RRTMGP.nml rename physics/docs/pdftxt/RE7/{input_GFS_v17_HR3.nml => input_GFS_v17_p8_ugwpv1.nml} (100%) rename physics/docs/pdftxt/RE7/{input_RRFS_v1.nml => input_HRRR_gf.nml} (100%) create mode 100644 physics/docs/pdftxt/RE7/suite_SCM_GFS_v16_RRTMGP.xml rename physics/docs/pdftxt/RE7/{suite_SCM_GFS_v17_HR3.xml => suite_SCM_GFS_v17_p8_ugwpv1.xml} (98%) rename physics/docs/pdftxt/RE7/{suite_SCM_RRFS_v1.xml => suite_SCM_HRRR_gf.xml} (98%) diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_post.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_post.F90 index 0b4479877..a89e5c961 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_post.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_post.F90 @@ -14,7 +14,7 @@ module GFS_rrtmgp_post contains !> \section arg_table_GFS_rrtmgp_post_run Argument Table -!! \htmlinclude GFS_rrtmgp_post.html +!! \htmlinclude GFS_rrtmgp_post_run.html !!The all-sky radiation tendency is computed, the clear-sky tendency is computed !! if requested. !! diff --git a/physics/docs/ccpp_doxyfile b/physics/docs/ccpp_doxyfile index 1b6423813..c8f933e46 100644 --- a/physics/docs/ccpp_doxyfile +++ b/physics/docs/ccpp_doxyfile @@ -946,9 +946,9 @@ INPUT = pdftxt/mainpage.txt \ pdftxt/ccppv7_phy_updates.txt \ pdftxt/all_schemes_list.txt \ pdftxt/GFS_v16_suite.txt \ - pdftxt/GFS_v17_HR3_suite.txt \ - pdftxt/GFS_v17_HR3_GP_suite.txt \ - pdftxt/RRFS_v1_suite.txt \ + pdftxt/GFS_v16_RRTMGP_suite.txt \ + pdftxt/GFS_v17_p8_ugwpv1_suite.txt \ + pdftxt/HRRR_gf_suite.txt \ pdftxt/WoFS_v0_suite.txt \ pdftxt/RRFS_SGSCLOUD.txt \ pdftxt/GFS_RRTMG.txt \ diff --git a/physics/docs/library.bib b/physics/docs/library.bib index 6fe457f80..ae06b218f 100644 --- a/physics/docs/library.bib +++ b/physics/docs/library.bib @@ -1,11 +1,30 @@ %% This BibTeX bibliography file was created using BibDesk. %% https://bibdesk.sourceforge.io/ -%% Created for Man Zhang at 2024-07-02 13:44:09 -0600 +%% Created for Man Zhang at 2024-07-16 12:25:34 -0600 %% Saved with string encoding Unicode (UTF-8) + + +@article{Yang_2013, + author = {Yang, Ping and Bi, Lei and Baum, Bryan A. and Liou, Kuo-Nan and Kattawar, George W. and Mishchenko, Michael I. and Cole, Benjamin}, + date-added = {2024-07-16 12:25:15 -0600}, + date-modified = {2024-07-16 12:25:15 -0600}, + doi = {10.1175/jas-d-12-039.1}, + issn = {1520-0469}, + journal = {Journal of the Atmospheric Sciences}, + month = jan, + number = {1}, + pages = {330{\^a}€“347}, + publisher = {American Meteorological Society}, + title = {Spectrally Consistent Scattering, Absorption, and Polarization Properties of Atmospheric Ice Crystals at Wavelengths from 0.2 to 100 {\^I}¼m}, + url = {http://dx.doi.org/10.1175/JAS-D-12-039.1}, + volume = {70}, + year = {2013}, + bdsk-url-1 = {http://dx.doi.org/10.1175/JAS-D-12-039.1}} + @inproceedings{yudin_et_al_2020, author = {Yudin, V. A. and Yang, F. and Karol, S. I. and Fuller-Rowell T. J. and Kubaryk, A. and Juang, H. and Kar, S. and Alpert, J. C. and Li, Z.}, booktitle = {1st UFS Users' Workshop}, @@ -22,9 +41,9 @@ @article{han_2021 publisher = {National Centers for Environmental Prediction (U.S.)}, title = {Updates in the NCEP GFS Cumulus Convection, Vertical Turbulent Mixing, and Surface Layer Physics}, url = {https://repository.library.noaa.gov/view/noaa/33881}, - year = {2021}} - - + year = {2021}, + bdsk-url-1 = {https://repository.library.noaa.gov/view/noaa/33881}, + bdsk-url-2 = {https://doi.org/10.25923/CYBH-W893}} @article{Han_2024, author = {Han, Jongil and Peng, Jiayi and Li, Wei and Wang, Weiguo and Zhang, Zhan and Yang, Fanglin and Zheng, Weizhong}, diff --git a/physics/docs/pdftxt/GFS_RRTMGP.txt b/physics/docs/pdftxt/GFS_RRTMGP.txt index b5a40df8e..e31c9bc32 100644 --- a/physics/docs/pdftxt/GFS_RRTMGP.txt +++ b/physics/docs/pdftxt/GFS_RRTMGP.txt @@ -1,10 +1,92 @@ /** \page GFS_RRTMGP_page GFS RRTMGP Shortwave/Longwave Radiation Scheme -\section des_rrtmgp Description +\section des_rte_rrtmgp Description -\section intraphysics_rrtmgp Intraphysics Communication + RTE+RRTMGP is a set of codes for computing radiative fluxes in planetary atmospheres. + + RRTMGP uses a k-distribution to provide an optical description (absorption and possibly + Rayleigh optical depth) of the gaseous atmosphere, along with the relevant source functions, + on a pre-determined spectral grid given temperatures, pressures, and gas concentration. + The k-distribution currently distributed with this package is applicable to the Earth's + atmosphere under present-day, pre-industrial, and 4xCO2 conditions. + + RTE computes fluxes given spectrally-resolved optical descriptions and source functions. + The fluxes are normally summarized or reduced via a user extensible class. + +\subsection Clear-sky-opt Clear-sky Optical Properties + + The RRTMGP LW algorithm contains 128 unevenly distributed g-points (quadrature points) in 16 + broad spectral bands, while the SW algorithm includes 112 g-points + in 14 bands. In addition to the major atmospheric absorbing gases of + ozone, water vapor, and carbon dioxide, the algorithm also includes + various minor absorbing species such as methane, nitrous oxide, + oxygen, and in the longwave up to four types of halocarbons (CFCs). + +\subsection Aerosol-opt Aerosol Optical Properties + + Aerosol optical properties for the RRTMGP bands are computed externally and provided to + the radiation and incremented onto the gaseous optics. This is identical to how the aerosol + optics are included within RRTMG. There are no internal assumptions on aerosol properties + within the radiation scheme. + +\subsection Cloud-opt Cloud Optical Properties + + Cloud optical properties are computed as a function of effective radius for the + RRTMGP bands. Based on Mie calculations for liquid and results from Yang et al. 2013 \cite Yang_2013 + for ice with variable surface roughness. + + To represent statistically the unresolved subgrid cloud variability + when dealing multi layered clouds, a Monte-Carlo Independent Column + Approximation (\b McICA) method is used prior to calling the RTE. + Several cloud overlap methods, including maximum-random, exponential, + and exponential-random are available in both LW and SW + radiation calculations. (\b Unlike RRTMG, in RRTMGP the subgrid sampling + step is not within the spectral loop, but rather happens outside of + the RTE.) + +\subsection Radiative fields from model outputs (\f$W m^{-2}\f$) +- At surface total sky + - DLWRFsfc: Downward LW + - DSWRFsfc: Downward SW + - ULWRFsfc: Upward LW + - USWRFsfc: Upward SW + - NBDSFsfc: Near IR beam downward + - NDDSFsfc: Near IR diffuse downward + - VBDSFsfc: UV+Visible beam downward + - VDDSFsfc: UV+Visible diffuse downward + - DUVBsfc: UV-B downward flux +- At surface clear sky + - CSDLFsfc: Downward LW + - CSDSFsfc: Downward SW + - CSULFsfc: Upward LW + - CSULFsfc: Upward LW + - CSUSFsfc: Upward sw + - CDUVBsfc: UV-B downward flux +- At TOA total sky + - DSWRFtoa: Downward SW + - ULWRFtoa: Upward LW + - USWRFtoa: Upward SW +- At TOA clear sky: + - CSULFtoa: Upward LW + - CSUSFtoa: Upward SW + +\section intraphysics_rrtmgp Intraphysics Communication + + \b GFS RRTMGP pre-processing used, for both Longwave and Shortwave: \ref arg_table_GFS_rrtmgp_pre_run + + \b GFS surface-to-RRTMGP interface: \ref arg_table_GFS_radiation_surface_run + + \b GFS RRTMGP cloud microphysics interface: \ref arg_table_GFS_rrtmgp_cloud_mp_run + + \b GFS RRTMGP cloud overlap interface: \ref arg_table_GFS_rrtmgp_cloud_overlap_run + + \b GFS cloud diagnostics: \ref arg_table_GFS_cloud_diagnostics_run + + \b GFS RRTMGP aerosol interface: \ref arg_table_rrtmgp_aerosol_optics_run + + \b GFS RRTMGP-Longwave radiation driver: \ref arg_table_rrtmgp_lw_main_run + + \b GFS RRTMGP-Shortwave radiation driver: \ref arg_table_rrtmgp_sw_main_run + + \b GFS RRTMGP post-processing, for both Longwave and Shortwave: \ref arg_table_GFS_rrtmgp_post_run \section gen_al_rrtmgp General Algorithm + + \ref gen_rrtmgp_lw + + \ref gen_rrtmgp_sw + +\section rrtmgp_enh CCPP Physics Updates +\version CCPP v7.0.0 */ diff --git a/physics/docs/pdftxt/GFS_v16_RRTMGP_suite.txt b/physics/docs/pdftxt/GFS_v16_RRTMGP_suite.txt new file mode 100644 index 000000000..8b11cfc9c --- /dev/null +++ b/physics/docs/pdftxt/GFS_v16_RRTMGP_suite.txt @@ -0,0 +1,42 @@ +/** +\page GFS_v16_RRTMGP_page GFS_v16_RRTMGP Suite + +\section gfsv_16HR3_GP_suite_overview Overview + +This is an experimental version 16 of the Global Forecast System (GFS) with RRTMGP, which replaces RRTMG +in operational GFS v16 physics suite. + +\section sdf_gfsv16GP Suite Definition File +\include suite_SCM_GFS_v16_RRTMGP.xml + +\section gfs16GP_nml_opt_des Namelist +- General physics options +\snippet input_GFS_v16_RRTMGP.nml GFS_PHYSICS_NML +- \ref GFS_UNIFIED_UGWP related options +\snippet input_GFS_v16_RRTMGP.nml CIRES_UGWP_NML + +- nstf_name = \f$[2,0,0,0,0]^1 [2,1,0,0,0]^2\f$ + - \f$^1\f$ NSST is on and coupled with spin up off + - \f$^2\f$ NSST is on and coupled with spin up on + +- Grid-spacing dependency of \p cdmbgwd + - \b C48: cdmbgwd="0.071,2.1,1.0,1.0" + - \b C96: cdmbgwd="0.14,1.8,1.0,1.0" + - \b C192: cdmbgwd="0.23,1.5,1.0,1.0" + - \b C384: cdmbgwd="1.1,0.72,1.0,1.0" + - \b C768: cdmbgwd="4.0,0.15,1.0,1.0" + - \b C1152: cdmbgwd="4.0,0.10,1.0,1.0" + - \b C3072: cdmbgwd="4.0,0.05,1.0,1.0" + +- Grid-spacing dependency of \p knob_ugwp_tauamp + - \b C48: knob_ugwp_tauamp=6.0e-3 + - \b C96: knob_ugwp_tauamp=3.0e-3 + - \b C192: knob_ugwp_tauamp=1.5e-3 + - \b C384: knob_ugwp_tauamp=0.8e-3 + - \b C768: knob_ugwp_tauamp=0.5e-3 + - \b C1152: knob_ugwp_tauamp=0.35e-3 + - \b C3072: knob_ugwp_tauamp=0.13e-3 + +- Grid-spacing dependency of \p xr_cnvcld + - \b C48 and \b C96: xr_cnvcld =.false. +*/ diff --git a/physics/docs/pdftxt/GFS_v17_HR3_GP_suite.txt b/physics/docs/pdftxt/GFS_v17_HR3_GP_suite.txt deleted file mode 100644 index 6366d8086..000000000 --- a/physics/docs/pdftxt/GFS_v17_HR3_GP_suite.txt +++ /dev/null @@ -1,72 +0,0 @@ -/** -\page GFS_v17_HR3_RRTMGP_page GFS_v17_RRTMGP Suite - -\section gfsv_17HR3_GP_suite_overview Overview - -Version 17 of the Global Forecast System (GFS) is scheduled for operational implementation by the NOAA -National Centers for Environmental Prediction (NCEP) in 2024. The GFS_v17 suite is a prototype of -the GFS_v17 suite, and is expected to evolve before the implementation. It is available for use -with the CCPP SCM. The primary differences between the GFS_v16 and GFS_v17 suites are: -- \b Microphysics: The replacement of \ref GFDL_cloud with \ref THOMPSON -- PBL and Convection updates -- \b Gravity \b Wave \b Drag: The replacement of \ref GFS_UGWP_v0 with \ref GFS_ugwpv1_gsldrag -- \b Land \b Surface \b Model: The replacement of \ref GFS_NOAH with \ref NoahMP - -The GFS_v17 suite uses the parameterizations in the following order: - - \ref GFS_RRTMGP_page - - \ref GFS_SFCLYR - - \ref GFS_NSST - - \ref NoahMP - - \ref GFS_SFCSICE - - \ref GFS_SATMEDMFVDIFQ - - \ref GFS_ugwpv1_gsldrag - - \ref GFS_OZPHYS - - \ref GFS_H2OPHYS - - \ref GFS_SAMFdeep - - \ref GFS_SAMFshal - - \ref THOMPSON - - -\section sdf_gfsv17HR3GP Suite Definition File -\include suite_SCM_GFS_v17_HR3_RRTMGP.xml - -\section gfs17HR3GP_nml_opt_des Namelist -- General physics options -\snippet input_GFS_v17_HR3_RRTMGP.nml GFS_PHYSICS_NML -- \ref GFS_UNIFIED_UGWP related options -\snippet input_GFS_v17_HR3_RRTMGP.nml CIRES_UGWP_NML - -- nstf_name = \f$[2,0,0,0,0]^1 [2,1,0,0,0]^2\f$ - - \f$^1\f$ NSST is on and coupled with spin up off - - \f$^2\f$ NSST is on and coupled with spin up on - -- Grid-spacing dependency of \p cdmbgwd - - \b C48: cdmbgwd="0.071,2.1,1.0,1.0" - - \b C96: cdmbgwd="0.14,1.8,1.0,1.0" - - \b C192: cdmbgwd="0.23,1.5,1.0,1.0" - - \b C384: cdmbgwd="1.1,0.72,1.0,1.0" - - \b C768: cdmbgwd="4.0,0.15,1.0,1.0" - - \b C1152: cdmbgwd="4.0,0.10,1.0,1.0" - - \b C3072: cdmbgwd="4.0,0.05,1.0,1.0" - -- Grid-spacing dependency of \p cdmbgwd_gsl - - \b C48: cdmbgwd_gsl="40.0,1.77,1.0,1.0" - - \b C96: cdmbgwd_gsl="20.0,2.5,1.0,1.0" - - \b C192: cdmbgwd_gsl="10.0,3.5,1.0,1.0" - - \b C384: cdmbgwd_gsl="5.0,5.0,1.0,1.0" - - \b C768: cdmbgwd_gsl="2.5,7.5,1.0,1.0" - - \b C1152: cdmbgwd_gsl="1.67,8.8,1.0,1.0" - - \b C3072: cdmbgwd_gsl="0.625,14.1,1.0,1.0" - -- Grid-spacing dependency of \p knob_ugwp_tauamp - - \b C48: knob_ugwp_tauamp=6.0e-3 - - \b C96: knob_ugwp_tauamp=3.0e-3 - - \b C192: knob_ugwp_tauamp=1.5e-3 - - \b C384: knob_ugwp_tauamp=0.8e-3 - - \b C768: knob_ugwp_tauamp=0.5e-3 - - \b C1152: knob_ugwp_tauamp=0.35e-3 - - \b C3072: knob_ugwp_tauamp=0.13e-3 - -- Grid-spacing dependency of \p xr_cnvcld - - \b C48 and \b C96: xr_cnvcld =.false. -*/ diff --git a/physics/docs/pdftxt/GFS_v17_HR3_suite.txt b/physics/docs/pdftxt/GFS_v17_p8_ugwpv1_suite.txt similarity index 78% rename from physics/docs/pdftxt/GFS_v17_HR3_suite.txt rename to physics/docs/pdftxt/GFS_v17_p8_ugwpv1_suite.txt index dd0b27d4e..187ce8c5b 100644 --- a/physics/docs/pdftxt/GFS_v17_HR3_suite.txt +++ b/physics/docs/pdftxt/GFS_v17_p8_ugwpv1_suite.txt @@ -1,10 +1,10 @@ /** -\page GFS_v17_HR3_page GFS_v17 Suite +\page GFS_v17_p8_ugwpv1_page GFS_v17_p8_ugwpv1 Suite \section gfsv_17_suite_overview Overview Version 17 of the Global Forecast System (GFS) is scheduled for operational implementation by the NOAA -National Centers for Environmental Prediction (NCEP) in 2024. The GFS_v17 suite is a prototype of +National Centers for Environmental Prediction (NCEP) in 2024. The GFS_v17_p8_ugwpv1 suite is a prototype of the GFS_v17 suite, and is expected to evolve before the implementation. It is available for use with the CCPP SCM. The primary differences between the GFS_v16 and GFS_v17 suites are: - \b Microphysics: The replacement of \ref GFDL_cloud with \ref THOMPSON @@ -28,13 +28,13 @@ The GFS_v17 suite uses the parameterizations in the following order: \section sdf_gfsv17p8 Suite Definition File -\include suite_SCM_GFS_v17_HR3.xml +\include suite_SCM_GFS_v17_p8_ugwpv1.xml \section gfs17_nml_opt_des Namelist - General physics options -\snippet input_GFS_v17_HR3.nml GFS_PHYSICS_NML +\snippet input_GFS_v17_p8_ugwpv1.nml GFS_PHYSICS_NML - \ref GFS_UNIFIED_UGWP related options -\snippet input_GFS_v17_HR3.nml CIRES_UGWP_NML +\snippet input_GFS_v17_p8_ugwpv1.nml CIRES_UGWP_NML - nstf_name = \f$[2,0,0,0,0]^1 [2,1,0,0,0]^2\f$ - \f$^1\f$ NSST is on and coupled with spin up off @@ -49,15 +49,6 @@ The GFS_v17 suite uses the parameterizations in the following order: - \b C1152: cdmbgwd="4.0,0.10,1.0,1.0" - \b C3072: cdmbgwd="4.0,0.05,1.0,1.0" -- Grid-spacing dependency of \p cdmbgwd_gsl - - \b C48: cdmbgwd_gsl="40.0,1.77,1.0,1.0" - - \b C96: cdmbgwd_gsl="20.0,2.5,1.0,1.0" - - \b C192: cdmbgwd_gsl="10.0,3.5,1.0,1.0" - - \b C384: cdmbgwd_gsl="5.0,5.0,1.0,1.0" - - \b C768: cdmbgwd_gsl="2.5,7.5,1.0,1.0" - - \b C1152: cdmbgwd_gsl="1.67,8.8,1.0,1.0" - - \b C3072: cdmbgwd_gsl="0.625,14.1,1.0,1.0" - - Grid-spacing dependency of \p knob_ugwp_tauamp - \b C48: knob_ugwp_tauamp=6.0e-3 - \b C96: knob_ugwp_tauamp=3.0e-3 diff --git a/physics/docs/pdftxt/RRFS_v1_suite.txt b/physics/docs/pdftxt/HRRR_gf_suite.txt similarity index 50% rename from physics/docs/pdftxt/RRFS_v1_suite.txt rename to physics/docs/pdftxt/HRRR_gf_suite.txt index 568bc4872..5eba3a454 100644 --- a/physics/docs/pdftxt/RRFS_v1_suite.txt +++ b/physics/docs/pdftxt/HRRR_gf_suite.txt @@ -1,12 +1,12 @@ /** -\page RRFS_v1_page RRFS_v1 Suite +\page HRRR_gf_page HRRR_gf Suite \section RRFS_v1_suite_overview Overview -The RRFS_v1 suite is one of the candidates for the future operational implementation of +The HRRR_gf suite is one of the candidates for the future operational implementation of the Rapid Refresh Forecast System (RRFS), which can be configured using the UFS SRW App. -The RRFS_v1 suite uses the parameterizations in the following order: +The HRRR_gf suite uses the parameterizations in the following order: - \ref SGSCLOUD_page - \ref GFS_RRTMG_page - \ref SFC_MYNNSFL @@ -19,14 +19,12 @@ The RRFS_v1 suite uses the parameterizations in the following order: - \ref CU_GF - \ref THOMPSON -\section sdf_rrfsv1suite Suite Definition File -\include suite_SCM_RRFS_v1.xml +\section sdf_hrrrgfsuite Suite Definition File +\include suite_SCM_HRRR_gf.xml -\section rrfs_nml_option Namelist +\section hrrr_gf_nml_option Namelist - General physics options -\snippet input_RRFS_v1.nml GFS_PHYSICS_NML -- \ref GFS_UGWP_v0 related options -\snippet input_RRFS_v1.nml CIRES_UGWP_NML +\snippet input_HRRR_gf.nml GFS_PHYSICS_NML diff --git a/physics/docs/pdftxt/RE7/input_GFS_v16_RRTMGP.nml b/physics/docs/pdftxt/RE7/input_GFS_v16_RRTMGP.nml new file mode 100644 index 000000000..bf5fcf62e --- /dev/null +++ b/physics/docs/pdftxt/RE7/input_GFS_v16_RRTMGP.nml @@ -0,0 +1,163 @@ +!>[GFS_PHYSICS_NML] +&gfs_physics_nml + cal_pre = .false. + cdmbgwd = 4.0, 0.15, 1.0, 1.0 + cnvcld = .true. + cnvgwd = .true. + debug = .false. + do_shum = .false. + do_skeb = .false. + do_spp = .false. + do_sppt = .false. + do_tofd = .true. + do_ugwp = .false. + dspheat = .true. + effr_in = .true. + fhcyc = 0 + fhlwr = 1200.0 + fhswr = 1200.0 + fhzero = 1.0 + h2o_phys = .true. + hybedmf = .false. + iaer = 5111 + ialb = 1 + iau_inc_files = '' + icliq_sw = 2 + ico2 = 2 + iems = 1 + imfdeepcnv = 2 + imfshalcnv = 2 + imp_physics = 11 + iopt_alb = 2 + iopt_btr = 1 + iopt_crs = 1 + iopt_dveg = 1 + iopt_frz = 1 + iopt_inf = 1 + iopt_rad = 1 + iopt_run = 1 + iopt_sfc = 1 + iopt_snf = 4 + iopt_stc = 1 + iopt_tbot = 2 + iovr = 3 + isatmedmf = 1 + isol = 2 + isot = 1 + isubc_lw = 2 + isubc_sw = 2 + ivegsrc = 1 + ldiag3d = .true. + ldiag_ugwp = .false. + lgfdlmprad = .true. + lheatstrg = .true. + lndp_type = 0 + lsm = 1 + lsoil = 4 + lwhtr = .true. + n_var_lndp = 0 + n_var_spp = 0 + nsfullradar_diag = 3600 + nst_anl = .true. + nstf_name = 2, 1, 0, 0, 0 + oz_phys = .false. + oz_phys_2015 = .true. + pdfcld = .false. + prautco = 0.00015, 0.00015 + pre_rad = .false. + print_diff_pgr = .false. + prslrd0 = 0.0 + psautco = 0.0008, 0.0005 + qdiag3d = .true. + random_clds = .false. + redrag = .true. + satmedmf = .true. + shal_cnv = .true. + swhtr = .true. + trans_trac = .true. + use_ufo = .true. + do_RRTMGP = .true. + doGP_cldoptics_LUT = .true. + doGP_lwscat = .true. + active_gases = 'h2o_co2_o3_n2o_ch4_o2' + ngases = 6 + rrtmgp_root = '../../ccpp/physics/physics/rte-rrtmgp/' + lw_file_gas = 'rrtmgp/data/rrtmgp-data-lw-g128-210809.nc' + lw_file_clouds = 'extensions/cloud_optics/rrtmgp-cloud-optics-coeffs-lw.nc' + sw_file_gas = 'rrtmgp/data/rrtmgp-data-sw-g112-210809.nc' + sw_file_clouds = 'extensions/cloud_optics/rrtmgp-cloud-optics-coeffs-sw.nc' + rrtmgp_nGptsSW = 112 + rrtmgp_nGptsLW = 128 + rrtmgp_nBandsLW = 16 + rrtmgp_nBandsSW = 14 +/ +!![GFS_PHYSICS_NML] + +!>[GFDL_CLOUD_MICROPHYSICS_NML] +&gfdl_cloud_microphysics_nml + c_cracw = 0.8 + c_paut = 0.5 + c_pgacs = 0.01 + c_psaci = 0.05 + ccn_l = 300.0 + ccn_o = 100.0 + const_vg = .false. + const_vi = .false. + const_vr = .false. + const_vs = .false. + de_ice = .false. + do_qa = .false. + do_sedi_heat = .false. + dw_land = 0.16 + dw_ocean = 0.1 + fast_sat_adj = .false. + fix_negative = .true. + icloud_f = 1 + mono_prof = .true. + mp_time = 150.0 + prog_ccn = .false. + qi0_crt = 8e-05 + qi_lim = 1.0 + ql_gen = 0.001 + ql_mlt = 0.001 + qs0_crt = 0.001 + rad_graupel = .true. + rad_rain = .true. + rad_snow = .true. + reiflag = 2 + rh_inc = 0.3 + rh_inr = 0.3 + rh_ins = 0.3 + rthresh = 1e-05 + sedi_transport = .true. + tau_g2v = 900.0 + tau_i2s = 1000.0 + tau_l2v = 225.0 + tau_v2l = 150.0 + use_ccn = .true. + use_ppm = .false. + vg_max = 12.0 + vi_max = 1.0 + vr_max = 12.0 + vs_max = 2.0 + z_slope_ice = .true. + z_slope_liq = .true. +/ +!![GFDL_CLOUD_MICROPHYSICS_NML] + +!>[CIRES_UGWP_NML] +&cires_ugwp_nml + knob_ugwp_azdir = 2, 4, 4, 4 + knob_ugwp_doaxyz = 1 + knob_ugwp_doheat = 1 + knob_ugwp_dokdis = 1 + knob_ugwp_effac = 1, 1, 1, 1 + knob_ugwp_ndx4lh = 1 + knob_ugwp_solver = 2 + knob_ugwp_source = 1, 1, 0, 0 + knob_ugwp_stoch = 0, 0, 0, 0 + knob_ugwp_version = 0 + knob_ugwp_wvspec = 1, 25, 25, 25 + launch_level = 27 +/ +!! [CIRES_UGWP_NML] diff --git a/physics/docs/pdftxt/RE7/input_GFS_v17_HR3.nml b/physics/docs/pdftxt/RE7/input_GFS_v17_p8_ugwpv1.nml similarity index 100% rename from physics/docs/pdftxt/RE7/input_GFS_v17_HR3.nml rename to physics/docs/pdftxt/RE7/input_GFS_v17_p8_ugwpv1.nml diff --git a/physics/docs/pdftxt/RE7/input_RRFS_v1.nml b/physics/docs/pdftxt/RE7/input_HRRR_gf.nml similarity index 100% rename from physics/docs/pdftxt/RE7/input_RRFS_v1.nml rename to physics/docs/pdftxt/RE7/input_HRRR_gf.nml diff --git a/physics/docs/pdftxt/RE7/suite_SCM_GFS_v16_RRTMGP.xml b/physics/docs/pdftxt/RE7/suite_SCM_GFS_v16_RRTMGP.xml new file mode 100644 index 000000000..b427bcf25 --- /dev/null +++ b/physics/docs/pdftxt/RE7/suite_SCM_GFS_v16_RRTMGP.xml @@ -0,0 +1,81 @@ + + + + + + GFS_time_vary_pre + GFS_rrtmgp_setup + GFS_rad_time_vary + GFS_phys_time_vary + + + + + GFS_suite_interstitial_rad_reset + GFS_rrtmgp_pre + GFS_radiation_surface + GFS_rrtmgp_cloud_mp + GFS_rrtmgp_cloud_overlap + GFS_cloud_diagnostics + rrtmgp_aerosol_optics + rrtmgp_sw_main + rrtmgp_lw_main + GFS_rrtmgp_post + + + + + GFS_suite_interstitial_phys_reset + GFS_suite_stateout_reset + get_prs_fv3 + GFS_suite_interstitial_1 + GFS_surface_generic_pre + GFS_surface_composites_pre + dcyc2t3 + GFS_surface_composites_inter + GFS_suite_interstitial_2 + + + + sfc_diff + GFS_surface_loop_control_part1 + sfc_nst_pre + sfc_nst + sfc_nst_post + lsm_noah + sfc_sice + GFS_surface_loop_control_part2 + + + + GFS_surface_composites_post + sfc_diag + sfc_diag_post + GFS_surface_generic_post + GFS_PBL_generic_pre + satmedmfvdifq + GFS_PBL_generic_post + GFS_GWD_generic_pre + cires_ugwp + cires_ugwp_post + GFS_GWD_generic_post + GFS_suite_stateout_update + h2ophys + get_phi_fv3 + GFS_suite_interstitial_3 + GFS_DCNV_generic_pre + samfdeepcnv + GFS_DCNV_generic_post + GFS_SCNV_generic_pre + samfshalcnv + GFS_SCNV_generic_post + GFS_suite_interstitial_4 + cnvc90 + GFS_MP_generic_pre + gfdl_cloud_microphys + GFS_MP_generic_post + maximum_hourly_diagnostics + GFS_physics_post + + + diff --git a/physics/docs/pdftxt/RE7/suite_SCM_GFS_v17_HR3.xml b/physics/docs/pdftxt/RE7/suite_SCM_GFS_v17_p8_ugwpv1.xml similarity index 98% rename from physics/docs/pdftxt/RE7/suite_SCM_GFS_v17_HR3.xml rename to physics/docs/pdftxt/RE7/suite_SCM_GFS_v17_p8_ugwpv1.xml index 92effe13c..865fe47f6 100644 --- a/physics/docs/pdftxt/RE7/suite_SCM_GFS_v17_HR3.xml +++ b/physics/docs/pdftxt/RE7/suite_SCM_GFS_v17_p8_ugwpv1.xml @@ -1,6 +1,6 @@ - + diff --git a/physics/docs/pdftxt/RE7/suite_SCM_RRFS_v1.xml b/physics/docs/pdftxt/RE7/suite_SCM_HRRR_gf.xml similarity index 98% rename from physics/docs/pdftxt/RE7/suite_SCM_RRFS_v1.xml rename to physics/docs/pdftxt/RE7/suite_SCM_HRRR_gf.xml index ef1c73157..f80ab4c7c 100644 --- a/physics/docs/pdftxt/RE7/suite_SCM_RRFS_v1.xml +++ b/physics/docs/pdftxt/RE7/suite_SCM_HRRR_gf.xml @@ -1,6 +1,6 @@ - + GFS_time_vary_pre @@ -76,4 +76,4 @@ GFS_physics_post - \ No newline at end of file + diff --git a/physics/docs/pdftxt/mainpage.txt b/physics/docs/pdftxt/mainpage.txt index b6314d4d4..4bea16a13 100644 --- a/physics/docs/pdftxt/mainpage.txt +++ b/physics/docs/pdftxt/mainpage.txt @@ -18,9 +18,9 @@ behavior out to about two weeks. The CCPP parameterizations are aggregated in suites by the host models. In this release, the CCPP Single Column Model (SCM), developed by the Development Testbed Center (DTC), supports suites: - \ref GFS_v16_page -- \ref GFS_v17_HR3_page -- \ref GFS_v17_HR3_RRTMGP_page -- \ref RRFS_v1_page +- \ref GFS_v16_RRTMGP_page +- \ref GFS_v17_p8_ugwpv1_page +- \ref HRRR_gf_page - \ref WoFS_v0_page In this website you will find documentation on various aspects of each From c6da115eac35ce542b1e4515dbe202477be4cc3b Mon Sep 17 00:00:00 2001 From: Man Zhang Date: Tue, 23 Jul 2024 17:11:30 -0600 Subject: [PATCH 42/80] address Ligia's review --- physics/GWD/ugwpv1_gsldrag.F90 | 8 +- physics/MP/Morrison_Gettelman/micro_mg3_0.F90 | 2 - physics/docs/ccpp_doxyfile | 3 +- physics/docs/pdftxt/GFS_RRTMGP.txt | 6 - physics/docs/pdftxt/GFS_UGWPv0.txt | 2 +- ...{GFS_ugwpv1_gsldrag.txt => GFS_ugwpv1.txt} | 10 +- .../docs/pdftxt/GFS_v17_p8_ugwpv1_suite.txt | 4 +- .../docs/pdftxt/RE7/input_GFS_v16_RRTMGP.nml | 286 +++++++++--------- physics/docs/pdftxt/all_schemes_list.txt | 9 +- physics/docs/pdftxt/mainpage.txt | 20 +- 10 files changed, 171 insertions(+), 179 deletions(-) rename physics/docs/pdftxt/{GFS_ugwpv1_gsldrag.txt => GFS_ugwpv1.txt} (87%) diff --git a/physics/GWD/ugwpv1_gsldrag.F90 b/physics/GWD/ugwpv1_gsldrag.F90 index a7eb762b8..298a71047 100644 --- a/physics/GWD/ugwpv1_gsldrag.F90 +++ b/physics/GWD/ugwpv1_gsldrag.F90 @@ -288,9 +288,7 @@ end subroutine ugwpv1_gsldrag_finalize ! ----------------------------------------------------------------------- ! order = dry-adj=>conv=mp-aero=>radiation -sfc/land- chem -> vertdiff-> [rf-gws]=> ion-re ! ----------------------------------------------------------------------- -!>@brief These subroutines and modules execute the CIRES UGWP Version 0 -!>\defgroup ugwpv1_gsldrag_run Unified Gravity Wave Physics General Algorithm -!> @{ +!>\section gen_ugwpv1_gsldrag_run Unified Gravity Wave Physics General Algorithm !! The physics of NGWs in the UGWP framework (Yudin et al. 2018 \cite yudin_et_al_2018) is represented by four GW-solvers, which is introduced in Lindzen (1981) \cite lindzen_1981, Hines (1997) \cite hines_1997, Alexander and Dunkerton (1999) \cite alexander_and_dunkerton_1999, and Scinocca (2003) \cite scinocca_2003. The major modification of these GW solvers is represented by the addition of the background dissipation of temperature and winds to the saturation criteria for wave breaking. This feature is important in the mesosphere and thermosphere for WAM applications and it considers appropriate scale-dependent dissipation of waves near the model top lid providing the momentum and energy conservation in the vertical column physics (Shaw and Shepherd 2009 \cite shaw_and_shepherd_2009). In the UGWP-v0, the modification of Scinocca (2003) \cite scinocca_2003 scheme for NGWs with non-hydrostatic and rotational effects for GW propagations and background dissipation is represented by the subroutine fv3_ugwp_solv2_v0. In the next release of UGWP, additional GW-solvers will be implemented along with physics-based triggering of waves and stochastic approaches for selection of GW modes characterized by horizontal phase velocities, azimuthal directions and magnitude of the vertical momentum flux (VMF). !! !! In UGWP-v0, the specification for the VMF function is adopted from the GEOS-5 global atmosphere model of GMAO NASA/GSFC, as described in Molod et al. (2015) \cite molod_et_al_2015 and employed in the MERRRA-2 reanalysis (Gelaro et al., 2017 \cite gelaro_et_al_2017). The Fortran subroutine \ref slat_geos5_tamp describes the latitudinal shape of VMF-function as displayed in Figure 3 of Molod et al. (2015) \cite molod_et_al_2015. It shows that the enhanced values of VMF in the equatorial region gives opportunity to simulate the QBO-like oscillations in the equatorial zonal winds and lead to more realistic simulations of the equatorial dynamics in GEOS-5 operational and MERRA-2 reanalysis products. For the first vertically extended version of FV3GFS in the stratosphere and mesosphere, this simplified function of VMF allows us to tune the model climate and to evaluate multi-year simulations of FV3GFS with the MERRA-2 and ERA-5 reanalysis products, along with temperature, ozone, and water vapor observations of current satellite missions. After delivery of the UGWP-code, the EMC group developed and tested approach to modulate the zonal mean NGW forcing by 3D-distributions of the total precipitation as a proxy for the excitation of NGWs by convection and the vertically-integrated (surface - tropopause) Turbulent Kinetic Energy (TKE). The verification scores with updated NGW forcing, as reported elsewhere by EMC researchers, display noticeable improvements in the forecast scores produced by FV3GFS configuration extended into the mesosphere. @@ -298,8 +296,6 @@ end subroutine ugwpv1_gsldrag_finalize !> \section arg_table_ugwpv1_gsldrag_run Argument Table !! \htmlinclude ugwpv1_gsldrag_run.html !! -!> \section gen_ugwpv1_gsldrag CIRES UGWP Scheme General Algorithm -!! @{ subroutine ugwpv1_gsldrag_run(me, master, im, levs, ak, bk, ntrac, lonr, dtp, & fhzero, kdt, ldiag3d, lssav, flag_for_gwd_generic_tend, do_gsl_drag_ls_bl, & do_gsl_drag_ss, do_gsl_drag_tofd, do_ugwp_v1, do_ugwp_v1_orog_only, & @@ -731,6 +727,4 @@ subroutine ugwpv1_gsldrag_run(me, master, im, levs, ak, bk, ntrac, lonr, dtp, dtdt = dtdt + dtdt_gw end subroutine ugwpv1_gsldrag_run -!! @} -!>@} end module ugwpv1_gsldrag diff --git a/physics/MP/Morrison_Gettelman/micro_mg3_0.F90 b/physics/MP/Morrison_Gettelman/micro_mg3_0.F90 index bca005bc9..6e650e915 100644 --- a/physics/MP/Morrison_Gettelman/micro_mg3_0.F90 +++ b/physics/MP/Morrison_Gettelman/micro_mg3_0.F90 @@ -4,7 +4,6 @@ !>\ingroup mg2mg3 !>\defgroup mg3_mp Morrison-Gettelman MP version 3.0 -!> @{ !!--------------------------------------------------------------------------------- !! Purpose: !! MG microphysics version 3.0 - Update of MG microphysics with @@ -4528,4 +4527,3 @@ end subroutine calc_rercld !======================================================================== end module micro_mg3_0 -!>@} diff --git a/physics/docs/ccpp_doxyfile b/physics/docs/ccpp_doxyfile index c8f933e46..7e7f109e6 100644 --- a/physics/docs/ccpp_doxyfile +++ b/physics/docs/ccpp_doxyfile @@ -962,8 +962,7 @@ INPUT = pdftxt/mainpage.txt \ pdftxt/GFS_SATMEDMFVDIFQ.txt \ pdftxt/GFS_NOAHMP.txt \ pdftxt/GFS_UGWPv0.txt \ - pdftxt/GFS_unified_ugwp.txt \ - pdftxt/GFS_ugwpv1_gsldrag.txt \ + pdftxt/GFS_ugwpv1.txt \ pdftxt/GFS_drag_suite.txt \ pdftxt/GFS_GWDPS.txt \ pdftxt/GFS_OZPHYS.txt \ diff --git a/physics/docs/pdftxt/GFS_RRTMGP.txt b/physics/docs/pdftxt/GFS_RRTMGP.txt index e31c9bc32..c5d7b2f19 100644 --- a/physics/docs/pdftxt/GFS_RRTMGP.txt +++ b/physics/docs/pdftxt/GFS_RRTMGP.txt @@ -82,11 +82,5 @@ + \b GFS RRTMGP-Shortwave radiation driver: \ref arg_table_rrtmgp_sw_main_run + \b GFS RRTMGP post-processing, for both Longwave and Shortwave: \ref arg_table_GFS_rrtmgp_post_run -\section gen_al_rrtmgp General Algorithm - + \ref gen_rrtmgp_lw - + \ref gen_rrtmgp_sw - -\section rrtmgp_enh CCPP Physics Updates -\version CCPP v7.0.0 */ diff --git a/physics/docs/pdftxt/GFS_UGWPv0.txt b/physics/docs/pdftxt/GFS_UGWPv0.txt index 81b3c7018..e3e3d4295 100644 --- a/physics/docs/pdftxt/GFS_UGWPv0.txt +++ b/physics/docs/pdftxt/GFS_UGWPv0.txt @@ -1,5 +1,5 @@ /** -\page GFS_UGWP_v0 Unified Gravity Wave Physics Scheme - Version 0 +\page GFS_UGWP_v0 GFS Unified Gravity Wave Physics (GWP) Scheme - Version 0 \section des_UGWP Description Gravity waves (GWs) are generated by a variety of sources in the atmosphere diff --git a/physics/docs/pdftxt/GFS_ugwpv1_gsldrag.txt b/physics/docs/pdftxt/GFS_ugwpv1.txt similarity index 87% rename from physics/docs/pdftxt/GFS_ugwpv1_gsldrag.txt rename to physics/docs/pdftxt/GFS_ugwpv1.txt index 687f950b7..0161d5303 100644 --- a/physics/docs/pdftxt/GFS_ugwpv1_gsldrag.txt +++ b/physics/docs/pdftxt/GFS_ugwpv1.txt @@ -1,8 +1,8 @@ /** -\page GFS_ugwpv1_gsldrag GFS Unified UGWP Version 1 Scheme +\page GFS_ugwpv1_gsldrag GFS Unified Gravity Wave Physics (GWP) Version 1 Scheme \section des_ugwpv1 Description -The GFS Unified UGWP version 1 combines the \ref GFS_drag_suite with the version 1 UGWP non-stationary gravity wave drag (NGW) scheme of Yudin et al. (2020)\cite yudin_et_al_2020. +The GFS Unified GWP version 1 combines the \ref GFS_drag_suite with the version 1 UGWP non-stationary gravity wave drag (NGW) scheme of Yudin et al. (2020)\cite yudin_et_al_2020. The NGW physics scheme parameterizes the effects of non-stationary waves unresolved by dynamical cores. These non-stationary oscillations with periods @@ -45,4 +45,10 @@ the effects of unresolved GWs in global forecast models, the representation of subgrid OGWs and NGWs has been implemented in the self-consistent manner using the UGWP framework. +\section intra_UGWPv1 Intraphysics Communication +- \ref arg_table_ugwpv1_gsldrag_run + +\section gen_al_ugwpv1 General Algorithm +- \ref gen_ugwpv1_gsldrag_run + */ diff --git a/physics/docs/pdftxt/GFS_v17_p8_ugwpv1_suite.txt b/physics/docs/pdftxt/GFS_v17_p8_ugwpv1_suite.txt index 187ce8c5b..f0324701f 100644 --- a/physics/docs/pdftxt/GFS_v17_p8_ugwpv1_suite.txt +++ b/physics/docs/pdftxt/GFS_v17_p8_ugwpv1_suite.txt @@ -3,8 +3,8 @@ \section gfsv_17_suite_overview Overview -Version 17 of the Global Forecast System (GFS) is scheduled for operational implementation by the NOAA -National Centers for Environmental Prediction (NCEP) in 2024. The GFS_v17_p8_ugwpv1 suite is a prototype of + +The GFS_v17_p8_ugwpv1 suite is a prototype of the GFS_v17 suite, and is expected to evolve before the implementation. It is available for use with the CCPP SCM. The primary differences between the GFS_v16 and GFS_v17 suites are: - \b Microphysics: The replacement of \ref GFDL_cloud with \ref THOMPSON diff --git a/physics/docs/pdftxt/RE7/input_GFS_v16_RRTMGP.nml b/physics/docs/pdftxt/RE7/input_GFS_v16_RRTMGP.nml index bf5fcf62e..381f4ed39 100644 --- a/physics/docs/pdftxt/RE7/input_GFS_v16_RRTMGP.nml +++ b/physics/docs/pdftxt/RE7/input_GFS_v16_RRTMGP.nml @@ -1,163 +1,163 @@ !>[GFS_PHYSICS_NML] &gfs_physics_nml - cal_pre = .false. - cdmbgwd = 4.0, 0.15, 1.0, 1.0 - cnvcld = .true. - cnvgwd = .true. - debug = .false. - do_shum = .false. - do_skeb = .false. - do_spp = .false. - do_sppt = .false. - do_tofd = .true. - do_ugwp = .false. - dspheat = .true. - effr_in = .true. - fhcyc = 0 - fhlwr = 1200.0 - fhswr = 1200.0 - fhzero = 1.0 - h2o_phys = .true. - hybedmf = .false. - iaer = 5111 - ialb = 1 + cal_pre = .false. + cdmbgwd = 4.0, 0.15, 1.0, 1.0 + cnvcld = .true. + cnvgwd = .true. + debug = .false. + do_shum = .false. + do_skeb = .false. + do_spp = .false. + do_sppt = .false. + do_tofd = .true. + do_ugwp = .false. + dspheat = .true. + effr_in = .true. + fhcyc = 0 + fhlwr = 1200.0 + fhswr = 1200.0 + fhzero = 1.0 + h2o_phys = .true. + hybedmf = .false. + iaer = 5111 + ialb = 1 iau_inc_files = '' - icliq_sw = 2 - ico2 = 2 - iems = 1 - imfdeepcnv = 2 - imfshalcnv = 2 - imp_physics = 11 - iopt_alb = 2 - iopt_btr = 1 - iopt_crs = 1 - iopt_dveg = 1 - iopt_frz = 1 - iopt_inf = 1 - iopt_rad = 1 - iopt_run = 1 - iopt_sfc = 1 - iopt_snf = 4 - iopt_stc = 1 - iopt_tbot = 2 - iovr = 3 - isatmedmf = 1 - isol = 2 - isot = 1 - isubc_lw = 2 - isubc_sw = 2 - ivegsrc = 1 - ldiag3d = .true. - ldiag_ugwp = .false. - lgfdlmprad = .true. - lheatstrg = .true. - lndp_type = 0 - lsm = 1 - lsoil = 4 - lwhtr = .true. - n_var_lndp = 0 - n_var_spp = 0 + icliq_sw = 2 + ico2 = 2 + iems = 1 + imfdeepcnv = 2 + imfshalcnv = 2 + imp_physics = 11 + iopt_alb = 2 + iopt_btr = 1 + iopt_crs = 1 + iopt_dveg = 1 + iopt_frz = 1 + iopt_inf = 1 + iopt_rad = 1 + iopt_run = 1 + iopt_sfc = 1 + iopt_snf = 4 + iopt_stc = 1 + iopt_tbot = 2 + iovr = 3 + isatmedmf = 1 + isol = 2 + isot = 1 + isubc_lw = 2 + isubc_sw = 2 + ivegsrc = 1 + ldiag3d = .true. + ldiag_ugwp = .false. + lgfdlmprad = .true. + lheatstrg = .true. + lndp_type = 0 + lsm = 1 + lsoil = 4 + lwhtr = .true. + n_var_lndp = 0 + n_var_spp = 0 nsfullradar_diag = 3600 - nst_anl = .true. - nstf_name = 2, 1, 0, 0, 0 - oz_phys = .false. - oz_phys_2015 = .true. - pdfcld = .false. - prautco = 0.00015, 0.00015 - pre_rad = .false. + nst_anl = .true. + nstf_name = 2, 1, 0, 0, 0 + oz_phys = .false. + oz_phys_2015 = .true. + pdfcld = .false. + prautco = 0.00015, 0.00015 + pre_rad = .false. print_diff_pgr = .false. - prslrd0 = 0.0 - psautco = 0.0008, 0.0005 - qdiag3d = .true. - random_clds = .false. - redrag = .true. - satmedmf = .true. - shal_cnv = .true. - swhtr = .true. - trans_trac = .true. - use_ufo = .true. + prslrd0 = 0.0 + psautco = 0.0008, 0.0005 + qdiag3d = .true. + random_clds = .false. + redrag = .true. + satmedmf = .true. + shal_cnv = .true. + swhtr = .true. + trans_trac = .true. + use_ufo = .true. do_RRTMGP = .true. doGP_cldoptics_LUT = .true. doGP_lwscat = .true. - active_gases = 'h2o_co2_o3_n2o_ch4_o2' - ngases = 6 - rrtmgp_root = '../../ccpp/physics/physics/rte-rrtmgp/' - lw_file_gas = 'rrtmgp/data/rrtmgp-data-lw-g128-210809.nc' - lw_file_clouds = 'extensions/cloud_optics/rrtmgp-cloud-optics-coeffs-lw.nc' - sw_file_gas = 'rrtmgp/data/rrtmgp-data-sw-g112-210809.nc' - sw_file_clouds = 'extensions/cloud_optics/rrtmgp-cloud-optics-coeffs-sw.nc' - rrtmgp_nGptsSW = 112 - rrtmgp_nGptsLW = 128 - rrtmgp_nBandsLW = 16 - rrtmgp_nBandsSW = 14 + active_gases = 'h2o_co2_o3_n2o_ch4_o2' + ngases = 6 + rrtmgp_root = '../../ccpp/physics/physics/rte-rrtmgp/' + lw_file_gas = 'rrtmgp/data/rrtmgp-data-lw-g128-210809.nc' + lw_file_clouds = 'extensions/cloud_optics/rrtmgp-cloud-optics-coeffs-lw.nc' + sw_file_gas = 'rrtmgp/data/rrtmgp-data-sw-g112-210809.nc' + sw_file_clouds = 'extensions/cloud_optics/rrtmgp-cloud-optics-coeffs-sw.nc' + rrtmgp_nGptsSW = 112 + rrtmgp_nGptsLW = 128 + rrtmgp_nBandsLW = 16 + rrtmgp_nBandsSW = 14 / !![GFS_PHYSICS_NML] !>[GFDL_CLOUD_MICROPHYSICS_NML] &gfdl_cloud_microphysics_nml - c_cracw = 0.8 - c_paut = 0.5 - c_pgacs = 0.01 - c_psaci = 0.05 - ccn_l = 300.0 - ccn_o = 100.0 - const_vg = .false. - const_vi = .false. - const_vr = .false. - const_vs = .false. - de_ice = .false. - do_qa = .false. - do_sedi_heat = .false. - dw_land = 0.16 - dw_ocean = 0.1 - fast_sat_adj = .false. - fix_negative = .true. - icloud_f = 1 - mono_prof = .true. - mp_time = 150.0 - prog_ccn = .false. - qi0_crt = 8e-05 - qi_lim = 1.0 - ql_gen = 0.001 - ql_mlt = 0.001 - qs0_crt = 0.001 - rad_graupel = .true. - rad_rain = .true. - rad_snow = .true. - reiflag = 2 - rh_inc = 0.3 - rh_inr = 0.3 - rh_ins = 0.3 - rthresh = 1e-05 - sedi_transport = .true. - tau_g2v = 900.0 - tau_i2s = 1000.0 - tau_l2v = 225.0 - tau_v2l = 150.0 - use_ccn = .true. - use_ppm = .false. - vg_max = 12.0 - vi_max = 1.0 - vr_max = 12.0 - vs_max = 2.0 - z_slope_ice = .true. - z_slope_liq = .true. + c_cracw = 0.8 + c_paut = 0.5 + c_pgacs = 0.01 + c_psaci = 0.05 + ccn_l = 300.0 + ccn_o = 100.0 + const_vg = .false. + const_vi = .false. + const_vr = .false. + const_vs = .false. + de_ice = .false. + do_qa = .false. + do_sedi_heat = .false. + dw_land = 0.16 + dw_ocean = 0.1 + fast_sat_adj = .false. + fix_negative = .true. + icloud_f = 1 + mono_prof = .true. + mp_time = 150.0 + prog_ccn = .false. + qi0_crt = 8e-05 + qi_lim = 1.0 + ql_gen = 0.001 + ql_mlt = 0.001 + qs0_crt = 0.001 + rad_graupel = .true. + rad_rain = .true. + rad_snow = .true. + reiflag = 2 + rh_inc = 0.3 + rh_inr = 0.3 + rh_ins = 0.3 + rthresh = 1e-05 + sedi_transport = .true. + tau_g2v = 900.0 + tau_i2s = 1000.0 + tau_l2v = 225.0 + tau_v2l = 150.0 + use_ccn = .true. + use_ppm = .false. + vg_max = 12.0 + vi_max = 1.0 + vr_max = 12.0 + vs_max = 2.0 + z_slope_ice = .true. + z_slope_liq = .true. / !![GFDL_CLOUD_MICROPHYSICS_NML] !>[CIRES_UGWP_NML] &cires_ugwp_nml - knob_ugwp_azdir = 2, 4, 4, 4 - knob_ugwp_doaxyz = 1 - knob_ugwp_doheat = 1 - knob_ugwp_dokdis = 1 - knob_ugwp_effac = 1, 1, 1, 1 - knob_ugwp_ndx4lh = 1 - knob_ugwp_solver = 2 - knob_ugwp_source = 1, 1, 0, 0 - knob_ugwp_stoch = 0, 0, 0, 0 - knob_ugwp_version = 0 - knob_ugwp_wvspec = 1, 25, 25, 25 - launch_level = 27 + knob_ugwp_azdir = 2, 4, 4, 4 + knob_ugwp_doaxyz = 1 + knob_ugwp_doheat = 1 + knob_ugwp_dokdis = 1 + knob_ugwp_effac = 1, 1, 1, 1 + knob_ugwp_ndx4lh = 1 + knob_ugwp_solver = 2 + knob_ugwp_source = 1, 1, 0, 0 + knob_ugwp_stoch = 0, 0, 0, 0 + knob_ugwp_version = 0 + knob_ugwp_wvspec = 1, 25, 25, 25 + launch_level = 27 / !! [CIRES_UGWP_NML] diff --git a/physics/docs/pdftxt/all_schemes_list.txt b/physics/docs/pdftxt/all_schemes_list.txt index 82d081e38..7a13b8f16 100644 --- a/physics/docs/pdftxt/all_schemes_list.txt +++ b/physics/docs/pdftxt/all_schemes_list.txt @@ -41,7 +41,6 @@ which facilitates model development and code maintenance. While some individual \b Gravity \b Wave \b Drag - \subpage GFS_UGWP_v0 - - \subpage GFS_UNIFIED_UGWP - \subpage GFS_drag_suite - \subpage GFS_ugwpv1_gsldrag @@ -83,17 +82,17 @@ convection. Table 1. Physics suites and primary schemes supported in CCPP v7.0.0 \tableofcontents -| Physics suites | GFS_v16 | GFS_v17 | GFS_v17_RRTMGP | RRFS_v1 | WoFS_v0 | +| Physics suites | GFS_v16 | GFS_v17_p8_ugwpv1 | GFS_v16_RRTMGP | HRRR_gf | WoFS_v0 | |------------------|--------------------|----------------------|-----------------------------|-----------------------|------------------| |\b Host | SCM \n SRWv2 | SCM \n MWR | SCM | SCM \n RRFS | SCM \n WoFS | |\b Deep \b Cu | \ref GFS_SAMFdeep | \ref GFS_SAMFdeep | \ref GFS_SAMFdeep | \ref CU_GF | \a off | |\b Shallow \b Cu | \ref GFS_SAMFshal | \ref GFS_SAMFshal | \ref GFS_SAMFshal | \ref CU_GF | \ref MYNNEDMF | -|\b Microphysics | \ref GFDL_cloud | \ref THOMPSON w/o aerosol-aware | \ref THOMPSON w/o aerosol-aware | \ref THOMPSON | \ref NSSLMICRO_page | +|\b Microphysics | \ref GFDL_cloud | \ref THOMPSON w/o aerosol-aware | \ref GFDL_cloud | \ref THOMPSON | \ref NSSLMICRO_page | |\b PBL/TURB | \ref GFS_SATMEDMFVDIFQ | \ref GFS_SATMEDMFVDIFQ | \ref GFS_SATMEDMFVDIFQ | \ref MYNNEDMF | \ref MYNNEDMF | |\b Radiation | \ref GFS_RRTMG_page | \ref GFS_RRTMG_page | \ref GFS_RRTMGP_page | \ref GFS_RRTMG_page | \ref GFS_RRTMG_page | |\b Surface \b Layer | \ref GFS_SFCLYR | \ref GFS_SFCLYR | \ref GFS_SFCLYR | \ref SFC_MYNNSFL | \ref SFC_MYNNSFL | -|\b LSM | \ref GFS_NOAH | \ref NoahMP | \ref NoahMP | \ref RUCLSM | \ref GFS_NOAH | -|\b Gravity \b Wave \b Drag| \ref GFS_UGWP_v0 | \ref GFS_ugwpv1_gsldrag | \ref GFS_ugwpv1_gsldrag | \ref GFS_drag_suite | \ref GFS_UGWP_v0 | +|\b LSM | \ref GFS_NOAH | \ref NoahMP | \ref GFS_NOAH | \ref RUCLSM | \ref GFS_NOAH | +|\b Gravity \b Wave \b Drag| \ref GFS_UGWP_v0 | \ref GFS_ugwpv1_gsldrag | \ref GFS_UGWP_v0 | \ref GFS_drag_suite | \ref GFS_UGWP_v0 | |\b Sea \b Ice | \ref GFS_SFCSICE | \ref GFS_SFCSICE | \ref GFS_SFCSICE | \ref RUCLSM | \ref GFS_SFCSICE | \tableofcontents diff --git a/physics/docs/pdftxt/mainpage.txt b/physics/docs/pdftxt/mainpage.txt index 4bea16a13..6ac4dde23 100644 --- a/physics/docs/pdftxt/mainpage.txt +++ b/physics/docs/pdftxt/mainpage.txt @@ -37,15 +37,17 @@ CCPP team would like to express our deepest gratitude for UFS physics developers development of CCPP-Physics. \n We would also like to give special thanks to: -- \b NOAA \b Global \b Systems \b Laboratory: -- \b NOAA \b Physical \b Sciences \b Laboratory: -- \b NOAA \b National \b Severe \b Storms \b Laboratory: -- \b NOAA \b Environmental \b Modeling \b Center: -- \b Atmospheric \b and \b Environmental \b Research, \b Inc.: -- \b Joint \b Center \b for \b Satellite \b Data \b Assimilation: -- \b NASA \b Goddard \b Space \b Flight \b Center: - -as a whole for their support and contribution for this CCPP scientific documentation (SciDoc). +- \b NOAA \b OAR \b Global \b Systems \b Laboratory +- \b NOAA \b OAR \b Physical \b Sciences \b Laboratory +- \b NOAA \b OAR \b National \b Severe \b Storms \b Laboratory +- \b NOAA \b OAR \b Atlantic \b Oceanographic \b & \b Meteorological \b Laboratory +- \b NOAA \b NWS \b Environmental \b Modeling \b Center +- \b NOAA \b OAR \b Atlantic \b Oceanographic \b & \b Meteorological \b Laboratory +- \b Atmospheric \b and \b Environmental \b Research, \b Inc. +- \b Joint \b Center \b for \b Satellite \b Data \b Assimilation +- \b NASA \b Goddard \b Space \b Flight \b Center + +for their support and contribution for this CCPP scientific documentation (SciDoc). \b CCPP \b SciDoc \b Team: From 4ac41235907e53b319ab9e754609df6bcb914ee8 Mon Sep 17 00:00:00 2001 From: Man Zhang Date: Wed, 24 Jul 2024 12:17:29 -0600 Subject: [PATCH 43/80] continue addressing reviews --- .../UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_mp.F90 | 7 ++-- physics/docs/pdftxt/GFS_RRTMGP.txt | 2 +- physics/docs/pdftxt/all_schemes_list.txt | 6 +-- physics/docs/pdftxt/ccppv7_phy_updates.txt | 37 ++++++++++--------- physics/docs/pdftxt/mainpage.txt | 12 +++--- 5 files changed, 32 insertions(+), 32 deletions(-) diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_mp.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_mp.F90 index fe172c162..1022acac9 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_mp.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_mp.F90 @@ -28,11 +28,12 @@ module GFS_rrtmgp_cloud_mp contains -!> \section arg_table_GFS_rrtmgp_cloud_mp_run Argument Table -!! \htmlinclude GFS_rrtmgp_cloud_mp_run_html -!! Here the cloud-radiative properties (optical-path, particle-size and sometimes cloud- +!> Here the cloud-radiative properties (optical-path, particle-size and sometimes cloud- !! fraction) are computed for cloud producing physics schemes (e.g GFDL-MP, Thompson-MP, !! MYNN-EDMF-pbl, GF-convective, and SAMF-convective clouds). +!> \section arg_table_GFS_rrtmgp_cloud_mp_run Argument Table +!! \htmlinclude GFS_rrtmgp_cloud_mp_run.html +!! subroutine GFS_rrtmgp_cloud_mp_run(nCol, nLev, nTracers, ncnd, i_cldliq, i_cldice, & i_cldrain, i_cldsnow, i_cldgrpl, i_cldtot, i_cldliq_nc, i_cldice_nc, i_twa, kdt, & imfdeepcnv, imfdeepcnv_gf, imfdeepcnv_samf, doSWrad, doLWrad, effr_in, lmfshal, & diff --git a/physics/docs/pdftxt/GFS_RRTMGP.txt b/physics/docs/pdftxt/GFS_RRTMGP.txt index c5d7b2f19..6a0862dac 100644 --- a/physics/docs/pdftxt/GFS_RRTMGP.txt +++ b/physics/docs/pdftxt/GFS_RRTMGP.txt @@ -1,5 +1,5 @@ /** -\page GFS_RRTMGP_page GFS RRTMGP Shortwave/Longwave Radiation Scheme +\page GFS_RRTMGP_page RRTMGP Shortwave/Longwave Radiation Scheme \section des_rte_rrtmgp Description diff --git a/physics/docs/pdftxt/all_schemes_list.txt b/physics/docs/pdftxt/all_schemes_list.txt index 7a13b8f16..2f8950e96 100644 --- a/physics/docs/pdftxt/all_schemes_list.txt +++ b/physics/docs/pdftxt/all_schemes_list.txt @@ -20,11 +20,9 @@ which facilitates model development and code maintenance. While some individual - \subpage GFS_NOAH - \subpage RUCLSM - \subpage NoahMP - - \subpage CLM_LAKE_model \b Cumulus \b Parameterizations - \subpage GFS_SAMFdeep - - \subpage cellular_automata - \subpage GFS_SAMFshal - \subpage CU_GF @@ -54,7 +52,7 @@ which facilitates model development and code maintenance. While some individual - \subpage GFS_SFCSICE \b Others - - \subpage GFS_SPP + - \subpage CLM_LAKE_mode The input information for the parameterizations includes the values of the gridbox mean prognostic variables (wind components, temperature, specific humidity, cloud fraction, water contents for cloud liquid, cloud ice, rain, snow, graupel, and ozone concentration), the provisional @@ -75,7 +73,7 @@ to the parameterization. \section allsuite_overview Physics Suites -The publicly supported host model that use CCPP v7.0.0 is the UFS Weather Model and the CCPP Single Column Model (CCPP-SCM). +The obly publicly supported host model for CCPP v7.0.0 is the CCPP Single Column Model (CCPP-SCM). The forcing datasets included in the CCPP-SCM v7.0.0 public release were created by averaging observations and large-eddy simulations over areas that are too coarse to resolve convection. Therefore, best results will be obtained with the CCPP-SCM v7.0.0 when using suites that include parameterized convection. diff --git a/physics/docs/pdftxt/ccppv7_phy_updates.txt b/physics/docs/pdftxt/ccppv7_phy_updates.txt index a5b1eec66..52690eb2b 100644 --- a/physics/docs/pdftxt/ccppv7_phy_updates.txt +++ b/physics/docs/pdftxt/ccppv7_phy_updates.txt @@ -1,31 +1,34 @@ /** \page ccppv7_phy Physics Update Summary +This page provides an overview of the major updates in CCPP Physics v7.0.0. + \b General \b Changes: - Add GFS_v17, GFS_v16_RRTMGP, and RRFS_v1 suites as new supported suite -- New the Community Lake Model \ref CLM_LAKE_model in RRFS_v1 suite -- New \ref GFS_ugwpv1_gsldrag in GFS_v17 suite combines the \ref GFS_drag_suite with the version 1 UGWP non-stationary gravity wave drag (NGW) scheme of Yudin et al. (2020)\cite yudin_et_al_2020 +- New supported suites: GFS_v17_p8_ugwpv1, GFS_v16_RRTMGP, and HRRR_gf suites +- New the Community Lake Model \ref CLM_LAKE_model in HRRR_gf suite +- New \ref GFS_ugwpv1_gsldrag in GFS_v17_p8_ugwpv1 suite combines the \ref GFS_drag_suite with the version 1 UGWP non-stationary gravity wave drag (NGW) scheme of Yudin et al. (2020)\cite yudin_et_al_2020 - New \ref GFS_RRTMGP_page in GFS_v16_RRTMGP suite -- New RRFS smoke/dust scheme in RRFS_v1 suite +- New RRFS smoke/dust scheme in HRRR_gf suite + +GFS_v17_p8, HRRR, RRFS_v1beta, RAP suites in CCPP v6.0.0 are no longer supported. + \b GFS \b Scale-aware \b SAS \b Cumulus \b Schemes: -The updates between GFSv16 and GFSv17 are carefully outlined in Bengtsson and Han (2004)(submitted to WAF). The main updates include: +The updates between GFSv16 and GFSv17 are carefully outlined in Bengtsson and Han (2024)(submitted to \a Weather \a and \a Forecasting). The main updates include: - Implementation of a positive definition mass-flux scheme and a method for removing the negative tracers (Han et al. 2022 \cite Han_et_al_2022) - Introduction of a new closure based on a prognostic evolution of the convective updraft area fraction in both shallow and deep convection (Bengtsson et al. 2022 \cite Bengtsson_2022) - Introduction of 3D effects of cold-pool dynamics and stochastic initiation using self-organizing \ref cellular_automata (Bengtsson et al. 2021 \cite bengtsson_et_al_2021) - Introduction of environmental wind shear effect and subgrid TKE dependence in convection, to seek improvements in hurricane forecast prediction (Han et al. 2024 \cite Han_2024) -- Stricter convective initiation criteria to allow for more CAPE to build up to address a low CAPE bias in GFSv16 (Han et al. 2021 \cite han_2021) +- Introduction of stricter convective initiation criteria to allow for more CAPE to build up to address a low CAPE bias in GFSv16 (Han et al. 2021 \cite han_2021) - Reduction of convective rain evaporation rate to address a systematic cold bias near the surface in GFSv16 (Han et al. 2021 \cite han_2021) \b GFS \b Scale-aware \b TKE-EDMF \b PBL \b Scheme: -- To reduce the negative hurricane intensity biases, a parameterization for environmental wind shear effect -is included in the GFS TKE-EDMF PBL and cumulus schemes. In addition, the entrainment rates are enhanced -proportional to the sub-cloud or PBL mean TKE (turbulent kinetic energy) when TKE is larger than a threshold -value. -- To enhance the underestimated CAPE forecasts in the GFS, the entrainment rate in the TKE-EDMF PBL scheme is -increased as a function of vegetation fraction and surface roughness length. +- Implementation of a parameterization for environmental wind shear effect in the GFS TKE-EDMF PBL and cumulus schemes to reduce +the negative hurricane intensity biases. In addition, the entrainment rates are enhanced +proportionally to the sub-cloud or PBL mean TKE (turbulent kinetic energy) when TKE is larger than a threshold value +- Increased entrainment rate as a function of vegetation fraction and surface roughness length to enhance the underestimated CAPE forecasts in the GFS \sa Han et al.(2024) \cite Han_2024 @@ -37,8 +40,8 @@ ocean reduced to a smaller number (50/L) from its previous default (100/L). Both excessive surface downward shortwave radiative flux off coastal regions including the Southeast Pacific - Small fixes to the minimum size of snow and collision constants -\note The above improvements were tested with the non-aerosol option (in GFS_v17 suite), so results with the aerosol-aware -Thompson (in RRFS_v1 suite) may vary. +\note The above improvements were tested with the non-aerosol option (in GFS_v17_p8_ugwpv1 suite), so results with the aerosol-aware +Thompson (in HRRR_gf suite) may vary. \b NoahMP \b Land \b Surface \b Model: - Option for using the unified frozen precipitation fraction in NoahMP @@ -74,7 +77,7 @@ Thompson (in RRFS_v1 suite) may vary. - Reintroduce friction velocity averaging over water to reduce noise in 10-m winds in the hurricane regime \b Grell-Freitas \b Scale \b and \b Aerosol \b Aware \b Convection \b Scheme: -- Update for aerosol-awareness (experimental) +- Update for aerosol-awareness (experimental and not supported) - Scale-awareness turned off when explicit microphysics is not active anywhere in the column - Convection is completely suppressed at grid points where the MYNN PBL sheme produces shallow convection - Radar reflectivity considers mass flux PDF as well as whether scale-awareness is turned on at the gird point in equation @@ -83,11 +86,11 @@ Thompson (in RRFS_v1 suite) may vary. \todo UGWP updates for HR4 \b NSSL \b Cloud \b Microphysics \b Scheme: -- Update NSSL microphysics with 3-moment option +- Updated with 3-moment option \b Radiation - Coupling of GOCART aerosols with radiation (iaer=2011) -- Add the convective cloud water (liquid water + ice water) in the calculations of cloud water path and ice water path for radiation cloud properties +- Convective cloud water (liquid water + ice water) added to the calculations of cloud water path and ice water path for radiation cloud properties */ diff --git a/physics/docs/pdftxt/mainpage.txt b/physics/docs/pdftxt/mainpage.txt index 6ac4dde23..d0b2d0c6b 100644 --- a/physics/docs/pdftxt/mainpage.txt +++ b/physics/docs/pdftxt/mainpage.txt @@ -11,8 +11,9 @@ developmental schemes under consideration for upcoming operational implementatio applications, including the UFS Short-Range Weather (SRW) Application (available through https://github.com/ufs-community/ufs-srweather-app/), which targets predictions of atmospheric behavior on a limited spatial domain and on time scales from less than an hour out to several days, and the UFS Medium-Range Weather (MRW) -Application (available through https://github.com/ufs-community/ufs-mrweather-app/), which targets predictions of global atmospheric -behavior out to about two weeks. +Application (available through https://github.com/ufs-community/ufs-mrweather-app/)(which targets predictions of global atmospheric +behavior out to about two weeks), the Subseasonal-to-Seasonal (S2S) Application (which predicts the Earth System out to several months), and the +Hurricane Application (which predicts tropical cyclones). The CCPP parameterizations are aggregated in suites by the host models. In this release, the CCPP Single Column Model (SCM), developed @@ -37,20 +38,17 @@ CCPP team would like to express our deepest gratitude for UFS physics developers development of CCPP-Physics. \n We would also like to give special thanks to: +- \b NOAA \b NWS \b Environmental \b Modeling \b Center - \b NOAA \b OAR \b Global \b Systems \b Laboratory - \b NOAA \b OAR \b Physical \b Sciences \b Laboratory - \b NOAA \b OAR \b National \b Severe \b Storms \b Laboratory - \b NOAA \b OAR \b Atlantic \b Oceanographic \b & \b Meteorological \b Laboratory -- \b NOAA \b NWS \b Environmental \b Modeling \b Center - \b NOAA \b OAR \b Atlantic \b Oceanographic \b & \b Meteorological \b Laboratory - \b Atmospheric \b and \b Environmental \b Research, \b Inc. - \b Joint \b Center \b for \b Satellite \b Data \b Assimilation - \b NASA \b Goddard \b Space \b Flight \b Center for their support and contribution for this CCPP scientific documentation (SciDoc). - - -\b CCPP \b SciDoc \b Team: -\n Developmental Testbed Center +\n Thanks also to the CCPP SciDoc Team at the Developmental Testbed Center. */ From 4355f699e381f79cb4ae8e1f1a72ce50e38cbc2c Mon Sep 17 00:00:00 2001 From: Man Zhang Date: Wed, 24 Jul 2024 13:27:06 -0600 Subject: [PATCH 44/80] more tweaks --- physics/docs/ccpp_doxyfile | 2 - physics/docs/pdftxt/CLM_LAKE.txt | 2 +- physics/docs/pdftxt/GFS_RRTMG.txt | 2 +- physics/docs/pdftxt/GFS_drag_suite.txt | 4 +- physics/docs/pdftxt/GFS_ugwpv1.txt | 2 +- physics/docs/pdftxt/GFS_v17_p8_RRTMGP.txt | 32 ---- .../pdftxt/RE7/input_GFS_v17_HR3_RRTMGP.nml | 175 ------------------ .../RE7/suite_SCM_GFS_v17_HR3_RRTMGP.xml | 89 --------- physics/docs/pdftxt/all_schemes_list.txt | 2 +- physics/docs/pdftxt/ccppv7_phy_updates.txt | 4 +- physics/docs/pdftxt/mainpage.txt | 1 - 11 files changed, 8 insertions(+), 307 deletions(-) delete mode 100644 physics/docs/pdftxt/GFS_v17_p8_RRTMGP.txt delete mode 100644 physics/docs/pdftxt/RE7/input_GFS_v17_HR3_RRTMGP.nml delete mode 100644 physics/docs/pdftxt/RE7/suite_SCM_GFS_v17_HR3_RRTMGP.xml diff --git a/physics/docs/ccpp_doxyfile b/physics/docs/ccpp_doxyfile index 7e7f109e6..ddb7e03f0 100644 --- a/physics/docs/ccpp_doxyfile +++ b/physics/docs/ccpp_doxyfile @@ -968,7 +968,6 @@ INPUT = pdftxt/mainpage.txt \ pdftxt/GFS_OZPHYS.txt \ pdftxt/GFS_H2OPHYS.txt \ pdftxt/GFS_SAMFdeep.txt \ - pdftxt/GFS_CAUTOMATA.txt \ pdftxt/GFS_SAMFshal.txt \ pdftxt/GFDL_cloud.txt \ pdftxt/NSSLMICRO.txt \ @@ -978,7 +977,6 @@ INPUT = pdftxt/mainpage.txt \ pdftxt/CLM_LAKE.txt \ pdftxt/THOMPSON.txt \ pdftxt/suite_input.nml.txt \ - pdftxt/GFS_SPP.txt \ ../MP \ ../CONV \ ../GWD \ diff --git a/physics/docs/pdftxt/CLM_LAKE.txt b/physics/docs/pdftxt/CLM_LAKE.txt index 498797511..493935b49 100644 --- a/physics/docs/pdftxt/CLM_LAKE.txt +++ b/physics/docs/pdftxt/CLM_LAKE.txt @@ -1,5 +1,5 @@ /** -\page CLM_LAKE_model CLM Lake Model +\page CLM_LAKE_page Community Land Model (CLM) Lake Model \section des_clmlake Description The Community Land Model (CLM) lake model is a multi-level one-dimensional lake model that has been implemented within the operational 3-km HRRR and diff --git a/physics/docs/pdftxt/GFS_RRTMG.txt b/physics/docs/pdftxt/GFS_RRTMG.txt index 39628ab93..f21a4fb97 100644 --- a/physics/docs/pdftxt/GFS_RRTMG.txt +++ b/physics/docs/pdftxt/GFS_RRTMG.txt @@ -1,5 +1,5 @@ /** -\page GFS_RRTMG_page GFS RRTMG Shortwave/Longwave Radiation Scheme +\page GFS_RRTMG_page RRTMG Shortwave/Longwave Radiation Scheme \section des_rrtmg Description Radiative processes are among the most complex and diff --git a/physics/docs/pdftxt/GFS_drag_suite.txt b/physics/docs/pdftxt/GFS_drag_suite.txt index 0dafa54d5..80ce32684 100644 --- a/physics/docs/pdftxt/GFS_drag_suite.txt +++ b/physics/docs/pdftxt/GFS_drag_suite.txt @@ -1,8 +1,8 @@ /** -\page GFS_drag_suite GFS Orographic Drag Scheme +\page GFS_drag_suite Orographic Drag Scheme \section des_drag Description -The GFS orographic drag suite, developed by NOAA's Global Systems Laboratory, Physical Sciences Laboratory and Environmental Modeling Center is a set of subgrid-scale orographic drag parameterizations that calculate momentum tendencies due to the effects of unresolved topography. The drag forces they represent are those due to: 1) large-scale gravity (mountain) waves that propagate vertically and break in the free atmosphere of the troposphere, stratosphere and above; 2) low-level flow blocking; 3) small-scale gravity wave drag (GWD) due to mountain waves generated in stable planetary boundary layer (PBL) conditions, typically at nighttime, which break at or near the PBL top; and 4) turbulent orographic form drag (TOFD), which is generated by turbulent pressure perturbations that are correlated with the terrain slope. The distinction between the large-scale and small-scale gravity waves are that the former are generated by topography with horizontal scales on the order of 5 km and greater, which can support vertical propagation through the typical static stabilities found in the free atmosphere, while the latter are generated by topography with smaller horizontal scales down to about 1 km, which can support vertical propagation only in very stable conditions, typically found in nocturnal PBLs. +The orographic drag suite, developed by NOAA's Global Systems Laboratory, Physical Sciences Laboratory and Environmental Modeling Center is a set of subgrid-scale orographic drag parameterizations that calculate momentum tendencies due to the effects of unresolved topography. The drag forces they represent are those due to: 1) large-scale gravity (mountain) waves that propagate vertically and break in the free atmosphere of the troposphere, stratosphere and above; 2) low-level flow blocking; 3) small-scale gravity wave drag (GWD) due to mountain waves generated in stable planetary boundary layer (PBL) conditions, typically at nighttime, which break at or near the PBL top; and 4) turbulent orographic form drag (TOFD), which is generated by turbulent pressure perturbations that are correlated with the terrain slope. The distinction between the large-scale and small-scale gravity waves are that the former are generated by topography with horizontal scales on the order of 5 km and greater, which can support vertical propagation through the typical static stabilities found in the free atmosphere, while the latter are generated by topography with smaller horizontal scales down to about 1 km, which can support vertical propagation only in very stable conditions, typically found in nocturnal PBLs. The large-scale GWD scheme is based on Kim and Doyle (2005) \cite kim_and_doyle_2005 and Choi and Hong (2015)\cite choi_and_hong_2015 and the code originated from the NCAR Weather Research and Forecasting (WRF) model and NOAA RAP/HRRR. The low-level blocking scheme is adapted from Kim and Doyle (2005)\cite kim_and_doyle_2005, with the code also originating from the WRF and RAP/HRRR. The small-scale orographic GWD scheme is based on Steeneveld et al.(2008)\cite steeneveld_et_al_2008 and Tsiringakis et al. (2017) \cite tsiringakis_et_al_2017, and the TOFD scheme is adapted from Beljaars et al. (2004)\cite beljaars_et_al_2004. diff --git a/physics/docs/pdftxt/GFS_ugwpv1.txt b/physics/docs/pdftxt/GFS_ugwpv1.txt index 0161d5303..c881ad2b9 100644 --- a/physics/docs/pdftxt/GFS_ugwpv1.txt +++ b/physics/docs/pdftxt/GFS_ugwpv1.txt @@ -1,5 +1,5 @@ /** -\page GFS_ugwpv1_gsldrag GFS Unified Gravity Wave Physics (GWP) Version 1 Scheme +\page GFS_ugwpv1_gsldrag GFS Unified Gravity Wave Physics (GWP) Scheme -Version 1 \section des_ugwpv1 Description The GFS Unified GWP version 1 combines the \ref GFS_drag_suite with the version 1 UGWP non-stationary gravity wave drag (NGW) scheme of Yudin et al. (2020)\cite yudin_et_al_2020. diff --git a/physics/docs/pdftxt/GFS_v17_p8_RRTMGP.txt b/physics/docs/pdftxt/GFS_v17_p8_RRTMGP.txt deleted file mode 100644 index 29fa38222..000000000 --- a/physics/docs/pdftxt/GFS_v17_p8_RRTMGP.txt +++ /dev/null @@ -1,32 +0,0 @@ -/** -\page GFS_v17_gp_page GFS_v17_RRTMGP Suite - -\section gfsv_17_p8_gp_overview Overview - - -The GFS_v17_RRTMGP suite uses the parameterizations in the following order: - - \ref GFS_RRTMGP_page - - \ref GFS_SFCLYR - - \ref GFS_NSST - - \ref NoahMP - - \ref GFS_SFCSICE - - \ref GFS_SATMEDMFVDIFQ - - \ref GFS_UNIFIED_UGWP - - \ref GFS_OZPHYS - - \ref GFS_H2OPHYS - - \ref GFS_SAMFdeep - - \ref GFS_SAMFshal - - \ref THOMPSON - - -\section sdf_gfsv17p8gp Suite Definition File -\include suite_SCM_GFS_v17_p8_RRTMGP.xml - -\section gfs17_nml_opt_des Namelist -- General physics options -\snippet SCM_GFS_v17_p8_gp_input.nml GFS_PHYSICS_NML -- \ref GFS_UNIFIED_UGWP related options -\snippet SCM_GFS_v17_p8_gp_input.nml CIRES_UGWP_NML - - -*/ diff --git a/physics/docs/pdftxt/RE7/input_GFS_v17_HR3_RRTMGP.nml b/physics/docs/pdftxt/RE7/input_GFS_v17_HR3_RRTMGP.nml deleted file mode 100644 index 323439437..000000000 --- a/physics/docs/pdftxt/RE7/input_GFS_v17_HR3_RRTMGP.nml +++ /dev/null @@ -1,175 +0,0 @@ -!> [GFS_PHYSICS_NML] -&gfs_physics_nml - fhzero = 6 - h2o_phys = .true. - ldiag3d = .true. - qdiag3d = .true. - print_diff_pgr = .false. - fhcyc = 24 - use_ufo = .true. - pre_rad = .false. - imp_physics = 8 - iovr = 3 - ltaerosol = .false. - lradar = .true. - ttendlim = -999 - dt_inner = 150 - sedi_semi = .true. - decfl = 10 - oz_phys = .false. - oz_phys_2015 = .true. - lsoil_lsm = 4 - do_mynnedmf = .false. - do_mynnsfclay = .false. - icloud_bl = 1 - bl_mynn_edmf = 1 - bl_mynn_tkeadvect = .true. - bl_mynn_edmf_mom = 1 - do_ugwp = .false. - do_tofd = .false. - gwd_opt = 2 - do_ugwp_v0 = .false. - do_ugwp_v1 = .true. - do_ugwp_v0_orog_only = .false. - do_ugwp_v0_nst_only = .false. - do_gsl_drag_ls_bl = .true. - do_gsl_drag_ss = .true. - do_gsl_drag_tofd = .true. - do_ugwp_v1_orog_only = .false. - min_lakeice = 0.15 - min_seaice = 1.0e-6 - use_cice_alb = .true. - pdfcld = .false. - fhswr = 1200. - fhlwr = 1200. - progsigma = .true. - betascu = 8.0 - betamcu = 1.0 - betadcu = 2.0 - ialb = 2 - iems = 2 - iaer = 1011 - icliq_sw = 2 - ico2 = 2 - isubc_sw = 2 - isubc_lw = 2 - isol = 2 - lwhtr = .true. - swhtr = .true. - cnvgwd = .true. - shal_cnv = .true. - cal_pre = .false. - redrag = .true. - dspheat = .true. - hybedmf = .false. - satmedmf = .true. - isatmedmf = 1 - lheatstrg = .true. - lseaspray = .true. - random_clds = .false. - trans_trac = .true. - cnvcld = .true. - imfshalcnv = 2 - imfdeepcnv = 2 - ras = .false. - cdmbgwd = 2.5,7.5,1.0,1.0 - prslrd0 = 0. - ivegsrc = 1 - isot = 1 - lsoil = 4 - lsm = 2 - iopt_dveg = 4 - iopt_crs = 2 - iopt_btr = 1 - iopt_run = 1 - iopt_sfc = 3 - iopt_trs = 2 - iopt_frz = 1 - iopt_inf = 1 - iopt_rad = 3 - iopt_alb = 1 - iopt_snf = 4 - iopt_tbot = 2 - iopt_stc = 3 - debug = .false. - nstf_name = 2,0,0,0,0 - nst_anl = .true. - psautco = 0.0008,0.0005 - prautco = 0.00015,0.00015 - lgfdlmprad = .false. - effr_in = .true. - ldiag_ugwp = .false. - do_sppt = .false. - do_shum = .false. - do_skeb = .false. - do_RRTMGP = .true. - doGP_cldoptics_LUT = .true. - doGP_lwscat = .true. - active_gases = 'h2o_co2_o3_n2o_ch4_o2' - ngases = 6 - rrtmgp_root = '../../ccpp/physics/physics/Radiation/RRTMGP/rte-rrtmgp/' - lw_file_gas = 'rrtmgp/data/rrtmgp-data-lw-g128-210809.nc' - lw_file_clouds = 'extensions/cloud_optics/rrtmgp-cloud-optics-coeffs-lw.nc' - sw_file_gas = 'rrtmgp/data/rrtmgp-data-sw-g112-210809.nc' - sw_file_clouds = 'extensions/cloud_optics/rrtmgp-cloud-optics-coeffs-reordered-sw.nc' - rrtmgp_nGptsSW = 112 - rrtmgp_nGptsLW = 128 - rrtmgp_nBandsLW = 16 - rrtmgp_nBandsSW = 14 - frac_grid = .true. - cplchm = .false. - cplflx = .false. - cplice = .false. - cplwav = .false. - cplwav2atm = .false. - do_ca = .false. - ca_global = .false. - ca_sgs = .true. - nca = 1 - ncells = 5 - nlives = 12 - nseed = 1 - nfracseed = 0.5 - nthresh = 18 - ca_trigger = .true. - nspinup = 1 - iseed_ca = 1448371824 -/ -!! [GFS_PHYSICS_NML] - -!>[CIRES_UGWP_NML] -&cires_ugwp_nml - knob_ugwp_solver = 2 - knob_ugwp_version = 1 - knob_ugwp_source = 1,1,0,0 - knob_ugwp_wvspec = 1,25,25,25 - knob_ugwp_azdir = 2,4,4,4 - knob_ugwp_stoch = 0,0,0,0 - knob_ugwp_effac = 1,1,1,1 - knob_ugwp_doaxyz = 1 - knob_ugwp_doheat = 1 - knob_ugwp_dokdis = 2 - knob_ugwp_ndx4lh = 4 - knob_ugwp_palaunch = 275.0e2 - knob_ugwp_nslope = 1 - knob_ugwp_lzmax = 15.750e3 - knob_ugwp_lzmin = 0.75e3 - knob_ugwp_lzstar = 2.0e3 - knob_ugwp_taumin = 0.25e-3 - knob_ugwp_tauamp = 0.5e-3 - knob_ugwp_lhmet = 200.0e3 - knob_ugwp_orosolv = 'pss-1986' -/ -!! [CIRES_UGWP_NML] - -&ccpp_suite_sim_nml - suite_sim_file = '' - nprc_sim = 7 - prc_LWRAD_cfg = 0, 0, 1 - prc_SWRAD_cfg = 0, 0, 2 - prc_PBL_cfg = 1, 0, 3 - prc_GWD_cfg = 1, 0, 4 - prc_SCNV_cfg = 1, 1, 5 - prc_DCNV_cfg = 1, 1, 6 - prc_cldMP_cfg = 1, 1, 7 -/ diff --git a/physics/docs/pdftxt/RE7/suite_SCM_GFS_v17_HR3_RRTMGP.xml b/physics/docs/pdftxt/RE7/suite_SCM_GFS_v17_HR3_RRTMGP.xml deleted file mode 100644 index 09bcbfa64..000000000 --- a/physics/docs/pdftxt/RE7/suite_SCM_GFS_v17_HR3_RRTMGP.xml +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - GFS_time_vary_pre - GFS_rrtmgp_setup - GFS_rad_time_vary - GFS_phys_time_vary - - - - - GFS_suite_interstitial_rad_reset - GFS_rrtmgp_pre - GFS_radiation_surface - GFS_rrtmgp_cloud_mp - GFS_rrtmgp_cloud_overlap - GFS_cloud_diagnostics - rrtmgp_aerosol_optics - rrtmgp_sw_main - rrtmgp_lw_main - GFS_rrtmgp_post - - - - - GFS_suite_interstitial_phys_reset - GFS_suite_stateout_reset - get_prs_fv3 - GFS_suite_interstitial_1 - GFS_surface_generic_pre - GFS_surface_composites_pre - dcyc2t3 - GFS_surface_composites_inter - GFS_suite_interstitial_2 - - - - sfc_diff - GFS_surface_loop_control_part1 - sfc_nst_pre - sfc_nst - sfc_nst_post - noahmpdrv - sfc_sice - GFS_surface_loop_control_part2 - - - - GFS_surface_composites_post - sfc_diag - sfc_diag_post - GFS_surface_generic_post - GFS_PBL_generic_pre - satmedmfvdifq - GFS_PBL_generic_post - GFS_GWD_generic_pre - ugwpv1_gsldrag - ugwpv1_gsldrag_post - GFS_GWD_generic_post - GFS_suite_stateout_update - h2ophys - get_phi_fv3 - GFS_suite_interstitial_3 - GFS_DCNV_generic_pre - samfdeepcnv - GFS_DCNV_generic_post - GFS_SCNV_generic_pre - samfshalcnv - GFS_SCNV_generic_post - GFS_suite_interstitial_4 - cnvc90 - GFS_MP_generic_pre - mp_thompson_pre - - - mp_thompson - - - mp_thompson_post - GFS_MP_generic_post - maximum_hourly_diagnostics - GFS_physics_post - - - - diff --git a/physics/docs/pdftxt/all_schemes_list.txt b/physics/docs/pdftxt/all_schemes_list.txt index 2f8950e96..313b2edec 100644 --- a/physics/docs/pdftxt/all_schemes_list.txt +++ b/physics/docs/pdftxt/all_schemes_list.txt @@ -52,7 +52,7 @@ which facilitates model development and code maintenance. While some individual - \subpage GFS_SFCSICE \b Others - - \subpage CLM_LAKE_mode + - \subpage CLM_LAKE_page The input information for the parameterizations includes the values of the gridbox mean prognostic variables (wind components, temperature, specific humidity, cloud fraction, water contents for cloud liquid, cloud ice, rain, snow, graupel, and ozone concentration), the provisional diff --git a/physics/docs/pdftxt/ccppv7_phy_updates.txt b/physics/docs/pdftxt/ccppv7_phy_updates.txt index 52690eb2b..4582453c4 100644 --- a/physics/docs/pdftxt/ccppv7_phy_updates.txt +++ b/physics/docs/pdftxt/ccppv7_phy_updates.txt @@ -5,7 +5,7 @@ This page provides an overview of the major updates in CCPP Physics v7.0.0. \b General \b Changes: - New supported suites: GFS_v17_p8_ugwpv1, GFS_v16_RRTMGP, and HRRR_gf suites -- New the Community Lake Model \ref CLM_LAKE_model in HRRR_gf suite +- New \ref CLM_LAKE_page in HRRR_gf suite - New \ref GFS_ugwpv1_gsldrag in GFS_v17_p8_ugwpv1 suite combines the \ref GFS_drag_suite with the version 1 UGWP non-stationary gravity wave drag (NGW) scheme of Yudin et al. (2020)\cite yudin_et_al_2020 - New \ref GFS_RRTMGP_page in GFS_v16_RRTMGP suite - New RRFS smoke/dust scheme in HRRR_gf suite @@ -19,7 +19,7 @@ The updates between GFSv16 and GFSv17 are carefully outlined in Bengtsson and Ha - Implementation of a positive definition mass-flux scheme and a method for removing the negative tracers (Han et al. 2022 \cite Han_et_al_2022) - Introduction of a new closure based on a prognostic evolution of the convective updraft area fraction in both shallow and deep convection (Bengtsson et al. 2022 \cite Bengtsson_2022) -- Introduction of 3D effects of cold-pool dynamics and stochastic initiation using self-organizing \ref cellular_automata (Bengtsson et al. 2021 \cite bengtsson_et_al_2021) +- Introduction of 3D effects of cold-pool dynamics and stochastic initiation using self-organizing cellular automata stochastic convective organization scheme (not supported; Bengtsson et al. 2021 \cite bengtsson_et_al_2021) - Introduction of environmental wind shear effect and subgrid TKE dependence in convection, to seek improvements in hurricane forecast prediction (Han et al. 2024 \cite Han_2024) - Introduction of stricter convective initiation criteria to allow for more CAPE to build up to address a low CAPE bias in GFSv16 (Han et al. 2021 \cite han_2021) - Reduction of convective rain evaporation rate to address a systematic cold bias near the surface in GFSv16 (Han et al. 2021 \cite han_2021) diff --git a/physics/docs/pdftxt/mainpage.txt b/physics/docs/pdftxt/mainpage.txt index d0b2d0c6b..1752f9e29 100644 --- a/physics/docs/pdftxt/mainpage.txt +++ b/physics/docs/pdftxt/mainpage.txt @@ -43,7 +43,6 @@ development of CCPP-Physics. - \b NOAA \b OAR \b Physical \b Sciences \b Laboratory - \b NOAA \b OAR \b National \b Severe \b Storms \b Laboratory - \b NOAA \b OAR \b Atlantic \b Oceanographic \b & \b Meteorological \b Laboratory -- \b NOAA \b OAR \b Atlantic \b Oceanographic \b & \b Meteorological \b Laboratory - \b Atmospheric \b and \b Environmental \b Research, \b Inc. - \b Joint \b Center \b for \b Satellite \b Data \b Assimilation - \b NASA \b Goddard \b Space \b Flight \b Center From 59040c223c8b1e5f8d2ddab79133885d7d810e28 Mon Sep 17 00:00:00 2001 From: Man Zhang Date: Thu, 25 Jul 2024 11:40:32 -0600 Subject: [PATCH 45/80] scidoc updates --- physics/docs/pdftxt/HRRR_gf_suite.txt | 3 +-- physics/docs/pdftxt/all_schemes_list.txt | 2 +- physics/docs/pdftxt/ccppv7_phy_updates.txt | 4 ++-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/physics/docs/pdftxt/HRRR_gf_suite.txt b/physics/docs/pdftxt/HRRR_gf_suite.txt index 5eba3a454..32a008fb4 100644 --- a/physics/docs/pdftxt/HRRR_gf_suite.txt +++ b/physics/docs/pdftxt/HRRR_gf_suite.txt @@ -11,9 +11,8 @@ The HRRR_gf suite uses the parameterizations in the following order: - \ref GFS_RRTMG_page - \ref SFC_MYNNSFL - \ref RUCLSM - - \ref CLM_LAKE_model + - \ref CLM_LAKE_page - \ref MYNNEDMF - - smokedust - \ref GFS_drag_suite - \ref GFS_H2OPHYS - \ref CU_GF diff --git a/physics/docs/pdftxt/all_schemes_list.txt b/physics/docs/pdftxt/all_schemes_list.txt index 313b2edec..d8bdd3770 100644 --- a/physics/docs/pdftxt/all_schemes_list.txt +++ b/physics/docs/pdftxt/all_schemes_list.txt @@ -82,7 +82,7 @@ Table 1. Physics suites and primary schemes supported in CCPP v7.0.0 \tableofcontents | Physics suites | GFS_v16 | GFS_v17_p8_ugwpv1 | GFS_v16_RRTMGP | HRRR_gf | WoFS_v0 | |------------------|--------------------|----------------------|-----------------------------|-----------------------|------------------| -|\b Host | SCM \n SRWv2 | SCM \n MWR | SCM | SCM \n RRFS | SCM \n WoFS | +|\b Host | SCM | SCM | SCM | SCM | SCM | |\b Deep \b Cu | \ref GFS_SAMFdeep | \ref GFS_SAMFdeep | \ref GFS_SAMFdeep | \ref CU_GF | \a off | |\b Shallow \b Cu | \ref GFS_SAMFshal | \ref GFS_SAMFshal | \ref GFS_SAMFshal | \ref CU_GF | \ref MYNNEDMF | |\b Microphysics | \ref GFDL_cloud | \ref THOMPSON w/o aerosol-aware | \ref GFDL_cloud | \ref THOMPSON | \ref NSSLMICRO_page | diff --git a/physics/docs/pdftxt/ccppv7_phy_updates.txt b/physics/docs/pdftxt/ccppv7_phy_updates.txt index 4582453c4..49eb3f248 100644 --- a/physics/docs/pdftxt/ccppv7_phy_updates.txt +++ b/physics/docs/pdftxt/ccppv7_phy_updates.txt @@ -36,8 +36,8 @@ proportionally to the sub-cloud or PBL mean TKE (turbulent kinetic energy) when - Ice generation supersaturation requirement reduced from 0.25 to 0.15 to generate more ice at the upper levels and reduce the outgoing longwave radiation bias - Cloud number concentration divided into two parts (over land and others). Number concentration over -ocean reduced to a smaller number (50/L) from its previous default (100/L). Both changes were made to reduce -excessive surface downward shortwave radiative flux off coastal regions including the Southeast Pacific +ocean reduced to a smaller number (50/L) from its previous default (100/L). Both changes were made to increase +the downward shortwave radiative flux and reduce the negative bias off coastal regions including the Southeast Pacific - Small fixes to the minimum size of snow and collision constants \note The above improvements were tested with the non-aerosol option (in GFS_v17_p8_ugwpv1 suite), so results with the aerosol-aware From 1dff8835f80c85b20849d4aa5a72e36318ecb599 Mon Sep 17 00:00:00 2001 From: Man Zhang Date: Mon, 29 Jul 2024 16:02:39 -0600 Subject: [PATCH 46/80] implement S. Hong's modification --- physics/docs/ccpp_doxyfile | 2 +- physics/docs/library.bib | 60 ++++++++++++---------- physics/docs/pdftxt/GFS_UGWPV1_ORO.txt | 19 +++++++ physics/docs/pdftxt/GFS_ugwpv1.txt | 4 +- physics/docs/pdftxt/ccppv7_phy_updates.txt | 8 ++- 5 files changed, 62 insertions(+), 31 deletions(-) create mode 100644 physics/docs/pdftxt/GFS_UGWPV1_ORO.txt diff --git a/physics/docs/ccpp_doxyfile b/physics/docs/ccpp_doxyfile index ddb7e03f0..136ae55d8 100644 --- a/physics/docs/ccpp_doxyfile +++ b/physics/docs/ccpp_doxyfile @@ -963,7 +963,7 @@ INPUT = pdftxt/mainpage.txt \ pdftxt/GFS_NOAHMP.txt \ pdftxt/GFS_UGWPv0.txt \ pdftxt/GFS_ugwpv1.txt \ - pdftxt/GFS_drag_suite.txt \ + pdftxt/GFS_UGWPV1_ORO.txt \ pdftxt/GFS_GWDPS.txt \ pdftxt/GFS_OZPHYS.txt \ pdftxt/GFS_H2OPHYS.txt \ diff --git a/physics/docs/library.bib b/physics/docs/library.bib index ae06b218f..0bab22b02 100644 --- a/physics/docs/library.bib +++ b/physics/docs/library.bib @@ -1,23 +1,40 @@ %% This BibTeX bibliography file was created using BibDesk. %% https://bibdesk.sourceforge.io/ -%% Created for Man Zhang at 2024-07-16 12:25:34 -0600 +%% Created for Man Zhang at 2024-07-29 15:49:56 -0600 %% Saved with string encoding Unicode (UTF-8) +@article{kim_et_al_2003, + author = {Y-J. Kim, S.D. Eckermann and H-Y. Chun}, + date-added = {2024-07-29 15:36:07 -0600}, + date-modified = {2024-07-29 15:44:35 -0600}, + doi = {10.3137/ao.410105}, + issn = {1480-9214}, + journal = {Atmosphere-Ocean}, + month = mar, + number = {1}, + pages = {65-98}, + publisher = {Informa UK Limited}, + title = {An overview of the past, present and future of gravity-wave drag parametrization for numerical climate and weather prediction models}, + url = {http://dx.doi.org/10.3137/ao.410105}, + volume = {41}, + year = {2003}, + bdsk-url-1 = {http://dx.doi.org/10.3137/ao.410105}} + @article{Yang_2013, author = {Yang, Ping and Bi, Lei and Baum, Bryan A. and Liou, Kuo-Nan and Kattawar, George W. and Mishchenko, Michael I. and Cole, Benjamin}, date-added = {2024-07-16 12:25:15 -0600}, - date-modified = {2024-07-16 12:25:15 -0600}, + date-modified = {2024-07-29 15:48:40 -0600}, doi = {10.1175/jas-d-12-039.1}, issn = {1520-0469}, journal = {Journal of the Atmospheric Sciences}, month = jan, number = {1}, - pages = {330{\^a}€“347}, + pages = {330-347}, publisher = {American Meteorological Society}, title = {Spectrally Consistent Scattering, Absorption, and Polarization Properties of Atmospheric Ice Crystals at Wavelengths from 0.2 to 100 {\^I}¼m}, url = {http://dx.doi.org/10.1175/JAS-D-12-039.1}, @@ -48,13 +65,13 @@ @article{han_2021 @article{Han_2024, author = {Han, Jongil and Peng, Jiayi and Li, Wei and Wang, Weiguo and Zhang, Zhan and Yang, Fanglin and Zheng, Weizhong}, date-added = {2024-07-02 13:44:05 -0600}, - date-modified = {2024-07-02 13:44:05 -0600}, + date-modified = {2024-07-29 15:45:21 -0600}, doi = {10.1175/waf-d-23-0134.1}, issn = {1520-0434}, journal = {Weather and Forecasting}, month = apr, number = {4}, - pages = {679{\^a}€“688}, + pages = {679-688}, publisher = {American Meteorological Society}, title = {Updates in the NCEP GFS PBL and Convection Models with Environmental Wind Shear Effect and Modified Entrainment and Detrainment Rates and Their Impacts on the GFS Hurricane and CAPE Forecasts}, url = {http://dx.doi.org/10.1175/WAF-D-23-0134.1}, @@ -88,15 +105,15 @@ @article{Han_et_al_2022 year = {2022}} @article{xu_and_randall_1996, - author = {Xu, Kuan-Man and Randall, David A.}, + author = {Xu, K-M. and Randall, D. A.}, date-added = {2024-06-27 13:17:39 -0600}, - date-modified = {2024-06-27 13:18:31 -0600}, + date-modified = {2024-07-29 15:48:17 -0600}, doi = {10.1175/1520-0469(1996)053<3084:ascpfu>2.0.co;2}, issn = {1520-0469}, journal = {Journal of the Atmospheric Sciences}, month = nov, number = {21}, - pages = {3084{\^a}€“3102}, + pages = {3084-3102}, publisher = {American Meteorological Society}, title = {A Semiempirical Cloudiness Parameterization for Use in Climate Models}, url = {http://dx.doi.org/10.1175/1520-0469(1996)053<3084:ASCPFU>2.0.CO;2}, @@ -105,15 +122,15 @@ @article{xu_and_randall_1996 bdsk-url-1 = {http://dx.doi.org/10.1175/1520-0469(1996)053%3C3084:ASCPFU%3E2.0.CO;2}} @article{Mansell_2020, - author = {Mansell, Edward R. and Dawson II, Daniel T. and Straka, Jerry M.}, + author = {Mansell, E. R. and Dawson II, Daniel T. and Straka, Jerry M.}, date-added = {2024-06-24 12:43:58 -0600}, - date-modified = {2024-06-24 12:43:58 -0600}, + date-modified = {2024-07-29 15:46:57 -0600}, doi = {10.1175/jas-d-19-0268.1}, issn = {1520-0469}, journal = {Journal of the Atmospheric Sciences}, month = oct, number = {10}, - pages = {3361{\^a}€“3385}, + pages = {3361-3385}, publisher = {American Meteorological Society}, title = {Bin-Emulating Hail Melting in Three-Moment Bulk Microphysics}, url = {http://dx.doi.org/10.1175/JAS-D-19-0268.1}, @@ -156,15 +173,15 @@ @article{choi_and_hong_2015 @article{Liou_1973, author = {Liou, Kuo-Nan}, date-added = {2024-06-17 12:33:23 -0600}, - date-modified = {2024-06-17 12:33:23 -0600}, + date-modified = {2024-07-29 15:42:52 -0600}, doi = {10.1175/1520-0469(1973)030<1303:aneocd>2.0.co;2}, issn = {1520-0469}, journal = {Journal of the Atmospheric Sciences}, month = oct, number = {7}, - pages = {1303{\^a}€“1326}, + pages = {1303-1326}, publisher = {American Meteorological Society}, - title = {A Numerical Experiment on Chandrasekhar{\^a}€™s Discrete-Ordinate Method for Radiative Transfer: Applications to Cloudy and Hazy Atmospheres}, + title = {A Numerical Experiment on Chandrasekhar's Discrete-Ordinate Method for Radiative Transfer: Applications to Cloudy and Hazy Atmospheres}, url = {http://dx.doi.org/10.1175/1520-0469(1973)030<1303:ANEOCD>2.0.CO;2}, volume = {30}, year = {1973}, @@ -173,13 +190,13 @@ @article{Liou_1973 @article{Joseph_1976, author = {Joseph, J. H. and Wiscombe, W. J. and Weinman, J. A.}, date-added = {2024-06-17 12:28:00 -0600}, - date-modified = {2024-06-17 12:28:00 -0600}, + date-modified = {2024-07-29 15:49:55 -0600}, doi = {10.1175/1520-0469(1976)033<2452:tdeafr>2.0.co;2}, issn = {1520-0469}, journal = {Journal of the Atmospheric Sciences}, month = dec, number = {12}, - pages = {2452{\^a}€“2459}, + pages = {2452-2459}, publisher = {American Meteorological Society}, title = {The Delta-Eddington Approximation for Radiative Flux Transfer}, url = {http://dx.doi.org/10.1175/1520-0469(1976)033<2452:TDEAFR>2.0.CO;2}, @@ -2373,17 +2390,6 @@ @inbook{hooke_1986 title = {Mesoscale meteorology and forecasting}, year = {1986}} -@article{kim_et_al_2003, - author = {Y.-J. Kim and S. D. Eckermann and H.-Y. Chun}, - date-added = {2018-02-23 16:59:17 +0000}, - date-modified = {2018-02-23 17:02:12 +0000}, - journal = {Atmosphere-Ocean}, - number = {1}, - pages = {65-98}, - title = {An overview of the past, present and future of gravity-wave drag parameterization for numerical climate and weather prediction models}, - volume = {41}, - year = {2003}} - @article{paulson_and_simpson_1981, author = {C.A. Paulson and J.J. Simpson}, date-added = {2018-02-21 23:47:11 +0000}, diff --git a/physics/docs/pdftxt/GFS_UGWPV1_ORO.txt b/physics/docs/pdftxt/GFS_UGWPV1_ORO.txt new file mode 100644 index 000000000..b7d99b4d3 --- /dev/null +++ b/physics/docs/pdftxt/GFS_UGWPV1_ORO.txt @@ -0,0 +1,19 @@ +/** +\page GFS_drag_suite Orographic Drag Scheme +\section des_drag Description + +The orographic drag suite, developed by NOAA's Global Systems Laboratory, Physical Sciences Laboratory and Environmental Modeling Center is a set of subgrid-scale orographic drag parameterizations that calculate momentum tendencies due to the effects of unresolved topography. The drag forces they represent are those due to: 1) meso-scale gravity (mountain) waves that propagate vertically and break in the free atmosphere of the troposphere, stratosphere and above; 2) low-level flow blocking; 3) turbulent orographic form drag (TOFD), which is generated by turbulent pressure perturbations that are correlated with the terrain slope. The distinction between the meso-scale and turbulent-scale gravity waves are that the former are generated by topography with horizontal scales on the order of 5 km and greater, which can support vertical propagation through the typical static stabilities found in the free atmosphere, while the latter are generated by topography with smaller horizontal scales down to about 1 km. + +The GWD and flow-blocking scheme is based on Kim and Doyle (2005) \cite kim_and_doyle_2005 and Choi and Hong (2015)\cite choi_and_hong_2015 and its code originated from the NCAR Weather Research and Forecasting (WRF) model that was implemented by S. Hong. The TOFD scheme is adapted from Beljaars et al. (2004)\cite beljaars_et_al_2004. + +All orographic GWD schemes require static input data files that contain statistical information about the subgrid terrain within each model grid cell, such as the standard deviation of the subgrid topography, which comes from the high-resolution USGS 30-second GMETED2010 dataset. These data files augment the usual "oro_data.tile*.nc" files, which contain orographic height data and GWD static data for the orographic drag parameterization. The static data files for the meso-scale GWD and blocking schemes are named "oro_data_ls.tile*.nc". The source topography for the datasets are calculated from a 2.5-minute lat-lon grid to filter out small-scale topographic variations. The static data files for the small-scale GWD and TOFD schemes are named "oro_data_ss.tile*.nc". The data is from the 30-second topographic dataset, but band-passed filtered from ~20km down to ~2km as per Beljaars et al.(2004) \cite beljaars_et_al_2004. + +The meso-scale GWD and blocking schemes are explicitly tapered off from horizontal grid resolutions starting at ~13 km down to 3 km resolution, at and below which the scheme is not active. + + +\section instra_drag Intraphysics Communication +- \ref arg_table_drag_suite_run + +\section gen_drag General Algorithm +- \ref gen_drag_suite +*/ diff --git a/physics/docs/pdftxt/GFS_ugwpv1.txt b/physics/docs/pdftxt/GFS_ugwpv1.txt index c881ad2b9..c7665516b 100644 --- a/physics/docs/pdftxt/GFS_ugwpv1.txt +++ b/physics/docs/pdftxt/GFS_ugwpv1.txt @@ -1,5 +1,5 @@ /** -\page GFS_ugwpv1_gsldrag GFS Unified Gravity Wave Physics (GWP) Scheme -Version 1 +\page GFS_ugwpv1_gsldrag GFS Unified Gravity Wave Physics (GWP) Scheme - Version 1 \section des_ugwpv1 Description The GFS Unified GWP version 1 combines the \ref GFS_drag_suite with the version 1 UGWP non-stationary gravity wave drag (NGW) scheme of Yudin et al. (2020)\cite yudin_et_al_2020. @@ -28,7 +28,7 @@ dissipation on the large-scale circulation, mixing, and transport have been acknowledged in the physics of global weather and climate models after pioneering studies by Lindzen 1981 \cite lindzen_1981 and Holton 1983 \cite holton_1983. Comprehensive reviews on the physics of NGWs -and OGWs in climate and weather models have been discussted in Alexander +and OGWs in climate and weather models have been discussed in Kim et al. 2003 \cite kim_et_al_2003, Alexander et al. 2010 \cite alexander_et_al_2010, Geller et al. 2013 \cite geller_et_al_2013, and Garcia et al. 2017 \cite garcia_et_al_2017. They are formulated using different aspects of the nonlinear and linear diff --git a/physics/docs/pdftxt/ccppv7_phy_updates.txt b/physics/docs/pdftxt/ccppv7_phy_updates.txt index 49eb3f248..eecf94ed8 100644 --- a/physics/docs/pdftxt/ccppv7_phy_updates.txt +++ b/physics/docs/pdftxt/ccppv7_phy_updates.txt @@ -83,7 +83,13 @@ Thompson (in HRRR_gf suite) may vary. - Radar reflectivity considers mass flux PDF as well as whether scale-awareness is turned on at the gird point in equation \b Unified \b Gravity \b Wave \b Physics \b Scheme: -\todo UGWP updates for HR4 +- Replacement of the resolution-dependent effective grid spacing (cdmbgwd) with a constant (=6dx) +- Removal of the planetary boundary layer height in determining the reference level +- Weakening of the momentum stress over land ice to reduce the negative wind biases +- Introduction of a launching level to avoid the underestimation of the blocked stress +- Introduction of damped breaking to prevent the wind reversal in the lower troposphere +- Suppression of gravity wave breaking in the upper atmosphere (over 7.5 hPa) to avoid numerical instability +- Revision in sub-grid orography data considering the mathematical definition of moments \b NSSL \b Cloud \b Microphysics \b Scheme: - Updated with 3-moment option From b62597bccf740ddd240188b767e05ce3a9233783 Mon Sep 17 00:00:00 2001 From: Man Zhang Date: Thu, 1 Aug 2024 14:06:53 -0600 Subject: [PATCH 47/80] address review and fix bugs --- physics/CONV/progsigma_calc.f90 | 2 - .../GFS_phys_time_vary.scm.F90 | 2 +- .../UFS_SCM_NEPTUNE/iccninterp.F90 | 3 + physics/MP/Morrison_Gettelman/micro_mg3_0.F90 | 17 +- physics/MP/calpreciptype.f90 | 13 +- .../RRTMGP/rrtmgp_aerosol_optics.F90 | 64 ++++---- physics/Radiation/RRTMGP/rrtmgp_lw_main.F90 | 132 ++++++++-------- physics/Radiation/RRTMGP/rrtmgp_sw_main.F90 | 148 +++++++++--------- physics/docs/ccpp_doxyfile | 8 +- physics/docs/library.bib | 41 ++++- physics/docs/pdftxt/GFS_RRTMGP.txt | 2 +- physics/docs/pdftxt/GFS_v16_RRTMGP_suite.txt | 17 +- .../docs/pdftxt/GFS_v17_p8_ugwpv1_suite.txt | 4 +- physics/docs/pdftxt/HRRR_gf_suite.txt | 8 +- .../pdftxt/{GFS_NOAHMP.txt => NOAHMP_LSM.txt} | 2 +- .../pdftxt/{GFS_NOAH.txt => NOAH_LSM.txt} | 2 +- .../pdftxt/{GFS_UGWPv0.txt => UGWPv0.txt} | 2 +- physics/docs/pdftxt/ccppv7_phy_updates.txt | 2 +- 18 files changed, 242 insertions(+), 227 deletions(-) rename physics/docs/pdftxt/{GFS_NOAHMP.txt => NOAHMP_LSM.txt} (96%) rename physics/docs/pdftxt/{GFS_NOAH.txt => NOAH_LSM.txt} (98%) rename physics/docs/pdftxt/{GFS_UGWPv0.txt => UGWPv0.txt} (99%) diff --git a/physics/CONV/progsigma_calc.f90 b/physics/CONV/progsigma_calc.f90 index 76e01987c..73f084d01 100644 --- a/physics/CONV/progsigma_calc.f90 +++ b/physics/CONV/progsigma_calc.f90 @@ -11,8 +11,6 @@ module progsigma contains -!>\ingroup SAMFdeep -!>\ingroup SAMF_shal !> This subroutine computes a prognostic updraft area fraction !! used in the closure computations in the samfdeepcnv.f scheme !! This subroutine computes a prognostic updraft area fracftion diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.scm.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.scm.F90 index 9006d96b3..a09bf367f 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.scm.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.scm.F90 @@ -232,7 +232,7 @@ subroutine GFS_phys_time_vary_init ( ntrcaer = size(aer_nm, dim=3) endif -!> - Call read_cidata() to read IN and CCN data +!> - Call iccninterp::read_cidata() to read IN and CCN data if (iccn == 1) then call read_cidata (me,master) ! No consistency check needed for in/ccn data, all values are diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/iccninterp.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/iccninterp.F90 index dd752d9b8..b90b6fca7 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/iccninterp.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/iccninterp.F90 @@ -15,6 +15,7 @@ module iccninterp contains +!> SUBROUTINE read_cidata (me, master) use machine, only: kind_phys use iccn_def @@ -65,6 +66,7 @@ END SUBROUTINE read_cidata ! !********************************************************************** ! +!> SUBROUTINE setindxci(npts,dlat,jindx1,jindx2,ddy,dlon, & iindx1,iindx2,ddx) ! @@ -126,6 +128,7 @@ END SUBROUTINE setindxci !********************************************************************** !********************************************************************** ! +!> SUBROUTINE ciinterpol(me,npts,IDATE,FHOUR,jindx1,jindx2,ddy, & iindx1,iindx2,ddx,lev, prsl, ciplout,ccnout) ! diff --git a/physics/MP/Morrison_Gettelman/micro_mg3_0.F90 b/physics/MP/Morrison_Gettelman/micro_mg3_0.F90 index 6e650e915..a28de2d74 100644 --- a/physics/MP/Morrison_Gettelman/micro_mg3_0.F90 +++ b/physics/MP/Morrison_Gettelman/micro_mg3_0.F90 @@ -2,11 +2,9 @@ !! This file contains Morrison-Gettelman MP version 3.0 - !! Update of MG microphysics with prognostic hail OR graupel. -!>\ingroup mg2mg3 -!>\defgroup mg3_mp Morrison-Gettelman MP version 3.0 -!!--------------------------------------------------------------------------------- -!! Purpose: -!! MG microphysics version 3.0 - Update of MG microphysics with +!--------------------------------------------------------------------------------- +! Purpose: +!> MG microphysics version 3.0 - Update of MG microphysics with !! prognostic hail OR graupel. !! !! \authors Andrew Gettelman, Hugh Morrison @@ -247,8 +245,7 @@ module micro_mg3_0 contains !=============================================================================== -!>\ingroup mg3_mp -!! This subroutine initializes the microphysics +!> This subroutine initializes the microphysics !! and needs to be called once at start of simulation. !!\author Andrew Gettelman, Dec 2005 subroutine micro_mg_init( & @@ -432,8 +429,7 @@ end subroutine micro_mg_init !=============================================================================== !microphysics routine for each timestep goes here... -!>\ingroup mg3_mp -!! This subroutine calculates the MG3 microphysical processes. +!> This subroutine calculates the MG3 microphysical processes. !>\authors Hugh Morrison, Andrew Gettelman, NCAR, Peter Caldwell, LLNL !! e-mail: morrison@ucar.edu, andrew@ucar.edu !!\section mg3_micro_mg_tend MG3 micro_mg_tend General Algorithm @@ -4483,8 +4479,7 @@ end subroutine micro_mg_tend !OUTPUT CALCULATIONS !======================================================================== -!>\ingroup mg3_mp -!! This subroutine calculates effective radii for rain and cloud. +!> This subroutine calculates effective radii for rain and cloud. subroutine calc_rercld(lamr, n0r, lamc, pgam, qric, qcic, ncic, rercld, mgncol,nlev) integer, intent(in) :: mgncol, nlev ! horizontal and vertical dimension real(r8), dimension(mgncol,nlev), intent(in) :: lamr ! rain size parameter (slope) diff --git a/physics/MP/calpreciptype.f90 b/physics/MP/calpreciptype.f90 index 2166e1b5c..f2d995946 100644 --- a/physics/MP/calpreciptype.f90 +++ b/physics/MP/calpreciptype.f90 @@ -3,8 +3,7 @@ module calpreciptype_mod contains -!>\ingroup gfs_calpreciptype -!! Foure algorithms are called to calculate dominant precipitation type, and the +!> Foure algorithms are called to calculate dominant precipitation type, and the !!tallies are sumed in calwxt_dominant(). !! !>\section gen_calp GFS calpreciptype General Algorithm @@ -215,10 +214,8 @@ subroutine calpreciptype(kdt,nrcm,im,ix,lm,lp1,randomno, & deallocate (twet,rh,td) return end -! -!&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& -!>\ingroup gfs_calpreciptype -!! This subroutine computes precipitation type using a decision tree approach that uses + +!> This subroutine computes precipitation type using a decision tree approach that uses !! variables such as integrated wet bulb temperatue below freezing and lowest layer !! temperature (Baldwin et al. 1994 \cite baldwin_et_al_1994) subroutine calwxt(lm,lp1,t,q,pmid,pint, & @@ -472,7 +469,6 @@ subroutine calwxt(lm,lp1,t,q,pmid,pint, & ! ! code adapted for wrf post 24 august 2005 g manikin !ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc -!>\ingroup gfs_calpreciptype !> This subroutine is written and provided by Jim Ramer at NOAA/ESRL !!(Ramer (1993) \cite ramer_1993). subroutine calwxt_ramer(lm,lp1,t,q,pmid,rh,td,pint,ptyp) @@ -875,7 +871,6 @@ function xmytw(t,td,p) ! and layer lmh = bottom ! !$$$ -!>\ingroup gfs_calpreciptype !>this routine computes precipitation type using a decision tree !! approach that uses the so-called "energy method" of Bourgouin(2000) !! \cite bourgouin_2000. @@ -1044,7 +1039,6 @@ subroutine calwxt_bourg(lm,lp1,rn,g,t,q,pmid,pint,zint,ptype) return end ! -!>\ingroup gfs_calpreciptype !> This subroutine computes precipitation type using a decision tree !! approach that uses variables such as integrated wet bulb temperature !! below freezing and lowest layer temperature (Baldwin et al.1994 @@ -1307,7 +1301,6 @@ subroutine calwxt_revised(lm,lp1,t,q,pmid,pint, & return end ! -!>\ingroup gfs_calpreciptype !> This subroutine takes the precipitation type solutions from !! different algorithms and sums them up to give a dominant type. !! diff --git a/physics/Radiation/RRTMGP/rrtmgp_aerosol_optics.F90 b/physics/Radiation/RRTMGP/rrtmgp_aerosol_optics.F90 index 23f943572..311b33bbd 100644 --- a/physics/Radiation/RRTMGP/rrtmgp_aerosol_optics.F90 +++ b/physics/Radiation/RRTMGP/rrtmgp_aerosol_optics.F90 @@ -25,54 +25,54 @@ subroutine rrtmgp_aerosol_optics_run(doSWrad, doLWrad, nCol, nLev, nDay, idxday, ! Inputs logical, intent(in) :: & - doSWrad, & !< Logical flag for shortwave radiation call - doLWrad, & !< Logical flag for longwave radiation call - top_at_1 !< Logical flag for vertical grid direcetion + doSWrad, & ! Logical flag for shortwave radiation call + doLWrad, & ! Logical flag for longwave radiation call + top_at_1 ! Logical flag for vertical grid direcetion integer, intent(in) :: & - nCol, & !< Number of horizontal grid points - nDay, & !< Number of daylit points - nLev, & !< Number of vertical layers - iaermdl, & !< Aerosol model scheme flag - iaerflg !< Aerosol effects to include + nCol, & ! Number of horizontal grid points + nDay, & ! Number of daylit points + nLev, & ! Number of vertical layers + iaermdl, & ! Aerosol model scheme flag + iaerflg ! Aerosol effects to include integer,intent(in),dimension(:) :: & - idxday !< Indices for daylit points. + idxday ! Indices for daylit points. real(kind_phys),intent(in) :: & - con_pi, & !< Physical constant (pi) - con_rd, & !< Physical constant (gas constant for dry-air) - con_g !< Physical constant (gravitational constant) + con_pi, & ! Physical constant (pi) + con_rd, & ! Physical constant (gas constant for dry-air) + con_g ! Physical constant (gravitational constant) real(kind_phys), dimension(:), intent(in) :: & - lon, & !< Longitude - lat, & !< Latitude - lsmask !< Land/sea/sea-ice mask + lon, & ! Longitude + lat, & ! Latitude + lsmask ! Land/sea/sea-ice mask real(kind_phys), dimension(:,:),intent(in), optional :: & - p_lay, & !< Pressure @ layer-centers (Pa) - tv_lay, & !< Virtual-temperature @ layer-centers (K) - relhum !< Relative-humidity @ layer-centers + p_lay, & ! Pressure @ layer-centers (Pa) + tv_lay, & ! Virtual-temperature @ layer-centers (K) + relhum ! Relative-humidity @ layer-centers real(kind_phys), dimension(:,:),intent(in) :: & - p_lk !< Exner function @ layer-centers (1) + p_lk ! Exner function @ layer-centers (1) real(kind_phys), dimension(:, :,:),intent(in) :: & - tracer !< trace gas concentrations + tracer ! trace gas concentrations real(kind_phys), dimension(:, :,:),intent(in) :: & - aerfld !< aerosol input concentrations + aerfld ! aerosol input concentrations real(kind_phys), dimension(:,:),intent(in), optional :: & - p_lev !< Pressure @ layer-interfaces (Pa) + p_lev ! Pressure @ layer-interfaces (Pa) real (kind=kind_phys), dimension(:,:), intent(out) :: & - ext550 !< 3d optical extinction for total aerosol species + ext550 ! 3d optical extinction for total aerosol species ! Outputs real(kind_phys), dimension(:,:), intent(out) :: & - aerodp !< Vertical integrated optical depth for various aerosol species + aerodp ! Vertical integrated optical depth for various aerosol species real(kind_phys), dimension(:,:,:), intent(out) :: & - aerlw_tau, & !< Longwave aerosol optical depth - aerlw_ssa, & !< Longwave aerosol single scattering albedo - aerlw_g, & !< Longwave aerosol asymmetry parameter - aersw_tau, & !< Shortwave aerosol optical depth - aersw_ssa, & !< Shortwave aerosol single scattering albedo - aersw_g !< Shortwave aerosol asymmetry parameter + aerlw_tau, & ! Longwave aerosol optical depth + aerlw_ssa, & ! Longwave aerosol single scattering albedo + aerlw_g, & ! Longwave aerosol asymmetry parameter + aersw_tau, & ! Shortwave aerosol optical depth + aersw_ssa, & ! Shortwave aerosol single scattering albedo + aersw_g ! Shortwave aerosol asymmetry parameter integer, intent(out) :: & - errflg !< CCPP error flag + errflg ! CCPP error flag character(len=*), intent(out) :: & - errmsg !< CCPP error message + errmsg ! CCPP error message ! Local variables real(kind_phys), dimension(nCol, nLev, lw_gas_props%get_nband(), 3) :: & diff --git a/physics/Radiation/RRTMGP/rrtmgp_lw_main.F90 b/physics/Radiation/RRTMGP/rrtmgp_lw_main.F90 index e2bcf032e..81c959e64 100644 --- a/physics/Radiation/RRTMGP/rrtmgp_lw_main.F90 +++ b/physics/Radiation/RRTMGP/rrtmgp_lw_main.F90 @@ -95,85 +95,85 @@ subroutine rrtmgp_lw_main_run(doLWrad, doLWclrsky, top_at_1, doGP_lwscat, ! Inputs logical, intent(in) :: & - doLWrad, & !< Flag to perform longwave calculation - doLWclrsky, & !< Flag to compute clear-sky fluxes - top_at_1, & !< Flag for vertical ordering convention - use_LW_jacobian, & !< Flag to compute Jacobian of longwave surface flux - doGP_sgs_pbl, & !< Flag to include sgs PBL clouds - doGP_sgs_cnv, & !< Flag to include sgs convective clouds - doGP_lwscat !< Flag to include scattering in clouds + doLWrad, & ! Flag to perform longwave calculation + doLWclrsky, & ! Flag to compute clear-sky fluxes + top_at_1, & ! Flag for vertical ordering convention + use_LW_jacobian, & ! Flag to compute Jacobian of longwave surface flux + doGP_sgs_pbl, & ! Flag to include sgs PBL clouds + doGP_sgs_cnv, & ! Flag to include sgs convective clouds + doGP_lwscat ! Flag to include scattering in clouds integer,intent(in) :: & - nCol, & !< Number of horizontal points - nLay, & !< Number of vertical grid points. - nGases, & !< Number of active gases - rrtmgp_phys_blksz, & !< Number of horizontal points to process at once. - nGauss_angles, & !< Number of gaussian quadrature angles used - iovr, & !< Choice of cloud-overlap method - iovr_convcld, & !< Choice of convective cloud-overlap - iovr_max, & !< Flag for maximum cloud overlap method - iovr_maxrand, & !< Flag for maximum-random cloud overlap method - iovr_rand, & !< Flag for random cloud overlap method - iovr_dcorr, & !< Flag for decorrelation-length cloud overlap method - iovr_exp, & !< Flag for exponential cloud overlap method - iovr_exprand, & !< Flag for exponential-random cloud overlap method - isubc_lw !< Flag for cloud-seeding (rng) for cloud-sampling + nCol, & ! Number of horizontal points + nLay, & ! Number of vertical grid points. + nGases, & ! Number of active gases + rrtmgp_phys_blksz, & ! Number of horizontal points to process at once. + nGauss_angles, & ! Number of gaussian quadrature angles used + iovr, & ! Choice of cloud-overlap method + iovr_convcld, & ! Choice of convective cloud-overlap + iovr_max, & ! Flag for maximum cloud overlap method + iovr_maxrand, & ! Flag for maximum-random cloud overlap method + iovr_rand, & ! Flag for random cloud overlap method + iovr_dcorr, & ! Flag for decorrelation-length cloud overlap method + iovr_exp, & ! Flag for exponential cloud overlap method + iovr_exprand, & ! Flag for exponential-random cloud overlap method + isubc_lw ! Flag for cloud-seeding (rng) for cloud-sampling integer,intent(in),dimension(:), optional :: & - icseed_lw !< Seed for random number generation for longwave radiation + icseed_lw ! Seed for random number generation for longwave radiation real(kind_phys), dimension(:), intent(in) :: & - semis, & !< Surface-emissivity (1) - tsfg !< Skin temperature (K) + semis, & ! Surface-emissivity (1) + tsfg ! Skin temperature (K) real(kind_phys), dimension(:,:), intent(in), optional :: & - p_lay, & !< Pressure @ model layer-centers (Pa) - t_lay, & !< Temperature (K) - p_lev, & !< Pressure @ model layer-interfaces (Pa) - t_lev, & !< Temperature @ model levels (K) - vmr_o2, & !< Molar-mixing ratio oxygen - vmr_h2o, & !< Molar-mixing ratio water vapor - vmr_o3, & !< Molar-mixing ratio ozone - vmr_ch4, & !< Molar-mixing ratio methane - vmr_n2o, & !< Molar-mixing ratio nitrous oxide - vmr_co2 !< Molar-mixing ratio carbon dioxide + p_lay, & ! Pressure @ model layer-centers (Pa) + t_lay, & ! Temperature (K) + p_lev, & ! Pressure @ model layer-interfaces (Pa) + t_lev, & ! Temperature @ model levels (K) + vmr_o2, & ! Molar-mixing ratio oxygen + vmr_h2o, & ! Molar-mixing ratio water vapor + vmr_o3, & ! Molar-mixing ratio ozone + vmr_ch4, & ! Molar-mixing ratio methane + vmr_n2o, & ! Molar-mixing ratio nitrous oxide + vmr_co2 ! Molar-mixing ratio carbon dioxide real(kind_phys), dimension(:,:), intent(in) :: & - cld_frac, & !< Cloud-fraction for stratiform clouds - cld_lwp, & !< Water path for stratiform liquid cloud-particles - cld_reliq, & !< Effective radius for stratiform liquid cloud-particles - cld_iwp, & !< Water path for stratiform ice cloud-particles - cld_reice, & !< Effective radius for stratiform ice cloud-particles - cld_swp, & !< Water path for snow hydrometeors - cld_resnow, & !< Effective radius for snow hydrometeors - cld_rwp, & !< Water path for rain hydrometeors - cld_rerain !< Effective radius for rain hydrometeors + cld_frac, & ! Cloud-fraction for stratiform clouds + cld_lwp, & ! Water path for stratiform liquid cloud-particles + cld_reliq, & ! Effective radius for stratiform liquid cloud-particles + cld_iwp, & ! Water path for stratiform ice cloud-particles + cld_reice, & ! Effective radius for stratiform ice cloud-particles + cld_swp, & ! Water path for snow hydrometeors + cld_resnow, & ! Effective radius for snow hydrometeors + cld_rwp, & ! Water path for rain hydrometeors + cld_rerain ! Effective radius for rain hydrometeors real(kind_phys), dimension(:,:), intent(in), optional :: & - precip_frac, & !< Precipitation fraction (not active, currently precipitation optics uses cloud-fraction) - cld_cnv_lwp, & !< Water path for convective liquid cloud-particles - cld_cnv_reliq, & !< Effective radius for convective liquid cloud-particles - cld_cnv_iwp, & !< Water path for convective ice cloud-particles - cld_cnv_reice, & !< Effective radius for convective ice cloud-particles - cld_pbl_lwp, & !< Water path for PBL liquid cloud-particles - cld_pbl_reliq, & !< Effective radius for PBL liquid cloud-particles - cld_pbl_iwp, & !< Water path for PBL ice cloud-particles - cld_pbl_reice, & !< Effective radius for PBL ice cloud-particles - cloud_overlap_param !< Cloud overlap parameter + precip_frac, & ! Precipitation fraction (not active, currently precipitation optics uses cloud-fraction) + cld_cnv_lwp, & ! Water path for convective liquid cloud-particles + cld_cnv_reliq, & ! Effective radius for convective liquid cloud-particles + cld_cnv_iwp, & ! Water path for convective ice cloud-particles + cld_cnv_reice, & ! Effective radius for convective ice cloud-particles + cld_pbl_lwp, & ! Water path for PBL liquid cloud-particles + cld_pbl_reliq, & ! Effective radius for PBL liquid cloud-particles + cld_pbl_iwp, & ! Water path for PBL ice cloud-particles + cld_pbl_reice, & ! Effective radius for PBL ice cloud-particles + cloud_overlap_param ! Cloud overlap parameter real(kind_phys), dimension(:,:,:), intent(in) :: & - aerlw_tau, & !< Aerosol optical depth - aerlw_ssa, & !< Aerosol single scattering albedo - aerlw_g !< Aerosol asymmetry paramter + aerlw_tau, & ! Aerosol optical depth + aerlw_ssa, & ! Aerosol single scattering albedo + aerlw_g ! Aerosol asymmetry paramter character(len=*), dimension(:), intent(in), optional :: & - active_gases_array !< List of active gases from namelist as array + active_gases_array ! List of active gases from namelist as array ! Outputs real(kind_phys), dimension(:,:), intent(inout), optional :: & - fluxlwUP_jac, & !< Jacobian of upwelling LW surface radiation (W/m2/K) - fluxlwUP_allsky, & !< All-sky flux (W/m2) - fluxlwDOWN_allsky, & !< All-sky flux (W/m2) - fluxlwUP_clrsky, & !< Clear-sky flux (W/m2) - fluxlwDOWN_clrsky, & !< All-sky flux (W/m2) - fluxlwUP_radtime, & !< Copy of fluxes (Used for coupling) - fluxlwDOWN_radtime !< + fluxlwUP_jac, & ! Jacobian of upwelling LW surface radiation (W/m2/K) + fluxlwUP_allsky, & ! All-sky flux (W/m2) + fluxlwDOWN_allsky, & ! All-sky flux (W/m2) + fluxlwUP_clrsky, & ! Clear-sky flux (W/m2) + fluxlwDOWN_clrsky, & ! All-sky flux (W/m2) + fluxlwUP_radtime, & ! Copy of fluxes (Used for coupling) + fluxlwDOWN_radtime ! character(len=*), intent(out) :: & - errmsg !< CCPP error message + errmsg ! CCPP error message integer, intent(out) :: & - errflg !< CCPP error flag + errflg ! CCPP error flag ! Local variables type(ty_fluxes_byband) :: flux_allsky, flux_clrsky diff --git a/physics/Radiation/RRTMGP/rrtmgp_sw_main.F90 b/physics/Radiation/RRTMGP/rrtmgp_sw_main.F90 index 28ed9e41c..c9fd3bbda 100644 --- a/physics/Radiation/RRTMGP/rrtmgp_sw_main.F90 +++ b/physics/Radiation/RRTMGP/rrtmgp_sw_main.F90 @@ -93,98 +93,98 @@ subroutine rrtmgp_sw_main_run(doSWrad, doSWclrsky, top_at_1, doGP_sgs_cnv, doGP_ ! Inputs logical, intent(in) :: & - doSWrad, & !< Flag to perform shortwave calculation - doSWclrsky, & !< Flag to compute clear-sky fluxes - top_at_1, & !< Flag for vertical ordering convention - doGP_sgs_pbl, & !< Flag to include sgs PBL clouds - doGP_sgs_cnv !< Flag to include sgs convective clouds + doSWrad, & ! Flag to perform shortwave calculation + doSWclrsky, & ! Flag to compute clear-sky fluxes + top_at_1, & ! Flag for vertical ordering convention + doGP_sgs_pbl, & ! Flag to include sgs PBL clouds + doGP_sgs_cnv ! Flag to include sgs convective clouds integer,intent(in) :: & - nCol, & !< Number of horizontal points - nDay, & !< Number of daytime points - nLay, & !< Number of vertical grid points. - nGases, & !< Number of active gases - rrtmgp_phys_blksz, & !< Number of horizontal points to process at once. - iovr, & !< Choice of cloud-overlap method - iovr_convcld, & !< Choice of convective cloud-overlap - iovr_max, & !< Flag for maximum cloud overlap method - iovr_maxrand, & !< Flag for maximum-random cloud overlap method - iovr_rand, & !< Flag for random cloud overlap method - iovr_dcorr, & !< Flag for decorrelation-length cloud overlap method - iovr_exp, & !< Flag for exponential cloud overlap method - iovr_exprand, & !< Flag for exponential-random cloud overlap method - isubc_sw, & !< + nCol, & ! Number of horizontal points + nDay, & ! Number of daytime points + nLay, & ! Number of vertical grid points. + nGases, & ! Number of active gases + rrtmgp_phys_blksz, & ! Number of horizontal points to process at once. + iovr, & ! Choice of cloud-overlap method + iovr_convcld, & ! Choice of convective cloud-overlap + iovr_max, & ! Flag for maximum cloud overlap method + iovr_maxrand, & ! Flag for maximum-random cloud overlap method + iovr_rand, & ! Flag for random cloud overlap method + iovr_dcorr, & ! Flag for decorrelation-length cloud overlap method + iovr_exp, & ! Flag for exponential cloud overlap method + iovr_exprand, & ! Flag for exponential-random cloud overlap method + isubc_sw, & ! iSFC integer,intent(in),dimension(:) :: & - idx !< Index array for daytime points + idx ! Index array for daytime points integer,intent(in),dimension(:), optional :: & - icseed_sw !< Seed for random number generation for shortwave radiation + icseed_sw ! Seed for random number generation for shortwave radiation real(kind_phys), dimension(:), intent(in) :: & - sfc_alb_nir_dir, & !< Surface albedo (direct) - sfc_alb_nir_dif, & !< Surface albedo (diffuse) - sfc_alb_uvvis_dir, & !< Surface albedo (direct) - sfc_alb_uvvis_dif, & !< Surface albedo (diffuse) - coszen !< Cosize of SZA + sfc_alb_nir_dir, & ! Surface albedo (direct) + sfc_alb_nir_dif, & ! Surface albedo (diffuse) + sfc_alb_uvvis_dir, & ! Surface albedo (direct) + sfc_alb_uvvis_dif, & ! Surface albedo (diffuse) + coszen ! Cosize of SZA real(kind_phys), dimension(:,:), intent(in), optional :: & - p_lay, & !< Pressure @ model layer-centers (Pa) - t_lay, & !< Temperature (K) - p_lev, & !< Pressure @ model layer-interfaces (Pa) - t_lev, & !< Temperature @ model levels (K) - vmr_o2, & !< Molar-mixing ratio oxygen - vmr_h2o, & !< Molar-mixing ratio water vapor - vmr_o3, & !< Molar-mixing ratio ozone - vmr_ch4, & !< Molar-mixing ratio methane - vmr_n2o, & !< Molar-mixing ratio nitrous oxide - vmr_co2 !< Molar-mixing ratio carbon dioxide + p_lay, & ! Pressure @ model layer-centers (Pa) + t_lay, & ! Temperature (K) + p_lev, & ! Pressure @ model layer-interfaces (Pa) + t_lev, & ! Temperature @ model levels (K) + vmr_o2, & ! Molar-mixing ratio oxygen + vmr_h2o, & ! Molar-mixing ratio water vapor + vmr_o3, & ! Molar-mixing ratio ozone + vmr_ch4, & ! Molar-mixing ratio methane + vmr_n2o, & ! Molar-mixing ratio nitrous oxide + vmr_co2 ! Molar-mixing ratio carbon dioxide real(kind_phys), dimension(:,:), intent(in) :: & - cld_frac, & !< Cloud-fraction for stratiform clouds - cld_lwp, & !< Water path for stratiform liquid cloud-particles - cld_reliq, & !< Effective radius for stratiform liquid cloud-particles - cld_iwp, & !< Water path for stratiform ice cloud-particles - cld_reice, & !< Effective radius for stratiform ice cloud-particles - cld_swp, & !< Water path for snow hydrometeors - cld_resnow, & !< Effective radius for snow hydrometeors - cld_rwp, & !< Water path for rain hydrometeors - cld_rerain !< Effective radius for rain hydrometeors + cld_frac, & ! Cloud-fraction for stratiform clouds + cld_lwp, & ! Water path for stratiform liquid cloud-particles + cld_reliq, & ! Effective radius for stratiform liquid cloud-particles + cld_iwp, & ! Water path for stratiform ice cloud-particles + cld_reice, & ! Effective radius for stratiform ice cloud-particles + cld_swp, & ! Water path for snow hydrometeors + cld_resnow, & ! Effective radius for snow hydrometeors + cld_rwp, & ! Water path for rain hydrometeors + cld_rerain ! Effective radius for rain hydrometeors real(kind_phys), dimension(:,:), intent(in), optional :: & - precip_frac, & !< Precipitation fraction - cld_cnv_lwp, & !< Water path for convective liquid cloud-particles - cld_cnv_reliq, & !< Effective radius for convective liquid cloud-particles - cld_cnv_iwp, & !< Water path for convective ice cloud-particles - cld_cnv_reice, & !< Effective radius for convective ice cloud-particles - cld_pbl_lwp, & !< Water path for PBL liquid cloud-particles - cld_pbl_reliq, & !< Effective radius for PBL liquid cloud-particles - cld_pbl_iwp, & !< Water path for PBL ice cloud-particles - cld_pbl_reice, & !< Effective radius for PBL ice cloud-particles - cloud_overlap_param !< + precip_frac, & ! Precipitation fraction + cld_cnv_lwp, & ! Water path for convective liquid cloud-particles + cld_cnv_reliq, & ! Effective radius for convective liquid cloud-particles + cld_cnv_iwp, & ! Water path for convective ice cloud-particles + cld_cnv_reice, & ! Effective radius for convective ice cloud-particles + cld_pbl_lwp, & ! Water path for PBL liquid cloud-particles + cld_pbl_reliq, & ! Effective radius for PBL liquid cloud-particles + cld_pbl_iwp, & ! Water path for PBL ice cloud-particles + cld_pbl_reice, & ! Effective radius for PBL ice cloud-particles + cloud_overlap_param ! real(kind_phys), dimension(:,:,:), intent(in) :: & - aersw_tau, & !< Aerosol optical depth - aersw_ssa, & !< Aerosol single scattering albedo - aersw_g !< Aerosol asymmetry paramter + aersw_tau, & ! Aerosol optical depth + aersw_ssa, & ! Aerosol single scattering albedo + aersw_g ! Aerosol asymmetry paramter character(len=*), dimension(:), intent(in), optional :: & - active_gases_array !< List of active gases from namelist as array + active_gases_array ! List of active gases from namelist as array real(kind_phys), intent(in) :: & - solcon !< Solar constant + solcon ! Solar constant ! Outputs character(len=*), intent(out) :: & - errmsg !< CCPP error message + errmsg ! CCPP error message integer, intent(out) :: & - errflg !< CCPP error flag + errflg ! CCPP error flag real(kind_phys), dimension(:,:), intent(inout) :: & - cldtausw !< Approx 10.mu band layer cloud optical depth + cldtausw ! Approx 10.mu band layer cloud optical depth real(kind_phys), dimension(:,:), intent(inout), optional :: & - fluxswUP_allsky, & !< RRTMGP upward all-sky flux profiles (W/m2) - fluxswDOWN_allsky, & !< RRTMGP downward all-sky flux profiles (W/m2) - fluxswUP_clrsky, & !< RRTMGP upward clear-sky flux profiles (W/m2) - fluxswDOWN_clrsky !< RRTMGP downward clear-sky flux profiles (W/m2) + fluxswUP_allsky, & ! RRTMGP upward all-sky flux profiles (W/m2) + fluxswDOWN_allsky, & ! RRTMGP downward all-sky flux profiles (W/m2) + fluxswUP_clrsky, & ! RRTMGP upward clear-sky flux profiles (W/m2) + fluxswDOWN_clrsky ! RRTMGP downward clear-sky flux profiles (W/m2) type(cmpfsw_type), dimension(:), intent(inout) :: & - scmpsw !< 2D surface fluxes, components: - !< uvbfc - total sky downward uv-b flux (W/m2) - !< uvbf0 - clear sky downward uv-b flux (W/m2) - !< nirbm - downward nir direct beam flux (W/m2) - !< nirdf - downward nir diffused flux (W/m2) - !< visbm - downward uv+vis direct beam flux (W/m2) - !< visdf - downward uv+vis diffused flux (W/m2) + scmpsw ! 2D surface fluxes, components: + ! uvbfc - total sky downward uv-b flux (W/m2) + ! uvbf0 - clear sky downward uv-b flux (W/m2) + ! nirbm - downward nir direct beam flux (W/m2) + ! nirdf - downward nir diffused flux (W/m2) + ! visbm - downward uv+vis direct beam flux (W/m2) + ! visdf - downward uv+vis diffused flux (W/m2) ! Local variables type(cmpfsw_type), dimension(rrtmgp_phys_blksz) :: scmpsw_clrsky, scmpsw_allsky diff --git a/physics/docs/ccpp_doxyfile b/physics/docs/ccpp_doxyfile index 136ae55d8..6e1d11cd7 100644 --- a/physics/docs/ccpp_doxyfile +++ b/physics/docs/ccpp_doxyfile @@ -957,11 +957,11 @@ INPUT = pdftxt/mainpage.txt \ pdftxt/MYNN_SFCLAYER.txt \ pdftxt/GFS_NSST.txt \ pdftxt/GFS_OCEAN.txt \ - pdftxt/GFS_NOAH.txt \ + pdftxt/NOAH_LSM.txt \ pdftxt/GFS_SFCSICE.txt \ pdftxt/GFS_SATMEDMFVDIFQ.txt \ - pdftxt/GFS_NOAHMP.txt \ - pdftxt/GFS_UGWPv0.txt \ + pdftxt/NOAHMP_LSM.txt \ + pdftxt/UGWPv0.txt \ pdftxt/GFS_ugwpv1.txt \ pdftxt/GFS_UGWPV1_ORO.txt \ pdftxt/GFS_GWDPS.txt \ @@ -1047,7 +1047,7 @@ RECURSIVE = YES # Note that relative paths are relative to the directory from which doxygen is # run. -EXCLUDE = +EXCLUDE = ../Radiation/RRTMGP/rte-rrtmgp # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or # directories that are symbolic links (a Unix file system feature) are excluded diff --git a/physics/docs/library.bib b/physics/docs/library.bib index 0bab22b02..d331d6398 100644 --- a/physics/docs/library.bib +++ b/physics/docs/library.bib @@ -1,13 +1,48 @@ %% This BibTeX bibliography file was created using BibDesk. %% https://bibdesk.sourceforge.io/ -%% Created for Man Zhang at 2024-07-29 15:49:56 -0600 +%% Created for Man Zhang at 2024-08-01 13:16:14 -0600 %% Saved with string encoding Unicode (UTF-8) +@article{Dowell_2022, + author = {Dowell, David C. and Alexander, Curtis R. and James, Eric P. and Weygandt, Stephen S. and Benjamin, Stanley G. and Manikin, Geoffrey S. and Blake, Benjamin T. and Brown, John M. and Olson, Joseph B. and Hu, Ming and Smirnova, Tatiana G. and Ladwig, Terra and Kenyon, Jaymes S. and Ahmadov, Ravan and Turner, David D. and Duda, Jeffrey D. and Alcott, Trevor I.}, + date-added = {2024-08-01 13:13:04 -0600}, + date-modified = {2024-08-01 13:16:11 -0600}, + doi = {10.1175/waf-d-21-0151.1}, + issn = {1520-0434}, + journal = {Weather and Forecasting}, + month = aug, + number = {8}, + pages = {1371-1395}, + publisher = {American Meteorological Society}, + title = {The High-Resolution Rapid Refresh (HRRR): An Hourly Updating Convection-Allowing Forecast Model. Part I: Motivation and System Description}, + url = {http://dx.doi.org/10.1175/WAF-D-21-0151.1}, + volume = {37}, + year = {2022}, + bdsk-url-1 = {http://dx.doi.org/10.1175/WAF-D-21-0151.1}} + +@article{pincus_et_al_2019, + abstract = {Abstract This paper describes the initial implementation of a new toolbox that seeks to balance accuracy, efficiency, and flexibility in radiation calculations for dynamical models. The toolbox consists of two related code bases: Radiative Transfer for Energetics (RTE), which computes fluxes given a radiative transfer problem defined in terms of optical properties, boundary conditions, and source functions; and RRTM for General circulation model applications---Parallel (RRTMGP), which combines data and algorithms to map a physical description of the gaseous atmosphere into such a radiative transfer problem. The toolbox is an implementation of well-established ideas, including the use of a k-distribution to represent the spectral variation of absorption by gases and the use of two-stream, plane-parallel methods for solving the radiative transfer equation. The focus is instead on accuracy, by basing the k-distribution on state-of-the-art spectroscopy and on the sometimes-conflicting goals of flexibility and efficiency. Flexibility is facilitated by making extensive use of computational objects encompassing code and data, the latter provisioned at runtime and potentially tailored to specific problems. The computational objects provide robust access to a set of high-efficiency computational kernels that can be adapted to new computational environments. Accuracy is obtained by careful choice of algorithms and through tuning and validation of the k-distribution against benchmark calculations. Flexibility with respect to the host model implies user responsibility for maps between clouds and aerosols and the radiative transfer problem, although comprehensive examples are provided for clouds.}, + author = {Pincus, Robert and Mlawer, Eli J. and Delamere, Jennifer S.}, + date-added = {2024-07-30 16:26:37 -0600}, + date-modified = {2024-07-30 16:27:28 -0600}, + doi = {https://doi.org/10.1029/2019MS001621}, + eprint = {https://agupubs.onlinelibrary.wiley.com/doi/pdf/10.1029/2019MS001621}, + journal = {Journal of Advances in Modeling Earth Systems}, + keywords = {radiation, atmospheric model, parameterization}, + number = {10}, + pages = {3074-3089}, + title = {Balancing Accuracy, Efficiency, and Flexibility in Radiation Calculations for Dynamical Models}, + url = {https://agupubs.onlinelibrary.wiley.com/doi/abs/10.1029/2019MS001621}, + volume = {11}, + year = {2019}, + bdsk-url-1 = {https://agupubs.onlinelibrary.wiley.com/doi/abs/10.1029/2019MS001621}, + bdsk-url-2 = {https://doi.org/10.1029/2019MS001621}} + @article{kim_et_al_2003, author = {Y-J. Kim, S.D. Eckermann and H-Y. Chun}, date-added = {2024-07-29 15:36:07 -0600}, @@ -348,10 +383,6 @@ @article{Lawrence_2019 bdsk-url-1 = {https://doi.org/10.1029%2F2018ms001583}, bdsk-url-2 = {https://doi.org/10.1029/2018ms001583}} -@article{cite-key, - date-added = {2023-05-24 11:18:09 -0600}, - date-modified = {2023-05-24 11:18:09 -0600}} - @article{gmd-15-6659-2022, author = {Benjamin, S. G. and Smirnova, T. G. and James, E. P. and Anderson, E. J. and Fujisaki-Manome, A. and Kelley, J. G. W. and Mann, G. E. and Gronewold, A. D. and Chu, P. and Kelley, S. G. T.}, date-added = {2023-05-24 10:51:47 -0600}, diff --git a/physics/docs/pdftxt/GFS_RRTMGP.txt b/physics/docs/pdftxt/GFS_RRTMGP.txt index 6a0862dac..f4ab8679c 100644 --- a/physics/docs/pdftxt/GFS_RRTMGP.txt +++ b/physics/docs/pdftxt/GFS_RRTMGP.txt @@ -1,5 +1,5 @@ /** -\page GFS_RRTMGP_page RRTMGP Shortwave/Longwave Radiation Scheme +\page GFS_RRTMGP_page RTE+RRTMGP Shortwave/Longwave Radiation Scheme \section des_rte_rrtmgp Description diff --git a/physics/docs/pdftxt/GFS_v16_RRTMGP_suite.txt b/physics/docs/pdftxt/GFS_v16_RRTMGP_suite.txt index 8b11cfc9c..68b36264e 100644 --- a/physics/docs/pdftxt/GFS_v16_RRTMGP_suite.txt +++ b/physics/docs/pdftxt/GFS_v16_RRTMGP_suite.txt @@ -3,8 +3,8 @@ \section gfsv_16HR3_GP_suite_overview Overview -This is an experimental version 16 of the Global Forecast System (GFS) with RRTMGP, which replaces RRTMG -in operational GFS v16 physics suite. +This is an experimental version of the Global Forecast System (GFS) in which the RRTMG radiation parameterization used +operationally is replaced with the RTE-RRTMGP parameterization for research and development. \section sdf_gfsv16GP Suite Definition File \include suite_SCM_GFS_v16_RRTMGP.xml @@ -12,7 +12,7 @@ in operational GFS v16 physics suite. \section gfs16GP_nml_opt_des Namelist - General physics options \snippet input_GFS_v16_RRTMGP.nml GFS_PHYSICS_NML -- \ref GFS_UNIFIED_UGWP related options +- \ref GFS_UGWP_v0_UGWP related options \snippet input_GFS_v16_RRTMGP.nml CIRES_UGWP_NML - nstf_name = \f$[2,0,0,0,0]^1 [2,1,0,0,0]^2\f$ @@ -28,15 +28,4 @@ in operational GFS v16 physics suite. - \b C1152: cdmbgwd="4.0,0.10,1.0,1.0" - \b C3072: cdmbgwd="4.0,0.05,1.0,1.0" -- Grid-spacing dependency of \p knob_ugwp_tauamp - - \b C48: knob_ugwp_tauamp=6.0e-3 - - \b C96: knob_ugwp_tauamp=3.0e-3 - - \b C192: knob_ugwp_tauamp=1.5e-3 - - \b C384: knob_ugwp_tauamp=0.8e-3 - - \b C768: knob_ugwp_tauamp=0.5e-3 - - \b C1152: knob_ugwp_tauamp=0.35e-3 - - \b C3072: knob_ugwp_tauamp=0.13e-3 - -- Grid-spacing dependency of \p xr_cnvcld - - \b C48 and \b C96: xr_cnvcld =.false. */ diff --git a/physics/docs/pdftxt/GFS_v17_p8_ugwpv1_suite.txt b/physics/docs/pdftxt/GFS_v17_p8_ugwpv1_suite.txt index f0324701f..9b150360a 100644 --- a/physics/docs/pdftxt/GFS_v17_p8_ugwpv1_suite.txt +++ b/physics/docs/pdftxt/GFS_v17_p8_ugwpv1_suite.txt @@ -4,8 +4,8 @@ \section gfsv_17_suite_overview Overview -The GFS_v17_p8_ugwpv1 suite is a prototype of -the GFS_v17 suite, and is expected to evolve before the implementation. It is available for use +The GFS_v17_p8_ugwpv1 suite is a prototype for +the GFS v17, and is expected to evolve before the operational implementation. It is supported for use with the CCPP SCM. The primary differences between the GFS_v16 and GFS_v17 suites are: - \b Microphysics: The replacement of \ref GFDL_cloud with \ref THOMPSON - PBL and Convection updates diff --git a/physics/docs/pdftxt/HRRR_gf_suite.txt b/physics/docs/pdftxt/HRRR_gf_suite.txt index 32a008fb4..96ac44869 100644 --- a/physics/docs/pdftxt/HRRR_gf_suite.txt +++ b/physics/docs/pdftxt/HRRR_gf_suite.txt @@ -4,7 +4,13 @@ \section RRFS_v1_suite_overview Overview The HRRR_gf suite is one of the candidates for the future operational implementation of -the Rapid Refresh Forecast System (RRFS), which can be configured using the UFS SRW App. +the Rapid Refresh Forecast System (RRFS). Simplified configurations of RRFS can be configured using +the UFS SRW App. This suite is similar to the one used by the NOAA operational HRRR v4 (Dowell et al. 2022 \cite Dowell_2022), with the addition of the Grell-Freitas +convective parameterization. + +While the parameterization for smoke and dust representation is used RRFS prototype tests and is included in the +HRRR_gf Suite Definition File, is not active in the CCPP Single Column Model since the smoke and dust tracers are initialized +with new zero values. The HRRR_gf suite uses the parameterizations in the following order: - \ref SGSCLOUD_page diff --git a/physics/docs/pdftxt/GFS_NOAHMP.txt b/physics/docs/pdftxt/NOAHMP_LSM.txt similarity index 96% rename from physics/docs/pdftxt/GFS_NOAHMP.txt rename to physics/docs/pdftxt/NOAHMP_LSM.txt index 537d27527..d5a17fc44 100644 --- a/physics/docs/pdftxt/GFS_NOAHMP.txt +++ b/physics/docs/pdftxt/NOAHMP_LSM.txt @@ -1,5 +1,5 @@ /** -\page NoahMP GFS NoahMP Land Surface Model +\page NoahMP NoahMP Land Surface Model \section des_noahmp Description This implementation of the NoahMP Land Surface Model (LSM) is adapted from the version implemented in WRF v3.7 with additions by NOAA EMC staff to work with the UFS Atmosphere model. Authoritative documentation of the NoahMP scheme can be accessed at the following links: diff --git a/physics/docs/pdftxt/GFS_NOAH.txt b/physics/docs/pdftxt/NOAH_LSM.txt similarity index 98% rename from physics/docs/pdftxt/GFS_NOAH.txt rename to physics/docs/pdftxt/NOAH_LSM.txt index 74dc42127..7a9be7d5a 100644 --- a/physics/docs/pdftxt/GFS_NOAH.txt +++ b/physics/docs/pdftxt/NOAH_LSM.txt @@ -1,5 +1,5 @@ /** -\page GFS_NOAH GFS Noah Land Surface Model +\page GFS_NOAH Noah Land Surface Model \section des_noah Description Land-atmosphere interactions are a main driver of Earth's surface water and energy budgets. The importance of the land surface is diff --git a/physics/docs/pdftxt/GFS_UGWPv0.txt b/physics/docs/pdftxt/UGWPv0.txt similarity index 99% rename from physics/docs/pdftxt/GFS_UGWPv0.txt rename to physics/docs/pdftxt/UGWPv0.txt index e3e3d4295..7e84e9c85 100644 --- a/physics/docs/pdftxt/GFS_UGWPv0.txt +++ b/physics/docs/pdftxt/UGWPv0.txt @@ -1,5 +1,5 @@ /** -\page GFS_UGWP_v0 GFS Unified Gravity Wave Physics (GWP) Scheme - Version 0 +\page GFS_UGWP_v0 Unified Gravity Wave Physics (GWP) Scheme - Version 0 \section des_UGWP Description Gravity waves (GWs) are generated by a variety of sources in the atmosphere diff --git a/physics/docs/pdftxt/ccppv7_phy_updates.txt b/physics/docs/pdftxt/ccppv7_phy_updates.txt index eecf94ed8..84745f1fd 100644 --- a/physics/docs/pdftxt/ccppv7_phy_updates.txt +++ b/physics/docs/pdftxt/ccppv7_phy_updates.txt @@ -7,7 +7,7 @@ This page provides an overview of the major updates in CCPP Physics v7.0.0. - New supported suites: GFS_v17_p8_ugwpv1, GFS_v16_RRTMGP, and HRRR_gf suites - New \ref CLM_LAKE_page in HRRR_gf suite - New \ref GFS_ugwpv1_gsldrag in GFS_v17_p8_ugwpv1 suite combines the \ref GFS_drag_suite with the version 1 UGWP non-stationary gravity wave drag (NGW) scheme of Yudin et al. (2020)\cite yudin_et_al_2020 -- New \ref GFS_RRTMGP_page in GFS_v16_RRTMGP suite +- New \ref GFS_RRTMGP_page (Pincus et al. 2019 \cite pincus_et_al_2019) in GFS_v16_RRTMGP suite - New RRFS smoke/dust scheme in HRRR_gf suite GFS_v17_p8, HRRR, RRFS_v1beta, RAP suites in CCPP v6.0.0 are no longer supported. From 6d98b1ef40ab659ed520ace2664045494cd3e326 Mon Sep 17 00:00:00 2001 From: Man Zhang Date: Thu, 8 Aug 2024 11:38:44 -0600 Subject: [PATCH 48/80] address Scidoc reviews --- physics/CONV/Grell_Freitas/cu_gf_deep.F90 | 1 + physics/CONV/Grell_Freitas/cu_gf_driver.F90 | 2 +- .../CONV/Grell_Freitas/cu_gf_driver_post.F90 | 1 + .../CONV/Grell_Freitas/cu_gf_driver_pre.F90 | 1 + physics/CONV/Grell_Freitas/cu_gf_sh.F90 | 1 + physics/GWD/cires_orowam2017.f | 5 +- physics/GWD/cires_tauamf_data.F90 | 7 +++ physics/GWD/cires_ugwp.F90 | 18 +++--- physics/GWD/cires_ugwp_module.F90 | 40 ++++++------- physics/GWD/cires_ugwp_post.F90 | 3 +- physics/GWD/cires_ugwp_triggers.F90 | 5 +- physics/GWD/drag_suite.F90 | 3 +- physics/MP/calpreciptype.f90 | 6 +- physics/PBL/MYNN_EDMF/bl_mynn_common.f90 | 2 +- physics/SFC_Models/Lake/CLM/clm_lake.f90 | 3 +- physics/docs/ccpp_dox_layout.xml | 14 ++--- physics/docs/ccpp_doxyfile | 40 +++++++++++-- physics/docs/library.bib | 21 ++----- physics/docs/pdftxt/GFS_H2OPHYS.txt | 2 +- physics/docs/pdftxt/GFS_NSST.txt | 2 +- physics/docs/pdftxt/GFS_OZPHYS.txt | 2 +- physics/docs/pdftxt/GFS_RRTMG.txt | 15 ++--- physics/docs/pdftxt/GFS_SFCLYR.txt | 5 +- physics/docs/pdftxt/GFS_SFCSICE.txt | 2 +- physics/docs/pdftxt/GFS_ugwpv1.txt | 2 +- physics/docs/pdftxt/GFS_v16_suite.txt | 4 +- .../docs/pdftxt/GFS_v17_p8_ugwpv1_suite.txt | 4 +- physics/docs/pdftxt/HRRR_gf_suite.txt | 4 +- physics/docs/pdftxt/RUCLSM.txt | 14 ----- physics/docs/pdftxt/all_schemes_list.txt | 8 +-- physics/docs/pdftxt/ccppv7_phy_updates.txt | 57 +++++++++---------- physics/docs/pdftxt/mainpage.txt | 2 +- 32 files changed, 151 insertions(+), 145 deletions(-) diff --git a/physics/CONV/Grell_Freitas/cu_gf_deep.F90 b/physics/CONV/Grell_Freitas/cu_gf_deep.F90 index 0f324244a..34960f037 100644 --- a/physics/CONV/Grell_Freitas/cu_gf_deep.F90 +++ b/physics/CONV/Grell_Freitas/cu_gf_deep.F90 @@ -1,6 +1,7 @@ !>\file cu_gf_deep.F90 !! This file is the Grell-Freitas deep convection scheme. +!> This module contains the Grell_Freitas deep convection scheme module cu_gf_deep use machine , only : kind_phys use physcons, only : qamin diff --git a/physics/CONV/Grell_Freitas/cu_gf_driver.F90 b/physics/CONV/Grell_Freitas/cu_gf_driver.F90 index df5a196b1..e14e3786d 100644 --- a/physics/CONV/Grell_Freitas/cu_gf_driver.F90 +++ b/physics/CONV/Grell_Freitas/cu_gf_driver.F90 @@ -1,7 +1,7 @@ !>\file cu_gf_driver.F90 !! This file is scale-aware Grell-Freitas cumulus scheme driver. - +!> This module contains the scale-aware Grell-Freitas cumulus scheme driver. module cu_gf_driver ! DH* TODO: replace constants with arguments to cu_gf_driver_run diff --git a/physics/CONV/Grell_Freitas/cu_gf_driver_post.F90 b/physics/CONV/Grell_Freitas/cu_gf_driver_post.F90 index 02bb3cb84..8380e2dae 100644 --- a/physics/CONV/Grell_Freitas/cu_gf_driver_post.F90 +++ b/physics/CONV/Grell_Freitas/cu_gf_driver_post.F90 @@ -1,6 +1,7 @@ !> \file cu_gf_driver_post.F90 !! Contains code related to GF convective schemes to be used within the GFS physics suite. +!> This module contains code related to GF convective schemes to be used within the GFS physics suite module cu_gf_driver_post implicit none diff --git a/physics/CONV/Grell_Freitas/cu_gf_driver_pre.F90 b/physics/CONV/Grell_Freitas/cu_gf_driver_pre.F90 index 1bc9aed34..1266d7a62 100644 --- a/physics/CONV/Grell_Freitas/cu_gf_driver_pre.F90 +++ b/physics/CONV/Grell_Freitas/cu_gf_driver_pre.F90 @@ -1,6 +1,7 @@ !> \file cu_gf_driver_pre.F90 !! Contains code related to GF convective schemes to be used within the GFS physics suite. +!> This module contains code related to GF convective schemes to be used within the GFS physics suite. module cu_gf_driver_pre implicit none diff --git a/physics/CONV/Grell_Freitas/cu_gf_sh.F90 b/physics/CONV/Grell_Freitas/cu_gf_sh.F90 index 9af9567ad..527b662e5 100644 --- a/physics/CONV/Grell_Freitas/cu_gf_sh.F90 +++ b/physics/CONV/Grell_Freitas/cu_gf_sh.F90 @@ -1,6 +1,7 @@ !>\file cu_gf_sh.F90 !! This file contains Grell-Freitas shallow convection scheme. +!> This module contains the Grell-Freitas shallow convection scheme module cu_gf_sh use machine , only : kind_phys !real(kind=kind_phys), parameter:: c1_shal=0.0015! .0005 diff --git a/physics/GWD/cires_orowam2017.f b/physics/GWD/cires_orowam2017.f index 9f04ac3b0..8f9599f24 100644 --- a/physics/GWD/cires_orowam2017.f +++ b/physics/GWD/cires_orowam2017.f @@ -1,12 +1,12 @@ !>\file cires_orowam2017.f +!! - +!> This module includes the OROGW solver of WAM2017. module cires_orowam2017 contains !>\defgroup cires_orowam2017_mod CIRES UGWP orowam2017 Module !>This is the OROGW-solver of WAM2017. -!>@{ !> subroutine oro_wam_2017(im, levs,npt,ipt, kref,kdt,me,master, @@ -394,4 +394,3 @@ subroutine ugwpv0_tofd1d(levs, sigflt, elvmax, zsurf, ! end subroutine ugwpv0_tofd1d end module cires_orowam2017 -!>@} diff --git a/physics/GWD/cires_tauamf_data.F90 b/physics/GWD/cires_tauamf_data.F90 index 4f12b2ec1..364c79409 100644 --- a/physics/GWD/cires_tauamf_data.F90 +++ b/physics/GWD/cires_tauamf_data.F90 @@ -1,3 +1,6 @@ +!>\file cires_tauamf_data.F90 +!! + module cires_tauamf_data use machine, only: kind_phys @@ -16,6 +19,7 @@ module cires_tauamf_data contains +!> subroutine read_tau_amf(me, master, errmsg, errflg) use netcdf @@ -70,6 +74,7 @@ subroutine read_tau_amf(me, master, errmsg, errflg) end subroutine read_tau_amf +!> subroutine cires_indx_ugwp (npts, me, master, dlat,j1_tau,j2_tau, w1_j1tau, w2_j2tau) use machine, only: kind_phys @@ -110,6 +115,7 @@ subroutine cires_indx_ugwp (npts, me, master, dlat,j1_tau,j2_tau, w1_j1tau, w2_j return end subroutine cires_indx_ugwp +!> subroutine tau_amf_interp(me, master, im, idate, fhour, j1_tau,j2_tau, ddy_j1, ddy_j2, tau_ddd) use machine, only: kind_phys implicit none @@ -163,6 +169,7 @@ subroutine tau_amf_interp(me, master, im, idate, fhour, j1_tau,j2_tau, ddy_j1, d end subroutine tau_amf_interp +!> subroutine gfs_idate_calendar(idate, fhour, ddd, fddd) use machine, only: kind_phys diff --git a/physics/GWD/cires_ugwp.F90 b/physics/GWD/cires_ugwp.F90 index cab602252..beb7dbbc7 100644 --- a/physics/GWD/cires_ugwp.F90 +++ b/physics/GWD/cires_ugwp.F90 @@ -1,16 +1,17 @@ !> \file cires_ugwp.F90 !! This file contains the Unified Gravity Wave Physics (UGWP) scheme by Valery Yudin (University of Colorado, CIRES) + +!> This module contains the UGWP v0 scheme by Valery Yudin (University of Colorado, CIRES) +!! !! See Valery Yudin's presentation at 2017 NGGPS PI meeting: !! Gravity waves (GWs): Mesoscale GWs transport momentum, energy (heat) , and create eddy mixing in the whole atmosphere domain; Breaking and dissipating GWs deposit: (a) momentum; (b) heat (energy); and create (c) turbulent mixing of momentum, heat, and tracers !! To properly incorporate GW effects (a-c) unresolved by DYCOREs we need GW physics !! "Unified": a) all GW effects due to both dissipation/breaking; b) identical GW solvers for all GW sources; c) ability to replace solvers. !! Unified Formalism: -!! 1. GW Sources: Stochastic and physics based mechanisms for GW-excitations in the lower atmosphere, calibrated by the high-res analyses/forecasts, and observations (3 types of GW sources: orography, convection, fronts/jets). -!! 2. GW Propagation: Unified solver for "propagation, dissipation and breaking" excited from all type of GW sources. -!! 3. GW Effects: Unified representation of GW impacts on the "resolved" flow for all sources (energy-balanced schemes for momentum, heat and mixing). +!! - GW Sources: Stochastic and physics based mechanisms for GW-excitations in the lower atmosphere, calibrated by the high-res analyses/forecasts, and observations (3 types of GW sources: orography, convection, fronts/jets). +!! - GW Propagation: Unified solver for "propagation, dissipation and breaking" excited from all type of GW sources. +!! - GW Effects: Unified representation of GW impacts on the "resolved" flow for all sources (energy-balanced schemes for momentum, heat and mixing). !! https://www.weather.gov/media/sti/nggps/Presentations%202017/02%20NGGPS_VYUDIN_2017_.pdf - - module cires_ugwp use machine, only: kind_phys @@ -33,9 +34,7 @@ module cires_ugwp ! ------------------------------------------------------------------------ ! CCPP entry points for CIRES Unified Gravity Wave Physics (UGWP) scheme v0 ! ------------------------------------------------------------------------ -!>\defgroup cires_ugwp_run_mod CIRES Unified Gravity Wave Physics v0 Module -!> @{ -!>@ The subroutine initializes the CIRES UGWP V0. +!> The subroutine initializes the CIRES UGWP V0. !> \section arg_table_cires_ugwp_init Argument Table !! \htmlinclude cires_ugwp_init.html !! @@ -112,7 +111,7 @@ end subroutine cires_ugwp_init ! finalize of cires_ugwp (_finalize) ! ----------------------------------------------------------------------- -!>@brief The subroutine finalizes the CIRES UGWP +!> The subroutine finalizes the CIRES UGWP #if 0 !> \section arg_table_cires_ugwp_finalize Argument Table !! \htmlinclude cires_ugwp_finalize.html @@ -445,5 +444,4 @@ subroutine cires_ugwp_run(do_ugwp, me, master, im, levs, ntrac, dtp, kdt, lonr endif end subroutine cires_ugwp_run -!> @} end module cires_ugwp diff --git a/physics/GWD/cires_ugwp_module.F90 b/physics/GWD/cires_ugwp_module.F90 index 3b3ce3114..a454a5eae 100644 --- a/physics/GWD/cires_ugwp_module.F90 +++ b/physics/GWD/cires_ugwp_module.F90 @@ -1,5 +1,7 @@ !>\file cires_ugwp_module.F90 +!! +!>This module contains the UGWPv0 driver module cires_ugwpv0_module ! @@ -9,8 +11,8 @@ module cires_ugwpv0_module implicit none logical :: module_is_initialized - logical :: do_physb_gwsrcs = .false. ! control for physics-based GW-sources - logical :: do_rfdamp = .false. ! control for Rayleigh friction inside ugwp_driver + logical :: do_physb_gwsrcs = .false. !< control for physics-based GW-sources + logical :: do_rfdamp = .false. !< control for Rayleigh friction inside ugwp_driver real, parameter :: arad=6370.e3 real, parameter :: pi = atan(1.0) @@ -18,24 +20,24 @@ module cires_ugwpv0_module real, parameter :: hps = 7000. real, parameter :: hpskm = hps/1000. ! - real :: kxw = 6.28e-3/100. ! single horizontal wavenumber of ugwp schemes + real :: kxw = 6.28e-3/100. !< single horizontal wavenumber of ugwp schemes real, parameter :: ricrit = 0.25 real, parameter :: frcrit = 0.50 real, parameter :: linsat = 1.00 real, parameter :: linsat2 = linsat*linsat ! - integer :: knob_ugwp_solver=1 ! 1, 2, 3, 4 - (linsat, ifs_2010, ad_gfdl, dsp_dis) - integer, dimension(4) :: knob_ugwp_source ! [1,1,1,0] - (oro, fronts, conv, imbf-owp] - integer, dimension(4) :: knob_ugwp_wvspec ! number of waves for- (oro, fronts, conv, imbf-owp] - integer, dimension(4) :: knob_ugwp_azdir ! number of wave azimuths for- (oro, fronts, conv, imbf-owp] - integer, dimension(4) :: knob_ugwp_stoch ! 1 - deterministic ; 0 - stochastic - real, dimension(4) :: knob_ugwp_effac ! efficiency factors for- (oro, fronts, conv, imbf-owp] + integer :: knob_ugwp_solver=1 !< 1, 2, 3, 4 - (linsat, ifs_2010, ad_gfdl, dsp_dis) + integer, dimension(4) :: knob_ugwp_source !< [1,1,1,0] - (oro, fronts, conv, imbf-owp] + integer, dimension(4) :: knob_ugwp_wvspec !< number of waves for- (oro, fronts, conv, imbf-owp] + integer, dimension(4) :: knob_ugwp_azdir !< number of wave azimuths for- (oro, fronts, conv, imbf-owp] + integer, dimension(4) :: knob_ugwp_stoch !< 1 - deterministic ; 0 - stochastic + real, dimension(4) :: knob_ugwp_effac !< efficiency factors for- (oro, fronts, conv, imbf-owp] - integer :: knob_ugwp_doaxyz=1 ! 1 -gwdrag - integer :: knob_ugwp_doheat=1 ! 1 -gwheat - integer :: knob_ugwp_dokdis=0 ! 1 -gwmixing - integer :: knob_ugwp_ndx4lh = 2 ! n-number of "unresolved" "n*dx" for lh_gw + integer :: knob_ugwp_doaxyz=1 !< 1 -gwdrag + integer :: knob_ugwp_doheat=1 !< 1 -gwheat + integer :: knob_ugwp_dokdis=0 !< 1 -gwmixing + integer :: knob_ugwp_ndx4lh = 2 !< n-number of "unresolved" "n*dx" for lh_gw ! integer :: ugwp_azdir integer :: ugwp_stoch @@ -45,12 +47,12 @@ module cires_ugwpv0_module real :: ugwp_effac ! - data knob_ugwp_source / 1,0, 1, 0 / ! oro-conv-fjet-okw-taub_lat: 1-active 0-off - data knob_ugwp_wvspec /1,32,32,32/ ! number of waves for- (oro, fronts, conv, imbf-owp, taulat] - data knob_ugwp_azdir /2, 4, 4,4/ ! number of wave azimuths for- (oro, fronts, conv, imbf-okwp] - data knob_ugwp_stoch /0, 0, 0,0/ ! 0 - deterministic ; 1 - stochastic, non-activated option - data knob_ugwp_effac /1.,1.,1.,1./ ! efficiency factors for- (oro, fronts, conv, imbf-owp] - integer :: knob_ugwp_version = 0 ! version control had sense under IPD in CCPP=> to SUITES + data knob_ugwp_source / 1,0, 1, 0 / !< oro-conv-fjet-okw-taub_lat: 1-active 0-off + data knob_ugwp_wvspec /1,32,32,32/ !< number of waves for- (oro, fronts, conv, imbf-owp, taulat] + data knob_ugwp_azdir /2, 4, 4,4/ !< number of wave azimuths for- (oro, fronts, conv, imbf-okwp] + data knob_ugwp_stoch /0, 0, 0,0/ !< 0 - deterministic ; 1 - stochastic, non-activated option + data knob_ugwp_effac /1.,1.,1.,1./ !< efficiency factors for- (oro, fronts, conv, imbf-owp] + integer :: knob_ugwp_version = 0 !< version control had sense under IPD in CCPP=> to SUITES integer :: launch_level = 55 ! namelist /cires_ugwp_nml/ knob_ugwp_solver, knob_ugwp_source,knob_ugwp_wvspec, knob_ugwp_azdir, & diff --git a/physics/GWD/cires_ugwp_post.F90 b/physics/GWD/cires_ugwp_post.F90 index 3efb2b7e8..2ae20ac84 100644 --- a/physics/GWD/cires_ugwp_post.F90 +++ b/physics/GWD/cires_ugwp_post.F90 @@ -1,6 +1,7 @@ !> \file cires_ugwp_post.F90 -!! This file contains +!! This file contains the calcualtion of the UGWP v0 diagnostics +!> This module contains the calculation of the UGWP v0 diagnostics (ldiag_ugwp) module cires_ugwp_post contains diff --git a/physics/GWD/cires_ugwp_triggers.F90 b/physics/GWD/cires_ugwp_triggers.F90 index ba7483eca..82cf11ebb 100644 --- a/physics/GWD/cires_ugwp_triggers.F90 +++ b/physics/GWD/cires_ugwp_triggers.F90 @@ -5,6 +5,7 @@ module cires_ugwp_triggers contains ! +!> subroutine slat_geos5_tamp_v0(im, tau_amp, xlatdeg, tau_gw) !================= ! GEOS-5 & MERRA-2 lat-dependent GW-source function tau(z=Zlaunch) =rho* @@ -38,6 +39,7 @@ subroutine slat_geos5_tamp_v0(im, tau_amp, xlatdeg, tau_gw) ! end subroutine slat_geos5_tamp_v0 +!> subroutine slat_geos5_v0(im, xlatdeg, tau_gw) !================= ! GEOS-5 & MERRA-2 lat-dependent GW-source function tau(z=Zlaunch) =rho* @@ -76,7 +78,8 @@ subroutine slat_geos5_v0(im, xlatdeg, tau_gw) enddo ! end subroutine slat_geos5_v0 -! + +!> subroutine init_nazdir_v0(naz, xaz, yaz) use ugwp_common_v0 , only : pi2 implicit none diff --git a/physics/GWD/drag_suite.F90 b/physics/GWD/drag_suite.F90 index 1c4d115b7..634c4f1a1 100644 --- a/physics/GWD/drag_suite.F90 +++ b/physics/GWD/drag_suite.F90 @@ -2,12 +2,11 @@ !! This file is the parameterization of orographic gravity wave !! drag, mountain blocking, and form drag. +!> This module contains the orographic gravity wave drag scheme module drag_suite contains -!> This module contains the CCPP-compliant GSL orographic gravity wave drag scheme. -!! !> \brief This subroutine initializes the orographic gravity wave drag scheme. !! !> \section arg_table_drag_suite_init Argument Table diff --git a/physics/MP/calpreciptype.f90 b/physics/MP/calpreciptype.f90 index f2d995946..792c0ba84 100644 --- a/physics/MP/calpreciptype.f90 +++ b/physics/MP/calpreciptype.f90 @@ -1,11 +1,11 @@ !>\file calpreciptype.f90 !! This file contains the subroutines that calculates dominant precipitation type. +!> This module defines four algorithms that are called to calculate dominant precipitation type, and the +!!tallies are sumed in calwxt_dominant(). module calpreciptype_mod contains -!> Foure algorithms are called to calculate dominant precipitation type, and the -!!tallies are sumed in calwxt_dominant(). -!! + !>\section gen_calp GFS calpreciptype General Algorithm subroutine calpreciptype(kdt,nrcm,im,ix,lm,lp1,randomno, & xlat,xlon, & diff --git a/physics/PBL/MYNN_EDMF/bl_mynn_common.f90 b/physics/PBL/MYNN_EDMF/bl_mynn_common.f90 index 3e02f94b0..47b172808 100644 --- a/physics/PBL/MYNN_EDMF/bl_mynn_common.f90 +++ b/physics/PBL/MYNN_EDMF/bl_mynn_common.f90 @@ -7,7 +7,7 @@ !! module (module_bl_mynn) further below: !>\ingroup gp_mynnedmf -!! Define Model-specific constants/parameters +!! This module defines model-specific constants/parameters. module bl_mynn_common !------------------------------------------ diff --git a/physics/SFC_Models/Lake/CLM/clm_lake.f90 b/physics/SFC_Models/Lake/CLM/clm_lake.f90 index 8686221fa..c004e6c32 100644 --- a/physics/SFC_Models/Lake/CLM/clm_lake.f90 +++ b/physics/SFC_Models/Lake/CLM/clm_lake.f90 @@ -1,5 +1,7 @@ !> \file clm_lake.f90 !! Contains code related to the CLM lake model + +!> This module contains the CLM Lake model. !! !! This lake scheme was taken from module_sf_lake in WRF 4.3.1, and !! modified for CCPP by Sam Trahan in June 2022. @@ -17,7 +19,6 @@ !! can be used with any land surface scheme embedded in WRF. The lake scheme !! developments and evaluations were included in Subin et al. (2012) \cite Subin_2012 !! and Gu et al. (2015) \cite Gu2015 . - MODULE clm_lake use machine, only: kind_phys, kind_dbl_prec diff --git a/physics/docs/ccpp_dox_layout.xml b/physics/docs/ccpp_dox_layout.xml index 6242933b7..b844b5c1b 100644 --- a/physics/docs/ccpp_dox_layout.xml +++ b/physics/docs/ccpp_dox_layout.xml @@ -1,16 +1,16 @@ + - + - - + + - - - - + + + diff --git a/physics/docs/ccpp_doxyfile b/physics/docs/ccpp_doxyfile index 6e1d11cd7..4efdb161f 100644 --- a/physics/docs/ccpp_doxyfile +++ b/physics/docs/ccpp_doxyfile @@ -984,10 +984,7 @@ INPUT = pdftxt/mainpage.txt \ ../PBL \ ../SFC_Models \ ../photochem \ - ../Radiation \ - ../hooks \ - ../tools \ - ../Interstitials + ../Radiation # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses @@ -1047,7 +1044,38 @@ RECURSIVE = YES # Note that relative paths are relative to the directory from which doxygen is # run. -EXCLUDE = ../Radiation/RRTMGP/rte-rrtmgp +EXCLUDE = ../Radiation/RRTMGP/rte-rrtmgp \ + ../MP/Morrison_Gettelman \ + ../MP/Ferrier_Aligo \ + ../MP/Zhao_Carr \ + ../PBL/MYJ \ + ../PBL/HEDMF \ + ../PBL/SHOC \ + ../PBL/saYSU \ + ../PBL/YSU \ + ../SFC_Models/Lake/Flake \ + ../smoke_dust \ + ../SFC_Layer/GFDL \ + ../SFC_Layer/MYJ \ + ../tools \ + ../CONV/C3 \ + ../CONV/Chikira_Sugiyama \ + ../CONV/nTiedtke \ + ../CONV/RAS \ + ../CONV/SAS \ + ../GWD/cires_ugwpv1_module.F90 \ + ../GWD/cires_ugwpv1_initialize.F90 \ + ../GWD/cires_ugwpv1_oro.F90 \ + ../GWD/cires_ugwpv1_solv2.F90 \ + ../GWD/cires_ugwpv1_sporo.F90 \ + ../GWD/cires_ugwpv1_triggers.F90 \ + ../GWD/cires_tauamf_data.F90 \ + ../GWD/unified_ugwp.F90 \ + ../GWD/unified_ugwp_post.F90 \ + ../GWD/gwdc.f \ + ../GWD/gwdc_post.f \ + ../GWD/gwdc_pre.f \ + ../GWD/rayleigh_damp.f # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or # directories that are symbolic links (a Unix file system feature) are excluded @@ -1181,7 +1209,7 @@ FORTRAN_COMMENT_AFTER = 72 # also VERBATIM_HEADERS is set to NO. # The default value is: NO. -SOURCE_BROWSER = NO +SOURCE_BROWSER = YES # Setting the INLINE_SOURCES tag to YES will include the body of functions, # multi-line macros, enums or list initialized variables directly into the diff --git a/physics/docs/library.bib b/physics/docs/library.bib index d331d6398..b5f8b467b 100644 --- a/physics/docs/library.bib +++ b/physics/docs/library.bib @@ -1,7 +1,7 @@ %% This BibTeX bibliography file was created using BibDesk. %% https://bibdesk.sourceforge.io/ -%% Created for Man Zhang at 2024-08-01 13:16:14 -0600 +%% Created for Man Zhang at 2024-08-06 10:37:12 -0600 %% Saved with string encoding Unicode (UTF-8) @@ -86,9 +86,9 @@ @inproceedings{yudin_et_al_2020 bdsk-url-1 = {https://dtcenter.org/sites/default/files/events/2020/4-valery-yudin.pdf}} @article{han_2021, - author = {J. Han, J. Peng, W. Li, W. Wang, Z. Zhang, F. Yang and W. Zheng}, + author = {Han, J. and J. Peng and W. Li and W. Wang and Z. Zhang and F. Yang and W. Zheng}, date-added = {2024-07-02 13:49:10 -0600}, - date-modified = {2024-07-02 13:49:10 -0600}, + date-modified = {2024-08-06 10:36:52 -0600}, doi = {10.25923/CYBH-W893}, publisher = {National Centers for Environmental Prediction (U.S.)}, title = {Updates in the NCEP GFS Cumulus Convection, Vertical Turbulent Mixing, and Surface Layer Physics}, @@ -132,9 +132,9 @@ @article{Bengtsson_et_al_2020 bdsk-url-2 = {https://doi.org/10.1029/2020MS002260}} @article{Han_et_al_2022, - author = {J. Han, F. Yang, R. Montuoro, W. Li, R. Sun}, + author = {Han, J. and F. Yang and R. Montuoro and W. Li and R. Sun}, date-added = {2024-07-02 11:17:39 -0600}, - date-modified = {2024-07-02 11:20:58 -0600}, + date-modified = {2024-08-06 10:35:59 -0600}, institution = {NCEP Office Note 506}, title = {Implementation of a positive definite mass-flux scheme and a method for removing the negative tracers in the NCEP GFS planetary boundary layer and cumulus convection scheme}, year = {2022}} @@ -613,17 +613,6 @@ @article{Henry_Juang_2010 bdsk-url-1 = {https://doi.org/10.1175%2F2009mwr3109.1}, bdsk-url-2 = {https://doi.org/10.1175/2009mwr3109.1}} -@article{https://doi.org/10.25923/5051-3r70, - author = {Han, Jongil}, - date-added = {2022-04-14 18:24:47 -0600}, - date-modified = {2022-04-14 18:24:47 -0600}, - publisher = {National Centers for Environmental Prediction (U.S.)}, - title = {Implementation of a positive definite mass-flux scheme and a method for removing the negative tracers in the NCEP GFS planetary boundary layer and cumulus convection schemes}, - url = {https://repository.library.noaa.gov/view/noaa/36734}, - year = {2022}, - bdsk-url-1 = {https://repository.library.noaa.gov/view/noaa/36734}, - bdsk-url-2 = {https://doi.org/10.25923/5051-3R70}} - @article{https://doi.org/10.25923/cybh-w893, author = {Han, Jongil}, date-added = {2022-04-14 18:17:43 -0600}, diff --git a/physics/docs/pdftxt/GFS_H2OPHYS.txt b/physics/docs/pdftxt/GFS_H2OPHYS.txt index 190cede52..24de44b9c 100644 --- a/physics/docs/pdftxt/GFS_H2OPHYS.txt +++ b/physics/docs/pdftxt/GFS_H2OPHYS.txt @@ -1,5 +1,5 @@ /** -\page GFS_H2OPHYS GFS Stratospheric H2O Scheme +\page GFS_H2OPHYS Stratospheric H2O Scheme \section des_h2o Description To improve the treatment of stratospheric water vapor in the global model, NCEP implemented a parameterization of photochemical production and loss (P-L) of water vapor through methane oxidation and photolysis of H2O in the upper mesosphere due to solar Lyman alpha absorption is implemented in GFS. diff --git a/physics/docs/pdftxt/GFS_NSST.txt b/physics/docs/pdftxt/GFS_NSST.txt index b74e99328..ed3537aa9 100644 --- a/physics/docs/pdftxt/GFS_NSST.txt +++ b/physics/docs/pdftxt/GFS_NSST.txt @@ -1,5 +1,5 @@ /** -\page GFS_NSST GFS Near-Surface Sea Temperature Scheme +\page GFS_NSST Near-Surface Sea Temperature Scheme \section des_nst Description Sea Surface Temperature (SST) is required in a Numerical Weather Prediction (NWP) system as the lower thermal diff --git a/physics/docs/pdftxt/GFS_OZPHYS.txt b/physics/docs/pdftxt/GFS_OZPHYS.txt index 8c3db97ce..8bd6a0da5 100644 --- a/physics/docs/pdftxt/GFS_OZPHYS.txt +++ b/physics/docs/pdftxt/GFS_OZPHYS.txt @@ -1,5 +1,5 @@ /** -\page GFS_OZPHYS GFS Ozone Photochemistry (2015) Scheme +\page GFS_OZPHYS Ozone Photochemistry (2015) Scheme \section des_ozone Description In recent years, the leading NWP centers have extended the vertical range of their NWP and DA systems from the surface up through the stratosphere (~10-50 km altitude) and lower mesosphere (~50-65 km). Some diff --git a/physics/docs/pdftxt/GFS_RRTMG.txt b/physics/docs/pdftxt/GFS_RRTMG.txt index f21a4fb97..181d32308 100644 --- a/physics/docs/pdftxt/GFS_RRTMG.txt +++ b/physics/docs/pdftxt/GFS_RRTMG.txt @@ -71,10 +71,8 @@ - CSULFtoa: Upward LW - CSUSFtoa: Upward SW -\section rrtmg_enh CCPP Physics Updates -\version CCPP v6.0.0 -Requests have been made by many physics developers and users to rewrite +In 2022, requests have been made by many physics developers and users to rewrite the cloud routines (routines progcld) for radiation computation in the program radiation_clouds.f. Those cloud subroutines are very similar, and have many lines of common code. We modified the radiation_clouds.f module, @@ -86,9 +84,8 @@ radiation_clouds_prop can connect to the calculations of the cloud radiation properties for all the microphysics schemes. Summary of the major changes: -- \ref radiation_clouds.f +- \ref radiation_clouds.f : A new subroutine module_radiation_clouds::radiation_clouds_prop was added to radiation_clouds.f. This new subroutine calculates all cloud radiation properties for all the microphysics schemes. - A new subroutine module_radiation_clouds::radiation_clouds_prop was added to radiation_clouds.f. This new subroutine calculates all cloud radiation properties for all the microphysics schemes. - module_radiation_clouds::progcld_zhao_carr() - module_radiation_clouds::progcld_zhao_carr_pdf() - module_radiation_clouds::progcld_gfdl_lin() @@ -97,13 +94,9 @@ Summary of the major changes: - module_radiation_clouds::progclduni() - module_radiation_clouds::progcld_thompson() -- \ref GFS_rrtmg_pre.F90 +- \ref GFS_rrtmg_pre.F90 : Removed the “progcld” subroutine calls, and replaced them with a single subroutine call to module_radiation_clouds::radiation_clouds_prop. - Removed the “progcld” subroutine calls, and replaced them with a single subroutine call to module_radiation_clouds::radiation_clouds_prop. - -- \ref radiation_cloud_overlap.F90 - - Replaced subroutine “get_alpha_exp” with module_radiation_cloud_overlap::get_alpha_exper(). The new subroutine revises alpha for exponential random cloud overlap option. This new subroutine is used in programs GFS_rrtmgp_cloud_overlap_pre.F90 and GFS_rrtmgp_gfdlmp_pre.F90. +- \ref radiation_cloud_overlap.F90 : Replaced subroutine “get_alpha_exp” with module_radiation_cloud_overlap::get_alpha_exper(). The new subroutine revises alpha for exponential random cloud overlap option. This new subroutine is used in programs GFS_rrtmgp_cloud_overlap_pre.F90 and GFS_rrtmgp_gfdlmp_pre.F90. - Subroutine module_radiation_clouds::gethml() has been modified. The subroutine computes low, mid, high, total and boundary clouds, and is used in GFS_cloud_diagnostics.F90. diff --git a/physics/docs/pdftxt/GFS_SFCLYR.txt b/physics/docs/pdftxt/GFS_SFCLYR.txt index 5498f510d..dfb071a81 100644 --- a/physics/docs/pdftxt/GFS_SFCLYR.txt +++ b/physics/docs/pdftxt/GFS_SFCLYR.txt @@ -54,15 +54,12 @@ Here \f$z\f$ is the height, \f$L\f$ is the Obukhov length, \f$z_{0M}\f$ is the m The pertinent features of the GFS stable surface layer parameterization scheme are described in the appendix of Zheng et al. (2017) \cite zheng_et_al_2017. -\section version_gfsslay_enh Physics Updates -\version CCPP v6.0.0 - +Recently, Han et al.(2021) \cite https://doi.org/10.25923/cybh-w893 and Han et al.(2022) \cite Han_et_al_2022 introduced a few new features: - A new canopy heat storage algorithm was implemented. The reduction of the sensible heat flux into the PBL, as a function of surface roughness and vegetation fraction, helps to reduce nighttime cold and daytime warm 2-meter temperature biases over forested regions. - A sea spray effect algorithm was included to enhance sensible and latent heat fluxes, especially for strong wind conditions. - To better represent sub-grid scale turbulence variability in the surface layer, a new algorithm for maximum surface layer stability parameter was developed as an inverse function of the background turbulent eddy diffusivity. - The thermal roughness length calculation over land has been modified. -\sa Han et al.(2021) \cite https://doi.org/10.25923/cybh-w893 and Han et al.(2022) \cite https://doi.org/10.25923/5051-3r70 \section intra_rough Intraphysics Communication \ref arg_table_sfc_diff_run diff --git a/physics/docs/pdftxt/GFS_SFCSICE.txt b/physics/docs/pdftxt/GFS_SFCSICE.txt index 4cd61f316..9b0afd74f 100644 --- a/physics/docs/pdftxt/GFS_SFCSICE.txt +++ b/physics/docs/pdftxt/GFS_SFCSICE.txt @@ -1,5 +1,5 @@ /** -\page GFS_SFCSICE GFS Sea Ice Scheme +\page GFS_SFCSICE Sea Ice Scheme \section des_sice Description Sea ice is a thin skin of frozen water covering the polar oceans. The sea ice strongly interacts with both the atmosphere above and the ocean underneath in the high diff --git a/physics/docs/pdftxt/GFS_ugwpv1.txt b/physics/docs/pdftxt/GFS_ugwpv1.txt index c7665516b..dc2599be3 100644 --- a/physics/docs/pdftxt/GFS_ugwpv1.txt +++ b/physics/docs/pdftxt/GFS_ugwpv1.txt @@ -1,5 +1,5 @@ /** -\page GFS_ugwpv1_gsldrag GFS Unified Gravity Wave Physics (GWP) Scheme - Version 1 +\page ugwpv1_gsldrag Unified Gravity Wave Physics (GWP) Scheme - Version 1 \section des_ugwpv1 Description The GFS Unified GWP version 1 combines the \ref GFS_drag_suite with the version 1 UGWP non-stationary gravity wave drag (NGW) scheme of Yudin et al. (2020)\cite yudin_et_al_2020. diff --git a/physics/docs/pdftxt/GFS_v16_suite.txt b/physics/docs/pdftxt/GFS_v16_suite.txt index 1d4cf2a32..5b3e5fabb 100644 --- a/physics/docs/pdftxt/GFS_v16_suite.txt +++ b/physics/docs/pdftxt/GFS_v16_suite.txt @@ -4,7 +4,9 @@ \section gfsv16_suite_overview Overview Version 16 of the Global Forecast System (GFS) was implemented operationally by the NOAA -National Centers for Environmental Prediction (NCEP) in 2021. The GFS_v16 suite uses the parameterizations in the following order: +National Centers for Environmental Prediction (NCEP) in 2021. While GFS version 16 did not make +use of CCPP physics suites, the GFS_v16 suite is meant to emulate the physics used in that operational implementation. +The GFS_v16 suite uses the parameterizations in the following order: - \ref GFS_RRTMG_page - \ref GFS_SFCLYR - \ref GFS_NSST diff --git a/physics/docs/pdftxt/GFS_v17_p8_ugwpv1_suite.txt b/physics/docs/pdftxt/GFS_v17_p8_ugwpv1_suite.txt index 9b150360a..9483192e6 100644 --- a/physics/docs/pdftxt/GFS_v17_p8_ugwpv1_suite.txt +++ b/physics/docs/pdftxt/GFS_v17_p8_ugwpv1_suite.txt @@ -9,7 +9,7 @@ the GFS v17, and is expected to evolve before the operational implementation. It with the CCPP SCM. The primary differences between the GFS_v16 and GFS_v17 suites are: - \b Microphysics: The replacement of \ref GFDL_cloud with \ref THOMPSON - PBL and Convection updates -- \b Gravity \b Wave \b Drag: The replacement of \ref GFS_UGWP_v0 with \ref GFS_ugwpv1_gsldrag +- \b Gravity \b Wave \b Drag: The replacement of \ref GFS_UGWP_v0 with \ref ugwpv1_gsldrag - \b Land \b Surface \b Model: The replacement of \ref GFS_NOAH with \ref NoahMP The GFS_v17 suite uses the parameterizations in the following order: @@ -19,7 +19,7 @@ The GFS_v17 suite uses the parameterizations in the following order: - \ref NoahMP - \ref GFS_SFCSICE - \ref GFS_SATMEDMFVDIFQ - - \ref GFS_ugwpv1_gsldrag + - \ref ugwpv1_gsldrag - \ref GFS_OZPHYS - \ref GFS_H2OPHYS - \ref GFS_SAMFdeep diff --git a/physics/docs/pdftxt/HRRR_gf_suite.txt b/physics/docs/pdftxt/HRRR_gf_suite.txt index 96ac44869..5ec1e4afd 100644 --- a/physics/docs/pdftxt/HRRR_gf_suite.txt +++ b/physics/docs/pdftxt/HRRR_gf_suite.txt @@ -5,8 +5,8 @@ The HRRR_gf suite is one of the candidates for the future operational implementation of the Rapid Refresh Forecast System (RRFS). Simplified configurations of RRFS can be configured using -the UFS SRW App. This suite is similar to the one used by the NOAA operational HRRR v4 (Dowell et al. 2022 \cite Dowell_2022), with the addition of the Grell-Freitas -convective parameterization. +the UFS SRW App. This suite is similar to the one used by the NOAA operational HRRR v4 (Dowell et al. 2022 \cite Dowell_2022), +with the addition of the Grell-Freitas deep convective parameterization. While the parameterization for smoke and dust representation is used RRFS prototype tests and is included in the HRRR_gf Suite Definition File, is not active in the CCPP Single Column Model since the smoke and dust tracers are initialized diff --git a/physics/docs/pdftxt/RUCLSM.txt b/physics/docs/pdftxt/RUCLSM.txt index f7e821f34..d444eedef 100644 --- a/physics/docs/pdftxt/RUCLSM.txt +++ b/physics/docs/pdftxt/RUCLSM.txt @@ -103,20 +103,6 @@ snow accumulation, and high amounts of snow in the product with 10:1 ratio are t precipitation had a high content of sleet. There is even larger improvement in the Chicago area, where observed and model precipitation were almost totally sleet. -\section v6_updates_ruc Physics Updates -- Initialization of land and ice emissivity with consideration of partial snow cover -- Initialization of land and ice albedo with consideration of partial snow cover -- Initialization of water vapor mixing ratio over land and ice -- Initialization of fractions of soil and vegetation types in a grid cell -- Changes in the computation of a flag for sea ice: it is set to true only if \p flag_cice = .false. (uncoupled sea ice model) -- Introduced separate variables for sea ice, for example: \p showfallac is replaced with \p snowfallac_ice -- Added accommodation of fractional surface grid (land and ice fractions are possible within the grid cell) -- Solar angle dependence of albedo for snow-free land -- SPP option for stochastic perturbations for emissivity, albedo and vegetation fraction -- Based on RRFS testing, the coefficient in the soil resistance formulation (Sakaguchi and Zeng (2009) \cite sakaguchi_and_zeng_2009) -was increased from 0.7 to 1.0 to increase soil resistance to evaporation - - \section intra_ruclsm Intraphysics Communication - \ref arg_table_lsm_ruc_run diff --git a/physics/docs/pdftxt/all_schemes_list.txt b/physics/docs/pdftxt/all_schemes_list.txt index d8bdd3770..73668cc15 100644 --- a/physics/docs/pdftxt/all_schemes_list.txt +++ b/physics/docs/pdftxt/all_schemes_list.txt @@ -4,7 +4,7 @@ \section allscheme_overview Physical Parameterizations In the CCPP, each parameterization is in its own modern Fortran module (see rules for a scheme to be considered CCPP-compliant at - CCPP-Compliant Physics Parameterizations ), + CCPP-Compliant Physics Parameterizations ), which facilitates model development and code maintenance. While some individual parameterization can be invoked for the SCM, most host models will assemble the parameterizations in suites. @@ -40,7 +40,7 @@ which facilitates model development and code maintenance. While some individual \b Gravity \b Wave \b Drag - \subpage GFS_UGWP_v0 - \subpage GFS_drag_suite - - \subpage GFS_ugwpv1_gsldrag + - \subpage ugwpv1_gsldrag \b Surface \b Layer - \subpage GFS_SFCLYR @@ -51,7 +51,7 @@ which facilitates model development and code maintenance. While some individual - \subpage GFS_OCEAN - \subpage GFS_SFCSICE -\b Others +\b Lakes - \subpage CLM_LAKE_page The input information for the parameterizations includes the values of the gridbox mean prognostic variables (wind components, temperature, @@ -90,7 +90,7 @@ Table 1. Physics suites and primary schemes supported in CCPP v7.0.0 |\b Radiation | \ref GFS_RRTMG_page | \ref GFS_RRTMG_page | \ref GFS_RRTMGP_page | \ref GFS_RRTMG_page | \ref GFS_RRTMG_page | |\b Surface \b Layer | \ref GFS_SFCLYR | \ref GFS_SFCLYR | \ref GFS_SFCLYR | \ref SFC_MYNNSFL | \ref SFC_MYNNSFL | |\b LSM | \ref GFS_NOAH | \ref NoahMP | \ref GFS_NOAH | \ref RUCLSM | \ref GFS_NOAH | -|\b Gravity \b Wave \b Drag| \ref GFS_UGWP_v0 | \ref GFS_ugwpv1_gsldrag | \ref GFS_UGWP_v0 | \ref GFS_drag_suite | \ref GFS_UGWP_v0 | +|\b Gravity \b Wave \b Drag| \ref GFS_UGWP_v0 | \ref ugwpv1_gsldrag | \ref GFS_UGWP_v0 | \ref GFS_drag_suite | \ref GFS_UGWP_v0 | |\b Sea \b Ice | \ref GFS_SFCSICE | \ref GFS_SFCSICE | \ref GFS_SFCSICE | \ref RUCLSM | \ref GFS_SFCSICE | \tableofcontents diff --git a/physics/docs/pdftxt/ccppv7_phy_updates.txt b/physics/docs/pdftxt/ccppv7_phy_updates.txt index 84745f1fd..5751cca74 100644 --- a/physics/docs/pdftxt/ccppv7_phy_updates.txt +++ b/physics/docs/pdftxt/ccppv7_phy_updates.txt @@ -6,17 +6,15 @@ This page provides an overview of the major updates in CCPP Physics v7.0.0. \b General \b Changes: - New supported suites: GFS_v17_p8_ugwpv1, GFS_v16_RRTMGP, and HRRR_gf suites - New \ref CLM_LAKE_page in HRRR_gf suite -- New \ref GFS_ugwpv1_gsldrag in GFS_v17_p8_ugwpv1 suite combines the \ref GFS_drag_suite with the version 1 UGWP non-stationary gravity wave drag (NGW) scheme of Yudin et al. (2020)\cite yudin_et_al_2020 +- New \ref ugwpv1_gsldrag in GFS_v17_p8_ugwpv1 suite combines the \ref GFS_drag_suite with the version 1 UGWP non-stationary gravity wave drag (NGW) scheme of Yudin et al. (2020)\cite yudin_et_al_2020 - New \ref GFS_RRTMGP_page (Pincus et al. 2019 \cite pincus_et_al_2019) in GFS_v16_RRTMGP suite -- New RRFS smoke/dust scheme in HRRR_gf suite -GFS_v17_p8, HRRR, RRFS_v1beta, RAP suites in CCPP v6.0.0 are no longer supported. +Suites GFS_v17_p8, HRRR, RRFS_v1beta, and RAP, which were supported with CCPP v6.0.0, have been phased out. \b GFS \b Scale-aware \b SAS \b Cumulus \b Schemes: The updates between GFSv16 and GFSv17 are carefully outlined in Bengtsson and Han (2024)(submitted to \a Weather \a and \a Forecasting). The main updates include: - - Implementation of a positive definition mass-flux scheme and a method for removing the negative tracers (Han et al. 2022 \cite Han_et_al_2022) - Introduction of a new closure based on a prognostic evolution of the convective updraft area fraction in both shallow and deep convection (Bengtsson et al. 2022 \cite Bengtsson_2022) - Introduction of 3D effects of cold-pool dynamics and stochastic initiation using self-organizing cellular automata stochastic convective organization scheme (not supported; Bengtsson et al. 2021 \cite bengtsson_et_al_2021) @@ -24,14 +22,30 @@ The updates between GFSv16 and GFSv17 are carefully outlined in Bengtsson and Ha - Introduction of stricter convective initiation criteria to allow for more CAPE to build up to address a low CAPE bias in GFSv16 (Han et al. 2021 \cite han_2021) - Reduction of convective rain evaporation rate to address a systematic cold bias near the surface in GFSv16 (Han et al. 2021 \cite han_2021) +\b Grell-Freitas \b Scale \b and \b Aerosol \b Aware \b Convection \b Scheme: +- Update for aerosol-awareness (experimental and not supported) +- Scale-awareness turned off when explicit microphysics is not active anywhere in the column +- Convection is completely suppressed at grid points where the MYNN PBL sheme produces shallow convection +- Radar reflectivity considers mass flux PDF as well as whether scale-awareness is turned on at the gird point in equation + \b GFS \b Scale-aware \b TKE-EDMF \b PBL \b Scheme: - Implementation of a parameterization for environmental wind shear effect in the GFS TKE-EDMF PBL and cumulus schemes to reduce -the negative hurricane intensity biases. In addition, the entrainment rates are enhanced -proportionally to the sub-cloud or PBL mean TKE (turbulent kinetic energy) when TKE is larger than a threshold value +the negative hurricane intensity biases. +- Entrainment rates are enhanced proportionally to the sub-cloud or PBL mean TKE (turbulent kinetic energy) when TKE is larger than a threshold value - Increased entrainment rate as a function of vegetation fraction and surface roughness length to enhance the underestimated CAPE forecasts in the GFS \sa Han et al.(2024) \cite Han_2024 +\b MYNN-EDMF \b PBL \b Scheme: +- Small increase of buoyancy length scale in convective environment +- Patch for ensuring non-zero cloud fractions for all grid cells where cloud mixing ratio is greater than 1e-6 or ice mixing ratio is greater than 1e-9 + +\b Subgrid-scale (\b SGS) \b Clouds \b Scheme: +- Bug fix for cloud condensate input into RRTMG radiation +- New code section for use with SAS cumulus scheme +- Cloud fraction now computed as a mix between the area-dependent form and the modified Chaboureau and Bechtold (2005) \cite Chaboureau_2005 form +- Adjusted limit for the boundary flux functions + \b Thompson \b Cloud \b Microphysics \b Scheme: - Ice generation supersaturation requirement reduced from 0.25 to 0.15 to generate more ice at the upper levels and reduce the outgoing longwave radiation bias @@ -43,6 +57,13 @@ the downward shortwave radiative flux and reduce the negative bias off coastal r \note The above improvements were tested with the non-aerosol option (in GFS_v17_p8_ugwpv1 suite), so results with the aerosol-aware Thompson (in HRRR_gf suite) may vary. +\b NSSL \b Cloud \b Microphysics \b Scheme: +- Updated with 3-moment option + +\b Radiation +- Coupling of GOCART aerosols with radiation (iaer=2011) +- Convective cloud water (liquid water + ice water) added to the calculations of cloud water path and ice water path for radiation cloud properties + \b NoahMP \b Land \b Surface \b Model: - Option for using the unified frozen precipitation fraction in NoahMP - Diagnostic 2-meter temperature and humidity now based on vegetation and bare-ground tiles (new namelist option \a iopt_diag) @@ -62,26 +83,9 @@ Thompson (in HRRR_gf suite) may vary. - Coefficient in soil resistance formulation (Sakaguchi and Zeng, 2009 \cite sakaguchi_and_zeng_2009) raised from 0.7 to 1.0 to increase soil resistance to evaporation - Computation of snow cover fraction and snow thermal conductivity updated - -\b MYNN-EDMF \b PBL \b Scheme: -- Small increase of buoyancy length scale in convective environment -- Patch for ensuring non-zero cloud fractions for all grid cells where cloud mixing ratio is greater than 1e-6 or ice mixing ratio is greater than 1e-9 - -\b Subgrid-scale (\b SGS) \b Clouds \b Scheme: -- Bug fix for cloud condensate input into RRTMG radiation -- New code section for use with SAS cumulus scheme -- Cloud fraction now computed as a mix between the area-dependent form and the modified Chaboureau and Bechtold (2005) \cite Chaboureau_2005 form -- Adjusted limit for the boundary flux functions - \b MYNN \b Surface-layer \b Scheme - Reintroduce friction velocity averaging over water to reduce noise in 10-m winds in the hurricane regime -\b Grell-Freitas \b Scale \b and \b Aerosol \b Aware \b Convection \b Scheme: -- Update for aerosol-awareness (experimental and not supported) -- Scale-awareness turned off when explicit microphysics is not active anywhere in the column -- Convection is completely suppressed at grid points where the MYNN PBL sheme produces shallow convection -- Radar reflectivity considers mass flux PDF as well as whether scale-awareness is turned on at the gird point in equation - \b Unified \b Gravity \b Wave \b Physics \b Scheme: - Replacement of the resolution-dependent effective grid spacing (cdmbgwd) with a constant (=6dx) - Removal of the planetary boundary layer height in determining the reference level @@ -91,12 +95,5 @@ Thompson (in HRRR_gf suite) may vary. - Suppression of gravity wave breaking in the upper atmosphere (over 7.5 hPa) to avoid numerical instability - Revision in sub-grid orography data considering the mathematical definition of moments -\b NSSL \b Cloud \b Microphysics \b Scheme: -- Updated with 3-moment option - -\b Radiation -- Coupling of GOCART aerosols with radiation (iaer=2011) -- Convective cloud water (liquid water + ice water) added to the calculations of cloud water path and ice water path for radiation cloud properties - */ diff --git a/physics/docs/pdftxt/mainpage.txt b/physics/docs/pdftxt/mainpage.txt index 1752f9e29..c065c3fd2 100644 --- a/physics/docs/pdftxt/mainpage.txt +++ b/physics/docs/pdftxt/mainpage.txt @@ -48,6 +48,6 @@ development of CCPP-Physics. - \b NASA \b Goddard \b Space \b Flight \b Center for their support and contribution for this CCPP scientific documentation (SciDoc). -\n Thanks also to the CCPP SciDoc Team at the Developmental Testbed Center. +\n Thanks also to the CCPP SciDoc Team at the Developmental Testbed Center: Man Zhang, Ligia Bernardet, and Mike Kavulich */ From 36abac92aa914fe296c7502b24510d67ab92e153 Mon Sep 17 00:00:00 2001 From: Man Zhang Date: Wed, 14 Aug 2024 16:24:40 -0600 Subject: [PATCH 49/80] scidoc updates --- physics/MP/GFDL/gfdl_cloud_microphys.F90 | 3 + .../MP/GFDL/module_gfdl_cloud_microphys.F90 | 2 +- physics/MP/NSSL/module_mp_nssl_2mom.F90 | 13 ++-- physics/MP/Thompson/module_mp_thompson.F90 | 2 +- ...mp_thompson_make_number_concentrations.F90 | 2 + physics/PBL/MYNN_EDMF/module_bl_mynn.F90 | 1 + physics/PBL/SATMEDMF/mfscu.f | 2 + physics/PBL/mfpbl.f | 3 + physics/PBL/mfpblt.f | 4 ++ physics/PBL/mfpbltq.f | 6 +- physics/Radiation/RRTMG/iounitdef.f | 2 + physics/Radiation/mersenne_twister.f | 8 +-- physics/Radiation/radiation_aerosols.f | 6 +- physics/Radiation/radiation_cloud_overlap.F90 | 3 +- physics/SFC_Layer/MYNN/module_sf_mynn.F90 | 2 + .../SFC_Layer/UFS/module_nst_parameters.f90 | 7 ++- .../SFC_Layer/UFS/module_nst_water_prop.f90 | 4 +- physics/SFC_Models/Land/RUC/lsm_ruc.F90 | 1 + physics/docs/ccpp_doxyfile | 1 + physics/docs/library.bib | 59 ++++++++++++++++++- physics/docs/pdftxt/suite_input.nml.txt | 23 +++++++- 21 files changed, 124 insertions(+), 30 deletions(-) diff --git a/physics/MP/GFDL/gfdl_cloud_microphys.F90 b/physics/MP/GFDL/gfdl_cloud_microphys.F90 index 8b149616e..b0b632646 100644 --- a/physics/MP/GFDL/gfdl_cloud_microphys.F90 +++ b/physics/MP/GFDL/gfdl_cloud_microphys.F90 @@ -1,6 +1,9 @@ !> \file gfdl_cloud_microphys.F90 !! This file contains the CCPP entry point for the column GFDL cloud microphysics ( Chen and Lin (2013) !! \cite chen_and_lin_2013 ). + +!> This module contains the CCPP entry point for the column GFDL cloud microphysics ( Chen and Lin (2013) +!! \cite chen_and_lin_2013 ). module gfdl_cloud_microphys use gfdl_cloud_microphys_mod, only: gfdl_cloud_microphys_mod_init, & diff --git a/physics/MP/GFDL/module_gfdl_cloud_microphys.F90 b/physics/MP/GFDL/module_gfdl_cloud_microphys.F90 index 5cab1abbc..4db36c9a3 100644 --- a/physics/MP/GFDL/module_gfdl_cloud_microphys.F90 +++ b/physics/MP/GFDL/module_gfdl_cloud_microphys.F90 @@ -27,7 +27,7 @@ ! ======================================================================= !>\defgroup mod_gfdl_cloud_mp GFDL Cloud MP modules !!\ingroup gfdlmp -!! This module contains the column GFDL Cloud microphysics scheme. +!> This module contains the column GFDL Cloud microphysics scheme. module gfdl_cloud_microphys_mod ! use mpp_mod, only: stdlog, mpp_pe, mpp_root_pe, mpp_clock_id, & diff --git a/physics/MP/NSSL/module_mp_nssl_2mom.F90 b/physics/MP/NSSL/module_mp_nssl_2mom.F90 index 875898dcc..c57110bad 100644 --- a/physics/MP/NSSL/module_mp_nssl_2mom.F90 +++ b/physics/MP/NSSL/module_mp_nssl_2mom.F90 @@ -1,11 +1,5 @@ !> \file module_mp_nssl_2mom.F90 - - - - - - - +!! !--------------------------------------------------------------------- ! code snapshot: "Sep 22 2023" at "22:01:53" @@ -177,7 +171,10 @@ !>\defgroup mod_nsslmp NSSL 2-moment microphysics modules !!\ingroup nsslmp -!! Module for NSSL cloud physics + +!> This module contains 1/2/3-moment bulk microphysics scheme based on a combination of +!! Straka and Mansell (2005, JAM) and Zeigler (1985, JAS) and modified/upgraded in +!! in Mansell, Zeigler, and Bruning (2010, JAS). MODULE module_mp_nssl_2mom IMPLICIT NONE diff --git a/physics/MP/Thompson/module_mp_thompson.F90 b/physics/MP/Thompson/module_mp_thompson.F90 index aa1361c3b..c19df1eaa 100644 --- a/physics/MP/Thompson/module_mp_thompson.F90 +++ b/physics/MP/Thompson/module_mp_thompson.F90 @@ -3,7 +3,7 @@ !>\ingroup aathompson -!! This module computes the moisture tendencies of water vapor, +!> This module computes the moisture tendencies of water vapor, !! cloud droplets, rain, cloud ice (pristine), snow, and graupel. !! Prior to WRFv2.2 this code was based on Reisner et al (1998), but !! few of those pieces remain. A complete description is now found in diff --git a/physics/MP/Thompson/module_mp_thompson_make_number_concentrations.F90 b/physics/MP/Thompson/module_mp_thompson_make_number_concentrations.F90 index 72a1055dd..b00242966 100644 --- a/physics/MP/Thompson/module_mp_thompson_make_number_concentrations.F90 +++ b/physics/MP/Thompson/module_mp_thompson_make_number_concentrations.F90 @@ -2,6 +2,8 @@ !! This file contains !>\ingroup aathompson + +!>This module ocntains lookup tables of radiative effective radius of cloud ice, rain and water. module module_mp_thompson_make_number_concentrations use physcons, only: PI => con_pi diff --git a/physics/PBL/MYNN_EDMF/module_bl_mynn.F90 b/physics/PBL/MYNN_EDMF/module_bl_mynn.F90 index 04f8faa59..aa81e0999 100644 --- a/physics/PBL/MYNN_EDMF/module_bl_mynn.F90 +++ b/physics/PBL/MYNN_EDMF/module_bl_mynn.F90 @@ -248,6 +248,7 @@ ! Many of these changes are now documented in references listed above. !==================================================================== +!> This module contains the entity of MYNN-EDMF PBL scheme MODULE module_bl_mynn use bl_mynn_common,only: & diff --git a/physics/PBL/SATMEDMF/mfscu.f b/physics/PBL/SATMEDMF/mfscu.f index e0c184139..a9faa735e 100644 --- a/physics/PBL/SATMEDMF/mfscu.f +++ b/physics/PBL/SATMEDMF/mfscu.f @@ -1,6 +1,8 @@ !>\file mfscu.f !! This file contains the mass flux and downdraft parcel preperties !! parameterization for stratocumulus-top-driven turbulence. + + module mfscu_mod contains !>\ingroup satmedmf diff --git a/physics/PBL/mfpbl.f b/physics/PBL/mfpbl.f index dac548711..ef4fa3860 100644 --- a/physics/PBL/mfpbl.f +++ b/physics/PBL/mfpbl.f @@ -1,5 +1,8 @@ !> \file mfpbl.f !! This file contains the subroutine that calculates the updraft properties and mass flux for use in the Hybrid EDMF PBL scheme. + +!> This module contains the subroutine that calculates the updraft properties and mass flux +!! for use in the Hybrid EDMF PBL scheme. module mfpbl_mod contains !> \ingroup HEDMF diff --git a/physics/PBL/mfpblt.f b/physics/PBL/mfpblt.f index 67e554b92..68b8d67a7 100644 --- a/physics/PBL/mfpblt.f +++ b/physics/PBL/mfpblt.f @@ -1,6 +1,10 @@ !>\file mfpblt.f !! This file contains the subroutine that calculates mass flux and !! updraft parcel properties for thermals driven by surface heating +!! for use in the TKE-EDMF PBL scheme. + +!> This module contains the subroutine that calculates mass flux and +!! updraft parcel properties for thermals driven by surface heating !! for use in the TKE-EDMF PBL scheme. module mfpblt_mod contains diff --git a/physics/PBL/mfpbltq.f b/physics/PBL/mfpbltq.f index a93862a41..2812a7eab 100644 --- a/physics/PBL/mfpbltq.f +++ b/physics/PBL/mfpbltq.f @@ -1,5 +1,9 @@ !>\file mfpbltq.f -!! This file contains the subroutine that calculates mass flux and +!! This file contains the subroutine that computes mass flux and +!! updraft parcel properties for +!! thermals driven by surface heating + +!> This module contains the subroutine that calculates mass flux and !! updraft parcel properties for thermals driven by surface heating !! for use in the TKE-EDMF PBL scheme (updated version). module mfpbltq_mod diff --git a/physics/Radiation/RRTMG/iounitdef.f b/physics/Radiation/RRTMG/iounitdef.f index af3a700b8..3f298b9d3 100644 --- a/physics/Radiation/RRTMG/iounitdef.f +++ b/physics/Radiation/RRTMG/iounitdef.f @@ -48,6 +48,8 @@ !!!!! ========================================================== !!!!! !========================================! +!> this module defines fortran unit numbers for input/output data +!! files for the ncep gfs model. module module_iounitdef ! !........................................! ! diff --git a/physics/Radiation/mersenne_twister.f b/physics/Radiation/mersenne_twister.f index 58bf43487..bdd0da080 100644 --- a/physics/Radiation/mersenne_twister.f +++ b/physics/Radiation/mersenne_twister.f @@ -2,10 +2,10 @@ !! This file contains the module that calculates random numbers using the !! Mersenne twister -!> \defgroup mersenne_ge Mersenne Twister Module -!! Module: mersenne_twister Modern random number generator -!!\author Iredell Org: W/NX23 date: 2005-06-14 -!! Abstract: This module calculates random numbers using the Mersenne twister. +! Module: mersenne_twister Modern random number generator +!\author Iredell Org: W/NX23 date: 2005-06-14 +!> This module calculates random numbers using the Mersenne twister. +!! !! (It has been adapted to a Fortran 90 module from open source software. !! The comments from the original software are given below in the remarks.) !! The Mersenne twister (aka MT19937) is a state-of-the-art random number diff --git a/physics/Radiation/radiation_aerosols.f b/physics/Radiation/radiation_aerosols.f index 0a906fcf3..983d592c1 100644 --- a/physics/Radiation/radiation_aerosols.f +++ b/physics/Radiation/radiation_aerosols.f @@ -122,9 +122,9 @@ !!!!! ========================================================== !!!!! -!========================================! - module module_radiation_aerosols ! -!........................................! +!> This module contains climatological atmospheric aerosol schemes for +!! radiation computations. + module module_radiation_aerosols ! use machine, only : kind_phys, kind_io4, kind_io8 use module_iounitdef, only : NIAERCM diff --git a/physics/Radiation/radiation_cloud_overlap.F90 b/physics/Radiation/radiation_cloud_overlap.F90 index e69adcb7f..358db5cd0 100644 --- a/physics/Radiation/radiation_cloud_overlap.F90 +++ b/physics/Radiation/radiation_cloud_overlap.F90 @@ -1,8 +1,7 @@ !>\file radiation_cloud_overlap.F90 !! -!>\defgroup rad_cld_ovr_mod Radiation Cloud Overlap Module -!! This module contains the calculation of cloud overlap parameters for both RRTMG and RRTMGP. +!> This module contains the calculation of cloud overlap parameters for both RRTMG and RRTMGP. module module_radiation_cloud_overlap use machine, only : kind_phys implicit none diff --git a/physics/SFC_Layer/MYNN/module_sf_mynn.F90 b/physics/SFC_Layer/MYNN/module_sf_mynn.F90 index 09aa54af6..06db25441 100644 --- a/physics/SFC_Layer/MYNN/module_sf_mynn.F90 +++ b/physics/SFC_Layer/MYNN/module_sf_mynn.F90 @@ -3,6 +3,8 @@ !WRF:MODEL_LAYER:PHYSICS ! !>\ingroup mynn_sfc +!> This module contain routines to calculate stability parameters, kinematic siscosity +!! in MYNN surface layer scheme MODULE module_sf_mynn !------------------------------------------------------------------- diff --git a/physics/SFC_Layer/UFS/module_nst_parameters.f90 b/physics/SFC_Layer/UFS/module_nst_parameters.f90 index 5308345e2..984335cc8 100644 --- a/physics/SFC_Layer/UFS/module_nst_parameters.f90 +++ b/physics/SFC_Layer/UFS/module_nst_parameters.f90 @@ -4,11 +4,12 @@ !>\defgroup nst_parameters GFS NSST Parameter Module !! \ingroup gfs_nst_main_mod -!! This module contains constants and parameters used in GFS + +!> This module contains constants and parameters used in GFS !! near surface sea temperature scheme. -!! history: -!! 20210305: X.Li, reduce z_w_max from 30 m to 20 m module module_nst_parameters +! history: +! 20210305: X.Li, reduce z_w_max from 30 m to 20 m use machine, only : kind_phys ! diff --git a/physics/SFC_Layer/UFS/module_nst_water_prop.f90 b/physics/SFC_Layer/UFS/module_nst_water_prop.f90 index 858659e90..f71c35e8b 100644 --- a/physics/SFC_Layer/UFS/module_nst_water_prop.f90 +++ b/physics/SFC_Layer/UFS/module_nst_water_prop.f90 @@ -1,10 +1,10 @@ - !>\file module_nst_water_prop.f90 !! This file contains GFS NSST water property subroutines. !>\defgroup waterprop GFS NSST Water Property -!!This module contains GFS NSST water property subroutines. !!\ingroup gfs_nst_main_mod + +!> This module contains GFS NSST water property subroutines. module module_nst_water_prop use machine , only : kind_phys use module_nst_parameters , only : t0k, zero, one, half diff --git a/physics/SFC_Models/Land/RUC/lsm_ruc.F90 b/physics/SFC_Models/Land/RUC/lsm_ruc.F90 index 0bb655e45..9a41b066b 100644 --- a/physics/SFC_Models/Land/RUC/lsm_ruc.F90 +++ b/physics/SFC_Models/Land/RUC/lsm_ruc.F90 @@ -1,6 +1,7 @@ !>\file lsm_ruc.F90 !! This file contains the RUC land surface scheme driver. +!> This module contain the RUC land surface model driver module lsm_ruc use machine, only: kind_phys, kind_dbl_prec diff --git a/physics/docs/ccpp_doxyfile b/physics/docs/ccpp_doxyfile index 4efdb161f..6a7554417 100644 --- a/physics/docs/ccpp_doxyfile +++ b/physics/docs/ccpp_doxyfile @@ -1063,6 +1063,7 @@ EXCLUDE = ../Radiation/RRTMGP/rte-rrtmgp \ ../CONV/nTiedtke \ ../CONV/RAS \ ../CONV/SAS \ + ../SFC_Layer/UFS/date_def.f \ ../GWD/cires_ugwpv1_module.F90 \ ../GWD/cires_ugwpv1_initialize.F90 \ ../GWD/cires_ugwpv1_oro.F90 \ diff --git a/physics/docs/library.bib b/physics/docs/library.bib index b5f8b467b..84d780687 100644 --- a/physics/docs/library.bib +++ b/physics/docs/library.bib @@ -1,13 +1,68 @@ %% This BibTeX bibliography file was created using BibDesk. %% https://bibdesk.sourceforge.io/ -%% Created for Man Zhang at 2024-08-06 10:37:12 -0600 +%% Created for Man Zhang at 2024-08-09 15:31:41 -0600 %% Saved with string encoding Unicode (UTF-8) +@article{Yang_2008, + author = {Yang, Kun and Koike, Toshio and Ishikawa, Hirohiko and Kim, Joon and Li, Xin and Liu, Huizhi and Liu, Shaomin and Ma, Yaoming and Wang, Jieming}, + date-added = {2024-08-09 15:31:11 -0600}, + date-modified = {2024-08-09 15:31:11 -0600}, + doi = {10.1175/2007jamc1547.1}, + issn = {1558-8424}, + journal = {Journal of Applied Meteorology and Climatology}, + month = jan, + number = {1}, + pages = {276{\^a}€“290}, + publisher = {American Meteorological Society}, + title = {Turbulent Flux Transfer over Bare-Soil Surfaces: Characteristics and Parameterization}, + url = {http://dx.doi.org/10.1175/2007JAMC1547.1}, + volume = {47}, + year = {2008}, + bdsk-url-1 = {http://dx.doi.org/10.1175/2007JAMC1547.1}} + +@article{yang_et_al_2002, + abstract = {Abstract In surface flux parametrizations, aerodynamic roughness length zm0, and thermal roughness length zh0, are used to account for different resistances for momentum transfer and heat transfer. This paper introduces a turbulence-related length hT and parametrizes the quantity kA−1=ln(hT/zh0) in order to estimate zh0. Based on data at three sites on the Tibetan Plateau, a general formula for kA−1 is obtained for the surfaces covered by bare soil or partially covered by very short vegetation. A surface flux parametrization with this formula provides better estimates of heat flux than either profile flux parametrization or surface flux parametrization with kB−1 (i.e. ln(zm0/zh0)). Therefore, the use of a reasonable length to scale zh0 can contribute to the improvement of surface flux parametrizations. Copyright {\copyright} 2002 Royal Meteorological Society}, + author = {Yang, K. and Koike, T. and Fujii, H. and Tamagawa, K. and Hirose, N.}, + doi = {https://doi.org/10.1256/003590002320603548}, + eprint = {https://rmets.onlinelibrary.wiley.com/doi/pdf/10.1256/003590002320603548}, + journal = {Quarterly Journal of the Royal Meteorological Society}, + keywords = {Heat transfer, Surface temperature, Thermal roughness length, Turbulence}, + number = {584}, + pages = {2073-2087}, + title = {Improvement of surface flux parametrizations with a turbulence-related length}, + url = {https://rmets.onlinelibrary.wiley.com/doi/abs/10.1256/003590002320603548}, + volume = {128}, + year = {2002}, + bdsk-url-1 = {https://rmets.onlinelibrary.wiley.com/doi/abs/10.1256/003590002320603548}, + bdsk-url-2 = {https://doi.org/10.1256/003590002320603548}} + +@article{chen_and_zhang_2009, + abstract = {This study addresses the land-atmospheric coupling strength by using long-term AmeriFlux data from a wide range of land covers and climate regimes to reconstitute the surface exchange coefficient, Ch, which governs the total surface heat fluxes. For spring and summer, results show stronger coupling for tall canopy with Ch values ten times larger than for shorter vegetation. Observed Ch are then compared to values from the Noah land model. Results indicate that Noah underestimated (overestimated) Ch for forest (grass and crops), implying an insufficient (too efficient) coupling for tall canopy (short canopy). This discrepancy is attributed to the treatment of the roughness length for heat. With modest adjustments, the Noah model can reproduce the observed Ch. This study highlights the crucial role of treating the surface exchange processes in coupled land/weather/climate models and the need to use long-term flux data for different vegetation types and climate regimes to assess and mitigate their deficiencies.}, + author = {Chen, Fei and Zhang, Ying}, + doi = {https://doi.org/10.1029/2009GL037980}, + eprint = {https://agupubs.onlinelibrary.wiley.com/doi/pdf/10.1029/2009GL037980}, + journal = {Geophysical Research Letters}, + keywords = {land-atmospheric coupling strength, land-atmospheric interactions, surface exchange coefficients}, + number = {10}, + title = {On the coupling strength between the land surface and the atmosphere: From viewpoint of surface exchange coefficients}, + url = {https://agupubs.onlinelibrary.wiley.com/doi/abs/10.1029/2009GL037980}, + volume = {36}, + year = {2009}, + bdsk-url-1 = {https://agupubs.onlinelibrary.wiley.com/doi/abs/10.1029/2009GL037980}, + bdsk-url-2 = {https://doi.org/10.1029/2009GL037980}} + +@inproceedings{Zilitinkevich_1995, + author = {Sergej Zilitinkevich}, + title = {Non-local turbulent transport pollution dispersion aspects of coherent structure of convective flows}, + url = {https://api.semanticscholar.org/CorpusID:119885197}, + year = {1995}, + bdsk-url-1 = {https://api.semanticscholar.org/CorpusID:119885197}} + @article{Dowell_2022, author = {Dowell, David C. and Alexander, Curtis R. and James, Eric P. and Weygandt, Stephen S. and Benjamin, Stanley G. and Manikin, Geoffrey S. and Blake, Benjamin T. and Brown, John M. and Olson, Joseph B. and Hu, Ming and Smirnova, Tatiana G. and Ladwig, Terra and Kenyon, Jaymes S. and Ahmadov, Ravan and Turner, David D. and Duda, Jeffrey D. and Alcott, Trevor I.}, date-added = {2024-08-01 13:13:04 -0600}, @@ -132,7 +187,7 @@ @article{Bengtsson_et_al_2020 bdsk-url-2 = {https://doi.org/10.1029/2020MS002260}} @article{Han_et_al_2022, - author = {Han, J. and F. Yang and R. Montuoro and W. Li and R. Sun}, + author = {Han, J. and F. Yang and R. Montuoro and W. Li and R. Sun}, date-added = {2024-07-02 11:17:39 -0600}, date-modified = {2024-08-06 10:35:59 -0600}, institution = {NCEP Office Note 506}, diff --git a/physics/docs/pdftxt/suite_input.nml.txt b/physics/docs/pdftxt/suite_input.nml.txt index d8080f813..71aa5783d 100644 --- a/physics/docs/pdftxt/suite_input.nml.txt +++ b/physics/docs/pdftxt/suite_input.nml.txt @@ -536,7 +536,7 @@ show some variables in the namelist that must match the SDF.
    1 lsoil lsm_noah number of soil layers 4 -lsoil_lsm +lsoil_lsm GFS_phys_time_vary.scm.F90 number of soil layers internal to land surface model; -1 use lsoil -1 rdlai lsm_ruc flag to read leaf area index from input files .false. ivegsrc lsm_noah, lsm_ruc, noahmpdrv, sfc_diff flag for vegetation type dataset choice: \n
      @@ -723,8 +723,24 @@ lsoil_lsm lheatstrg gfs_surface_generic_post flag for canopy heat storage parameterization .false. z0fac gfs_surface_generic_post surface roughness fraction factor 0.3 e0fac gfs_surface_generic_post latent heat flux fraction factor relative to sensible heat flux,e.g., e0fac=0.5 indicates that canopy heat storage for latent heat flux is 50% of that for sensible heat flux 0.5 -isftcflx mynnsfc_wrapper flag for thermal roughness lengths over water in MYNN-SFCLAY 0 -iz0tlnd mynnsfc_wrapper flag for thermal roughness lengths over land in MYNN-SFCLAY 0 +isftcflx mynnsfc_wrapper flag for thermal roughness lengths over water in MYNN-SFCLAY +
        +
      • 0: z0,zt, and zq from the COARE algorithm. +
      • 1: z0 from Davis et al.(2008), zt&zq from COARE 3.0/3.5 +
      • 2: z0 from Davis et al.(2008), zt&zq from Garratt (1992) +
      • 3: z0 from Taylor and Yelland (2004), zt and zq from COARE 3.0/3.5 +
      • 4: GFS -taken from sfc_diff.f, for comparison/testing +
      + 0 +iz0tlnd mynnsfc_wrapper flag for thermal roughness lengths over land in MYNN-SFCLAY +
        +
      • 0: Zilitinkevich (1995) \cite Zilitinkevich_1995; Czil now set to 0.095 +
      • 1: Czil_new (modified according to Chen and Zhang (2009) \cite chen_and_zhang_2009) +
      • 2: Modified Yang et al.(2002, 2008)\cite yang_et_al_2002 \cite Yang_2008 - generalized for all landuse +
      • 3: constant zt = z0/7.4 (original form; Garratt 1992) +
      • 4: GFS - taken from sfc_diff.f, for comparison/testing +
      + 0 sfclay_compute_flux mynnsfc_wrapper flag for computing surface scalar fluxes in MYNN-SFCLAY .false. sfclay_compute_diag mynnsfc_wrapper flag for computing surface diagnostics in MYNN-SFCLAY .false. thsfc_loc GFS_surface_composites_post, sfc_diff, sfc_diag, sfc_nst, noahmpdrv, sfc_sice flag for local .vs. standard potential temperature .true. @@ -747,5 +763,6 @@ iccn kice sfc_sice number of layers in ice 2 lrefres flag for radar reflectivity in restart file .false. +
    */ From 9085a244d46408dd16b55f380e6542c7af6705f8 Mon Sep 17 00:00:00 2001 From: Man Zhang Date: Fri, 16 Aug 2024 11:48:16 -0600 Subject: [PATCH 50/80] scidoc update --- physics/CONV/SAMF/samfshalcnv.f | 3 +- physics/GWD/cires_ugwp_initialize.F90 | 3 +- physics/GWD/ugwp_driver_v0.F | 4 +- physics/GWD/ugwpv1_gsldrag_post.F90 | 3 +- .../MP/GFDL/module_gfdl_cloud_microphys.F90 | 1 + physics/MP/NSSL/mp_nssl.F90 | 3 +- physics/MP/Thompson/mp_thompson.F90 | 3 +- physics/MP/Thompson/mp_thompson_post.F90 | 8 +- physics/MP/Thompson/mp_thompson_pre.F90 | 3 +- physics/PBL/SATMEDMF/mfscuq.f | 4 +- physics/PBL/SATMEDMF/satmedmfvdifq.F | 4 +- physics/PBL/tridi.f | 3 + .../Radiation/RRTMG/rrtmg_lw_cloud_optics.F90 | 9 +- .../Radiation/RRTMG/rrtmg_sw_cloud_optics.F90 | 1 + .../RRTMGP/rrtmgp_aerosol_optics.F90 | 1 + .../RRTMGP/rrtmgp_lw_cloud_optics.F90 | 5 +- .../Radiation/RRTMGP/rrtmgp_lw_gas_optics.F90 | 5 +- physics/Radiation/RRTMGP/rrtmgp_lw_main.F90 | 3 +- physics/Radiation/RRTMGP/rrtmgp_sampling.F90 | 4 +- .../RRTMGP/rrtmgp_sw_cloud_optics.F90 | 1 + .../Radiation/RRTMGP/rrtmgp_sw_gas_optics.F90 | 5 +- physics/Radiation/RRTMGP/rrtmgp_sw_main.F90 | 1 + physics/Radiation/radiation_tools.F90 | 1 + physics/SFC_Layer/MYNN/mynnsfc_wrapper.F90 | 3 +- physics/SFC_Layer/UFS/sfc_diag.f | 2 +- physics/SFC_Layer/UFS/sfc_diag_post.F90 | 2 +- physics/SFC_Layer/UFS/sfc_nst_post.f90 | 3 +- physics/SFC_Layer/UFS/sfc_nst_pre.f90 | 5 +- .../SFC_Models/Land/Noah/namelist_soilveg.f | 2 + physics/SFC_Models/Land/Noah/sflx.f | 4 +- .../Land/Noah/surface_perturbation.F90 | 1 + .../SFC_Models/Land/Noahmp/noahmp_tables.f90 | 3 +- .../Land/RUC/namelist_soilveg_ruc.F90 | 1 + physics/docs/ccpp_doxyfile | 3 + .../pdftxt/RE7/input_GFS_v17_p8_ugwpv1.nml | 300 +++++++++--------- physics/docs/pdftxt/RE7/input_HRRR_gf.nml | 4 +- 36 files changed, 226 insertions(+), 185 deletions(-) diff --git a/physics/CONV/SAMF/samfshalcnv.f b/physics/CONV/SAMF/samfshalcnv.f index f720c4701..184f302cd 100644 --- a/physics/CONV/SAMF/samfshalcnv.f +++ b/physics/CONV/SAMF/samfshalcnv.f @@ -1,6 +1,7 @@ !> \file samfshalcnv.f -!! This file contains the Scale-Aware mass flux Shallow Convection scheme. +!! +!> This module contains the Scale-Aware mass flux Shallow Convection scheme. module samfshalcnv use samfcnv_aerosols, only : samfshalcnv_aerosols diff --git a/physics/GWD/cires_ugwp_initialize.F90 b/physics/GWD/cires_ugwp_initialize.F90 index ddcbdadf7..e391093a0 100644 --- a/physics/GWD/cires_ugwp_initialize.F90 +++ b/physics/GWD/cires_ugwp_initialize.F90 @@ -6,7 +6,7 @@ ! init gw-background dissipation !=============================== -!> Define constants +!> This module contains UGWP v0 initialization schemes module ugwp_common_v0 ! use machine, only: kind_phys @@ -95,6 +95,7 @@ end subroutine init_global_gwdis_v0 ! ugwpv0_oro_init ! !========================================================================= +!> This module contains orographic wave source schemes for UGWP v0. module ugwpv0_oro_init use ugwp_common_v0, only : bnv2min, grav, grcp, fv, grav, cpd, grcp, pi diff --git a/physics/GWD/ugwp_driver_v0.F b/physics/GWD/ugwp_driver_v0.F index 0f4ad447e..1bbb2770d 100644 --- a/physics/GWD/ugwp_driver_v0.F +++ b/physics/GWD/ugwp_driver_v0.F @@ -1,4 +1,6 @@ !>\file ugwp_driver_v0.F + +!> This module contains the UGWP v0 driver module module ugwp_driver_v0 use cires_orowam2017 contains @@ -9,7 +11,7 @@ module ugwp_driver_v0 ! !===================================================================== !>\ingroup cires_ugwp_run_mod -!>\defgroup ugwp_driverv0_mod GFS UGWP V0 Driver Module +!>\defgroup ugwp_driverv0_mod UGWP V0 Driver Module !! This is the CIRES UGWP V0 driver module !! !! Note for the sub-grid scale orography scheme in UGWP-v0: Due to degraded forecast diff --git a/physics/GWD/ugwpv1_gsldrag_post.F90 b/physics/GWD/ugwpv1_gsldrag_post.F90 index b020060af..c57ce55f5 100644 --- a/physics/GWD/ugwpv1_gsldrag_post.F90 +++ b/physics/GWD/ugwpv1_gsldrag_post.F90 @@ -1,5 +1,6 @@ !> \file ugwpv1_gsldrag_post.F90 -!! This file contains + +!> This module contains code to be executed after the UGWP v1 scheme module ugwpv1_gsldrag_post contains diff --git a/physics/MP/GFDL/module_gfdl_cloud_microphys.F90 b/physics/MP/GFDL/module_gfdl_cloud_microphys.F90 index 4db36c9a3..72f3211b5 100644 --- a/physics/MP/GFDL/module_gfdl_cloud_microphys.F90 +++ b/physics/MP/GFDL/module_gfdl_cloud_microphys.F90 @@ -27,6 +27,7 @@ ! ======================================================================= !>\defgroup mod_gfdl_cloud_mp GFDL Cloud MP modules !!\ingroup gfdlmp + !> This module contains the column GFDL Cloud microphysics scheme. module gfdl_cloud_microphys_mod diff --git a/physics/MP/NSSL/mp_nssl.F90 b/physics/MP/NSSL/mp_nssl.F90 index 7b21fbbe1..38621d591 100644 --- a/physics/MP/NSSL/mp_nssl.F90 +++ b/physics/MP/NSSL/mp_nssl.F90 @@ -3,7 +3,8 @@ !>\defgroup nsslmp NSSL MP Module -!! This module contains the front end to NSSL microphysics scheme. + +!> This module contains the front end to NSSL microphysics scheme. module mp_nssl use machine, only : kind_phys diff --git a/physics/MP/Thompson/mp_thompson.F90 b/physics/MP/Thompson/mp_thompson.F90 index 3b99deec1..6bc6bcb98 100644 --- a/physics/MP/Thompson/mp_thompson.F90 +++ b/physics/MP/Thompson/mp_thompson.F90 @@ -3,7 +3,8 @@ !>\defgroup aathompson Aerosol-Aware Thompson MP Module -!! This module contains the aerosol-aware Thompson microphysics scheme. + +!> This module contains the aerosol-aware Thompson microphysics scheme. module mp_thompson use mpi_f08 diff --git a/physics/MP/Thompson/mp_thompson_post.F90 b/physics/MP/Thompson/mp_thompson_post.F90 index c48c932f7..7b333f2b1 100644 --- a/physics/MP/Thompson/mp_thompson_post.F90 +++ b/physics/MP/Thompson/mp_thompson_post.F90 @@ -1,3 +1,7 @@ +!> \file mp_thompson_post.F90 +!! + +!>This module contain the post processing of Thompson microphysics module mp_thompson_post use mpi_f08 @@ -15,7 +19,7 @@ module mp_thompson_post contains -!! \section arg_table_mp_thompson_post_init Argument Table +!> \section arg_table_mp_thompson_post_init Argument Table !! \htmlinclude mp_thompson_post_init.html !! subroutine mp_thompson_post_init(ttendlim, errmsg, errflg) @@ -125,7 +129,7 @@ subroutine mp_thompson_post_run(ncol, nlev, tgrs_save, tgrs, prslk, dtp, ttendli end subroutine mp_thompson_post_run -!! \section arg_table_mp_thompson_post_finalize Argument Table +!> \section arg_table_mp_thompson_post_finalize Argument Table !! \htmlinclude mp_thompson_post_finalize.html !! subroutine mp_thompson_post_finalize(errmsg, errflg) diff --git a/physics/MP/Thompson/mp_thompson_pre.F90 b/physics/MP/Thompson/mp_thompson_pre.F90 index 3e65fd478..3fe78e4d1 100644 --- a/physics/MP/Thompson/mp_thompson_pre.F90 +++ b/physics/MP/Thompson/mp_thompson_pre.F90 @@ -1,8 +1,9 @@ !>\file mp_thompson_pre.F90 !! -! CCPP license goes here, as well as further documentation !>\ingroup aathompson + +!> This module contains the pre-processing of Thompson cloud microphysics module mp_thompson_pre use machine, only : kind_phys diff --git a/physics/PBL/SATMEDMF/mfscuq.f b/physics/PBL/SATMEDMF/mfscuq.f index d690dce05..b2a48d1b6 100644 --- a/physics/PBL/SATMEDMF/mfscuq.f +++ b/physics/PBL/SATMEDMF/mfscuq.f @@ -1,5 +1,7 @@ !>\file mfscuq.f -!! This file contains the mass flux and downdraft parcel preperties +!! + +!> This module contains the mass flux and downdraft parcel properties !! parameterization for stratocumulus-top-driven turbulence (updated version). module mfscuq_mod contains diff --git a/physics/PBL/SATMEDMF/satmedmfvdifq.F b/physics/PBL/SATMEDMF/satmedmfvdifq.F index 95a1e35e5..e8dbb0f91 100644 --- a/physics/PBL/SATMEDMF/satmedmfvdifq.F +++ b/physics/PBL/SATMEDMF/satmedmfvdifq.F @@ -1,8 +1,8 @@ !> \file satmedmfvdifq.F -!! This file contains the CCPP-compliant SATMEDMF scheme (updated version) which + +!> This file contains the CCPP-compliant SATMEDMF scheme (updated version) which !! computes subgrid vertical turbulence mixing using scale-aware TKE-based moist !! eddy-diffusion mass-flux (TKE-EDMF) parameterization (by Jongil Han). - module satmedmfvdifq use mfpbltq_mod use tridi_mod diff --git a/physics/PBL/tridi.f b/physics/PBL/tridi.f index 13898ad43..28faaed2e 100644 --- a/physics/PBL/tridi.f +++ b/physics/PBL/tridi.f @@ -1,5 +1,8 @@ !>\file tridi.f !! These subroutines are originally internal subroutines in moninedmf.f + +!> This module contains routine to compute tridiagonal matrix elements for TKE, heat, moist +!! and momentum module tridi_mod contains diff --git a/physics/Radiation/RRTMG/rrtmg_lw_cloud_optics.F90 b/physics/Radiation/RRTMG/rrtmg_lw_cloud_optics.F90 index 7477a498e..082428b08 100644 --- a/physics/Radiation/RRTMG/rrtmg_lw_cloud_optics.F90 +++ b/physics/Radiation/RRTMG/rrtmg_lw_cloud_optics.F90 @@ -1,16 +1,17 @@ !>\file rrtmg_lw_cloud_optics.F90 !! +!>This module contains the cloud optics property module for RRTMG-LW module mo_rrtmg_lw_cloud_optics use machine, only: kind_phys use mersenne_twister, only: random_setseed, random_number, random_stat implicit none - !< Parameter used for RRTMG cloud-optics + !> Parameter used for RRTMG cloud-optics integer,parameter :: & nBandsLW_RRTMG = 16 - !< ipat is bands index for ebert & curry ice cloud (for iflagice=1) + !> ipat is bands index for ebert & curry ice cloud (for iflagice=1) integer,dimension(nBandsLW_RRTMG),parameter :: & ipat = (/ 1, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5 /) real(kind_phys), parameter :: & @@ -18,7 +19,7 @@ module mo_rrtmg_lw_cloud_optics abssnow0 = 1.5, & !< Snow flake absorption coefficient (micron), fu coeff abssnow1 = 2.34e-3 !< Snow flake absorption coefficient \f$(m^{2}/g)\f$, ncar coef - !< Reset diffusivity angle for Bands 2-3 and 5-9 to vary (between 1.50 + !> Reset diffusivity angle for Bands 2-3 and 5-9 to vary (between 1.50 !! and 1.80) as a function of total column water vapor. the function !! has been defined to minimize flux and cooling rate errors in these bands !! over a wide range of precipitable water values. @@ -35,7 +36,7 @@ module mo_rrtmg_lw_cloud_optics diffusivityHigh = 1.80, & !< Maximum diffusivity angle for bands 2-3 and 5-9 diffusivityB1410 = 1.66 !< Diffusivity for bands 1, 4, and 10 - !< RRTMG LW cloud property coefficients + !> RRTMG LW cloud property coefficients real(kind_phys) , dimension(58,nBandsLW_RRTMG),parameter :: & absliq1 = reshape(source=(/ & 1.64047e-03, 6.90533e-02, 7.72017e-02, 7.78054e-02, 7.69523e-02, & !1 diff --git a/physics/Radiation/RRTMG/rrtmg_sw_cloud_optics.F90 b/physics/Radiation/RRTMG/rrtmg_sw_cloud_optics.F90 index 7a6f649b7..ea38f85cd 100644 --- a/physics/Radiation/RRTMG/rrtmg_sw_cloud_optics.F90 +++ b/physics/Radiation/RRTMG/rrtmg_sw_cloud_optics.F90 @@ -1,6 +1,7 @@ !>\file rrtmg_sw_cloud_optics.F90 !! +!> This module contains the cloud optics property module for RRTMG-SW module mo_rrtmg_sw_cloud_optics use machine, only: kind_phys use mersenne_twister, only: random_setseed, random_number, random_stat diff --git a/physics/Radiation/RRTMGP/rrtmgp_aerosol_optics.F90 b/physics/Radiation/RRTMGP/rrtmgp_aerosol_optics.F90 index 311b33bbd..974d71b9a 100644 --- a/physics/Radiation/RRTMGP/rrtmgp_aerosol_optics.F90 +++ b/physics/Radiation/RRTMGP/rrtmgp_aerosol_optics.F90 @@ -1,6 +1,7 @@ !>\file rrtmgp_aerosol_optics.F90 !! +!> This module contains aerosol optics properties for RRTMGP module rrtmgp_aerosol_optics use machine, only: kind_phys use radiation_tools, only: check_error_msg diff --git a/physics/Radiation/RRTMGP/rrtmgp_lw_cloud_optics.F90 b/physics/Radiation/RRTMGP/rrtmgp_lw_cloud_optics.F90 index 3adbe40b8..df44fbeda 100644 --- a/physics/Radiation/RRTMGP/rrtmgp_lw_cloud_optics.F90 +++ b/physics/Radiation/RRTMGP/rrtmgp_lw_cloud_optics.F90 @@ -1,10 +1,11 @@ !> \file rrtmgp_lw_cloud_optics.F90 -!! This module contains two routines: The first initializes data and functions +!! + +!> This module contains two routines: The first initializes data and functions !! needed to compute the longwave cloud radiative properteis in RRTMGP. The second routine !! is a ccpp scheme within the "radiation loop", where the shortwave optical prperties !! (optical-depth, single-scattering albedo, asymmetry parameter) are computed for ALL !! cloud types visible to RRTMGP. -!! module rrtmgp_lw_cloud_optics use machine, only: kind_phys use mo_rte_kind, only: wl diff --git a/physics/Radiation/RRTMGP/rrtmgp_lw_gas_optics.F90 b/physics/Radiation/RRTMGP/rrtmgp_lw_gas_optics.F90 index fd2dbae32..0bfdd87e5 100644 --- a/physics/Radiation/RRTMGP/rrtmgp_lw_gas_optics.F90 +++ b/physics/Radiation/RRTMGP/rrtmgp_lw_gas_optics.F90 @@ -1,9 +1,10 @@ !> \file rrtmgp_lw_gas_optics.F90 -!! This module contains two routines: One to initialize the k-distribution data +!! + +!> This module contains two routines: One to initialize the k-distribution data !! and functions needed to compute the longwave gaseous optical properties in RRTMGP. !! The second routine is a ccpp scheme within the "radiation loop", where the longwave !! optical prperties (optical-depth) are computed for clear-sky conditions (no aerosols). -!! module rrtmgp_lw_gas_optics use machine, only: kind_phys use mo_rte_kind, only: wl diff --git a/physics/Radiation/RRTMGP/rrtmgp_lw_main.F90 b/physics/Radiation/RRTMGP/rrtmgp_lw_main.F90 index 81c959e64..2e8de2dd4 100644 --- a/physics/Radiation/RRTMGP/rrtmgp_lw_main.F90 +++ b/physics/Radiation/RRTMGP/rrtmgp_lw_main.F90 @@ -1,6 +1,7 @@ !> \file rrtmgp_lw_main.F90 !! This file contains the longwave RRTMGP radiation scheme. -!! + +!> This module contains the RRTMGP-LW radiation scheme module rrtmgp_lw_main use mpi_f08 use machine, only: kind_phys, kind_dbl_prec diff --git a/physics/Radiation/RRTMGP/rrtmgp_sampling.F90 b/physics/Radiation/RRTMGP/rrtmgp_sampling.F90 index b2f37f219..a678d3163 100644 --- a/physics/Radiation/RRTMGP/rrtmgp_sampling.F90 +++ b/physics/Radiation/RRTMGP/rrtmgp_sampling.F90 @@ -11,8 +11,8 @@ ! BSD 3-clause license, see http://opensource.org/licenses/BSD-3-Clause ! ------------------------------------------------------------------------------------------------- ! -! This module provides a simple implementation of sampling for the -! Monte Carlo Independent Pixel Approximation (McICA, doi:10.1029/2002jd003322) +!> This module provides a simple implementation of sampling for the +!! Monte Carlo Independent Pixel Approximation (McICA, doi:10.1029/2002jd003322) ! Cloud optical properties, defined by band and assumed homogenous within each cell (column/layer), ! are randomly sampled to preserve the mean cloud fraction and one of several possible overlap assumptions ! Users supply random numbers with order ngpt,nlay,ncol diff --git a/physics/Radiation/RRTMGP/rrtmgp_sw_cloud_optics.F90 b/physics/Radiation/RRTMGP/rrtmgp_sw_cloud_optics.F90 index 7198f8e91..d7d54846f 100644 --- a/physics/Radiation/RRTMGP/rrtmgp_sw_cloud_optics.F90 +++ b/physics/Radiation/RRTMGP/rrtmgp_sw_cloud_optics.F90 @@ -1,6 +1,7 @@ !>\file rrtmgp_sw_cloud_optics.F90 !! +!> This module contains the cloud optics properties calculation for RRTMGP-SW module rrtmgp_sw_cloud_optics use machine, only: kind_phys use mo_rte_kind, only: wl diff --git a/physics/Radiation/RRTMGP/rrtmgp_sw_gas_optics.F90 b/physics/Radiation/RRTMGP/rrtmgp_sw_gas_optics.F90 index 4862acdd1..7872bc04d 100644 --- a/physics/Radiation/RRTMGP/rrtmgp_sw_gas_optics.F90 +++ b/physics/Radiation/RRTMGP/rrtmgp_sw_gas_optics.F90 @@ -1,7 +1,8 @@ !> \file rrtmgp_sw_gas_optics.F90 -!! This module contains a routine to initialize the k-distribution data used -!! by the RRTMGP shortwave radiation scheme. +!! +!> This module contains a routine to initialize the k-distribution data used +!! by the RRTMGP shortwave radiation scheme. module rrtmgp_sw_gas_optics use machine, only: kind_phys use mo_rte_kind, only: wl diff --git a/physics/Radiation/RRTMGP/rrtmgp_sw_main.F90 b/physics/Radiation/RRTMGP/rrtmgp_sw_main.F90 index c9fd3bbda..2138356a9 100644 --- a/physics/Radiation/RRTMGP/rrtmgp_sw_main.F90 +++ b/physics/Radiation/RRTMGP/rrtmgp_sw_main.F90 @@ -1,6 +1,7 @@ !>\file rrtmgp_sw_main.F90 !! +!> This module contain the RRTMGP-SW radiation scheme module rrtmgp_sw_main use mpi_f08 use machine, only: kind_phys, kind_dbl_prec diff --git a/physics/Radiation/radiation_tools.F90 b/physics/Radiation/radiation_tools.F90 index bc7a81db8..e941a3461 100644 --- a/physics/Radiation/radiation_tools.F90 +++ b/physics/Radiation/radiation_tools.F90 @@ -1,6 +1,7 @@ !>\file radiation_tools.F90 !! +!> This module contains tools for radiation module radiation_tools use machine, only: & kind_phys ! Working type diff --git a/physics/SFC_Layer/MYNN/mynnsfc_wrapper.F90 b/physics/SFC_Layer/MYNN/mynnsfc_wrapper.F90 index 8df0116a8..779a56da4 100644 --- a/physics/SFC_Layer/MYNN/mynnsfc_wrapper.F90 +++ b/physics/SFC_Layer/MYNN/mynnsfc_wrapper.F90 @@ -1,6 +1,7 @@ !> \file mynnsfc_wrapper.F90 -!! Contains all of the code related to running the MYNN surface layer scheme +!! +!> This Model ontains all of the code related to running the MYNN surface layer scheme MODULE mynnsfc_wrapper USE module_sf_mynn diff --git a/physics/SFC_Layer/UFS/sfc_diag.f b/physics/SFC_Layer/UFS/sfc_diag.f index fb4d4fdaa..66ec95c50 100644 --- a/physics/SFC_Layer/UFS/sfc_diag.f +++ b/physics/SFC_Layer/UFS/sfc_diag.f @@ -1,11 +1,11 @@ !> \file sfc_diag.f !! This file contains the land surface diagnose calculation scheme. +!> This module contains the land surface diagnose calcualtion module sfc_diag contains !> \defgroup sfc_diag_mod GFS sfc_diag module -!! This module contains the land surface diagose calculation. !! \section arg_table_sfc_diag_run Argument Table !! \htmlinclude sfc_diag_run.html !! diff --git a/physics/SFC_Layer/UFS/sfc_diag_post.F90 b/physics/SFC_Layer/UFS/sfc_diag_post.F90 index c1e69ae48..ce3d9c595 100644 --- a/physics/SFC_Layer/UFS/sfc_diag_post.F90 +++ b/physics/SFC_Layer/UFS/sfc_diag_post.F90 @@ -1,12 +1,12 @@ !> \file sfc_diag_post.F90 !! Contains code related to the surface diagnostic scheme. +!> This module contains code related to the surface diagnostic scheme. module sfc_diag_post contains !>\defgroup sfc_diag_post_mod GFS sfc_diag_post Module -!! This module contains code related to the surface diagnostic scheme. !> @{ #if 0 !> \section arg_table_sfc_diag_post_run Argument Table diff --git a/physics/SFC_Layer/UFS/sfc_nst_post.f90 b/physics/SFC_Layer/UFS/sfc_nst_post.f90 index 0357a86f0..ca1194e3d 100644 --- a/physics/SFC_Layer/UFS/sfc_nst_post.f90 +++ b/physics/SFC_Layer/UFS/sfc_nst_post.f90 @@ -1,6 +1,7 @@ !> \file sfc_nst_post.f90 -!! This file contains code to be executed after the GFS NSST model. +!! This file contains code to be executed after the near-surface sea temperature scheme. +!> This module contains code to be executed after the near-surface sea temperature scheme module sfc_nst_post use machine , only : kind_phys, kp => kind_phys diff --git a/physics/SFC_Layer/UFS/sfc_nst_pre.f90 b/physics/SFC_Layer/UFS/sfc_nst_pre.f90 index c61f9b903..dec6722ed 100644 --- a/physics/SFC_Layer/UFS/sfc_nst_pre.f90 +++ b/physics/SFC_Layer/UFS/sfc_nst_pre.f90 @@ -1,6 +1,7 @@ !> \file sfc_nst_pre.f90 -!! This file contains preparation for the GFS NSST model. +!! This file contains preparation for the near-surface sea temperature scheme. +!> This module contain preparation for the near-surface sea temperature scheme module sfc_nst_pre use machine , only : kind_phys @@ -11,7 +12,7 @@ module sfc_nst_pre contains - !> \defgroup GFS_NSST_PRE GFS Near-Surface Sea Temperature Pre + !> \defgroup GFS_NSST_PRE Near-Surface Sea Temperature Pre !! !! The NSST scheme is one of the three schemes used to represent the !! surface in the GFS physics suite. The other two are the Noah land diff --git a/physics/SFC_Models/Land/Noah/namelist_soilveg.f b/physics/SFC_Models/Land/Noah/namelist_soilveg.f index c0517000e..7b3c41a72 100644 --- a/physics/SFC_Models/Land/Noah/namelist_soilveg.f +++ b/physics/SFC_Models/Land/Noah/namelist_soilveg.f @@ -1,6 +1,8 @@ !>\file namelist_soilveg.f !>\ingroup Noah_LSM + +!> This module contains namelist options for Noah LSM module namelist_soilveg implicit none save diff --git a/physics/SFC_Models/Land/Noah/sflx.f b/physics/SFC_Models/Land/Noah/sflx.f index b2fb38ae1..5f0c6c747 100644 --- a/physics/SFC_Models/Land/Noah/sflx.f +++ b/physics/SFC_Models/Land/Noah/sflx.f @@ -1,5 +1,7 @@ !>\file sflx.f -!! This file is the entity of GFS Noah LSM Model(Version 2.7). +!! + +!> This module contains the entity of GFS Noah LSM Model(Version 2.7). module sflx contains !>\ingroup Noah_LSM diff --git a/physics/SFC_Models/Land/Noah/surface_perturbation.F90 b/physics/SFC_Models/Land/Noah/surface_perturbation.F90 index e0429a5fc..acf722754 100644 --- a/physics/SFC_Models/Land/Noah/surface_perturbation.F90 +++ b/physics/SFC_Models/Land/Noah/surface_perturbation.F90 @@ -3,6 +3,7 @@ !! albedo and vegetation fraction perturbations. !>\defgroup gfs_sfcpert GFS Surface Perturbation Module + !> This module contains routines used in the percentile matching algorithm for the !! albedo and vegetation fraction perturbations. module surface_perturbation diff --git a/physics/SFC_Models/Land/Noahmp/noahmp_tables.f90 b/physics/SFC_Models/Land/Noahmp/noahmp_tables.f90 index 753c8ff24..d6e9963da 100644 --- a/physics/SFC_Models/Land/Noahmp/noahmp_tables.f90 +++ b/physics/SFC_Models/Land/Noahmp/noahmp_tables.f90 @@ -2,7 +2,8 @@ !! This file contains Fortran versions of the data tables included with NoahMP in mptable.tbl, soilparm.tbl, and genparm.tbl. !> \ingroup NoahMP_LSM -!! \brief Data from MPTABLE.TBL, SOILPARM.TBL, GENPARM.TBL for NoahMP + +!> brief Data from MPTABLE.TBL, SOILPARM.TBL, GENPARM.TBL for NoahMP !! !! Note that a subset of the data in the *.TBL files is represented in this file. For example, !! only the data in the noah_mp_modis_parameters section of MPTABLE.TBL and the STAS section of diff --git a/physics/SFC_Models/Land/RUC/namelist_soilveg_ruc.F90 b/physics/SFC_Models/Land/RUC/namelist_soilveg_ruc.F90 index d93dc5c64..f50a264cc 100644 --- a/physics/SFC_Models/Land/RUC/namelist_soilveg_ruc.F90 +++ b/physics/SFC_Models/Land/RUC/namelist_soilveg_ruc.F90 @@ -1,6 +1,7 @@ !>\file namelist_soilveg_ruc.F90 !>\ingroup RUC_lsm +!> This module contains the namelist options of soil/vegetation in RUC module namelist_soilveg_ruc use machine , only : kind_phys diff --git a/physics/docs/ccpp_doxyfile b/physics/docs/ccpp_doxyfile index 6a7554417..337995657 100644 --- a/physics/docs/ccpp_doxyfile +++ b/physics/docs/ccpp_doxyfile @@ -1053,6 +1053,8 @@ EXCLUDE = ../Radiation/RRTMGP/rte-rrtmgp \ ../PBL/SHOC \ ../PBL/saYSU \ ../PBL/YSU \ + ../PBL/SATMEDMF/mfscu.f \ + ../PBL/SATMEDMF/satmedmfvdif.F \ ../SFC_Models/Lake/Flake \ ../smoke_dust \ ../SFC_Layer/GFDL \ @@ -1063,6 +1065,7 @@ EXCLUDE = ../Radiation/RRTMGP/rte-rrtmgp \ ../CONV/nTiedtke \ ../CONV/RAS \ ../CONV/SAS \ + ../CONV/SAMF/samfaerosols.F \ ../SFC_Layer/UFS/date_def.f \ ../GWD/cires_ugwpv1_module.F90 \ ../GWD/cires_ugwpv1_initialize.F90 \ diff --git a/physics/docs/pdftxt/RE7/input_GFS_v17_p8_ugwpv1.nml b/physics/docs/pdftxt/RE7/input_GFS_v17_p8_ugwpv1.nml index e40f05cda..1cc0f692e 100644 --- a/physics/docs/pdftxt/RE7/input_GFS_v17_p8_ugwpv1.nml +++ b/physics/docs/pdftxt/RE7/input_GFS_v17_p8_ugwpv1.nml @@ -1,164 +1,166 @@ !>[GFS_PHYSICS_NML] &gfs_physics_nml - fhzero = 6 - h2o_phys = .true. - ldiag3d = .true. - qdiag3d = .true. - print_diff_pgr = .false. - fhcyc = 24 - use_ufo = .true. - pre_rad = .false. - imp_physics = 8 - iovr = 3 - ltaerosol = .false. - lradar = .true. - ttendlim = -999 - dt_inner = 150 - sedi_semi = .true. - decfl = 10 - oz_phys = .false. - oz_phys_2015 = .true. - lsoil_lsm = 4 - do_mynnedmf = .false. - do_mynnsfclay = .false. - icloud_bl = 1 - bl_mynn_edmf = 1 - bl_mynn_tkeadvect = .true. - bl_mynn_edmf_mom = 1 - do_ugwp = .false. - do_tofd = .false. - gwd_opt = 2 - do_ugwp_v0 = .false. - do_ugwp_v1 = .true. + fhzero = 6 + h2o_phys = .true. + ldiag3d = .true. + qdiag3d = .true. + print_diff_pgr = .false. + fhcyc = 24 + use_ufo = .true. + pre_rad = .false. + imp_physics = 8 + iovr = 3 + ltaerosol = .false. + lradar = .true. + ttendlim = -999 + dt_inner = 150 + sedi_semi = .true. + decfl = 10 + oz_phys = .false. + oz_phys_2015 = .true. + lsoil_lsm = 4 + do_mynnedmf = .false. + do_mynnsfclay = .false. + icloud_bl = 1 + bl_mynn_edmf = 1 + bl_mynn_tkeadvect = .true. + bl_mynn_edmf_mom = 1 + do_ugwp = .false. + do_tofd = .false. + gwd_opt = 2 + do_ugwp_v0 = .false. + do_ugwp_v1 = .true. do_ugwp_v0_orog_only = .false. do_ugwp_v0_nst_only = .false. do_gsl_drag_ls_bl = .true. - do_gsl_drag_ss = .true. + do_gsl_drag_ss = .false. do_gsl_drag_tofd = .true. do_ugwp_v1_orog_only = .false. - min_lakeice = 0.15 - min_seaice = 1.0e-6 - use_cice_alb = .true. - pdfcld = .false. - fhswr = 1200. - fhlwr = 1200. - progsigma = .true. - betascu = 8.0 - betamcu = 1.0 - betadcu = 2.0 - ialb = 2 - iems = 2 - iaer = 1011 - icliq_sw = 2 - ico2 = 2 - isubc_sw = 2 - isubc_lw = 2 - isol = 2 - lwhtr = .true. - swhtr = .true. - cnvgwd = .true. - shal_cnv = .true. - cal_pre = .false. - redrag = .true. - dspheat = .true. - hybedmf = .false. - satmedmf = .true. - isatmedmf = 1 - lheatstrg = .true. - lseaspray = .true. - random_clds = .false. - trans_trac = .true. - cnvcld = .true. - imfshalcnv = 2 - imfdeepcnv = 2 - ras = .false. - cdmbgwd = 2.5,7.5,1.0,1.0 - prslrd0 = 0. - ivegsrc = 1 - isot = 1 - lsoil = 4 - lsm = 2 - iopt_dveg = 4 - iopt_crs = 2 - iopt_btr = 1 - iopt_run = 1 - iopt_sfc = 3 - iopt_trs = 2 - iopt_frz = 1 - iopt_inf = 1 - iopt_rad = 3 - iopt_alb = 1 - iopt_snf = 4 - iopt_tbot = 2 - iopt_stc = 3 - debug = .false. - nstf_name = 2,0,0,0,0 - nst_anl = .true. - psautco = 0.0008,0.0005 - prautco = 0.00015,0.00015 - lgfdlmprad = .false. - effr_in = .true. - ldiag_ugwp = .false. - do_sppt = .false. - do_shum = .false. - do_skeb = .false. - do_RRTMGP = .false. - doGP_cldoptics_LUT = .true. - doGP_lwscat = .true. - active_gases = 'h2o_co2_o3_n2o_ch4_o2' - ngases = 6 - rrtmgp_root = '../../ccpp/physics/physics/rte-rrtmgp/' - lw_file_gas = 'rrtmgp/data/rrtmgp-data-lw-g128-210809.nc' - lw_file_clouds = 'extensions/cloud_optics/rrtmgp-cloud-optics-coeffs-lw.nc' - sw_file_gas = 'rrtmgp/data/rrtmgp-data-sw-g112-210809.nc' - sw_file_clouds = 'extensions/cloud_optics/rrtmgp-cloud-optics-coeffs-sw.nc' - rrtmgp_nGptsSW = 112 - rrtmgp_nGptsLW = 128 - rrtmgp_nBandsLW = 16 - rrtmgp_nBandsSW = 14 - frac_grid = .true. - cplchm = .false. - cplflx = .false. - cplice = .false. - cplwav = .false. - cplwav2atm = .false. - do_ca = .false. - ca_global = .false. - ca_sgs = .true. - nca = 1 - ncells = 5 - nlives = 12 - nseed = 1 - nfracseed = 0.5 - nthresh = 18 - ca_trigger = .true. - nspinup = 1 - iseed_ca = 1448371824 + do_gwd_opt_psl = .true. + psl_gwd_dx_factor = 6.0 + min_lakeice = 0.15 + min_seaice = 1.0e-6 + use_cice_alb = .true. + pdfcld = .false. + fhswr = 1200. + fhlwr = 1200. + progsigma = .true. + betascu = 8.0 + betamcu = 1.0 + betadcu = 2.0 + ialb = 2 + iems = 2 + iaer = 1011 + icliq_sw = 2 + ico2 = 2 + isubc_sw = 2 + isubc_lw = 2 + isol = 2 + lwhtr = .true. + swhtr = .true. + cnvgwd = .true. + shal_cnv = .true. + cal_pre = .false. + redrag = .true. + dspheat = .true. + hybedmf = .false. + satmedmf = .true. + isatmedmf = 1 + lheatstrg = .true. + lseaspray = .true. + random_clds = .false. + trans_trac = .true. + cnvcld = .true. + imfshalcnv = 2 + imfdeepcnv = 2 + ras = .false. + cdmbgwd = 2.5,7.5,1.0,1.0 + prslrd0 = 0. + ivegsrc = 1 + isot = 1 + lsoil = 4 + lsm = 2 + iopt_dveg = 4 + iopt_crs = 2 + iopt_btr = 1 + iopt_run = 1 + iopt_sfc = 3 + iopt_trs = 2 + iopt_frz = 1 + iopt_inf = 1 + iopt_rad = 3 + iopt_alb = 1 + iopt_snf = 4 + iopt_tbot = 2 + iopt_stc = 3 + debug = .false. + nstf_name = 2,0,0,0,0 + nst_anl = .true. + psautco = 0.0008,0.0005 + prautco = 0.00015,0.00015 + lgfdlmprad = .false. + effr_in = .true. + ldiag_ugwp = .false. + do_sppt = .false. + do_shum = .false. + do_skeb = .false. + do_RRTMGP = .false. + doGP_cldoptics_LUT = .true. + doGP_lwscat = .true. + active_gases = 'h2o_co2_o3_n2o_ch4_o2' + ngases = 6 + rrtmgp_root = '../../ccpp/physics/physics/rte-rrtmgp/' + lw_file_gas = 'rrtmgp/data/rrtmgp-data-lw-g128-210809.nc' + lw_file_clouds = 'extensions/cloud_optics/rrtmgp-cloud-optics-coeffs-lw.nc' + sw_file_gas = 'rrtmgp/data/rrtmgp-data-sw-g112-210809.nc' + sw_file_clouds = 'extensions/cloud_optics/rrtmgp-cloud-optics-coeffs-sw.nc' + rrtmgp_nGptsSW = 112 + rrtmgp_nGptsLW = 128 + rrtmgp_nBandsLW = 16 + rrtmgp_nBandsSW = 14 + frac_grid = .true. + cplchm = .false. + cplflx = .false. + cplice = .false. + cplwav = .false. + cplwav2atm = .false. + do_ca = .false. + ca_global = .false. + ca_sgs = .true. + nca = 1 + ncells = 5 + nlives = 12 + nseed = 1 + nfracseed = 0.5 + nthresh = 18 + ca_trigger = .true. + nspinup = 1 + iseed_ca = 1448371824 / !! [GFS_PHYSICS_NML] !>[CIRES_UGWP_NML] &cires_ugwp_nml - knob_ugwp_solver = 2 - knob_ugwp_version = 1 - knob_ugwp_source = 1,1,0,0 - knob_ugwp_wvspec = 1,25,25,25 - knob_ugwp_azdir = 2,4,4,4 - knob_ugwp_stoch = 0,0,0,0 - knob_ugwp_effac = 1,1,1,1 - knob_ugwp_doaxyz = 1 - knob_ugwp_doheat = 1 - knob_ugwp_dokdis = 2 - knob_ugwp_ndx4lh = 4 - knob_ugwp_palaunch = 275.0e2 - knob_ugwp_nslope = 1 - knob_ugwp_lzmax = 15.750e3 - knob_ugwp_lzmin = 0.75e3 - knob_ugwp_lzstar = 2.0e3 - knob_ugwp_taumin = 0.25e-3 - knob_ugwp_tauamp = 0.5e-3 - knob_ugwp_lhmet = 200.0e3 - knob_ugwp_orosolv = 'pss-1986' + knob_ugwp_solver = 2 + knob_ugwp_version = 1 + knob_ugwp_source = 1,1,0,0 + knob_ugwp_wvspec = 1,25,25,25 + knob_ugwp_azdir = 2,4,4,4 + knob_ugwp_stoch = 0,0,0,0 + knob_ugwp_effac = 1,1,1,1 + knob_ugwp_doaxyz = 1 + knob_ugwp_doheat = 1 + knob_ugwp_dokdis = 2 + knob_ugwp_ndx4lh = 4 + knob_ugwp_palaunch = 275.0e2 + knob_ugwp_nslope = 1 + knob_ugwp_lzmax = 15.750e3 + knob_ugwp_lzmin = 0.75e3 + knob_ugwp_lzstar = 2.0e3 + knob_ugwp_taumin = 0.25e-3 + knob_ugwp_tauamp = 0.5e-3 + knob_ugwp_lhmet = 200.0e3 + knob_ugwp_orosolv = 'pss-1986' / !! [CIRES_UGWP_NML] diff --git a/physics/docs/pdftxt/RE7/input_HRRR_gf.nml b/physics/docs/pdftxt/RE7/input_HRRR_gf.nml index 9b8cbb1e0..e351384c6 100644 --- a/physics/docs/pdftxt/RE7/input_HRRR_gf.nml +++ b/physics/docs/pdftxt/RE7/input_HRRR_gf.nml @@ -92,15 +92,13 @@ lradar = .true. lrefres = .true. lsm = 3 - lsoil = 9 + lsoil = 4 lsoil_lsm = 9 ltaerosol = .true. lwhtr = .true. min_lakeice = 0.15 min_seaice = 0.15 mix_chem = .true. - mosaic_lu = 1 - mosaic_soil = 1 nsfullradar_diag = 3600 oz_phys = .false. oz_phys_2015 = .true. From 368877c154d38079b81107cb79efbc13cc6a313e Mon Sep 17 00:00:00 2001 From: Man Zhang Date: Fri, 16 Aug 2024 16:55:43 -0600 Subject: [PATCH 51/80] scidoc --- physics/CONV/progsigma_calc.f90 | 3 +- physics/GWD/cires_ugwp_initialize.F90 | 2 + physics/GWD/cires_ugwp_triggers.F90 | 2 + physics/GWD/cires_ugwpv1_initialize.F90 | 2 +- physics/GWD/ugwpv1_gsldrag.F90 | 5 +- physics/MP/GFDL/GFDL_parse_tracers.F90 | 4 + physics/Radiation/RRTMG/rrtmg_lw_post.F90 | 3 +- physics/Radiation/RRTMG/rrtmg_sw_post.F90 | 3 +- .../Land/Noahmp/module_sf_noahmp_glacier.F90 | 5 + .../SFC_Models/Land/RUC/module_soil_pre.F90 | 3 +- .../SFC_Models/Land/RUC/set_soilveg_ruc.F90 | 4 +- physics/docs/ccpp_doxyfile | 457 +++++++++--------- physics/docs/pdftxt/all_schemes_list.txt | 1 - 13 files changed, 267 insertions(+), 227 deletions(-) diff --git a/physics/CONV/progsigma_calc.f90 b/physics/CONV/progsigma_calc.f90 index 73f084d01..9da238429 100644 --- a/physics/CONV/progsigma_calc.f90 +++ b/physics/CONV/progsigma_calc.f90 @@ -1,5 +1,6 @@ !>\file progsigma_calc.f90 -!! This file contains the subroutine that calculates the prognostic + +!> This module contains the subroutine that calculates the prognostic !! updraft area fraction that is used for closure computations in !! saSAS deep and shallow convection, based on a moisture budget !! as described in Bengtsson et al. 2022 \cite Bengtsson_2022. diff --git a/physics/GWD/cires_ugwp_initialize.F90 b/physics/GWD/cires_ugwp_initialize.F90 index e391093a0..ae923671d 100644 --- a/physics/GWD/cires_ugwp_initialize.F90 +++ b/physics/GWD/cires_ugwp_initialize.F90 @@ -226,6 +226,7 @@ end module ugwpv0_oro_init ! Part -3 init wave solvers !=============================== +!> This module contains initialization of wave solvers for UGWP v0 module ugwpv0_lsatdis_init implicit none @@ -271,6 +272,7 @@ end subroutine initsolv_lsatdis_v0 end module ugwpv0_lsatdis_init ! ! +!>This module contains init-solvers for "broad" non-stationary multi-wave spectra module ugwpv0_wmsdis_init use ugwp_common_v0, only : pi, pi2 diff --git a/physics/GWD/cires_ugwp_triggers.F90 b/physics/GWD/cires_ugwp_triggers.F90 index 82cf11ebb..95cb79684 100644 --- a/physics/GWD/cires_ugwp_triggers.F90 +++ b/physics/GWD/cires_ugwp_triggers.F90 @@ -1,6 +1,8 @@ !>\file cires_ugwp_triggers.F90 !! +!> This module contains routines describing the the latitudinal shape of +!! vertical momentum flux function in UGWP v0. module cires_ugwp_triggers contains ! diff --git a/physics/GWD/cires_ugwpv1_initialize.F90 b/physics/GWD/cires_ugwpv1_initialize.F90 index aa54a46f3..65c96cf0d 100644 --- a/physics/GWD/cires_ugwpv1_initialize.F90 +++ b/physics/GWD/cires_ugwpv1_initialize.F90 @@ -12,7 +12,7 @@ ! Part-0 specifications of common constants, limiters and "criiical" values ! ! - +!> This module contains common constants, limiters and "critical" values in module ugwp_common ! use machine, only : kind_phys diff --git a/physics/GWD/ugwpv1_gsldrag.F90 b/physics/GWD/ugwpv1_gsldrag.F90 index 0a45fb791..3688218b3 100644 --- a/physics/GWD/ugwpv1_gsldrag.F90 +++ b/physics/GWD/ugwpv1_gsldrag.F90 @@ -1,5 +1,7 @@ !> \file ugwpv1_gsldrag.F90 -!! This introduces two gravity wave drag schemes ugwpv1/CIRES and GSL/drag_suite.F90 under "ugwpv1_gsldrag" suite: + +!> This module introduces two gravity wave drag schemes: UGWPv1 and orographic drag scheme +!! !! 1) The "V1 CIRES UGWP" scheme as tested in the FV3GFSv16-127L atmosphere model and workflow, which includes: !! a) the orograhic gravity wave drag, flow blocking scheme and TOFD (Beljaars et al, 2004). !! b) the v1 CIRE ugwp non-stationary GW scheme, new revision that generate realistic climate of FV3GFS-127L @@ -33,7 +35,6 @@ !! do_ugwp_v1_w_gsldrag -- activates V1 CIRES UGWP scheme with orographic drag of GSL !! Note that only one "large-scale" scheme can be activated at a time. !! - module ugwpv1_gsldrag use machine, only: kind_phys diff --git a/physics/MP/GFDL/GFDL_parse_tracers.F90 b/physics/MP/GFDL/GFDL_parse_tracers.F90 index c81127101..670c292ee 100644 --- a/physics/MP/GFDL/GFDL_parse_tracers.F90 +++ b/physics/MP/GFDL/GFDL_parse_tracers.F90 @@ -1,3 +1,7 @@ +!>\file GFDL_parse_tracers.F90 +!! + +!> This module contains code to parse tracers in GFDL MP module parse_tracers integer, parameter :: NO_TRACER = -99 diff --git a/physics/Radiation/RRTMG/rrtmg_lw_post.F90 b/physics/Radiation/RRTMG/rrtmg_lw_post.F90 index d9d3aa520..36661973d 100644 --- a/physics/Radiation/RRTMG/rrtmg_lw_post.F90 +++ b/physics/Radiation/RRTMG/rrtmg_lw_post.F90 @@ -1,5 +1,6 @@ !>\file rrtmg_lw_post.F90 -!!This file contains GFS RRTMG scheme post. + +!> This module contains code executed after RRTMG-LW scheme module rrtmg_lw_post contains diff --git a/physics/Radiation/RRTMG/rrtmg_sw_post.F90 b/physics/Radiation/RRTMG/rrtmg_sw_post.F90 index f39cba71c..893c093e9 100644 --- a/physics/Radiation/RRTMG/rrtmg_sw_post.F90 +++ b/physics/Radiation/RRTMG/rrtmg_sw_post.F90 @@ -1,5 +1,6 @@ !>\file rrtmg_sw_post.F90 -!! This file contains GFS RRTMG scheme post. + +!> This module contains RRTMG-SW scheme post module rrtmg_sw_post contains diff --git a/physics/SFC_Models/Land/Noahmp/module_sf_noahmp_glacier.F90 b/physics/SFC_Models/Land/Noahmp/module_sf_noahmp_glacier.F90 index fcbe40a70..bcb157c54 100644 --- a/physics/SFC_Models/Land/Noahmp/module_sf_noahmp_glacier.F90 +++ b/physics/SFC_Models/Land/Noahmp/module_sf_noahmp_glacier.F90 @@ -3,6 +3,8 @@ !! This file contains the NoahMP Glacier scheme. !>\ingroup NoahMP_LSM + +!> This module contains the NoahMP Glacier scheme module noahmp_glacier_globals use machine , only : kind_phys @@ -77,6 +79,8 @@ end module noahmp_glacier_globals !------------------------------------------------------------------------------------------! !>\ingroup NoahMP_LSM + +!> This module contains NoahMP glacier routines module noahmp_glacier_routines use noahmp_glacier_globals #ifndef CCPP @@ -3489,6 +3493,7 @@ end subroutine noahmp_options_glacier end module noahmp_glacier_routines ! ================================================================================================== +!> This module contains the interface of noahmp_glacier_routines and noahmp_glacier_globals module module_sf_noahmp_glacier use noahmp_glacier_routines diff --git a/physics/SFC_Models/Land/RUC/module_soil_pre.F90 b/physics/SFC_Models/Land/RUC/module_soil_pre.F90 index 8eb5a5775..d8cdf5b82 100644 --- a/physics/SFC_Models/Land/RUC/module_soil_pre.F90 +++ b/physics/SFC_Models/Land/RUC/module_soil_pre.F90 @@ -1,5 +1,6 @@ !>\file module_soil_pre.F90 -!! This file contains subroutines that initialize RUC LSM levels, soil + +!> This module contains subroutines that initialize RUC LSM levels, soil !! temperature/moisture. module module_soil_pre diff --git a/physics/SFC_Models/Land/RUC/set_soilveg_ruc.F90 b/physics/SFC_Models/Land/RUC/set_soilveg_ruc.F90 index 8ce6023ff..012c81323 100644 --- a/physics/SFC_Models/Land/RUC/set_soilveg_ruc.F90 +++ b/physics/SFC_Models/Land/RUC/set_soilveg_ruc.F90 @@ -1,7 +1,7 @@ !>\file set_soilveg_ruc.F90 -!! This file contains subroutine to specify vegetation and soil -!! parameters for a given soild and land-use classification. +!> This module contains subroutine to specify vegetation and soil +!! parameters for a given soild and land-use classification. module set_soilveg_ruc_mod use machine , only : kind_phys diff --git a/physics/docs/ccpp_doxyfile b/physics/docs/ccpp_doxyfile index 337995657..403499455 100644 --- a/physics/docs/ccpp_doxyfile +++ b/physics/docs/ccpp_doxyfile @@ -1,7 +1,7 @@ -# Doxyfile 1.11.0 +# Doxyfile 1.12.0 # This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project. +# Doxygen (www.doxygen.org) for a project. # # All text after a double hash (##) is considered a comment and is placed in # front of the TAG it is preceding. @@ -15,10 +15,10 @@ # # Note: # -# Use doxygen to compare the used configuration file with the template +# Use Doxygen to compare the used configuration file with the template # configuration file: # doxygen -x [configFile] -# Use doxygen to compare the used configuration file with the template +# Use Doxygen to compare the used configuration file with the template # configuration file without replacing the environment variables or CMake type # replacement variables: # doxygen -x_noenv [configFile] @@ -71,15 +71,15 @@ PROJECT_ICON = # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path # into which the generated documentation will be written. If a relative path is -# entered, it will be relative to the location where doxygen was started. If +# entered, it will be relative to the location where Doxygen was started. If # left blank the current directory will be used. OUTPUT_DIRECTORY = doc -# If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096 +# If the CREATE_SUBDIRS tag is set to YES then Doxygen will create up to 4096 # sub-directories (in 2 levels) under the output directory of each output format # and will distribute the generated files over these directories. Enabling this -# option can be useful when feeding doxygen a huge amount of source files, where +# option can be useful when feeding Doxygen a huge amount of source files, where # putting all generated files in the same directory would otherwise causes # performance problems for the file system. Adapt CREATE_SUBDIRS_LEVEL to # control the number of sub-directories. @@ -98,7 +98,7 @@ CREATE_SUBDIRS = NO CREATE_SUBDIRS_LEVEL = 8 -# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# If the ALLOW_UNICODE_NAMES tag is set to YES, Doxygen will allow non-ASCII # characters to appear in the names of generated files. If set to NO, non-ASCII # characters will be escaped, for example _xE3_x81_x84 will be used for Unicode # U+3044. @@ -107,7 +107,7 @@ CREATE_SUBDIRS_LEVEL = 8 ALLOW_UNICODE_NAMES = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this +# documentation generated by Doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Bulgarian, # Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, English @@ -121,14 +121,14 @@ ALLOW_UNICODE_NAMES = NO OUTPUT_LANGUAGE = English -# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# If the BRIEF_MEMBER_DESC tag is set to YES, Doxygen will include brief member # descriptions after the members that are listed in the file and class # documentation (similar to Javadoc). Set to NO to disable this. # The default value is: YES. BRIEF_MEMBER_DESC = YES -# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# If the REPEAT_BRIEF tag is set to YES, Doxygen will prepend the brief # description of a member or function before the detailed description # # Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the @@ -149,13 +149,13 @@ REPEAT_BRIEF = NO ABBREVIATE_BRIEF = # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# doxygen will generate a detailed section even if there is only a brief +# Doxygen will generate a detailed section even if there is only a brief # description. # The default value is: NO. ALWAYS_DETAILED_SEC = NO -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# If the INLINE_INHERITED_MEMB tag is set to YES, Doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. @@ -163,7 +163,7 @@ ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO -# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# If the FULL_PATH_NAMES tag is set to YES, Doxygen will prepend the full path # before files name in the file list and in the header files. If set to NO the # shortest path that makes the file name unique will be used # The default value is: YES. @@ -173,11 +173,11 @@ FULL_PATH_NAMES = YES # The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. # Stripping is only done if one of the specified strings matches the left-hand # part of the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the path to +# If left blank the directory from which Doxygen is run is used as the path to # strip. # # Note that you can specify absolute paths here, but also relative paths, which -# will be relative from the directory where doxygen is started. +# will be relative from the directory where Doxygen is started. # This tag requires that the tag FULL_PATH_NAMES is set to YES. STRIP_FROM_PATH = @@ -191,14 +191,14 @@ STRIP_FROM_PATH = STRIP_FROM_INC_PATH = -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# If the SHORT_NAMES tag is set to YES, Doxygen will generate much shorter (but # less readable) file names. This can be useful is your file systems doesn't # support long names like on DOS, Mac, or CD-ROM. # The default value is: NO. SHORT_NAMES = NO -# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen will interpret the # first line (until the first dot) of a Javadoc-style comment as the brief # description. If set to NO, the Javadoc-style will behave just like regular Qt- # style comments (thus requiring an explicit @brief command for a brief @@ -207,17 +207,17 @@ SHORT_NAMES = NO JAVADOC_AUTOBRIEF = NO -# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line +# If the JAVADOC_BANNER tag is set to YES then Doxygen will interpret a line # such as # /*************** # as being the beginning of a Javadoc-style comment "banner". If set to NO, the # Javadoc-style will behave just like regular comments and it will not be -# interpreted by doxygen. +# interpreted by Doxygen. # The default value is: NO. JAVADOC_BANNER = NO -# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will interpret the first # line (until the first dot) of a Qt-style comment as the brief description. If # set to NO, the Qt-style will behave just like regular Qt-style comments (thus # requiring an explicit \brief command for a brief description.) @@ -225,7 +225,7 @@ JAVADOC_BANNER = NO QT_AUTOBRIEF = NO -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen treat a # multi-line C++ special comment block (i.e. a block of //! or /// comments) as # a brief description. This used to be the default behavior. The new default is # to treat a multi-line C++ comment block as a detailed description. Set this @@ -237,10 +237,10 @@ QT_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO -# By default Python docstrings are displayed as preformatted text and doxygen's +# By default Python docstrings are displayed as preformatted text and Doxygen's # special commands cannot be used. By setting PYTHON_DOCSTRING to NO the -# doxygen's special commands can be used and the contents of the docstring -# documentation blocks is shown as doxygen documentation. +# Doxygen's special commands can be used and the contents of the docstring +# documentation blocks is shown as Doxygen documentation. # The default value is: YES. PYTHON_DOCSTRING = YES @@ -251,7 +251,7 @@ PYTHON_DOCSTRING = YES INHERIT_DOCS = YES -# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# If the SEPARATE_MEMBER_PAGES tag is set to YES then Doxygen will produce a new # page for each member. If set to NO, the documentation of a member will be part # of the file/class/namespace that contains it. # The default value is: NO. @@ -321,19 +321,19 @@ OPTIMIZE_OUTPUT_SLICE = NO # parses. With this tag you can assign which parser to use for a given # extension. Doxygen has a built-in mapping, but you can override or extend it # using this tag. The format is ext=language, where ext is a file extension, and -# language is one of the parsers supported by doxygen: IDL, Java, JavaScript, +# language is one of the parsers supported by Doxygen: IDL, Java, JavaScript, # Csharp (C#), C, C++, Lex, D, PHP, md (Markdown), Objective-C, Python, Slice, # VHDL, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: # FortranFree, unknown formatted Fortran: Fortran. In the later case the parser # tries to guess whether the code is fixed or free formatted code, this is the -# default for Fortran type files). For instance to make doxygen treat .inc files +# default for Fortran type files). For instance to make Doxygen treat .inc files # as Fortran files (default is PHP), and .f files as C (default is Fortran), # use: inc=Fortran f=C. # # Note: For files without extension you can use no_extension as a placeholder. # # Note that for custom extensions you also need to set FILE_PATTERNS otherwise -# the files are not read by doxygen. When specifying no_extension you should add +# the files are not read by Doxygen. When specifying no_extension you should add # * to the FILE_PATTERNS. # # Note see also the list of default file extension mappings. @@ -343,11 +343,11 @@ EXTENSION_MAPPING = .f=FortranFree \ .F90=FortranFree \ .f90=FortranFree -# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# If the MARKDOWN_SUPPORT tag is enabled then Doxygen pre-processes all comments # according to the Markdown format, which allows for more readable # documentation. See https://daringfireball.net/projects/markdown/ for details. -# The output of markdown processing is further processed by doxygen, so you can -# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# The output of markdown processing is further processed by Doxygen, so you can +# mix Doxygen, HTML, and XML commands with Markdown formatting. Disable only in # case of backward compatibilities issues. # The default value is: YES. @@ -373,7 +373,7 @@ TOC_INCLUDE_HEADINGS = 5 MARKDOWN_ID_STYLE = DOXYGEN -# When enabled doxygen tries to link words that correspond to documented +# When enabled Doxygen tries to link words that correspond to documented # classes, or namespaces to their corresponding documentation. Such a link can # be prevented in individual cases by putting a % sign in front of the word or # globally by setting AUTOLINK_SUPPORT to NO. @@ -383,7 +383,7 @@ AUTOLINK_SUPPORT = YES # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want # to include (a tag file for) the STL sources as input, then you should set this -# tag to YES in order to let doxygen match functions declarations and +# tag to YES in order to let Doxygen match functions declarations and # definitions whose arguments contain STL classes (e.g. func(std::string); # versus func(std::string) {}). This also makes the inheritance and # collaboration diagrams that involve STL classes more complete and accurate. @@ -407,7 +407,7 @@ SIP_SUPPORT = NO # For Microsoft's IDL there are propget and propput attributes to indicate # getter and setter methods for a property. Setting this option to YES will make -# doxygen to replace the get and set methods by a property in the documentation. +# Doxygen to replace the get and set methods by a property in the documentation. # This will only work if the methods are indeed getting or setting a simple # type. If this is not the case, or you want to show the methods anyway, you # should set this option to NO. @@ -416,7 +416,7 @@ SIP_SUPPORT = NO IDL_PROPERTY_SUPPORT = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES then doxygen will reuse the documentation of the first +# tag is set to YES then Doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. # The default value is: NO. @@ -474,18 +474,18 @@ TYPEDEF_HIDES_STRUCT = YES # The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This # cache is used to resolve symbols given their name and scope. Since this can be # an expensive process and often the same symbol appears multiple times in the -# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small -# doxygen will become slower. If the cache is too large, memory is wasted. The +# code, Doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# Doxygen will become slower. If the cache is too large, memory is wasted. The # cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range # is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 -# symbols. At the end of a run doxygen will report the cache usage and suggest +# symbols. At the end of a run Doxygen will report the cache usage and suggest # the optimal cache size from a speed point of view. # Minimum value: 0, maximum value: 9, default value: 0. LOOKUP_CACHE_SIZE = 0 -# The NUM_PROC_THREADS specifies the number of threads doxygen is allowed to use -# during processing. When set to 0 doxygen will based this on the number of +# The NUM_PROC_THREADS specifies the number of threads Doxygen is allowed to use +# during processing. When set to 0 Doxygen will based this on the number of # cores available in the system. You can set it explicitly to a value larger # than 0 to get more control over the balance between CPU load and processing # speed. At this moment only the input processing can be done using multiple @@ -509,7 +509,7 @@ TIMESTAMP = NO # Build related configuration options #--------------------------------------------------------------------------- -# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# If the EXTRACT_ALL tag is set to YES, Doxygen will assume all entities in # documentation are documented, even if no documentation was available. Private # class members and static file members will be hidden unless the # EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. @@ -575,7 +575,7 @@ EXTRACT_ANON_NSPACES = YES RESOLVE_UNNAMED_PARAMS = YES -# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all # undocumented members inside documented classes or files. If set to NO these # members will be included in the various overviews, but no documentation # section is generated. This option has no effect if EXTRACT_ALL is enabled. @@ -583,7 +583,7 @@ RESOLVE_UNNAMED_PARAMS = YES HIDE_UNDOC_MEMBERS = NO -# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. If set # to NO, these classes will be included in the various overviews. This option # will also hide undocumented C++ concepts if enabled. This option has no effect @@ -592,14 +592,14 @@ HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all friend # declarations. If set to NO, these declarations will be included in the # documentation. # The default value is: NO. HIDE_FRIEND_COMPOUNDS = NO -# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any # documentation blocks found inside the body of a function. If set to NO, these # blocks will be appended to the function's detailed documentation block. # The default value is: NO. @@ -613,7 +613,7 @@ HIDE_IN_BODY_DOCS = NO INTERNAL_DOCS = YES -# With the correct setting of option CASE_SENSE_NAMES doxygen will better be +# With the correct setting of option CASE_SENSE_NAMES Doxygen will better be # able to match the capabilities of the underlying filesystem. In case the # filesystem is case sensitive (i.e. it supports files in the same directory # whose names only differ in casing), the option must be set to YES to properly @@ -622,7 +622,7 @@ INTERNAL_DOCS = YES # output files written for symbols that only differ in casing, such as for two # classes, one named CLASS and the other named Class, and to also support # references to files without having to specify the exact matching casing. On -# Windows (including Cygwin) and MacOS, users should typically set this option +# Windows (including Cygwin) and macOS, users should typically set this option # to NO, whereas on Linux or other Unix flavors it should typically be set to # YES. # Possible values are: SYSTEM, NO and YES. @@ -630,14 +630,14 @@ INTERNAL_DOCS = YES CASE_SENSE_NAMES = NO -# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# If the HIDE_SCOPE_NAMES tag is set to NO then Doxygen will show members with # their full class and namespace scopes in the documentation. If set to YES, the # scope will be hidden. # The default value is: NO. HIDE_SCOPE_NAMES = NO -# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then Doxygen will # append additional text to a page's title, such as Class Reference. If set to # YES the compound reference will be hidden. # The default value is: NO. @@ -650,7 +650,7 @@ HIDE_COMPOUND_REFERENCE= NO SHOW_HEADERFILE = YES -# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# If the SHOW_INCLUDE_FILES tag is set to YES then Doxygen will put a list of # the files that are included by a file in the documentation of that file. # The default value is: YES. @@ -663,7 +663,7 @@ SHOW_INCLUDE_FILES = YES SHOW_GROUPED_MEMB_INC = NO -# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen will list include # files with double quotes in the documentation rather than with sharp brackets. # The default value is: NO. @@ -675,14 +675,14 @@ FORCE_LOCAL_INCLUDES = NO INLINE_INFO = YES -# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# If the SORT_MEMBER_DOCS tag is set to YES then Doxygen will sort the # (detailed) documentation of file and class members alphabetically by member # name. If set to NO, the members will appear in declaration order. # The default value is: YES. SORT_MEMBER_DOCS = NO -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# If the SORT_BRIEF_DOCS tag is set to YES then Doxygen will sort the brief # descriptions of file, namespace and class members alphabetically by member # name. If set to NO, the members will appear in declaration order. Note that # this will also influence the order of the classes in the class list. @@ -690,7 +690,7 @@ SORT_MEMBER_DOCS = NO SORT_BRIEF_DOCS = NO -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then Doxygen will sort the # (brief and detailed) documentation of class members so that constructors and # destructors are listed first. If set to NO the constructors will appear in the # respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. @@ -702,7 +702,7 @@ SORT_BRIEF_DOCS = NO SORT_MEMBERS_CTORS_1ST = NO -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# If the SORT_GROUP_NAMES tag is set to YES then Doxygen will sort the hierarchy # of group names into alphabetical order. If set to NO the group names will # appear in their defined order. # The default value is: NO. @@ -719,11 +719,11 @@ SORT_GROUP_NAMES = NO SORT_BY_SCOPE_NAME = NO -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# If the STRICT_PROTO_MATCHING option is enabled and Doxygen fails to do proper # type resolution of all parameters of a function it will reject a match between # the prototype and the implementation of a member function even if there is # only one candidate or it is obvious which candidate to choose by doing a -# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# simple string match. By disabling STRICT_PROTO_MATCHING Doxygen will still # accept a match between prototype and implementation in such cases. # The default value is: NO. @@ -793,25 +793,25 @@ SHOW_FILES = NO SHOW_NAMESPACES = YES # The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from +# Doxygen should invoke to get the current version for each file (typically from # the version control system). Doxygen will invoke the program by executing (via # popen()) the command command input-file, where command is the value of the # FILE_VERSION_FILTER tag, and input-file is the name of an input file provided -# by doxygen. Whatever the program writes to standard output is used as the file +# by Doxygen. Whatever the program writes to standard output is used as the file # version. For an example see the documentation. FILE_VERSION_FILTER = # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated +# by Doxygen. The layout file controls the global structure of the generated # output files in an output format independent way. To create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. You can +# that represents Doxygen's defaults, run Doxygen with the -l option. You can # optionally specify a file name after the option, if omitted DoxygenLayout.xml # will be used as the name of the layout file. See also section "Changing the # layout of pages" for information. # -# Note that if you run doxygen from a directory containing a file called -# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# Note that if you run Doxygen from a directory containing a file called +# DoxygenLayout.xml, Doxygen will parse it automatically even if the LAYOUT_FILE # tag is left empty. LAYOUT_FILE = ccpp_dox_layout.xml @@ -826,19 +826,35 @@ LAYOUT_FILE = ccpp_dox_layout.xml CITE_BIB_FILES = library.bib +# The EXTERNAL_TOOL_PATH tag can be used to extend the search path (PATH +# environment variable) so that external tools such as latex and gs can be +# found. +# Note: Directories specified with EXTERNAL_TOOL_PATH are added in front of the +# path already specified by the PATH variable, and are added in the order +# specified. +# Note: This option is particularly useful for macOS version 14 (Sonoma) and +# higher, when running Doxygen from Doxywizard, because in this case any user- +# defined changes to the PATH are ignored. A typical example on macOS is to set +# EXTERNAL_TOOL_PATH = /Library/TeX/texbin /usr/local/bin +# together with the standard path, the full search path used by doxygen when +# launching external tools will then become +# PATH=/Library/TeX/texbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin + +EXTERNAL_TOOL_PATH = + #--------------------------------------------------------------------------- # Configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated to -# standard output by doxygen. If QUIET is set to YES this implies that the +# standard output by Doxygen. If QUIET is set to YES this implies that the # messages are off. # The default value is: NO. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are -# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# generated to standard error (stderr) by Doxygen. If WARNINGS is set to YES # this implies that the warnings are on. # # Tip: Turn warnings on while writing the documentation. @@ -846,14 +862,14 @@ QUIET = NO WARNINGS = YES -# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# If the WARN_IF_UNDOCUMENTED tag is set to YES then Doxygen will generate # warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag # will automatically be disabled. # The default value is: YES. WARN_IF_UNDOCUMENTED = NO -# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# If the WARN_IF_DOC_ERROR tag is set to YES, Doxygen will generate warnings for # potential errors in the documentation, such as documenting some parameters in # a documented function twice, or documenting parameters that don't exist or # using markup commands wrongly. @@ -861,8 +877,8 @@ WARN_IF_UNDOCUMENTED = NO WARN_IF_DOC_ERROR = YES -# If WARN_IF_INCOMPLETE_DOC is set to YES, doxygen will warn about incomplete -# function parameter documentation. If set to NO, doxygen will accept that some +# If WARN_IF_INCOMPLETE_DOC is set to YES, Doxygen will warn about incomplete +# function parameter documentation. If set to NO, Doxygen will accept that some # parameters have no documentation without warning. # The default value is: YES. @@ -870,7 +886,7 @@ WARN_IF_INCOMPLETE_DOC = YES # This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that # are documented, but have no documentation for their parameters or return -# value. If set to NO, doxygen will only warn about wrong parameter +# value. If set to NO, Doxygen will only warn about wrong parameter # documentation, but not about the absence of documentation. If EXTRACT_ALL is # set to YES then this flag will automatically be disabled. See also # WARN_IF_INCOMPLETE_DOC @@ -878,20 +894,20 @@ WARN_IF_INCOMPLETE_DOC = YES WARN_NO_PARAMDOC = NO -# If WARN_IF_UNDOC_ENUM_VAL option is set to YES, doxygen will warn about -# undocumented enumeration values. If set to NO, doxygen will accept +# If WARN_IF_UNDOC_ENUM_VAL option is set to YES, Doxygen will warn about +# undocumented enumeration values. If set to NO, Doxygen will accept # undocumented enumeration values. If EXTRACT_ALL is set to YES then this flag # will automatically be disabled. # The default value is: NO. WARN_IF_UNDOC_ENUM_VAL = NO -# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when +# If the WARN_AS_ERROR tag is set to YES then Doxygen will immediately stop when # a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS -# then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but -# at the end of the doxygen process doxygen will return with a non-zero status. -# If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS_PRINT then doxygen behaves -# like FAIL_ON_WARNINGS but in case no WARN_LOGFILE is defined doxygen will not +# then Doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but +# at the end of the Doxygen process Doxygen will return with a non-zero status. +# If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS_PRINT then Doxygen behaves +# like FAIL_ON_WARNINGS but in case no WARN_LOGFILE is defined Doxygen will not # write the warning messages in between other messages but write them at the end # of a run, in case a WARN_LOGFILE is defined the warning messages will be # besides being in the defined file also be shown at the end of a run, unless @@ -902,7 +918,7 @@ WARN_IF_UNDOC_ENUM_VAL = NO WARN_AS_ERROR = NO -# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# The WARN_FORMAT tag determines the format of the warning messages that Doxygen # can produce. The string should contain the $file, $line, and $text tags, which # will be replaced by the file and line number from which the warning originated # and the warning text. Optionally the format may contain $version, which will @@ -915,7 +931,7 @@ WARN_FORMAT = # In the $text part of the WARN_FORMAT command it is possible that a reference # to a more specific place is given. To make it easier to jump to this place -# (outside of doxygen) the user can define a custom "cut" / "paste" string. +# (outside of Doxygen) the user can define a custom "cut" / "paste" string. # Example: # WARN_LINE_FORMAT = "'vi $file +$line'" # See also: WARN_FORMAT @@ -984,10 +1000,10 @@ INPUT = pdftxt/mainpage.txt \ ../PBL \ ../SFC_Models \ ../photochem \ - ../Radiation + ../Radiation # This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# that Doxygen parses. Internally Doxygen uses the UTF-8 encoding. Doxygen uses # libiconv (or the iconv built into libc) for the transcoding. See the libiconv # documentation (see: # https://www.gnu.org/software/libiconv/) for the list of possible encodings. @@ -997,7 +1013,7 @@ INPUT = pdftxt/mainpage.txt \ INPUT_ENCODING = UTF-8 # This tag can be used to specify the character encoding of the source files -# that doxygen parses The INPUT_FILE_ENCODING tag can be used to specify +# that Doxygen parses The INPUT_FILE_ENCODING tag can be used to specify # character encoding on a per file pattern basis. Doxygen will compare the file # name with each pattern and apply the encoding instead of the default # INPUT_ENCODING) if there is a match. The character encodings are a list of the @@ -1012,7 +1028,7 @@ INPUT_FILE_ENCODING = # # Note that for custom extensions or not directly supported extensions you also # need to set EXTENSION_MAPPING for the extension otherwise the files are not -# read by doxygen. +# read by Doxygen. # # Note the list of default checked file patterns might differ from the list of # default file extension mappings. @@ -1021,7 +1037,7 @@ INPUT_FILE_ENCODING = # *.cpp, *.cppm, *.ccm, *.c++, *.c++m, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, # *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, *.h++, *.ixx, *.l, *.cs, *.d, # *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, *.md, *.mm, *.dox (to -# be provided as doxygen C comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, +# be provided as Doxygen C comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, # *.f18, *.f, *.for, *.vhd, *.vhdl, *.ucf, *.qsf and *.ice. FILE_PATTERNS = *.f \ @@ -1041,44 +1057,45 @@ RECURSIVE = YES # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. # -# Note that relative paths are relative to the directory from which doxygen is +# Note that relative paths are relative to the directory from which Doxygen is # run. -EXCLUDE = ../Radiation/RRTMGP/rte-rrtmgp \ - ../MP/Morrison_Gettelman \ - ../MP/Ferrier_Aligo \ - ../MP/Zhao_Carr \ - ../PBL/MYJ \ - ../PBL/HEDMF \ - ../PBL/SHOC \ - ../PBL/saYSU \ - ../PBL/YSU \ - ../PBL/SATMEDMF/mfscu.f \ +EXCLUDE = ../Radiation/RRTMGP/rte-rrtmgp \ + ../MP/Morrison_Gettelman \ + ../MP/Ferrier_Aligo \ + ../MP/Zhao_Carr \ + ../PBL/MYJ \ + ../MP/GFDL/GFDL_parse_tracers.F90 \ + ../PBL/HEDMF \ + ../PBL/SHOC \ + ../PBL/saYSU \ + ../PBL/YSU \ + ../PBL/SATMEDMF/mfscu.f \ ../PBL/SATMEDMF/satmedmfvdif.F \ - ../SFC_Models/Lake/Flake \ - ../smoke_dust \ - ../SFC_Layer/GFDL \ - ../SFC_Layer/MYJ \ - ../tools \ - ../CONV/C3 \ - ../CONV/Chikira_Sugiyama \ - ../CONV/nTiedtke \ - ../CONV/RAS \ - ../CONV/SAS \ + ../SFC_Models/Lake/Flake \ + ../smoke_dust \ + ../SFC_Layer/GFDL \ + ../SFC_Layer/MYJ \ + ../tools \ + ../CONV/C3 \ + ../CONV/Chikira_Sugiyama \ + ../CONV/nTiedtke \ + ../CONV/RAS \ + ../CONV/SAS \ ../CONV/SAMF/samfaerosols.F \ ../SFC_Layer/UFS/date_def.f \ ../GWD/cires_ugwpv1_module.F90 \ ../GWD/cires_ugwpv1_initialize.F90 \ - ../GWD/cires_ugwpv1_oro.F90 \ - ../GWD/cires_ugwpv1_solv2.F90 \ - ../GWD/cires_ugwpv1_sporo.F90 \ - ../GWD/cires_ugwpv1_triggers.F90 \ - ../GWD/cires_tauamf_data.F90 \ - ../GWD/unified_ugwp.F90 \ - ../GWD/unified_ugwp_post.F90 \ - ../GWD/gwdc.f \ - ../GWD/gwdc_post.f \ - ../GWD/gwdc_pre.f \ + ../GWD/cires_ugwpv1_oro.F90 \ + ../GWD/cires_ugwpv1_solv2.F90 \ + ../GWD/cires_ugwpv1_sporo.F90 \ + ../GWD/cires_ugwpv1_triggers.F90 \ + ../GWD/cires_tauamf_data.F90 \ + ../GWD/unified_ugwp.F90 \ + ../GWD/unified_ugwp_post.F90 \ + ../GWD/gwdc.f \ + ../GWD/gwdc_post.f \ + ../GWD/gwdc_pre.f \ ../GWD/rayleigh_damp.f # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or @@ -1132,7 +1149,7 @@ EXAMPLE_RECURSIVE = NO IMAGE_PATH = img -# The INPUT_FILTER tag can be used to specify a program that doxygen should +# The INPUT_FILTER tag can be used to specify a program that Doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command: # @@ -1147,14 +1164,14 @@ IMAGE_PATH = img # code is scanned, but not when the output code is generated. If lines are added # or removed, the anchors will not be placed correctly. # -# Note that doxygen will use the data processed and written to standard output +# Note that Doxygen will use the data processed and written to standard output # for further processing, therefore nothing else, like debug statements or used # commands (so in case of a Windows batch file always use @echo OFF), should be # written to standard output. # # Note that for custom extensions or not directly supported extensions you also # need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by doxygen. +# properly processed by Doxygen. INPUT_FILTER = @@ -1167,7 +1184,7 @@ INPUT_FILTER = # # Note that for custom extensions or not directly supported extensions you also # need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by doxygen. +# properly processed by Doxygen. FILTER_PATTERNS = @@ -1189,7 +1206,7 @@ FILTER_SOURCE_PATTERNS = # If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that # is part of the input, its contents will be placed on the main page # (index.html). This can be useful if you have a project on for instance GitHub -# and want to reuse the introduction page also for the doxygen output. +# and want to reuse the introduction page also for the Doxygen output. USE_MDFILE_AS_MAINPAGE = @@ -1222,7 +1239,7 @@ SOURCE_BROWSER = YES INLINE_SOURCES = NO -# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct Doxygen to hide any # special comment blocks from generated source code fragments. Normal C, C++ and # Fortran comments will always remain visible. # The default value is: YES. @@ -1260,7 +1277,7 @@ REFERENCES_LINK_SOURCE = YES SOURCE_TOOLTIPS = YES # If the USE_HTAGS tag is set to YES then the references to source code will -# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# point to the HTML generated by the htags(1) tool instead of Doxygen built-in # source browser. The htags tool is part of GNU's global source tagging system # (see https://www.gnu.org/software/global/global.html). You will need version # 4.8.6 or higher. @@ -1274,14 +1291,14 @@ SOURCE_TOOLTIPS = YES # Doxygen will invoke htags (and that will in turn invoke gtags), so these # tools must be available from the command line (i.e. in the search path). # -# The result: instead of the source browser generated by doxygen, the links to +# The result: instead of the source browser generated by Doxygen, the links to # source code will now point to the output of htags. # The default value is: NO. # This tag requires that the tag SOURCE_BROWSER is set to YES. USE_HTAGS = NO -# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# If the VERBATIM_HEADERS tag is set the YES then Doxygen will generate a # verbatim copy of the header file for each class for which an include is # specified. Set to NO to disable this. # See also: Section \class. @@ -1313,7 +1330,7 @@ IGNORE_PREFIX = # Configuration options related to the HTML output #--------------------------------------------------------------------------- -# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# If the GENERATE_HTML tag is set to YES, Doxygen will generate HTML output # The default value is: YES. GENERATE_HTML = YES @@ -1334,40 +1351,40 @@ HTML_OUTPUT = html HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a user-defined HTML header file for -# each generated HTML page. If the tag is left blank doxygen will generate a +# each generated HTML page. If the tag is left blank Doxygen will generate a # standard header. # # To get valid HTML the header file that includes any scripts and style sheets -# that doxygen needs, which is dependent on the configuration options used (e.g. +# that Doxygen needs, which is dependent on the configuration options used (e.g. # the setting GENERATE_TREEVIEW). It is highly recommended to start with a # default header using # doxygen -w html new_header.html new_footer.html new_stylesheet.css # YourConfigFile # and then modify the file new_header.html. See also section "Doxygen usage" -# for information on how to generate the default header that doxygen normally +# for information on how to generate the default header that Doxygen normally # uses. # Note: The header is subject to change so you typically have to regenerate the -# default header when upgrading to a newer version of doxygen. For a description +# default header when upgrading to a newer version of Doxygen. For a description # of the possible markers and block names see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_HEADER = _doxygen/header.html # The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each -# generated HTML page. If the tag is left blank doxygen will generate a standard +# generated HTML page. If the tag is left blank Doxygen will generate a standard # footer. See HTML_HEADER for more information on how to generate a default # footer and what special commands can be used inside the footer. See also # section "Doxygen usage" for information on how to generate the default footer -# that doxygen normally uses. +# that Doxygen normally uses. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_FOOTER = _doxygen/footer.html # The HTML_STYLESHEET tag can be used to specify a user-defined cascading style # sheet that is used by each HTML page. It can be used to fine-tune the look of -# the HTML output. If left blank doxygen will generate a default style sheet. +# the HTML output. If left blank Doxygen will generate a default style sheet. # See also section "Doxygen usage" for information on how to generate the style -# sheet that doxygen normally uses. +# sheet that Doxygen normally uses. # Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as # it is more robust and this tag (HTML_STYLESHEET) will in the future become # obsolete. @@ -1377,7 +1394,7 @@ HTML_STYLESHEET = # The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined # cascading style sheets that are included after the standard style sheets -# created by doxygen. Using this option one can overrule certain style aspects. +# created by Doxygen. Using this option one can overrule certain style aspects. # This is preferred over using HTML_STYLESHEET since it does not replace the # standard style sheet and is therefore more robust against future updates. # Doxygen will copy the style sheet files to the output directory. @@ -1477,7 +1494,7 @@ HTML_DYNAMIC_SECTIONS = NO HTML_CODE_FOLDING = YES -# If the HTML_COPY_CLIPBOARD tag is set to YES then doxygen will show an icon in +# If the HTML_COPY_CLIPBOARD tag is set to YES then Doxygen will show an icon in # the top right corner of code and text fragments that allows the user to copy # its content to the clipboard. Note this only works if supported by the browser # and the web page is served via a secure context (see: @@ -1490,7 +1507,7 @@ HTML_COPY_CLIPBOARD = YES # Doxygen stores a couple of settings persistently in the browser (via e.g. # cookies). By default these settings apply to all HTML pages generated by -# doxygen across all projects. The HTML_PROJECT_COOKIE tag can be used to store +# Doxygen across all projects. The HTML_PROJECT_COOKIE tag can be used to store # the settings under a project specific key, such that the user preferences will # be stored separately. # This tag requires that the tag GENERATE_HTML is set to YES. @@ -1514,7 +1531,7 @@ HTML_INDEX_NUM_ENTRIES = 100 # generated that can be used as input for Apple's Xcode 3 integrated development # environment (see: # https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To -# create a documentation set, doxygen will generate a Makefile in the HTML +# create a documentation set, Doxygen will generate a Makefile in the HTML # output directory. Running make will produce the docset in that directory and # running make install will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at @@ -1562,7 +1579,7 @@ DOCSET_PUBLISHER_ID = org.doxygen.Publisher DOCSET_PUBLISHER_NAME = Publisher -# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# If the GENERATE_HTMLHELP tag is set to YES then Doxygen generates three # additional HTML index files: index.hhp, index.hhc, and index.hhk. The # index.hhp is a project file that can be read by Microsoft's HTML Help Workshop # on Windows. In the beginning of 2021 Microsoft took the original page, with @@ -1573,7 +1590,7 @@ DOCSET_PUBLISHER_NAME = Publisher # ad/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe). # # The HTML Help Workshop contains a compiler that can convert all HTML output -# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# generated by Doxygen into a single compiled HTML file (.chm). Compiled HTML # files are now used as the Windows 98 help format, and will replace the old # Windows help format (.hlp) on all Windows platforms in the future. Compressed # HTML files also contain an index, a table of contents, and you can search for @@ -1593,7 +1610,7 @@ CHM_FILE = # The HHC_LOCATION tag can be used to specify the location (absolute path # including file name) of the HTML help compiler (hhc.exe). If non-empty, -# doxygen will try to run the HTML help compiler on the generated index.hhp. +# Doxygen will try to run the HTML help compiler on the generated index.hhp. # The file has to be specified with full path. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. @@ -1695,7 +1712,7 @@ QHP_CUST_FILTER_ATTRS = QHP_SECT_FILTER_ATTRS = # The QHG_LOCATION tag can be used to specify the location (absolute path -# including file name) of Qt's qhelpgenerator. If non-empty doxygen will try to +# including file name) of Qt's qhelpgenerator. If non-empty Doxygen will try to # run qhelpgenerator on the generated .qhp file. # This tag requires that the tag GENERATE_QHP is set to YES. @@ -1740,7 +1757,7 @@ DISABLE_INDEX = YES # (i.e. any modern browser). Windows users are probably better off using the # HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can # further fine tune the look of the index (see "Fine-tuning the output"). As an -# example, the default style sheet generated by doxygen has an example that +# example, the default style sheet generated by Doxygen has an example that # shows how to put an image at the root of the tree instead of the PROJECT_NAME. # Since the tree basically has the same information as the tab index, you could # consider setting DISABLE_INDEX to YES when enabling this option. @@ -1762,7 +1779,7 @@ GENERATE_TREEVIEW = YES FULL_SIDEBAR = NO # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that -# doxygen will group on one line in the generated HTML documentation. +# Doxygen will group on one line in the generated HTML documentation. # # Note that a value of 0 will completely suppress the enum values from appearing # in the overview section. @@ -1771,6 +1788,12 @@ FULL_SIDEBAR = NO ENUM_VALUES_PER_LINE = 4 +# When the SHOW_ENUM_VALUES tag is set doxygen will show the specified +# enumeration values besides the enumeration mnemonics. +# The default value is: NO. + +SHOW_ENUM_VALUES = NO + # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used # to set the initial width (in pixels) of the frame in which the tree is shown. # Minimum value: 0, maximum value: 1500, default value: 250. @@ -1778,21 +1801,21 @@ ENUM_VALUES_PER_LINE = 4 TREEVIEW_WIDTH = 335 -# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# If the EXT_LINKS_IN_WINDOW option is set to YES, Doxygen will open links to # external symbols imported via tag files in a separate window. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. EXT_LINKS_IN_WINDOW = NO -# If the OBFUSCATE_EMAILS tag is set to YES, doxygen will obfuscate email +# If the OBFUSCATE_EMAILS tag is set to YES, Doxygen will obfuscate email # addresses. # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. OBFUSCATE_EMAILS = YES -# If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg +# If the HTML_FORMULA_FORMAT option is set to svg, Doxygen will use the pdf2svg # tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see # https://inkscape.org) to generate formulas as SVG images instead of PNGs for # the HTML output. These images will generally look nicer at scaled resolutions. @@ -1805,7 +1828,7 @@ HTML_FORMULA_FORMAT = SVG # Use this tag to change the font size of LaTeX formulas included as images in # the HTML documentation. When you change the font size after a successful -# doxygen run you need to manually remove any form_*.png images from the HTML +# Doxygen run you need to manually remove any form_*.png images from the HTML # output directory to force them to be regenerated. # Minimum value: 8, maximum value: 50, default value: 10. # This tag requires that the tag GENERATE_HTML is set to YES. @@ -1883,7 +1906,7 @@ MATHJAX_RELPATH = https://cdn.jsdelivr.net/npm/mathjax@2 MATHJAX_EXTENSIONS = -# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# The MATHJAX_CODEFILE tag can be used to specify a file with JavaScript pieces # of code that will be used on startup of the MathJax code. See the MathJax site # (see: # http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an @@ -1892,12 +1915,12 @@ MATHJAX_EXTENSIONS = MATHJAX_CODEFILE = -# When the SEARCHENGINE tag is enabled doxygen will generate a search box for -# the HTML output. The underlying search engine uses javascript and DHTML and +# When the SEARCHENGINE tag is enabled Doxygen will generate a search box for +# the HTML output. The underlying search engine uses JavaScript and DHTML and # should work on any modern browser. Note that when using HTML help # (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) # there is already a search function so this one should typically be disabled. -# For large projects the javascript based search engine can be slow, then +# For large projects the JavaScript based search engine can be slow, then # enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to # search using the keyboard; to jump to the search box use + S # (what the is depends on the OS and browser, but it is typically @@ -1916,7 +1939,7 @@ SEARCHENGINE = YES # When the SERVER_BASED_SEARCH tag is enabled the search engine will be # implemented using a web server instead of a web client using JavaScript. There # are two flavors of web server based searching depending on the EXTERNAL_SEARCH -# setting. When disabled, doxygen will generate a PHP script for searching and +# setting. When disabled, Doxygen will generate a PHP script for searching and # an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing # and searching needs to be provided by external tools. See the section # "External Indexing and Searching" for details. @@ -1925,7 +1948,7 @@ SEARCHENGINE = YES SERVER_BASED_SEARCH = NO -# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP +# When EXTERNAL_SEARCH tag is enabled Doxygen will no longer generate the PHP # script for searching. Instead the search results are written to an XML file # which needs to be processed by an external indexer. Doxygen will invoke an # external search engine pointed to by the SEARCHENGINE_URL option to obtain the @@ -1970,7 +1993,7 @@ SEARCHDATA_FILE = searchdata.xml EXTERNAL_SEARCH_ID = -# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen +# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through Doxygen # projects other than the one defined by this configuration file, but that are # all added to the same external search index. Each project needs to have a # unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of @@ -1984,7 +2007,7 @@ EXTRA_SEARCH_MAPPINGS = # Configuration options related to the LaTeX output #--------------------------------------------------------------------------- -# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output. +# If the GENERATE_LATEX tag is set to YES, Doxygen will generate LaTeX output. # The default value is: YES. GENERATE_LATEX = NO @@ -2029,7 +2052,7 @@ MAKEINDEX_CMD_NAME = makeindex LATEX_MAKEINDEX_CMD = makeindex -# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX +# If the COMPACT_LATEX tag is set to YES, Doxygen generates more compact LaTeX # documents. This may be useful for small projects and may help to save some # trees in general. # The default value is: NO. @@ -2060,15 +2083,15 @@ EXTRA_PACKAGES = amsmath # The LATEX_HEADER tag can be used to specify a user-defined LaTeX header for # the generated LaTeX document. The header should contain everything until the -# first chapter. If it is left blank doxygen will generate a standard header. It +# first chapter. If it is left blank Doxygen will generate a standard header. It # is highly recommended to start with a default header using # doxygen -w latex new_header.tex new_footer.tex new_stylesheet.sty # and then modify the file new_header.tex. See also section "Doxygen usage" for -# information on how to generate the default header that doxygen normally uses. +# information on how to generate the default header that Doxygen normally uses. # # Note: Only use a user-defined header if you know what you are doing! # Note: The header is subject to change so you typically have to regenerate the -# default header when upgrading to a newer version of doxygen. The following +# default header when upgrading to a newer version of Doxygen. The following # commands have a special meaning inside the header (and footer): For a # description of the possible markers and block names see the documentation. # This tag requires that the tag GENERATE_LATEX is set to YES. @@ -2077,10 +2100,10 @@ LATEX_HEADER = # The LATEX_FOOTER tag can be used to specify a user-defined LaTeX footer for # the generated LaTeX document. The footer should contain everything after the -# last chapter. If it is left blank doxygen will generate a standard footer. See +# last chapter. If it is left blank Doxygen will generate a standard footer. See # LATEX_HEADER for more information on how to generate a default footer and what # special commands can be used inside the footer. See also section "Doxygen -# usage" for information on how to generate the default footer that doxygen +# usage" for information on how to generate the default footer that Doxygen # normally uses. Note: Only use a user-defined footer if you know what you are # doing! # This tag requires that the tag GENERATE_LATEX is set to YES. @@ -2089,7 +2112,7 @@ LATEX_FOOTER = # The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined # LaTeX style sheets that are included after the standard style sheets created -# by doxygen. Using this option one can overrule certain style aspects. Doxygen +# by Doxygen. Using this option one can overrule certain style aspects. Doxygen # will copy the style sheet files to the output directory. # Note: The order of the extra style sheet files is of importance (e.g. the last # style sheet in the list overrules the setting of the previous ones in the @@ -2115,7 +2138,7 @@ LATEX_EXTRA_FILES = PDF_HYPERLINKS = YES -# If the USE_PDFLATEX tag is set to YES, doxygen will use the engine as +# If the USE_PDFLATEX tag is set to YES, Doxygen will use the engine as # specified with LATEX_CMD_NAME to generate the PDF file directly from the LaTeX # files. Set this option to YES, to get a higher quality PDF documentation. # @@ -2140,7 +2163,7 @@ USE_PDFLATEX = YES LATEX_BATCHMODE = NO -# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the +# If the LATEX_HIDE_INDICES tag is set to YES then Doxygen will not include the # index chapters (such as File Index, Compound Index, etc.) in the output. # The default value is: NO. # This tag requires that the tag GENERATE_LATEX is set to YES. @@ -2167,7 +2190,7 @@ LATEX_EMOJI_DIRECTORY = # Configuration options related to the RTF output #--------------------------------------------------------------------------- -# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The +# If the GENERATE_RTF tag is set to YES, Doxygen will generate RTF output. The # RTF output is optimized for Word 97 and may not look too pretty with other RTF # readers/editors. # The default value is: NO. @@ -2182,7 +2205,7 @@ GENERATE_RTF = NO RTF_OUTPUT = rtf -# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF +# If the COMPACT_RTF tag is set to YES, Doxygen generates more compact RTF # documents. This may be useful for small projects and may help to save some # trees in general. # The default value is: NO. @@ -2202,18 +2225,18 @@ COMPACT_RTF = NO RTF_HYPERLINKS = NO -# Load stylesheet definitions from file. Syntax is similar to doxygen's +# Load stylesheet definitions from file. Syntax is similar to Doxygen's # configuration file, i.e. a series of assignments. You only have to provide # replacements, missing definitions are set to their default value. # # See also section "Doxygen usage" for information on how to generate the -# default style sheet that doxygen normally uses. +# default style sheet that Doxygen normally uses. # This tag requires that the tag GENERATE_RTF is set to YES. RTF_STYLESHEET_FILE = # Set optional variables used in the generation of an RTF document. Syntax is -# similar to doxygen's configuration file. A template extensions file can be +# similar to Doxygen's configuration file. A template extensions file can be # generated using doxygen -e rtf extensionFile. # This tag requires that the tag GENERATE_RTF is set to YES. @@ -2231,7 +2254,7 @@ RTF_EXTRA_FILES = # Configuration options related to the man page output #--------------------------------------------------------------------------- -# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for +# If the GENERATE_MAN tag is set to YES, Doxygen will generate man pages for # classes and files. # The default value is: NO. @@ -2262,7 +2285,7 @@ MAN_EXTENSION = .3 MAN_SUBDIR = -# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, then it # will generate one additional man file for each entity documented in the real # man page(s). These additional files only source the real man page, but without # them the man command would be unable to find the correct page. @@ -2275,7 +2298,7 @@ MAN_LINKS = NO # Configuration options related to the XML output #--------------------------------------------------------------------------- -# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that +# If the GENERATE_XML tag is set to YES, Doxygen will generate an XML file that # captures the structure of the code including all documentation. # The default value is: NO. @@ -2289,7 +2312,7 @@ GENERATE_XML = NO XML_OUTPUT = xml -# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program +# If the XML_PROGRAMLISTING tag is set to YES, Doxygen will dump the program # listings (including syntax highlighting and cross-referencing information) to # the XML output. Note that enabling this will significantly increase the size # of the XML output. @@ -2298,7 +2321,7 @@ XML_OUTPUT = xml XML_PROGRAMLISTING = YES -# If the XML_NS_MEMB_FILE_SCOPE tag is set to YES, doxygen will include +# If the XML_NS_MEMB_FILE_SCOPE tag is set to YES, Doxygen will include # namespace members in file scope as well, matching the HTML output. # The default value is: NO. # This tag requires that the tag GENERATE_XML is set to YES. @@ -2309,7 +2332,7 @@ XML_NS_MEMB_FILE_SCOPE = NO # Configuration options related to the DOCBOOK output #--------------------------------------------------------------------------- -# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files +# If the GENERATE_DOCBOOK tag is set to YES, Doxygen will generate Docbook files # that can be used to generate PDF. # The default value is: NO. @@ -2327,7 +2350,7 @@ DOCBOOK_OUTPUT = docbook # Configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- -# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an +# If the GENERATE_AUTOGEN_DEF tag is set to YES, Doxygen will generate an # AutoGen Definitions (see https://autogen.sourceforge.net/) file that captures # the structure of the code including all documentation. Note that this feature # is still experimental and incomplete at the moment. @@ -2339,8 +2362,8 @@ GENERATE_AUTOGEN_DEF = NO # Configuration options related to Sqlite3 output #--------------------------------------------------------------------------- -# If the GENERATE_SQLITE3 tag is set to YES doxygen will generate a Sqlite3 -# database with symbols found by doxygen stored in tables. +# If the GENERATE_SQLITE3 tag is set to YES Doxygen will generate a Sqlite3 +# database with symbols found by Doxygen stored in tables. # The default value is: NO. GENERATE_SQLITE3 = NO @@ -2354,7 +2377,7 @@ GENERATE_SQLITE3 = NO SQLITE3_OUTPUT = sqlite3 # The SQLITE3_RECREATE_DB tag is set to YES, the existing doxygen_sqlite3.db -# database file will be recreated with each doxygen run. If set to NO, doxygen +# database file will be recreated with each Doxygen run. If set to NO, Doxygen # will warn if a database file is already found and not modify it. # The default value is: YES. # This tag requires that the tag GENERATE_SQLITE3 is set to YES. @@ -2365,7 +2388,7 @@ SQLITE3_RECREATE_DB = YES # Configuration options related to the Perl module output #--------------------------------------------------------------------------- -# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module +# If the GENERATE_PERLMOD tag is set to YES, Doxygen will generate a Perl module # file that captures the structure of the code including all documentation. # # Note that this feature is still experimental and incomplete at the moment. @@ -2373,7 +2396,7 @@ SQLITE3_RECREATE_DB = YES GENERATE_PERLMOD = NO -# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary +# If the PERLMOD_LATEX tag is set to YES, Doxygen will generate the necessary # Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI # output from the Perl module output. # The default value is: NO. @@ -2403,13 +2426,13 @@ PERLMOD_MAKEVAR_PREFIX = # Configuration options related to the preprocessor #--------------------------------------------------------------------------- -# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all +# If the ENABLE_PREPROCESSING tag is set to YES, Doxygen will evaluate all # C-preprocessor directives found in the sources and include files. # The default value is: YES. ENABLE_PREPROCESSING = NO -# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names +# If the MACRO_EXPANSION tag is set to YES, Doxygen will expand all macro names # in the source code. If set to NO, only conditional compilation will be # performed. Macro expansion can be done in a controlled way by setting # EXPAND_ONLY_PREDEF to YES. @@ -2470,7 +2493,7 @@ PREDEFINED = CCPP \ EXPAND_AS_DEFINED = -# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will +# If the SKIP_FUNCTION_MACROS tag is set to YES then Doxygen's preprocessor will # remove all references to function-like macros that are alone on a line, have # an all uppercase name, and do not end with a semicolon. Such function macros # are typically used for boiler-plate code, and will confuse the parser if not @@ -2494,12 +2517,12 @@ SKIP_FUNCTION_MACROS = YES # section "Linking to external documentation" for more information about the use # of tag files. # Note: Each tag file must have a unique name (where the name does NOT include -# the path). If a tag file is not located in the directory in which doxygen is +# the path). If a tag file is not located in the directory in which Doxygen is # run, you must also specify the path to the tagfile here. TAGFILES = -# When a file name is specified after GENERATE_TAGFILE, doxygen will create a +# When a file name is specified after GENERATE_TAGFILE, Doxygen will create a # tag file that is based on the input files it reads. See section "Linking to # external documentation" for more information about the usage of tag files. @@ -2536,7 +2559,7 @@ EXTERNAL_PAGES = YES HIDE_UNDOC_RELATIONS = YES -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# If you set the HAVE_DOT tag to YES then Doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz (see: # https://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent # Bell Labs. The other options in this section have no effect if this option is @@ -2545,8 +2568,8 @@ HIDE_UNDOC_RELATIONS = YES HAVE_DOT = YES -# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed -# to run in parallel. When set to 0 doxygen will base this on the number of +# The DOT_NUM_THREADS specifies the number of dot invocations Doxygen is allowed +# to run in parallel. When set to 0 Doxygen will base this on the number of # processors available in the system. You can set it explicitly to a value # larger than 0 to get control over the balance between CPU load and processing # speed. @@ -2557,7 +2580,7 @@ DOT_NUM_THREADS = 0 # DOT_COMMON_ATTR is common attributes for nodes, edges and labels of # subgraphs. When you want a differently looking font in the dot files that -# doxygen generates you can specify fontname, fontcolor and fontsize attributes. +# Doxygen generates you can specify fontname, fontcolor and fontsize attributes. # For details please see Node, # Edge and Graph Attributes specification You need to make sure dot is able # to find the font, which can be done by putting it in a standard location or by @@ -2591,7 +2614,7 @@ DOT_NODE_ATTR = "shape=box,height=0.2,width=0.4" DOT_FONTPATH = -# If the CLASS_GRAPH tag is set to YES or GRAPH or BUILTIN then doxygen will +# If the CLASS_GRAPH tag is set to YES or GRAPH or BUILTIN then Doxygen will # generate a graph for each documented class showing the direct and indirect # inheritance relations. In case the CLASS_GRAPH tag is set to YES or GRAPH and # HAVE_DOT is enabled as well, then dot will be used to draw the graph. In case @@ -2608,7 +2631,7 @@ DOT_FONTPATH = CLASS_GRAPH = YES -# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a +# If the COLLABORATION_GRAPH tag is set to YES then Doxygen will generate a # graph for each documented class showing the direct and indirect implementation # dependencies (inheritance, containment, and class references variables) of the # class with other documented classes. Explicit enabling a collaboration graph, @@ -2620,7 +2643,7 @@ CLASS_GRAPH = YES COLLABORATION_GRAPH = YES -# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for +# If the GROUP_GRAPHS tag is set to YES then Doxygen will generate a graph for # groups, showing the direct groups dependencies. Explicit enabling a group # dependency graph, when GROUP_GRAPHS is set to NO, can be accomplished by means # of the command \groupgraph. Disabling a directory graph can be accomplished by @@ -2631,7 +2654,7 @@ COLLABORATION_GRAPH = YES GROUP_GRAPHS = YES -# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and +# If the UML_LOOK tag is set to YES, Doxygen will generate inheritance and # collaboration diagrams in a style similar to the OMG's Unified Modeling # Language. # The default value is: NO. @@ -2652,10 +2675,10 @@ UML_LOOK = YES UML_LIMIT_NUM_FIELDS = 10 -# If the DOT_UML_DETAILS tag is set to NO, doxygen will show attributes and +# If the DOT_UML_DETAILS tag is set to NO, Doxygen will show attributes and # methods without types and arguments in the UML graphs. If the DOT_UML_DETAILS -# tag is set to YES, doxygen will add type and arguments for attributes and -# methods in the UML graphs. If the DOT_UML_DETAILS tag is set to NONE, doxygen +# tag is set to YES, Doxygen will add type and arguments for attributes and +# methods in the UML graphs. If the DOT_UML_DETAILS tag is set to NONE, Doxygen # will not generate fields with class member information in the UML graphs. The # class diagrams will look similar to the default class diagrams but using UML # notation for the relationships. @@ -2683,7 +2706,7 @@ DOT_WRAP_THRESHOLD = 17 TEMPLATE_RELATIONS = NO # If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to -# YES then doxygen will generate a graph for each documented file showing the +# YES then Doxygen will generate a graph for each documented file showing the # direct and indirect include dependencies of the file with other documented # files. Explicit enabling an include graph, when INCLUDE_GRAPH is is set to NO, # can be accomplished by means of the command \includegraph. Disabling an @@ -2694,7 +2717,7 @@ TEMPLATE_RELATIONS = NO INCLUDE_GRAPH = YES # If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are -# set to YES then doxygen will generate a graph for each documented file showing +# set to YES then Doxygen will generate a graph for each documented file showing # the direct and indirect include dependencies of the file with other documented # files. Explicit enabling an included by graph, when INCLUDED_BY_GRAPH is set # to NO, can be accomplished by means of the command \includedbygraph. Disabling @@ -2705,7 +2728,7 @@ INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = NO -# If the CALL_GRAPH tag is set to YES then doxygen will generate a call +# If the CALL_GRAPH tag is set to YES then Doxygen will generate a call # dependency graph for every global function or class method. # # Note that enabling this option will significantly increase the time of a run. @@ -2717,7 +2740,7 @@ INCLUDED_BY_GRAPH = NO CALL_GRAPH = YES -# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller +# If the CALLER_GRAPH tag is set to YES then Doxygen will generate a caller # dependency graph for every global function or class method. # # Note that enabling this option will significantly increase the time of a run. @@ -2729,14 +2752,14 @@ CALL_GRAPH = YES CALLER_GRAPH = YES -# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical +# If the GRAPHICAL_HIERARCHY tag is set to YES then Doxygen will graphical # hierarchy of all classes instead of a textual one. # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. GRAPHICAL_HIERARCHY = YES -# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the +# If the DIRECTORY_GRAPH tag is set to YES then Doxygen will show the # dependencies a directory has on other directories in a graphical way. The # dependency relations are determined by the #include relations between the # files in the directories. Explicit enabling a directory graph, when @@ -2795,7 +2818,7 @@ DOT_PATH = /opt/homebrew/bin DOTFILE_DIRS = -# You can include diagrams made with dia in doxygen documentation. Doxygen will +# You can include diagrams made with dia in Doxygen documentation. Doxygen will # then run dia to produce the diagram and insert it in the documentation. The # DIA_PATH tag allows you to specify the directory where the dia binary resides. # If left empty dia is assumed to be found in the default search path. @@ -2808,7 +2831,7 @@ DIA_PATH = DIAFILE_DIRS = -# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the +# When using PlantUML, the PLANTUML_JAR_PATH tag should be used to specify the # path where java can find the plantuml.jar file or to the filename of jar file # to be used. If left blank, it is assumed PlantUML is not used or called during # a preprocessing step. Doxygen will generate a warning when it encounters a @@ -2816,19 +2839,19 @@ DIAFILE_DIRS = PLANTUML_JAR_PATH = -# When using plantuml, the PLANTUML_CFG_FILE tag can be used to specify a -# configuration file for plantuml. +# When using PlantUML, the PLANTUML_CFG_FILE tag can be used to specify a +# configuration file for PlantUML. PLANTUML_CFG_FILE = -# When using plantuml, the specified paths are searched for files specified by -# the !include statement in a plantuml block. +# When using PlantUML, the specified paths are searched for files specified by +# the !include statement in a PlantUML block. PLANTUML_INCLUDE_PATH = # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes # that will be shown in the graph. If the number of nodes in a graph becomes -# larger than this value, doxygen will truncate the graph, which is visualized +# larger than this value, Doxygen will truncate the graph, which is visualized # by representing a node as a red box. Note that if the number of direct # children of the root node in a graph is already larger than # DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that @@ -2859,17 +2882,17 @@ MAX_DOT_GRAPH_DEPTH = 0 DOT_MULTI_TARGETS = YES -# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page +# If the GENERATE_LEGEND tag is set to YES Doxygen will generate a legend page # explaining the meaning of the various boxes and arrows in the dot generated # graphs. -# Note: This tag requires that UML_LOOK isn't set, i.e. the doxygen internal +# Note: This tag requires that UML_LOOK isn't set, i.e. the Doxygen internal # graphical representation for inheritance and collaboration diagrams is used. # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. GENERATE_LEGEND = YES -# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate +# If the DOT_CLEANUP tag is set to YES, Doxygen will remove the intermediate # files that are used to generate the various graphs. # # Note: This setting is not only used for dot files but also for msc temporary @@ -2878,11 +2901,11 @@ GENERATE_LEGEND = YES DOT_CLEANUP = YES -# You can define message sequence charts within doxygen comments using the \msc -# command. If the MSCGEN_TOOL tag is left empty (the default), then doxygen will +# You can define message sequence charts within Doxygen comments using the \msc +# command. If the MSCGEN_TOOL tag is left empty (the default), then Doxygen will # use a built-in version of mscgen tool to produce the charts. Alternatively, # the MSCGEN_TOOL tag can also specify the name an external tool. For instance, -# specifying prog as the value, doxygen will call the tool as prog -T +# specifying prog as the value, Doxygen will call the tool as prog -T # -o . The external tool should support # output file formats "png", "eps", "svg", and "ismap". diff --git a/physics/docs/pdftxt/all_schemes_list.txt b/physics/docs/pdftxt/all_schemes_list.txt index 73668cc15..b064abdc8 100644 --- a/physics/docs/pdftxt/all_schemes_list.txt +++ b/physics/docs/pdftxt/all_schemes_list.txt @@ -69,7 +69,6 @@ produce the tendencies. - The second part of the physics suite, comprised of the parameterizations of gravity wave physics, ozone, stratospheric water vapor, deep and shallow convection (if using), and microphysics, is computed using sequential splitting in the order listed above, in which the model state is updated between calls to the parameterization. -- If the in-core saturation adjustment is used (\p do_sat_adj=.true.), it is invoked at shorter timesteps along with the dynamical solver. \section allsuite_overview Physics Suites From 72e606a25242159477641eae1a2da5ac8e6204a9 Mon Sep 17 00:00:00 2001 From: Man Zhang Date: Mon, 19 Aug 2024 13:13:23 -0600 Subject: [PATCH 52/80] add acronyms pages and NMLs for PSL options --- physics/docs/ccpp_doxyfile | 1 + physics/docs/pdftxt/acronyms.txt | 70 +++++++++++++++++++++++++ physics/docs/pdftxt/suite_input.nml.txt | 6 +++ 3 files changed, 77 insertions(+) create mode 100644 physics/docs/pdftxt/acronyms.txt diff --git a/physics/docs/ccpp_doxyfile b/physics/docs/ccpp_doxyfile index 403499455..7e40361ae 100644 --- a/physics/docs/ccpp_doxyfile +++ b/physics/docs/ccpp_doxyfile @@ -993,6 +993,7 @@ INPUT = pdftxt/mainpage.txt \ pdftxt/CLM_LAKE.txt \ pdftxt/THOMPSON.txt \ pdftxt/suite_input.nml.txt \ + pdftxt/acronyms.txt \ ../MP \ ../CONV \ ../GWD \ diff --git a/physics/docs/pdftxt/acronyms.txt b/physics/docs/pdftxt/acronyms.txt new file mode 100644 index 000000000..ded61d34d --- /dev/null +++ b/physics/docs/pdftxt/acronyms.txt @@ -0,0 +1,70 @@ +/** +\page Acronyms_desp Acronyms + +\tableofcontents +| Abbreviation | Explanation | +|------------------|---------------------| +| aa | Aerosol-aware | +| CA | Cellular Automata | +| CCN | Cloud Condensation Nulei | +| CCPP | Common Community Physics Package | +| CIRES | Cooperative Institute for Research in Environmental Sciences | +| CLM | Community Land Model | +| CSAW | Chikira-Sugiyama convection with Arakawa-Wu extension | +| dycore | Dynamical core | +| EDMF | Eddy-Diffusivity Mass Flux | +| EMC | Environmental Modeling Center | +| FV3 | Finite-Volume Cubed Sphere | +| GF | Grell-Freitas convective scheme | +| GFDL | Geophysical Fluid Dynamics Laboratory | +| GFS | Global Forecast System | +| GOCART | Goddard Chemistry Aerosol Radiation and Transport model | +| GSL | NOAA Global Systems Laboratory | +| HEDMF | Hybrid eddy-diffusivity mass-flux | +| HRRR | High-Resolution Rapid Refresh | +| LSM | Land Surface Model | +| LW | Longwave | +| McICA | Monte-Carlo Independent Column Approximation | +| MERRA-2 | Modern-Era Retrospective Analysis for Research and Applications, Version2 | +| MF | Mass-Flux | +| MG | Morrison-Gettelman | +| MP | Microphysics | +| MYNN | Mellor-Yamada-Nakanishi-Niino | +| NASA | National Aeronautics and Space Administration | +| NCAR | National Center for Atmospheric Research | +| NOAA | National Oceanic and Atmospheric Administration | +| NoahMP | Noah-Multiparameterization Land Surface Model | +| NRL | Naval Research Laboratory | +| NSST | Near Sea Surface Temperature ocean scheme | +| NSSL | NOAA National Severe Storms Laboratory | +| NWP | Numerical Weather Prediction | +| PBL | Planetary Boundary Layer | +| PSD | Partical size distribution | +| PSL | NOAA Physics Sciences Laboratory | +| RRFS | Rapid Refresh Forecast System | +| RRTMG | Rapid Radiative Transfer Model for General circulation model applications | +| RRTMGP | Rapid Radiation Transfer Model for General circulation model applications-Parallel +| RTE | Radiative Transfer for Energetics | +| RUC | Rapid Update Cycle | +| sa | Scale-aware | +| SAS | Simplified Arakawa-Schubert | +| SCM | Single-Column Model | +| SDF | Suite Definition File | +| sfc | Surface | +| SHUM | Perturbed boundary layer specific humidity | +| SKEB | Stochastic Kinetic Energy Backscatter | +| SPPT | Stochastically Perturbed Physics Tendencies | +| SW | Shortwave | +| TOA | Top of the Atmosphere | +| TKE | Turbulent Kinetic Energy | +| YSU | Yonsei University | +| UFS | Unified Forecast System | +| UGWP | Unified Gravity Wave Physics | +| WoFS | Warn on Forecast | +| WRF | Weather Research and Forecasting | +\tableofcontents + + + + +*/ diff --git a/physics/docs/pdftxt/suite_input.nml.txt b/physics/docs/pdftxt/suite_input.nml.txt index 71aa5783d..1f192e750 100644 --- a/physics/docs/pdftxt/suite_input.nml.txt +++ b/physics/docs/pdftxt/suite_input.nml.txt @@ -527,6 +527,12 @@ show some variables in the namelist that must match the SDF. do_gsl_drag_ls_bl unified_ugwp, drag_suite flag for GSL drag (large-scale GWD and blocking only) .false. do_gsl_drag_ss unified_ugwp, drag_suite flag for GSL drag (small-scale GWD only) .false. do_gsl_drag_tofd unified_ugwp, drag_suite flag for GSL drag (turbulent orog form drag only) .false. +do_gwd_opt_psl unified_ugwp, ugwpv1_gsldrag flag for PSL drag (mesoscale GWD and blocking only) .false. +do_ugwp_v1 GFS_physics_time_vary flag for version 1 UGWP .false. +do_ugwp_v1_orog_only ugwpv1_gsldrag flag for version 1 UGWP (orographic drag only) .false. +do_ugwp_v1_w_gsldrag ugwpv1_gsldrag flag for version 1 UGWP (orographic drag only) .false. +alpha_fd ugwpv1_gsldrag, drag_suite, unified_ugwp alpha coefficient for turbulent orographic form drag 12.0 +psl_gwd_dx_factor ugwpv1_gsldrag, drag_suite, unified_ugwp multiplication factors for grid spacing 6.0 \b Parameters \b related \b to \b LSM \b options lsm see \a GFS_typedefs.F90 flag for land surface model to use \n
      From d42bc73759183e797a6ddf20ac92b741f6597dac Mon Sep 17 00:00:00 2001 From: Man Zhang Date: Thu, 22 Aug 2024 09:32:25 -0600 Subject: [PATCH 53/80] minor fix --- physics/docs/pdftxt/suite_input.nml.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/physics/docs/pdftxt/suite_input.nml.txt b/physics/docs/pdftxt/suite_input.nml.txt index 1f192e750..f25272615 100644 --- a/physics/docs/pdftxt/suite_input.nml.txt +++ b/physics/docs/pdftxt/suite_input.nml.txt @@ -388,6 +388,12 @@ show some variables in the namelist that must match the SDF. qc_crt gfdl_cloud_microphys minimum value of cloud condensate to allow partial cloudiness. Partial cloud can only exist when total cloud condensate exceeds \p qc_crt 5.0e-8 c_psaci gfdl_cloud_microphys accretion efficiency of cloud ice to snow (cloud ice -> snow). Increasing(decreasing) of \p c_psaci can boost(decrease) the accretion of cloud ice to snow 0.02 c_pgacs gfdl_cloud_microphys accretion efficiency of snow to graupel (snow -> graupel). Increasing(decreasing) of \p c_pgacs can boost(decrease) the accretion of snow to graupel 2.0e-3 +reiflag gfdl_cloud_microphys cloud ice effective radius schme \n +
        +
      • 1: Heymsfield and Mcfarquhar (1996) +
      • 2: Wyser (1998) +
      + 1 rh_inc gfdl_cloud_microphys relative humidity increment for complete evaporation of cloud water and cloud ice 0.25 rh_inr gfdl_cloud_microphys relative humidity increment for sublimation of snow 0.25 rh_ins gfdl_cloud_microphys relative humidity increment for minimum evaporation of rain 0.25 From cde7c1031eb35f44ec19dc1245cca6b971f1a4ca Mon Sep 17 00:00:00 2001 From: Grant Firl Date: Fri, 23 Aug 2024 09:59:02 -0400 Subject: [PATCH 54/80] add missing dimensions attribute for initialized flag --- physics/MP/Thompson/mp_thompson.meta | 3 +++ 1 file changed, 3 insertions(+) diff --git a/physics/MP/Thompson/mp_thompson.meta b/physics/MP/Thompson/mp_thompson.meta index 26e0c72be..320164a4b 100644 --- a/physics/MP/Thompson/mp_thompson.meta +++ b/physics/MP/Thompson/mp_thompson.meta @@ -286,6 +286,7 @@ standard_name = flag_for_thompson_mp_scheme_initialization long_name = flag carrying scheme initialization status units = flag + dimensions = () type = logical intent = inout [errmsg] @@ -792,6 +793,7 @@ standard_name = flag_for_thompson_mp_scheme_initialization long_name = flag carrying scheme initialization status units = flag + dimensions = () type = logical intent = inout [errmsg] @@ -818,6 +820,7 @@ standard_name = flag_for_thompson_mp_scheme_initialization long_name = flag carrying scheme initialization status units = flag + dimensions = () type = logical intent = inout [errmsg] From 714cfe7042f4f535f52264bc47a505727f101199 Mon Sep 17 00:00:00 2001 From: Grant Firl Date: Mon, 26 Aug 2024 21:35:48 -0400 Subject: [PATCH 55/80] add back Doxygen comments for passing ccpp_prebuild.py --- physics/GWD/ugwpv1_gsldrag.F90 | 1 + .../UFS_SCM_NEPTUNE/GFS_rad_time_vary.fv3.F90 | 2 ++ .../UFS_SCM_NEPTUNE/GFS_rad_time_vary.scm.F90 | 2 ++ .../UFS_SCM_NEPTUNE/GFS_radiation_surface.F90 | 2 ++ .../UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_overlap.F90 | 1 + physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_post.F90 | 1 + physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_pre.F90 | 2 ++ .../Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_setup.F90 | 3 +++ .../UFS_SCM_NEPTUNE/GFS_surface_loop_control_part1.F90 | 1 + .../UFS_SCM_NEPTUNE/module_ccpp_suite_simulator.F90 | 6 +++++- physics/SFC_Models/Land/sfc_land.F90 | 1 + physics/SFC_Models/SeaIce/CICE/sfc_cice.f | 2 +- physics/hooks/machine.F | 4 ++++ physics/photochem/h2o_def.f | 4 ++++ physics/photochem/module_ozphys.F90 | 8 +++++++- 15 files changed, 37 insertions(+), 3 deletions(-) diff --git a/physics/GWD/ugwpv1_gsldrag.F90 b/physics/GWD/ugwpv1_gsldrag.F90 index 3688218b3..5dd76b8d1 100644 --- a/physics/GWD/ugwpv1_gsldrag.F90 +++ b/physics/GWD/ugwpv1_gsldrag.F90 @@ -63,6 +63,7 @@ module ugwpv1_gsldrag !>@brief The subroutine initializes the unified UGWP !> \section arg_table_ugwpv1_gsldrag_init Argument Table !! \htmlinclude ugwpv1_gsldrag_init.html +!! subroutine ugwpv1_gsldrag_init ( & me, master, nlunit, input_nml_file, logunit, & fn_nml2, jdat, lonr, latr, levs, ak, bk, dtp, & diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rad_time_vary.fv3.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rad_time_vary.fv3.F90 index 9cda780d3..cbd660414 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rad_time_vary.fv3.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rad_time_vary.fv3.F90 @@ -11,8 +11,10 @@ module GFS_rad_time_vary contains !> This module contains code related to GFS radiation setup. + !> \section arg_table_GFS_rad_time_vary_timestep_init Argument Table !! \htmlinclude GFS_rad_time_vary_timestep_init.html +!! subroutine GFS_rad_time_vary_timestep_init (lrseeds, rseeds, & lslwr, lsswr, isubc_lw, isubc_sw, icsdsw, icsdlw, cnx, cny, isc, jsc, & imap, jmap, sec, kdt, imp_physics, imp_physics_zhao_carr, ipsd0, ipsdlim,& diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rad_time_vary.scm.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rad_time_vary.scm.F90 index cd745bcc1..46585c9da 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rad_time_vary.scm.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rad_time_vary.scm.F90 @@ -11,8 +11,10 @@ module GFS_rad_time_vary contains !> This module contains code related to GFS radiation setup. + !> \section arg_table_GFS_rad_time_vary_timestep_init Argument Table !! \htmlinclude GFS_rad_time_vary_timestep_init.html +!! subroutine GFS_rad_time_vary_timestep_init (lrseeds, rseeds, & lslwr, lsswr, isubc_lw, isubc_sw, icsdsw, icsdlw, cnx, cny, isc, jsc, & imap, jmap, sec, kdt, imp_physics, imp_physics_zhao_carr, ipsd0, ipsdlim,& diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_radiation_surface.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_radiation_surface.F90 index ccce95ebd..5e8c5bc9d 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_radiation_surface.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_radiation_surface.F90 @@ -12,8 +12,10 @@ module GFS_radiation_surface !> This module contains calls to module_radiation_surface::setemis() to set up !! surface emissivity for LW radiation and to module_radiation_surface::setalb() !! to set up surface albedo for SW radiation. + !> \section arg_table_GFS_radiation_surface_init Argument Table !! \htmlinclude GFS_radiation_surface_init.html +!! subroutine GFS_radiation_surface_init (me, ialb, iems, semis_file, con_pi, errmsg, errflg) use module_radiation_surface, only: sfc_init diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_overlap.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_overlap.F90 index ed0445361..069f7545c 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_overlap.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_overlap.F90 @@ -14,6 +14,7 @@ module GFS_rrtmgp_cloud_overlap !> \section arg_table_GFS_rrtmgp_cloud_overlap_run Argument Table !! \htmlinclude GFS_rrtmgp_cloud_overlap_run.html +!! !! This is identical (shares common-code) to RRTMG. The motivation for RRTMGP to have !! its own scheme is both organizational and philosophical*. !! diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_post.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_post.F90 index a89e5c961..ec22f24d3 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_post.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_post.F90 @@ -15,6 +15,7 @@ module GFS_rrtmgp_post !> \section arg_table_GFS_rrtmgp_post_run Argument Table !! \htmlinclude GFS_rrtmgp_post_run.html +!! !!The all-sky radiation tendency is computed, the clear-sky tendency is computed !! if requested. !! diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_pre.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_pre.F90 index 9da0d6cf9..0a747aa44 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_pre.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_pre.F90 @@ -33,6 +33,7 @@ module GFS_rrtmgp_pre !> \section arg_table_GFS_rrtmgp_pre_init Argument Table !! \htmlinclude GFS_rrtmgp_pre_init.html +!! !! Actuve gas-names are read from namelist. Set to interstitial%active_gases. subroutine GFS_rrtmgp_pre_init(nGases, active_gases, active_gases_array, errmsg, errflg) ! Inputs @@ -95,6 +96,7 @@ end subroutine GFS_rrtmgp_pre_init !> \section arg_table_GFS_rrtmgp_pre_run Argument Table !! \htmlinclude GFS_rrtmgp_pre_run.html +!! !! Sanitize inputs for use in RRTMGP. subroutine GFS_rrtmgp_pre_run(me, nCol, nLev, i_o3, doSWrad, doLWrad, fhswr, fhlwr, & xlat, xlon, prsl, tgrs, prslk, prsi, qgrs, tsfc, coslat, sinlat, con_g, con_rd, & diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_setup.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_setup.F90 index 679185746..0ed936410 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_setup.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_setup.F90 @@ -33,6 +33,7 @@ module GFS_rrtmgp_setup !> \section arg_table_GFS_rrtmgp_setup_init Argument Table !! \htmlinclude GFS_rrtmgp_setup_init.html +!! subroutine GFS_rrtmgp_setup_init(do_RRTMGP, imp_physics, imp_physics_fer_hires, & imp_physics_gfdl, imp_physics_thompson, imp_physics_wsm6, imp_physics_zhao_carr, & imp_physics_zhao_carr_pdf, imp_physics_mg, si, levr, ictm, isol, ico2, iaer, & @@ -140,6 +141,7 @@ end subroutine GFS_rrtmgp_setup_init !> \section arg_table_GFS_rrtmgp_setup_timestep_init Argument Table !! \htmlinclude GFS_rrtmgp_setup_timestep_init.html +!! subroutine GFS_rrtmgp_setup_timestep_init (idate, jdate, deltsw, deltim, doSWrad, me, & iaermdl, aeros_file, isol, slag, sdec, cdec, solcon, con_pi, co2dat_file, & co2gbl_file, ictm, ico2, ntoz, ozphys, errmsg, errflg) @@ -247,6 +249,7 @@ end subroutine GFS_rrtmgp_setup_timestep_init !> \section arg_table_GFS_rrtmgp_setup_finalize Argument Table !! \htmlinclude GFS_rrtmgp_setup_finalize.html +!! subroutine GFS_rrtmgp_setup_finalize (errmsg, errflg) character(len=*), intent( out) :: errmsg integer, intent( out) :: errflg diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_loop_control_part1.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_loop_control_part1.F90 index 32d15f867..913c1a7b6 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_loop_control_part1.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_loop_control_part1.F90 @@ -9,6 +9,7 @@ module GFS_surface_loop_control_part1 !! !! \section arg_table_GFS_surface_loop_control_part1_run Arguments !! \htmlinclude GFS_surface_loop_control_part1_run.html +!! subroutine GFS_surface_loop_control_part1_run (im, iter, & wind, flag_guess, errmsg, errflg) diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/module_ccpp_suite_simulator.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/module_ccpp_suite_simulator.F90 index e8a4188d3..45d3dd4e0 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/module_ccpp_suite_simulator.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/module_ccpp_suite_simulator.F90 @@ -52,7 +52,11 @@ module module_ccpp_suite_simulator real(kind_phys), dimension(:,:,:,:), allocatable :: q end type phys_tend_4d -!> This type contains the meta information and data for each physics process. +!> \section arg_table_base_physics_process Argument Table +!! \htmlinclude base_physics_process.html +!! +!! This type contains the meta information and data for each physics process. +!! type base_physics_process character(len=16) :: name !< Physics process name logical :: time_split = .false. !< Is process time-split? diff --git a/physics/SFC_Models/Land/sfc_land.F90 b/physics/SFC_Models/Land/sfc_land.F90 index 3580f2e64..6f52452db 100644 --- a/physics/SFC_Models/Land/sfc_land.F90 +++ b/physics/SFC_Models/Land/sfc_land.F90 @@ -16,6 +16,7 @@ module sfc_land !> \brief Brief description of the subroutine !! \section arg_table_sfc_land_run Arguments !! \htmlinclude sfc_land_run.html +!! subroutine sfc_land_run(im, cpllnd, cpllnd2atm, flag_iter, dry, & sncovr1_lnd, qsurf_lnd, evap_lnd, hflx_lnd, & ep_lnd, t2mmp_lnd, q2mp_lnd, gflux_lnd, & diff --git a/physics/SFC_Models/SeaIce/CICE/sfc_cice.f b/physics/SFC_Models/SeaIce/CICE/sfc_cice.f index 334de4137..369e24cf0 100644 --- a/physics/SFC_Models/SeaIce/CICE/sfc_cice.f +++ b/physics/SFC_Models/SeaIce/CICE/sfc_cice.f @@ -14,7 +14,7 @@ module sfc_cice !> \brief Brief description of the subroutine !! \section arg_table_sfc_cice_run Arguments !! \htmlinclude sfc_cice_run.html - +!! !! use physcons, only : hvap => con_hvap, cp => con_cp, & !! & rvrdm1 => con_fvirt, rd => con_rd diff --git a/physics/hooks/machine.F b/physics/hooks/machine.F index d6f36305b..88cd28eae 100644 --- a/physics/hooks/machine.F +++ b/physics/hooks/machine.F @@ -2,6 +2,10 @@ !! module machine +!! \section arg_table_machine +!! \htmlinclude machine.html +!! + implicit none integer, parameter :: kind_sngl_prec = 4 & diff --git a/physics/photochem/h2o_def.f b/physics/photochem/h2o_def.f index 7602b1ffe..72748a613 100644 --- a/physics/photochem/h2o_def.f +++ b/physics/photochem/h2o_def.f @@ -5,6 +5,10 @@ !! This module defines arrays in H2O scheme. module h2o_def +!> \section arg_table_h2o_def +!! \htmlinclude h2o_def.html +!! + use machine , only : kind_phys implicit none diff --git a/physics/photochem/module_ozphys.F90 b/physics/photochem/module_ozphys.F90 index f9740d439..5ebec5af4 100644 --- a/physics/photochem/module_ozphys.F90 +++ b/physics/photochem/module_ozphys.F90 @@ -45,8 +45,14 @@ module module_ozphys public ty_ozphys -!> Derived type containing data and procedures needed by ozone photochemistry parameterization +! ######################################################################################### +!> \section arg_table_ty_ozphys Argument Table +!! \htmlinclude ty_ozphys.html +!! +!! Derived type containing data and procedures needed by ozone photochemistry parameterization !! *Note* All data field are ordered from surface-to-toa. +!! +! ######################################################################################### type ty_ozphys ! Prognostic ozone. integer :: nlat !< Number of latitudes. From 670b9786ee6d8e94df785beffcc585a11f16bdca Mon Sep 17 00:00:00 2001 From: Man Zhang Date: Tue, 27 Aug 2024 09:28:31 -0600 Subject: [PATCH 56/80] address reviewers' comments --- physics/GWD/drag_suite.F90 | 10 ++++------ physics/docs/pdftxt/GFS_UGWPV1_ORO.txt | 2 +- physics/docs/pdftxt/GFS_drag_suite.txt | 2 +- physics/docs/pdftxt/ccppv7_phy_updates.txt | 2 +- physics/docs/pdftxt/suite_input.nml.txt | 1 + 5 files changed, 8 insertions(+), 9 deletions(-) diff --git a/physics/GWD/drag_suite.F90 b/physics/GWD/drag_suite.F90 index 634c4f1a1..e78f2924a 100644 --- a/physics/GWD/drag_suite.F90 +++ b/physics/GWD/drag_suite.F90 @@ -1,14 +1,12 @@ !> \file drag_suite.F90 -!! This file is the parameterization of orographic gravity wave +!! This file is the parameterization of orographic drag !! drag, mountain blocking, and form drag. -!> This module contains the orographic gravity wave drag scheme +!> This module contains the orographic drag scheme module drag_suite contains -!> \brief This subroutine initializes the orographic gravity wave drag scheme. -!! !> \section arg_table_drag_suite_init Argument Table !! \htmlinclude drag_suite_init.html !! @@ -32,7 +30,7 @@ subroutine drag_suite_init(gwd_opt, errmsg, errflg) end if end subroutine drag_suite_init -!> \brief This subroutine includes orographic gravity wave drag, mountain +!> This subroutine includes orographic drag, mountain !! blocking, and form drag. !! !> The time tendencies of zonal and meridional wind are altered to @@ -43,7 +41,7 @@ end subroutine drag_suite_init !> \section arg_table_drag_suite_run Argument Table !! \htmlinclude drag_suite_run.html !! -!> \section gen_drag_suite GFS Orographic GWD Scheme General Algorithm +!> \section gen_drag_suite Orographic drag Scheme General Algorithm !! -# Calculate subgrid mountain blocking !! -# Calculate orographic wave drag !! diff --git a/physics/docs/pdftxt/GFS_UGWPV1_ORO.txt b/physics/docs/pdftxt/GFS_UGWPV1_ORO.txt index b7d99b4d3..490e5471e 100644 --- a/physics/docs/pdftxt/GFS_UGWPV1_ORO.txt +++ b/physics/docs/pdftxt/GFS_UGWPV1_ORO.txt @@ -2,7 +2,7 @@ \page GFS_drag_suite Orographic Drag Scheme \section des_drag Description -The orographic drag suite, developed by NOAA's Global Systems Laboratory, Physical Sciences Laboratory and Environmental Modeling Center is a set of subgrid-scale orographic drag parameterizations that calculate momentum tendencies due to the effects of unresolved topography. The drag forces they represent are those due to: 1) meso-scale gravity (mountain) waves that propagate vertically and break in the free atmosphere of the troposphere, stratosphere and above; 2) low-level flow blocking; 3) turbulent orographic form drag (TOFD), which is generated by turbulent pressure perturbations that are correlated with the terrain slope. The distinction between the meso-scale and turbulent-scale gravity waves are that the former are generated by topography with horizontal scales on the order of 5 km and greater, which can support vertical propagation through the typical static stabilities found in the free atmosphere, while the latter are generated by topography with smaller horizontal scales down to about 1 km. +The orographic drag scheme, developed by NOAA's Global Systems Laboratory, Physical Sciences Laboratory and Environmental Modeling Center is a set of subgrid-scale orographic drag parameterizations that calculate momentum tendencies due to the effects of unresolved topography. The drag forces they represent are those due to: 1) meso-scale gravity (mountain) waves that propagate vertically and break in the free atmosphere of the troposphere, stratosphere and above; 2) low-level flow blocking; 3) turbulent orographic form drag (TOFD), which is generated by turbulent pressure perturbations that are correlated with the terrain slope. The distinction between the meso-scale and turbulent-scale gravity waves are that the former are generated by topography with horizontal scales on the order of 5 km and greater, which can support vertical propagation through the typical static stabilities found in the free atmosphere, while the latter are generated by topography with smaller horizontal scales down to about 1 km. The GWD and flow-blocking scheme is based on Kim and Doyle (2005) \cite kim_and_doyle_2005 and Choi and Hong (2015)\cite choi_and_hong_2015 and its code originated from the NCAR Weather Research and Forecasting (WRF) model that was implemented by S. Hong. The TOFD scheme is adapted from Beljaars et al. (2004)\cite beljaars_et_al_2004. diff --git a/physics/docs/pdftxt/GFS_drag_suite.txt b/physics/docs/pdftxt/GFS_drag_suite.txt index 80ce32684..856d056a5 100644 --- a/physics/docs/pdftxt/GFS_drag_suite.txt +++ b/physics/docs/pdftxt/GFS_drag_suite.txt @@ -2,7 +2,7 @@ \page GFS_drag_suite Orographic Drag Scheme \section des_drag Description -The orographic drag suite, developed by NOAA's Global Systems Laboratory, Physical Sciences Laboratory and Environmental Modeling Center is a set of subgrid-scale orographic drag parameterizations that calculate momentum tendencies due to the effects of unresolved topography. The drag forces they represent are those due to: 1) large-scale gravity (mountain) waves that propagate vertically and break in the free atmosphere of the troposphere, stratosphere and above; 2) low-level flow blocking; 3) small-scale gravity wave drag (GWD) due to mountain waves generated in stable planetary boundary layer (PBL) conditions, typically at nighttime, which break at or near the PBL top; and 4) turbulent orographic form drag (TOFD), which is generated by turbulent pressure perturbations that are correlated with the terrain slope. The distinction between the large-scale and small-scale gravity waves are that the former are generated by topography with horizontal scales on the order of 5 km and greater, which can support vertical propagation through the typical static stabilities found in the free atmosphere, while the latter are generated by topography with smaller horizontal scales down to about 1 km, which can support vertical propagation only in very stable conditions, typically found in nocturnal PBLs. +The orographic drag scheme, developed by NOAA's Global Systems Laboratory, Physical Sciences Laboratory and Environmental Modeling Center is a set of subgrid-scale orographic drag parameterizations that calculate momentum tendencies due to the effects of unresolved topography. The drag forces they represent are those due to: 1) large-scale gravity (mountain) waves that propagate vertically and break in the free atmosphere of the troposphere, stratosphere and above; 2) low-level flow blocking; 3) small-scale gravity wave drag (GWD) due to mountain waves generated in stable planetary boundary layer (PBL) conditions, typically at nighttime, which break at or near the PBL top; and 4) turbulent orographic form drag (TOFD), which is generated by turbulent pressure perturbations that are correlated with the terrain slope. The distinction between the large-scale and small-scale gravity waves are that the former are generated by topography with horizontal scales on the order of 5 km and greater, which can support vertical propagation through the typical static stabilities found in the free atmosphere, while the latter are generated by topography with smaller horizontal scales down to about 1 km, which can support vertical propagation only in very stable conditions, typically found in nocturnal PBLs. The large-scale GWD scheme is based on Kim and Doyle (2005) \cite kim_and_doyle_2005 and Choi and Hong (2015)\cite choi_and_hong_2015 and the code originated from the NCAR Weather Research and Forecasting (WRF) model and NOAA RAP/HRRR. The low-level blocking scheme is adapted from Kim and Doyle (2005)\cite kim_and_doyle_2005, with the code also originating from the WRF and RAP/HRRR. The small-scale orographic GWD scheme is based on Steeneveld et al.(2008)\cite steeneveld_et_al_2008 and Tsiringakis et al. (2017) \cite tsiringakis_et_al_2017, and the TOFD scheme is adapted from Beljaars et al. (2004)\cite beljaars_et_al_2004. diff --git a/physics/docs/pdftxt/ccppv7_phy_updates.txt b/physics/docs/pdftxt/ccppv7_phy_updates.txt index 5751cca74..894b78b15 100644 --- a/physics/docs/pdftxt/ccppv7_phy_updates.txt +++ b/physics/docs/pdftxt/ccppv7_phy_updates.txt @@ -17,7 +17,7 @@ Suites GFS_v17_p8, HRRR, RRFS_v1beta, and RAP, which were supported with CCPP v6 The updates between GFSv16 and GFSv17 are carefully outlined in Bengtsson and Han (2024)(submitted to \a Weather \a and \a Forecasting). The main updates include: - Implementation of a positive definition mass-flux scheme and a method for removing the negative tracers (Han et al. 2022 \cite Han_et_al_2022) - Introduction of a new closure based on a prognostic evolution of the convective updraft area fraction in both shallow and deep convection (Bengtsson et al. 2022 \cite Bengtsson_2022) -- Introduction of 3D effects of cold-pool dynamics and stochastic initiation using self-organizing cellular automata stochastic convective organization scheme (not supported; Bengtsson et al. 2021 \cite bengtsson_et_al_2021) +- Introduction of 3D effects of cold-pool dynamics and stochastic initiation using self-organizing cellular automata stochastic convective organization scheme (not supported in SCM; Bengtsson et al. 2021 \cite bengtsson_et_al_2021) - Introduction of environmental wind shear effect and subgrid TKE dependence in convection, to seek improvements in hurricane forecast prediction (Han et al. 2024 \cite Han_2024) - Introduction of stricter convective initiation criteria to allow for more CAPE to build up to address a low CAPE bias in GFSv16 (Han et al. 2021 \cite han_2021) - Reduction of convective rain evaporation rate to address a systematic cold bias near the surface in GFSv16 (Han et al. 2021 \cite han_2021) diff --git a/physics/docs/pdftxt/suite_input.nml.txt b/physics/docs/pdftxt/suite_input.nml.txt index f25272615..acf5902b1 100644 --- a/physics/docs/pdftxt/suite_input.nml.txt +++ b/physics/docs/pdftxt/suite_input.nml.txt @@ -495,6 +495,7 @@ show some variables in the namelist that must match the SDF. knob_ugwp_effac cires_ugwp four-dimensional array that control efficiency of GWs triggerd by four types of physics-based sources. \n Default values: 1.,1.,1.,1. - reflect that calculated GW-tendencies will be applied for the model state. 1.,1.,1.,1. +knob_ugwp_tauamp ugwpv1_gsldrag amplitude for GEOS-5/MERRA-2 7.75e-3 launch_level cires_ugwp parameter has been introduced by EMC during implementation. It defines the interface model level from the surface at which NGWs are launched. \n Default value for FV3GFS-64L, launch_level=25 and for FV3GFS-128L, launch_level=52. 55 From e5fc1940e74ad12214e87c9363e356dccaaf4ab9 Mon Sep 17 00:00:00 2001 From: Man Zhang Date: Wed, 28 Aug 2024 14:41:16 -0600 Subject: [PATCH 57/80] address comments --- physics/docs/pdftxt/GFS_RRTMG.txt | 1 - physics/docs/pdftxt/GFS_RRTMGP.txt | 1 - 2 files changed, 2 deletions(-) diff --git a/physics/docs/pdftxt/GFS_RRTMG.txt b/physics/docs/pdftxt/GFS_RRTMG.txt index 181d32308..94a4c9398 100644 --- a/physics/docs/pdftxt/GFS_RRTMG.txt +++ b/physics/docs/pdftxt/GFS_RRTMG.txt @@ -60,7 +60,6 @@ - CSDLFsfc: Downward LW - CSDSFsfc: Downward SW - CSULFsfc: Upward LW - - CSULFsfc: Upward LW - CSUSFsfc: Upward sw - CDUVBsfc: UV-B downward flux - At TOA total sky diff --git a/physics/docs/pdftxt/GFS_RRTMGP.txt b/physics/docs/pdftxt/GFS_RRTMGP.txt index f4ab8679c..96f8d3d49 100644 --- a/physics/docs/pdftxt/GFS_RRTMGP.txt +++ b/physics/docs/pdftxt/GFS_RRTMGP.txt @@ -60,7 +60,6 @@ - CSDLFsfc: Downward LW - CSDSFsfc: Downward SW - CSULFsfc: Upward LW - - CSULFsfc: Upward LW - CSUSFsfc: Upward sw - CDUVBsfc: UV-B downward flux - At TOA total sky From 33595bac3ce330c54901e1ea4eac02719702df2c Mon Sep 17 00:00:00 2001 From: Man Zhang Date: Wed, 28 Aug 2024 14:46:05 -0600 Subject: [PATCH 58/80] address comments --- physics/docs/pdftxt/GFS_RRTMG.txt | 1 + physics/docs/pdftxt/GFS_RRTMGP.txt | 1 + 2 files changed, 2 insertions(+) diff --git a/physics/docs/pdftxt/GFS_RRTMG.txt b/physics/docs/pdftxt/GFS_RRTMG.txt index 94a4c9398..1e00e171f 100644 --- a/physics/docs/pdftxt/GFS_RRTMG.txt +++ b/physics/docs/pdftxt/GFS_RRTMG.txt @@ -60,6 +60,7 @@ - CSDLFsfc: Downward LW - CSDSFsfc: Downward SW - CSULFsfc: Upward LW + - CSDLFsfc: Downward LW - CSUSFsfc: Upward sw - CDUVBsfc: UV-B downward flux - At TOA total sky diff --git a/physics/docs/pdftxt/GFS_RRTMGP.txt b/physics/docs/pdftxt/GFS_RRTMGP.txt index 96f8d3d49..44e8b1bb2 100644 --- a/physics/docs/pdftxt/GFS_RRTMGP.txt +++ b/physics/docs/pdftxt/GFS_RRTMGP.txt @@ -60,6 +60,7 @@ - CSDLFsfc: Downward LW - CSDSFsfc: Downward SW - CSULFsfc: Upward LW + - CSDLFsfc: Downward LW - CSUSFsfc: Upward sw - CDUVBsfc: UV-B downward flux - At TOA total sky From 965a00cfa5503cdf9a52a5e7bcb310f18dcefd89 Mon Sep 17 00:00:00 2001 From: Grant Firl Date: Thu, 29 Aug 2024 15:04:33 -0400 Subject: [PATCH 59/80] add module_mp_radar.F90 as dependency for schemes that need module_mp_thompson as dependency since it is a sub-dependency --- physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_pre.meta | 2 +- physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_setup.meta | 2 +- physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_mp.meta | 2 +- physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_setup.meta | 2 +- physics/Interstitials/UFS_SCM_NEPTUNE/sgscloud_radpre.meta | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_pre.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_pre.meta index a7df9be2a..06d6869b3 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_pre.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_pre.meta @@ -3,7 +3,7 @@ type = scheme relative_path = ../../ dependencies = tools/funcphys.f90,hooks/machine.F - dependencies = MP/Thompson/module_mp_thompson.F90,MP/Thompson/module_mp_thompson_make_number_concentrations.F90 + dependencies = MP/module_mp_radar.F90,MP/Thompson/module_mp_thompson.F90,MP/Thompson/module_mp_thompson_make_number_concentrations.F90 dependencies = Radiation/RRTMG/radcons.f90,Radiation/radiation_aerosols.f dependencies = Radiation/radiation_astronomy.f,Radiation/radiation_clouds.f,Radiation/radiation_gases.f dependencies = Radiation/RRTMG/radlw_param.f,Radiation/RRTMG/radsw_param.f,Radiation/radiation_cloud_overlap.F90 diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_setup.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_setup.meta index 7f7ad7532..9329db016 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_setup.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_setup.meta @@ -6,7 +6,7 @@ dependencies = Radiation/radiation_aerosols.f dependencies = Radiation/radiation_astronomy.f,Radiation/radiation_clouds.f,Radiation/radiation_gases.f dependencies = Radiation/RRTMG/radlw_main.F90,Radiation/RRTMG/radlw_param.f,Radiation/RRTMG/radsw_main.F90,Radiation/RRTMG/radsw_param.f - dependencies = MP/Thompson/module_mp_thompson.F90,photochem/module_ozphys.F90 + dependencies = MP/module_mp_radar.F90,MP/Thompson/module_mp_thompson.F90,photochem/module_ozphys.F90 ######################################################################## [ccpp-arg-table] diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_mp.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_mp.meta index a0fb78333..84c0432f0 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_mp.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_mp.meta @@ -4,7 +4,7 @@ relative_path = ../../ dependencies = hooks/machine.F dependencies = Radiation/radiation_tools.F90,Radiation/radiation_clouds.f,Radiation/RRTMGP/rrtmgp_lw_cloud_optics.F90 - dependencies = MP/Thompson/module_mp_thompson_make_number_concentrations.F90,MP/Thompson/module_mp_thompson.F90 + dependencies = MP/module_mp_radar.F90,MP/Thompson/module_mp_thompson_make_number_concentrations.F90,MP/Thompson/module_mp_thompson.F90 ######################################################################## [ccpp-arg-table] diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_setup.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_setup.meta index fecb716ed..bbd698d66 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_setup.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_setup.meta @@ -2,7 +2,7 @@ name = GFS_rrtmgp_setup type = scheme relative_path = ../../ - dependencies = hooks/machine.F,MP/Thompson/module_mp_thompson.F90 + dependencies = hooks/machine.F,MP/module_mp_radar.F90,MP/Thompson/module_mp_thompson.F90 dependencies = Radiation/radiation_aerosols.f,photochem/module_ozphys.F90 dependencies = Radiation/radiation_gases.f,Radiation/radiation_astronomy.f diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/sgscloud_radpre.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/sgscloud_radpre.meta index 8e25428cc..b9a40c6c0 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/sgscloud_radpre.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/sgscloud_radpre.meta @@ -4,7 +4,7 @@ relative_path = ../../ dependencies = tools/funcphys.f90,hooks/machine.F dependencies = hooks/physcons.F90,Radiation/RRTMG/radcons.f90 - dependencies = Radiation/radiation_clouds.f,MP/Thompson/module_mp_thompson.F90 + dependencies = Radiation/radiation_clouds.f,MP/module_mp_radar.F90,MP/Thompson/module_mp_thompson.F90 ######################################################################## [ccpp-arg-table] From d1695fa28fe91eac09150c1e626d5207b6593d16 Mon Sep 17 00:00:00 2001 From: Grant Firl Date: Thu, 29 Aug 2024 15:05:04 -0400 Subject: [PATCH 60/80] fix compilation errors in YSU PBL and FA MP --- physics/MP/Ferrier_Aligo/module_MP_FER_HIRES.F90 | 6 +++--- physics/PBL/YSU/ysuvdif.F90 | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/physics/MP/Ferrier_Aligo/module_MP_FER_HIRES.F90 b/physics/MP/Ferrier_Aligo/module_MP_FER_HIRES.F90 index 380ba9de5..7d23ad5d4 100644 --- a/physics/MP/Ferrier_Aligo/module_MP_FER_HIRES.F90 +++ b/physics/MP/Ferrier_Aligo/module_MP_FER_HIRES.F90 @@ -109,7 +109,7 @@ MODULE MODULE_MP_FER_HIRES !----------------------------------------------------------------------------- #ifdef MPI - USE mpi + USE mpi_f08 #endif USE machine !MZ @@ -2448,7 +2448,7 @@ SUBROUTINE FERRIER_INIT_hr (GSMDT,MPI_COMM_COMP,MPIRANK,MPIROOT,THREADS, & !----------------------------------------------------------------------- ! #ifdef MPI - use mpi + use mpi_f08 #endif IMPLICIT NONE ! @@ -2466,7 +2466,7 @@ SUBROUTINE FERRIER_INIT_hr (GSMDT,MPI_COMM_COMP,MPIRANK,MPIROOT,THREADS, & REAL, INTENT(IN) :: GSMDT INTEGER, INTENT(IN) :: MPIRANK INTEGER, INTENT(IN) :: MPIROOT - INTEGER, INTENT(IN) :: MPI_COMM_COMP + TYPE(MPI_Comm), INTENT(IN) :: MPI_COMM_COMP INTEGER, INTENT(IN) :: THREADS CHARACTER(LEN=*), INTENT(OUT) :: errmsg INTEGER, INTENT(OUT) :: errflg diff --git a/physics/PBL/YSU/ysuvdif.F90 b/physics/PBL/YSU/ysuvdif.F90 index ad28256c0..09ba28625 100644 --- a/physics/PBL/YSU/ysuvdif.F90 +++ b/physics/PBL/YSU/ysuvdif.F90 @@ -101,7 +101,7 @@ subroutine ysuvdif_run(im,km,ux,vx,tx,qx,p2d,p2di,pi2d,karman, & intent(inout) :: utnp,vtnp,ttnp real(kind=kind_phys), dimension( :,:,: ) , & intent(inout) :: qtnp - real(kind=kind_phys), optional, intent(inout), optional :: dtend(:,:,:) + real(kind=kind_phys), intent(inout), optional :: dtend(:,:,:) integer, intent(in) :: dtidx(:,:), ntqv, index_of_temperature, & index_of_x_wind, index_of_y_wind, index_of_process_pbl ! From c5cf794b698c0d624bf441c3df01ccea74ca39be Mon Sep 17 00:00:00 2001 From: Grant Firl Date: Thu, 26 Sep 2024 10:29:02 -0400 Subject: [PATCH 61/80] add Rhae Sung Kim to CODEOWNERS file --- CODEOWNERS | 360 ++++++++++++++++++++++++++--------------------------- 1 file changed, 180 insertions(+), 180 deletions(-) diff --git a/CODEOWNERS b/CODEOWNERS index eccf83758..7b3ddd10b 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -4,192 +4,192 @@ # Default codeowners for files that don't have specific owners: -* @grantfirl @Qingfu-Liu @dustinswales @mzhangw +* @grantfirl @rhaesung @Qingfu-Liu @dustinswales @mzhangw # The following lines are from the CCPP Primary Schemes Points of Contact # https://docs.google.com/spreadsheets/d/14y0Th_sSpCqlssEMNfSZ_Ni9wrpPqfpPY0kRG7jCZB8/edit#gid=0 # (Internal NOAA document.) -physics/CONV/C3/cu_c3* @lisa-bengtsson @haiqinli @grantfirl @Qingfu-Liu @dustinswales -physics/CONV/Chikira_Sugiyama/cs_conv_aw_adj.* @AnningCheng-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/CONV/Chikira_Sugiyama/cs_conv.* @AnningCheng-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/CONV/Grell_Freitas/cu_gf* @haiqinli @grantfirl @Qingfu-Liu @dustinswales -physics/CONV/RAS/rascnv.* @haiqinli @JongilHan66 @grantfirl @Qingfu-Liu @dustinswales -physics/CONV/SAMF/samfdeepcnv.* @JongilHan66 @lisa-bengtsson @grantfirl @Qingfu-Liu @dustinswales -physics/CONV/SAMF/samfshalcnv.* @JongilHan66 @lisa-bengtsson @grantfirl @Qingfu-Liu @dustinswales -physics/CONV/SAMF/samfaerosols.* @JongilHan66 @lisa-bengtsson @grantfirl @Qingfu-Liu @dustinswales -physics/CONV/SAS/sascnvn.* @JongilHan66 @grantfirl @Qingfu-Liu @dustinswales -physics/CONV/SAS/shalcnv.* @JongilHan66 @grantfirl @Qingfu-Liu @dustinswales -physics/CONV/nTiedtke/cu_ntiedtke* @JongilHan66 @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/CONV/progsigma_calc.f90 @lisa-bengtsson @grantfirl @Qingfu-Liu @dustinswales -physics/GWD/cires_orowam2017.f @mdtoyNOAA @grantfirl @Qingfu-Liu @dustinswales -physics/GWD/cires_tauamf_data.F90 @mdtoyNOAA @grantfirl @Qingfu-Liu @dustinswales -physics/GWD/cires_ugwp* @mdtoyNOAA @grantfirl @Qingfu-Liu @dustinswales -physics/GWD/drag_suite.* @mdtoyNOAA @grantfirl @Qingfu-Liu @dustinswales -physics/GWD/gwdc.* @Songyou184 @grantfirl @Qingfu-Liu @dustinswales -physics/GWD/gwdps.* @Songyou184 @grantfirl @Qingfu-Liu @dustinswales -physics/GWD/rayleigh_damp.* @yangfanglin @grantfirl @Qingfu-Liu @dustinswales -physics/GWD/ugwp_driver_v0.F @mdtoyNOAA @grantfirl @Qingfu-Liu @dustinswales -physics/GWD/ugwpv1_gsldrag.* @mdtoyNOAA @BoYang-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/GWD/ugwpv1_gsldrag_post.* @mdtoyNOAA @BoYang-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/GWD/unified_ugwp* @mdtoyNOAA @grantfirl @Qingfu-Liu @dustinswales -physics/MP/Ferrier_Aligo/module_MP_FER_HIRES.* @ericaligo-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/MP/Ferrier_Aligo/mp_fer_hires.* @ericaligo-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/MP/GFDL/GFDL_parse_tracers.F90 @grantfirl @Qingfu-Liu @dustinswales -physics/MP/GFDL/gfdl_cloud_microphys.* @RuiyuSun @grantfirl @Qingfu-Liu @dustinswales -physics/MP/GFDL/module_gfdl_cloud_microphys.* @RuiyuSun @grantfirl @Qingfu-Liu @dustinswales -physics/MP/GFDL/fv_sat_adj.* @RuiyuSun @grantfirl @Qingfu-Liu @dustinswales -physics/MP/GFDL/multi_gases.F90 @RuiyuSun @grantfirl @Qingfu-Liu @dustinswales -physics/MP/Morrison_Gettelman/aer_cloud.F @AnningCheng-NOAA @andrewgettelman @grantfirl @Qingfu-Liu @dustinswales -physics/MP/Morrison_Gettelman/aerclm_def.F @AnningCheng-NOAA @andrewgettelman @grantfirl @Qingfu-Liu @dustinswales -physics/MP/Morrison_Gettelman/aerinterp.F90 @AnningCheng-NOAA @andrewgettelman @grantfirl @Qingfu-Liu @dustinswales -physics/MP/Morrison_Gettelman/cldmacro.F @AnningCheng-NOAA @andrewgettelman @grantfirl @Qingfu-Liu @dustinswales -physics/MP/Morrison_Gettelman/cldwat2m_micro.F @AnningCheng-NOAA @andrewgettelman @grantfirl @Qingfu-Liu @dustinswales -physics/MP/Morrison_Gettelman/micro_mg* @AnningCheng-NOAA @andrewgettelman @grantfirl @Qingfu-Liu @dustinswales -physics/MP/Morrison_Gettelman/m_micro* @AnningCheng-NOAA @andrewgettelman @grantfirl @Qingfu-Liu @dustinswales -physics/MP/Morrison_Gettelman/wv_saturation.F @AnningCheng-NOAA @andrewgettelman @grantfirl @Qingfu-Liu @dustinswales -physics/MP/NSSL/module_mp_nssl_2mom.F90 @MicroTed @grantfirl @Qingfu-Liu @dustinswales -physics/MP/NSSL/mp_nssl.* @MicroTed @grantfirl @Qingfu-Liu @dustinswales -physics/MP/Thompson/module_mp_thompson* @gthompsnWRF @RuiyuSun @AndersJensen-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/MP/Thompson/mp_thompson* @gthompsnWRF @RuiyuSun @AndersJensen-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/MP/Zhao_Carr/zhaocarr_gscond.* @RuiyuSun @grantfirl @Qingfu-Liu @dustinswales -physics/MP/Zhao_Carr/zhaocarr_precpd.* @RuiyuSun @grantfirl @Qingfu-Liu @dustinswales -physics/MP/calpreciptype.f90 @grantfirl @Qingfu-Liu @dustinswales -physics/MP/module_mp_radar.* @gthompsnWRF @RuiyuSun @grantfirl @Qingfu-Liu @dustinswales -physics/PBL/HEDMF/hedmf.* @JongilHan66 @WeiguoWang-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/PBL/MYJ/module_BL_MYJPBL.* @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/PBL/MYJ/myjpbl_wrapper.* @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/PBL/MYNN_EDMF/bl_mynn_common.f90 @joeolson42 @grantfirl @Qingfu-Liu @dustinswales -physics/PBL/MYNN_EDMF/module_bl_mynn.* @joeolson42 @grantfirl @Qingfu-Liu @dustinswales -physics/PBL/MYNN_EDMF/mynnedmf_wrapper.* @joeolson42 @grantfirl @Qingfu-Liu @dustinswales -physics/PBL/SATMEDMF/satmedmfvdif.* @JongilHan66 @grantfirl @Qingfu-Liu @dustinswales -physics/PBL/SATMEDMF/satmedmfvdifq.* @JongilHan66 @grantfirl @Qingfu-Liu @dustinswales -physics/PBL/SATMEDMF/mfscu.f @JongilHan66 @grantfirl @Qingfu-Liu @dustinswales -physics/PBL/SATMEDMF/mfscuq.f @JongilHan66 @grantfirl @Qingfu-Liu @dustinswales -physics/PBL/SHOC/moninshoc.* @grantfirl @Qingfu-Liu @dustinswales -physics/PBL/SHOC/shoc.* @grantfirl @Qingfu-Liu @dustinswales -physics/PBL/YSU/ysuvdif.* @Qingfu-Liu @WeiguoWang-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/PBL/saYSU/shinhongvdif.* @Qingfu-Liu @WeiguoWang-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/PBL/mfpbl.f @JongilHan66 @grantfirl @Qingfu-Liu @dustinswales -physics/PBL/mfpblt.f @JongilHan66 @grantfirl @Qingfu-Liu @dustinswales -physics/PBL/mfpbltq.f @JongilHan66 @grantfirl @Qingfu-Liu @dustinswales -physics/PBL/tridi.f @JongilHan66 @WeiguoWang-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/RRTMG/iounitdef.f @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/RRTMG/module_bfmicrophysics.f @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/RRTMG/rad_sw_pre* @mjiacono @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/RRTMG/radcons.f90 @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/RRTMG/radlw_* @mjiacono @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/RRTMG/radsw_* @mjiacono @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/RRTMG/rrtmg_lw_cloud_optics.F90 @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/RRTMG/rrtmg_lw_post.* @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/RRTMG/rrtmg_sw_cloud_optics.F90 @dustinswales @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/RRTMG/rrtmg_sw_post.* @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/RRTMGP/rte-rrtmgp @dustinswales @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/RRTMGP/rrtmgp_aerosol_optics.* @dustinswales @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/RRTMGP/rrtmgp_lw_* @dustinswales @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/RRTMGP/rrtmgp_sw_* @dustinswales @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/mersenne_twister.f @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/radiation_aerosols.f @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/radiation_astronomy.f @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/radiation_cloud_overlap.F90 @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/radiation_clouds.f @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/radiation_gases.f @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/radiation_surface.f @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/radiation_tools.F90 @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Layer/GFDL/gfdl_sfc_layer.* @ZhanZhang-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Layer/GFDL/module_sf_exchcoef.f90 @ZhanZhang-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Layer/MYJ/myjsfc_wrapper.* @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Layer/MYJ/module_SF_JSFC.F90 @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Layer/MYNN/mynnsfc_wrapper.* @joeolson42 @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Layer/MYNN/module_sf_mynn.F90 @joeolson42 @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Layer/UFS/date_def.f @XuLi-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Layer/UFS/module_nst* @XuLi-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Layer/UFS/sfc_diag.* @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Layer/UFS/sfc_diag_post.* @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Layer/UFS/sfc_diff.* @JongilHan66 @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Layer/UFS/sfc_nst* @XuLi-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Models/Lake/CLM/clm_lake.* @tanyasmirnova @SamuelTrahanNOAA @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Models/Lake/Flake/flake* @barlage @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Models/Land/Noah/lsm_noah.* @HelinWei-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Models/Land/Noah/namelist_soilveg.* @HelinWei-NOAA @barlage @cenlinhe @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Models/Land/Noah/set_soilveg.* @HelinWei-NOAA @barlage @cenlinhe @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Models/Land/Noah/sflx.f @HelinWei-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Models/Land/Noah/surface_perturbation.* @HelinWei-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Models/Land/Noahmp/*noahmp* @barlage @cenlinhe @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Models/Land/RUC/lsm_ruc.* @tanyasmirnova @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Models/Land/RUC/module_sf_ruclsm.* @tanyasmirnova @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Models/Land/RUC/module_soil_pre.* @tanyasmirnova @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Models/Land/RUC/namelist_soilveg_ruc.* @tanyasmirnova @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Models/Land/RUC/set_soilveg_ruc.* @tanyasmirnova @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Models/Land/sfc_land.* @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Models/Ocean/UFS/sfc_ocean.* @HelinWei-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Models/SeaIce/CICE/sfc_cice.* @wd20xw @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Models/SeaIce/CICE/sfc_sice.* @wd20xw @grantfirl @Qingfu-Liu @dustinswales -physics/hooks/machine.* @grantfirl @Qingfu-Liu @dustinswales -physics/hooks/physcons.F90 @grantfirl @Qingfu-Liu @dustinswales -physics/photochem/module_h2ophys.* @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/photochem/module_ozphys.* @dustinswales @grantfirl @Qingfu-Liu @dustinswales -physics/smoke_dust/* @haiqinli @grantfirl @Qingfu-Liu @dustinswales -physics/tools/funcphys.f90 @grantfirl @Qingfu-Liu @dustinswales -physics/tools/get_phi_fv3.* @grantfirl @Qingfu-Liu @dustinswales -physics/tools/get_prs_fv3.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_cloud_diagnostics.* @dustinswales @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_DCNV_generic_post.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_DCNV_generic_pre.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_GWD_generic_post.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_GWD_generic_pre.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_MP_generic_post.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_MP_generic_pre.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_PBL_generic_common.F90 @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_PBL_generic_post.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_PBL_generic_pre.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.fv3.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.scm.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_physics_post.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_radiation_surface.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rad_time_vary.fv3.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rad_time_vary.scm.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_mp.* @dustinswales @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_overlap.* @dustinswales @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_post.* @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_pre.* @dustinswales @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_pre.* @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_setup.* @dustinswales @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_post.* @dustinswales @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_setup.* @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_SCNV_generic_post.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_SCNV_generic_pre.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_stochastics.* @pjpegion @lisa-bengtsson @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_1.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_2.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_3.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_4.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_5.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_phys_reset.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_rad_reset.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_stateout_reset.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_stateout_update.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_inter.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_pre.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_generic_post.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_generic_pre.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_loop_control_part1.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_loop_control_part2.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_time_vary_pre.fv3.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_time_vary_pre.scm.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/cnvc90.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/dcyc2t3.* @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/gcycle.F90 @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/iccn_def.F @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/iccninterp.F90 @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/maximum_hourly_diagnostics.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/scm_sfc_flux_spec.* @grantfirl @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/sfcsub.F @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/sgscloud_radpost.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/sgscloud_radpre.* @grantfirl @Qingfu-Liu @dustinswales +physics/CONV/C3/cu_c3* @lisa-bengtsson @haiqinli @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/CONV/Chikira_Sugiyama/cs_conv_aw_adj.* @AnningCheng-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/CONV/Chikira_Sugiyama/cs_conv.* @AnningCheng-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/CONV/Grell_Freitas/cu_gf* @haiqinli @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/CONV/RAS/rascnv.* @haiqinli @JongilHan66 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/CONV/SAMF/samfdeepcnv.* @JongilHan66 @lisa-bengtsson @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/CONV/SAMF/samfshalcnv.* @JongilHan66 @lisa-bengtsson @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/CONV/SAMF/samfaerosols.* @JongilHan66 @lisa-bengtsson @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/CONV/SAS/sascnvn.* @JongilHan66 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/CONV/SAS/shalcnv.* @JongilHan66 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/CONV/nTiedtke/cu_ntiedtke* @JongilHan66 @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/CONV/progsigma_calc.f90 @lisa-bengtsson @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/GWD/cires_orowam2017.f @mdtoyNOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/GWD/cires_tauamf_data.F90 @mdtoyNOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/GWD/cires_ugwp* @mdtoyNOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/GWD/drag_suite.* @mdtoyNOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/GWD/gwdc.* @Songyou184 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/GWD/gwdps.* @Songyou184 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/GWD/rayleigh_damp.* @yangfanglin @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/GWD/ugwp_driver_v0.F @mdtoyNOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/GWD/ugwpv1_gsldrag.* @mdtoyNOAA @BoYang-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/GWD/ugwpv1_gsldrag_post.* @mdtoyNOAA @BoYang-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/GWD/unified_ugwp* @mdtoyNOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/Ferrier_Aligo/module_MP_FER_HIRES.* @ericaligo-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/Ferrier_Aligo/mp_fer_hires.* @ericaligo-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/GFDL/GFDL_parse_tracers.F90 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/GFDL/gfdl_cloud_microphys.* @RuiyuSun @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/GFDL/module_gfdl_cloud_microphys.* @RuiyuSun @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/GFDL/fv_sat_adj.* @RuiyuSun @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/GFDL/multi_gases.F90 @RuiyuSun @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/Morrison_Gettelman/aer_cloud.F @AnningCheng-NOAA @andrewgettelman @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/Morrison_Gettelman/aerclm_def.F @AnningCheng-NOAA @andrewgettelman @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/Morrison_Gettelman/aerinterp.F90 @AnningCheng-NOAA @andrewgettelman @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/Morrison_Gettelman/cldmacro.F @AnningCheng-NOAA @andrewgettelman @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/Morrison_Gettelman/cldwat2m_micro.F @AnningCheng-NOAA @andrewgettelman @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/Morrison_Gettelman/micro_mg* @AnningCheng-NOAA @andrewgettelman @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/Morrison_Gettelman/m_micro* @AnningCheng-NOAA @andrewgettelman @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/Morrison_Gettelman/wv_saturation.F @AnningCheng-NOAA @andrewgettelman @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/NSSL/module_mp_nssl_2mom.F90 @MicroTed @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/NSSL/mp_nssl.* @MicroTed @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/Thompson/module_mp_thompson* @gthompsnWRF @RuiyuSun @AndersJensen-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/Thompson/mp_thompson* @gthompsnWRF @RuiyuSun @AndersJensen-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/Zhao_Carr/zhaocarr_gscond.* @RuiyuSun @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/Zhao_Carr/zhaocarr_precpd.* @RuiyuSun @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/calpreciptype.f90 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/module_mp_radar.* @gthompsnWRF @RuiyuSun @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/PBL/HEDMF/hedmf.* @JongilHan66 @WeiguoWang-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/PBL/MYJ/module_BL_MYJPBL.* @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/PBL/MYJ/myjpbl_wrapper.* @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/PBL/MYNN_EDMF/bl_mynn_common.f90 @joeolson42 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/PBL/MYNN_EDMF/module_bl_mynn.* @joeolson42 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/PBL/MYNN_EDMF/mynnedmf_wrapper.* @joeolson42 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/PBL/SATMEDMF/satmedmfvdif.* @JongilHan66 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/PBL/SATMEDMF/satmedmfvdifq.* @JongilHan66 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/PBL/SATMEDMF/mfscu.f @JongilHan66 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/PBL/SATMEDMF/mfscuq.f @JongilHan66 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/PBL/SHOC/moninshoc.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/PBL/SHOC/shoc.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/PBL/YSU/ysuvdif.* @Qingfu-Liu @WeiguoWang-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/PBL/saYSU/shinhongvdif.* @Qingfu-Liu @WeiguoWang-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/PBL/mfpbl.f @JongilHan66 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/PBL/mfpblt.f @JongilHan66 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/PBL/mfpbltq.f @JongilHan66 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/PBL/tridi.f @JongilHan66 @WeiguoWang-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/RRTMG/iounitdef.f @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/RRTMG/module_bfmicrophysics.f @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/RRTMG/rad_sw_pre* @mjiacono @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/RRTMG/radcons.f90 @Qingfu-Liu @dustinswales @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/RRTMG/radlw_* @mjiacono @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/RRTMG/radsw_* @mjiacono @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/RRTMG/rrtmg_lw_cloud_optics.F90 @Qingfu-Liu @dustinswales @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/RRTMG/rrtmg_lw_post.* @Qingfu-Liu @dustinswales @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/RRTMG/rrtmg_sw_cloud_optics.F90 @dustinswales @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/RRTMG/rrtmg_sw_post.* @Qingfu-Liu @dustinswales @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/RRTMGP/rte-rrtmgp @dustinswales @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/RRTMGP/rrtmgp_aerosol_optics.* @dustinswales @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/RRTMGP/rrtmgp_lw_* @dustinswales @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/RRTMGP/rrtmgp_sw_* @dustinswales @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/mersenne_twister.f @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/radiation_aerosols.f @Qingfu-Liu @dustinswales @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/radiation_astronomy.f @Qingfu-Liu @dustinswales @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/radiation_cloud_overlap.F90 @Qingfu-Liu @dustinswales @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/radiation_clouds.f @Qingfu-Liu @dustinswales @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/radiation_gases.f @Qingfu-Liu @dustinswales @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/radiation_surface.f @Qingfu-Liu @dustinswales @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/radiation_tools.F90 @Qingfu-Liu @dustinswales @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Layer/GFDL/gfdl_sfc_layer.* @ZhanZhang-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Layer/GFDL/module_sf_exchcoef.f90 @ZhanZhang-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Layer/MYJ/myjsfc_wrapper.* @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Layer/MYJ/module_SF_JSFC.F90 @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Layer/MYNN/mynnsfc_wrapper.* @joeolson42 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Layer/MYNN/module_sf_mynn.F90 @joeolson42 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Layer/UFS/date_def.f @XuLi-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Layer/UFS/module_nst* @XuLi-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Layer/UFS/sfc_diag.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Layer/UFS/sfc_diag_post.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Layer/UFS/sfc_diff.* @JongilHan66 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Layer/UFS/sfc_nst* @XuLi-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Models/Lake/CLM/clm_lake.* @tanyasmirnova @SamuelTrahanNOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Models/Lake/Flake/flake* @barlage @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Models/Land/Noah/lsm_noah.* @HelinWei-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Models/Land/Noah/namelist_soilveg.* @HelinWei-NOAA @barlage @cenlinhe @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Models/Land/Noah/set_soilveg.* @HelinWei-NOAA @barlage @cenlinhe @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Models/Land/Noah/sflx.f @HelinWei-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Models/Land/Noah/surface_perturbation.* @HelinWei-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Models/Land/Noahmp/*noahmp* @barlage @cenlinhe @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Models/Land/RUC/lsm_ruc.* @tanyasmirnova @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Models/Land/RUC/module_sf_ruclsm.* @tanyasmirnova @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Models/Land/RUC/module_soil_pre.* @tanyasmirnova @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Models/Land/RUC/namelist_soilveg_ruc.* @tanyasmirnova @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Models/Land/RUC/set_soilveg_ruc.* @tanyasmirnova @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Models/Land/sfc_land.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Models/Ocean/UFS/sfc_ocean.* @HelinWei-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Models/SeaIce/CICE/sfc_cice.* @wd20xw @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Models/SeaIce/CICE/sfc_sice.* @wd20xw @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/hooks/machine.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/hooks/physcons.F90 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/photochem/module_h2ophys.* @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/photochem/module_ozphys.* @dustinswales @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/smoke_dust/* @haiqinli @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/tools/funcphys.f90 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/tools/get_phi_fv3.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/tools/get_prs_fv3.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_cloud_diagnostics.* @dustinswales @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_DCNV_generic_post.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_DCNV_generic_pre.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_GWD_generic_post.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_GWD_generic_pre.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_MP_generic_post.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_MP_generic_pre.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_PBL_generic_common.F90 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_PBL_generic_post.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_PBL_generic_pre.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.fv3.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.scm.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_physics_post.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_radiation_surface.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rad_time_vary.fv3.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rad_time_vary.scm.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_mp.* @dustinswales @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_overlap.* @dustinswales @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_post.* @Qingfu-Liu @dustinswales @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_pre.* @dustinswales @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_pre.* @Qingfu-Liu @dustinswales @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_setup.* @dustinswales @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_post.* @dustinswales @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_setup.* @Qingfu-Liu @dustinswales @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_SCNV_generic_post.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_SCNV_generic_pre.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_stochastics.* @pjpegion @lisa-bengtsson @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_1.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_2.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_3.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_4.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_5.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_phys_reset.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_rad_reset.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_stateout_reset.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_stateout_update.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_inter.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_pre.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_generic_post.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_generic_pre.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_loop_control_part1.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_loop_control_part2.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_time_vary_pre.fv3.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_time_vary_pre.scm.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/cnvc90.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/dcyc2t3.* @Qingfu-Liu @dustinswales @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/gcycle.F90 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/iccn_def.F @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/iccninterp.F90 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/maximum_hourly_diagnostics.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/scm_sfc_flux_spec.* @grantfirl @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/sfcsub.F @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/sgscloud_radpost.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/sgscloud_radpre.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales ######################################################################## From 3fb5fa27251e303ce98225338861d55094d07cbf Mon Sep 17 00:00:00 2001 From: "Haiqin.Li" Date: Fri, 23 Feb 2024 03:22:07 +0000 Subject: [PATCH 62/80] "MYNN, GF, RUC LSM and smoke plumerise updates for RRFSv1 code freeze" --- physics/CONV/Grell_Freitas/cu_gf_deep.F90 | 14 ++++---- .../UFS_SCM_NEPTUNE/GFS_MP_generic_post.F90 | 11 +++--- .../UFS_SCM_NEPTUNE/GFS_MP_generic_post.meta | 15 ++++++++ physics/PBL/MYNN_EDMF/module_bl_mynn.F90 | 8 ++--- physics/SFC_Models/Land/RUC/lsm_ruc.F90 | 3 +- .../SFC_Models/Land/RUC/module_sf_ruclsm.F90 | 4 +-- physics/smoke_dust/module_smoke_plumerise.F90 | 36 +++++++++++++------ physics/smoke_dust/rrfs_smoke_wrapper.F90 | 9 +++-- 8 files changed, 68 insertions(+), 32 deletions(-) diff --git a/physics/CONV/Grell_Freitas/cu_gf_deep.F90 b/physics/CONV/Grell_Freitas/cu_gf_deep.F90 index 0f324244a..b945b9328 100644 --- a/physics/CONV/Grell_Freitas/cu_gf_deep.F90 +++ b/physics/CONV/Grell_Freitas/cu_gf_deep.F90 @@ -425,9 +425,9 @@ subroutine cu_gf_deep_run( & integer :: turn,pmin_lev(its:ite),start_level(its:ite),ktopkeep(its:ite) real(kind=kind_phys), dimension (its:ite,kts:kte) :: dtempdz integer, dimension (its:ite,kts:kte) :: k_inv_layers - real(kind=kind_phys), dimension (its:ite) :: c0 ! HCB + real(kind=kind_phys), dimension (its:ite) :: c0, rrfs_factor ! HCB real(kind=kind_phys), dimension (its:ite,kts:kte) :: c0t3d ! hli for smoke/dust wet scavenging -!$acc declare create(pmin_lev,start_level,ktopkeep,dtempdz,k_inv_layers,c0,c0t3d) +!$acc declare create(pmin_lev,start_level,ktopkeep,dtempdz,k_inv_layers,c0,rrfs_factor,c0t3d) ! rainevap from sas real(kind=kind_phys) zuh2(40) @@ -486,6 +486,7 @@ subroutine cu_gf_deep_run( & ! Set cloud water to rain water conversion rate (c0) !$acc kernels c0(:)=0.004 + rrfs_factor(:)=1. do i=its,itf xland1(i)=int(xland(i)+.0001) ! 1. if(xland(i).gt.1.5 .or. xland(i).lt.0.5)then @@ -495,6 +496,7 @@ subroutine cu_gf_deep_run( & if(imid.eq.1)then c0(i)=0.002 endif + if(kdt.le.(4500./dtime))rrfs_factor(i)=1.-(float(kdt)/(4500./dtime)-1.)**2 enddo !$acc end kernels @@ -591,7 +593,6 @@ subroutine cu_gf_deep_run( & sig(i)=(1.-frh)**2 !frh_out(i) = frh if(forcing(i,7).eq.0.)sig(i)=1. - if(kdt.le.(3600./dtime))sig(i)=1. frh_out(i) = frh*sig(i) enddo !$acc end kernels @@ -2029,7 +2030,7 @@ subroutine cu_gf_deep_run( & zuo,pre,pwo_ens,xmb,ktop, & edto,pwdo,'deep',ierr2,ierr3, & po_cup,pr_ens,maxens3, & - sig,closure_n,xland1,xmbm_in,xmbs_in, & + sig,closure_n,xland1,xmbm_in,xmbs_in,rrfs_factor, & ichoice,imid,ipr,itf,ktf, & its,ite, kts,kte, & dicycle,xf_dicycle ) @@ -4056,7 +4057,7 @@ subroutine cup_output_ens_3d(xff_mid,xf_ens,ierr,dellat,dellaq,dellaqc, & zu,pre,pw,xmb,ktop, & edt,pwd,name,ierr2,ierr3,p_cup,pr_ens, & maxens3, & - sig,closure_n,xland1,xmbm_in,xmbs_in, & + sig,closure_n,xland1,xmbm_in,xmbs_in,rrfs_factor, & ichoice,imid,ipr,itf,ktf, & its,ite, kts,kte, & dicycle,xf_dicycle ) @@ -4118,7 +4119,7 @@ subroutine cup_output_ens_3d(xff_mid,xf_ens,ierr,dellat,dellaq,dellaqc, & ,intent (inout) :: & ierr,ierr2,ierr3 integer, intent(in) :: dicycle - real(kind=kind_phys), intent(in), dimension (its:ite) :: xf_dicycle + real(kind=kind_phys), intent(in), dimension (its:ite) :: xf_dicycle, rrfs_factor !$acc declare copyin(zu,pwd,p_cup,sig,xmbm_in,xmbs_in,edt,xff_mid,dellat,dellaqc,dellaq,pw,ktop,xland1,xf_dicycle) !$acc declare copy(xf_ens,pr_ens,outtem,outq,outqc,pre,xmb,closure_n,ierr,ierr2,ierr3) ! @@ -4198,6 +4199,7 @@ subroutine cup_output_ens_3d(xff_mid,xf_ens,ierr,dellat,dellaq,dellaqc, & clos_wei=16./max(1.,closure_n(i)) xmb_ave(i)=min(xmb_ave(i),100.) xmb(i)=clos_wei*sig(i)*xmb_ave(i) + if(dx(i) get_thread_coms() -IF (frp_inst Date: Fri, 4 Oct 2024 10:41:11 -0400 Subject: [PATCH 65/80] fix merge error in GFS_MP_generic_post.F90 --- physics/Interstitials/UFS_SCM_NEPTUNE/GFS_MP_generic_post.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_MP_generic_post.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_MP_generic_post.F90 index ced4138f5..108005dc1 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_MP_generic_post.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_MP_generic_post.F90 @@ -42,7 +42,7 @@ subroutine GFS_MP_generic_post_run( logical, intent(in) :: cal_pre, lssav, ldiag3d, qdiag3d, cplflx, cplchm, cpllnd, progsigma, exticeden integer, intent(in) :: index_of_temperature,index_of_process_mp,use_lake_model(:) integer, intent(in) :: imfshalcnv,imfshalcnv_gf,imfdeepcnv,imfdeepcnv_gf,imfdeepcnv_samf - integer, dimension (:), intent(in) :: htop, xland + integer, dimension (:), intent(in) :: htop real(kind=kind_phys), intent(in) :: fh_dfi_radar(:), fhour, con_t0c real(kind=kind_phys), intent(in) :: radar_tten_limits(:) integer, intent(in) :: ix_dfi_radar(:) From ca3b61fb886055556da8ff975a3834b6b6a4e260 Mon Sep 17 00:00:00 2001 From: Grant Firl Date: Tue, 15 Oct 2024 21:36:16 -0400 Subject: [PATCH 66/80] copy changes from GFS_phys_time_vary.fv3.F90 to the SCM version --- .../Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.scm.F90 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.scm.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.scm.F90 index 0b5bbbb3e..fde7052ba 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.scm.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.scm.F90 @@ -534,8 +534,10 @@ subroutine GFS_phys_time_vary_init ( isnow = nint(snowxy(ix))+1 ! snowxy <=0.0, dzsno >= 0.0 +! using stc and tgxy to linearly interpolate the snow temp for each layer + do is = isnow,0 - tsnoxy(ix,is) = tgxy(ix) + tsnoxy(ix,is) = tgxy(ix) + (( sum(dzsno(isnow:is)) -0.5*dzsno(is) )/snd)*(stc(ix,1)-tgxy(ix)) snliqxy(ix,is) = zero snicexy(ix,is) = one * dzsno(is) * weasd(ix)/snd enddo From 9e13f95e57d3d648674d30cfe4fb932b0797ac39 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Tue, 27 Feb 2024 10:52:16 -0700 Subject: [PATCH 67/80] Update physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.* to use chunked GFS DDTs --- .../UFS_SCM_NEPTUNE/GFS_debug.F90 | 154 +++++----- .../UFS_SCM_NEPTUNE/GFS_debug.meta | 266 ++++++++++++++++-- 2 files changed, 328 insertions(+), 92 deletions(-) diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.F90 index 8313368fc..e4caf708b 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.F90 @@ -303,6 +303,16 @@ module GFS_diagtoscreen use print_var_chksum, only: print_var + use machine, only: kind_phys + + use GFS_typedefs, only: GFS_control_type, GFS_statein_type, & + GFS_stateout_type, GFS_sfcprop_type, & + GFS_coupling_type, GFS_grid_type, & + GFS_tbd_type, GFS_cldprop_type, & + GFS_radtend_type, GFS_diag_type + + use CCPP_typedefs, only: GFS_interstitial_type + implicit none private @@ -314,66 +324,70 @@ module GFS_diagtoscreen !> \section arg_table_GFS_diagtoscreen_init Argument Table !! \htmlinclude GFS_diagtoscreen_init.html !! - subroutine GFS_diagtoscreen_init (Model, Data, Interstitial, errmsg, errflg) - - use GFS_typedefs, only: GFS_control_type, GFS_data_type - use CCPP_typedefs, only: GFS_interstitial_type + subroutine GFS_diagtoscreen_init (Model, Statein, Stateout, Sfcprop, Coupling, & + Grid, Tbd, Cldprop, Radtend, Diag, Interstitial, & + errmsg, errflg) implicit none !--- interface variables type(GFS_control_type), intent(in) :: Model - type(GFS_data_type), intent(in) :: Data(:) + type(GFS_statein_type), intent(in) :: Statein + type(GFS_stateout_type), intent(in) :: Stateout + type(GFS_sfcprop_type), intent(in) :: Sfcprop + type(GFS_coupling_type), intent(in) :: Coupling + type(GFS_grid_type), intent(in) :: Grid + type(GFS_tbd_type), intent(in) :: Tbd + type(GFS_cldprop_type), intent(in) :: Cldprop + type(GFS_radtend_type), intent(in) :: Radtend + type(GFS_diag_type), intent(in) :: Diag type(GFS_interstitial_type), intent(in) :: Interstitial(:) character(len=*), intent(out) :: errmsg integer, intent(out) :: errflg - !--- local variables - integer :: i - ! Initialize CCPP error handling variables errmsg = '' errflg = 0 - do i=1,size(Data) - call GFS_diagtoscreen_run (Model, Data(i)%Statein, Data(i)%Stateout, Data(i)%Sfcprop, & - Data(i)%Coupling, Data(i)%Grid, Data(i)%Tbd, Data(i)%Cldprop, & - Data(i)%Radtend, Data(i)%Intdiag, Interstitial(1), & - size(Interstitial), i, errmsg, errflg) - end do + call GFS_diagtoscreen_run (Model, Statein, Stateout, Sfcprop, & + Coupling, Grid, Tbd, Cldprop, & + Radtend, Diag, Interstitial(1), & + size(Interstitial), -999, errmsg, errflg) end subroutine GFS_diagtoscreen_init !> \section arg_table_GFS_diagtoscreen_timestep_init Argument Table !! \htmlinclude GFS_diagtoscreen_timestep_init.html !! - subroutine GFS_diagtoscreen_timestep_init (Model, Data, Interstitial, errmsg, errflg) - - use GFS_typedefs, only: GFS_control_type, GFS_data_type - use CCPP_typedefs, only: GFS_interstitial_type + subroutine GFS_diagtoscreen_timestep_init (Model, Statein, Stateout, Sfcprop, Coupling, & + Grid, Tbd, Cldprop, Radtend, Diag, Interstitial, & + errmsg, errflg) implicit none !--- interface variables type(GFS_control_type), intent(in) :: Model - type(GFS_data_type), intent(in) :: Data(:) + type(GFS_statein_type), intent(in) :: Statein + type(GFS_stateout_type), intent(in) :: Stateout + type(GFS_sfcprop_type), intent(in) :: Sfcprop + type(GFS_coupling_type), intent(in) :: Coupling + type(GFS_grid_type), intent(in) :: Grid + type(GFS_tbd_type), intent(in) :: Tbd + type(GFS_cldprop_type), intent(in) :: Cldprop + type(GFS_radtend_type), intent(in) :: Radtend + type(GFS_diag_type), intent(in) :: Diag type(GFS_interstitial_type), intent(in) :: Interstitial(:) character(len=*), intent(out) :: errmsg integer, intent(out) :: errflg - !--- local variables - integer :: i - ! Initialize CCPP error handling variables errmsg = '' errflg = 0 - do i=1,size(Data) - call GFS_diagtoscreen_run (Model, Data(i)%Statein, Data(i)%Stateout, Data(i)%Sfcprop, & - Data(i)%Coupling, Data(i)%Grid, Data(i)%Tbd, Data(i)%Cldprop, & - Data(i)%Radtend, Data(i)%Intdiag, Interstitial(1), & - size(Interstitial), i, errmsg, errflg) - end do + call GFS_diagtoscreen_run (Model, Statein, Stateout, Sfcprop, & + Coupling, Grid, Tbd, Cldprop, & + Radtend, Diag, Interstitial(1), & + size(Interstitial), -999, errmsg, errflg) end subroutine GFS_diagtoscreen_timestep_init @@ -390,12 +404,6 @@ subroutine GFS_diagtoscreen_run (Model, Statein, Stateout, Sfcprop, Coupling, #ifdef _OPENMP use omp_lib #endif - use GFS_typedefs, only: GFS_control_type, GFS_statein_type, & - GFS_stateout_type, GFS_sfcprop_type, & - GFS_coupling_type, GFS_grid_type, & - GFS_tbd_type, GFS_cldprop_type, & - GFS_radtend_type, GFS_diag_type - use CCPP_typedefs, only: GFS_interstitial_type implicit none @@ -619,7 +627,7 @@ subroutine GFS_diagtoscreen_run (Model, Statein, Stateout, Sfcprop, Coupling, call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Tbd%in_nm' , Tbd%in_nm) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Tbd%ccn_nm' , Tbd%ccn_nm) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Tbd%aer_nm' , Tbd%aer_nm) - if (Model%imfdeepcnv == Model%imfdeepcnv_gf .or. Model%imfdeepcnv == Model%imfdeepcnv_unified) then + if (Model%imfdeepcnv == Model%imfdeepcnv_gf) then call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Tbd%cactiv' , Tbd%cactiv) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Tbd%cactiv_m' , Tbd%cactiv_m) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Tbd%aod_gf' , Tbd%aod_gf) @@ -877,13 +885,6 @@ subroutine GFS_diagtoscreen_run (Model, Statein, Stateout, Sfcprop, Coupling, call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Coupling%v10mi_cpl ', Coupling%v10mi_cpl ) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Coupling%tsfci_cpl ', Coupling%tsfci_cpl ) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Coupling%psurfi_cpl ', Coupling%psurfi_cpl ) - if (Model%use_med_flux) then - call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Coupling%dusfcino_cpl ', Coupling%dusfcino_cpl ) - call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Coupling%dvsfcino_cpl ', Coupling%dvsfcino_cpl ) - call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Coupling%dtsfcino_cpl ', Coupling%dtsfcino_cpl ) - call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Coupling%dqsfcino_cpl ', Coupling%dqsfcino_cpl ) - call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Coupling%ulwsfcino_cpl', Coupling%ulwsfcino_cpl ) - end if end if if (Model%cplchm) then call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Coupling%rainc_cpl', Coupling%rainc_cpl) @@ -971,6 +972,17 @@ module GFS_interstitialtoscreen use print_var_chksum, only: print_var + use machine, only: kind_phys + + use GFS_typedefs, only: GFS_control_type, GFS_statein_type, & + GFS_stateout_type, GFS_sfcprop_type, & + GFS_coupling_type, GFS_grid_type, & + GFS_tbd_type, GFS_cldprop_type, & + GFS_radtend_type, GFS_diag_type + + use CCPP_typedefs, only: GFS_interstitial_type + + implicit none private @@ -982,16 +994,23 @@ module GFS_interstitialtoscreen !> \section arg_table_GFS_interstitialtoscreen_init Argument Table !! \htmlinclude GFS_interstitialtoscreen_init.html !! - subroutine GFS_interstitialtoscreen_init (Model, Data, Interstitial, errmsg, errflg) - - use GFS_typedefs, only: GFS_control_type, GFS_data_type - use CCPP_typedefs, only: GFS_interstitial_type + subroutine GFS_interstitialtoscreen_init (Model, Statein, Stateout, Sfcprop, Coupling, & + Grid, Tbd, Cldprop, Radtend, Diag, Interstitial, & + errmsg, errflg) implicit none !--- interface variables type(GFS_control_type), intent(in) :: Model - type(GFS_data_type), intent(in) :: Data(:) + type(GFS_statein_type), intent(in) :: Statein + type(GFS_stateout_type), intent(in) :: Stateout + type(GFS_sfcprop_type), intent(in) :: Sfcprop + type(GFS_coupling_type), intent(in) :: Coupling + type(GFS_grid_type), intent(in) :: Grid + type(GFS_tbd_type), intent(in) :: Tbd + type(GFS_cldprop_type), intent(in) :: Cldprop + type(GFS_radtend_type), intent(in) :: Radtend + type(GFS_diag_type), intent(in) :: Diag type(GFS_interstitial_type), intent(in) :: Interstitial(:) character(len=*), intent(out) :: errmsg integer, intent(out) :: errflg @@ -1003,11 +1022,9 @@ subroutine GFS_interstitialtoscreen_init (Model, Data, Interstitial, errmsg, err errmsg = '' errflg = 0 - do i=1,size(Interstitial) - call GFS_interstitialtoscreen_run (Model, Data(1)%Statein, Data(1)%Stateout, Data(1)%Sfcprop, & - Data(1)%Coupling, Data(1)%Grid, Data(1)%Tbd, Data(1)%Cldprop, & - Data(1)%Radtend, Data(1)%Intdiag, Interstitial(i), & + call GFS_interstitialtoscreen_run (Model, Statein, Stateout, Sfcprop, Coupling, & + Grid, Tbd, Cldprop, Radtend, Diag, Interstitial(i), & size(Interstitial), -999, errmsg, errflg) end do @@ -1016,16 +1033,23 @@ end subroutine GFS_interstitialtoscreen_init !> \section arg_table_GFS_interstitialtoscreen_timestep_init Argument Table !! \htmlinclude GFS_interstitialtoscreen_timestep_init.html !! - subroutine GFS_interstitialtoscreen_timestep_init (Model, Data, Interstitial, errmsg, errflg) - - use GFS_typedefs, only: GFS_control_type, GFS_data_type - use CCPP_typedefs, only: GFS_interstitial_type + subroutine GFS_interstitialtoscreen_timestep_init (Model, Statein, Stateout, Sfcprop, Coupling, & + Grid, Tbd, Cldprop, Radtend, Diag, Interstitial, & + errmsg, errflg) implicit none !--- interface variables type(GFS_control_type), intent(in) :: Model - type(GFS_data_type), intent(in) :: Data(:) + type(GFS_statein_type), intent(in) :: Statein + type(GFS_stateout_type), intent(in) :: Stateout + type(GFS_sfcprop_type), intent(in) :: Sfcprop + type(GFS_coupling_type), intent(in) :: Coupling + type(GFS_grid_type), intent(in) :: Grid + type(GFS_tbd_type), intent(in) :: Tbd + type(GFS_cldprop_type), intent(in) :: Cldprop + type(GFS_radtend_type), intent(in) :: Radtend + type(GFS_diag_type), intent(in) :: Diag type(GFS_interstitial_type), intent(in) :: Interstitial(:) character(len=*), intent(out) :: errmsg integer, intent(out) :: errflg @@ -1039,9 +1063,8 @@ subroutine GFS_interstitialtoscreen_timestep_init (Model, Data, Interstitial, er do i=1,size(Interstitial) - call GFS_interstitialtoscreen_run (Model, Data(1)%Statein, Data(1)%Stateout, Data(1)%Sfcprop, & - Data(1)%Coupling, Data(1)%Grid, Data(1)%Tbd, Data(1)%Cldprop, & - Data(1)%Radtend, Data(1)%Intdiag, Interstitial(i), & + call GFS_interstitialtoscreen_run (Model, Statein, Stateout, Sfcprop, Coupling, & + Grid, Tbd, Cldprop, Radtend, Diag, Interstitial(i), & size(Interstitial), -999, errmsg, errflg) end do @@ -1060,14 +1083,6 @@ subroutine GFS_interstitialtoscreen_run (Model, Statein, Stateout, Sfcprop, Coup #ifdef _OPENMP use omp_lib #endif - use machine, only: kind_phys - use GFS_typedefs, only: GFS_control_type, GFS_statein_type, & - GFS_stateout_type, GFS_sfcprop_type, & - GFS_coupling_type, GFS_grid_type, & - GFS_tbd_type, GFS_cldprop_type, & - GFS_radtend_type, GFS_diag_type - use CCPP_typedefs, only: GFS_interstitial_type - implicit none !--- interface variables @@ -1293,7 +1308,6 @@ subroutine GFS_interstitialtoscreen_run (Model, Statein, Stateout, Sfcprop, Coup call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%qss_ice ', Interstitial%qss_ice ) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%qss_land ', Interstitial%qss_land ) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%qss_water ', Interstitial%qss_water ) - call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%radar_reset ', Interstitial%radar_reset ) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%raddt ', Interstitial%raddt ) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%raincd ', Interstitial%raincd ) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%raincs ', Interstitial%raincs ) @@ -1322,8 +1336,6 @@ subroutine GFS_interstitialtoscreen_run (Model, Statein, Stateout, Sfcprop, Coup call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%sigmafrac ', Interstitial%sigmafrac ) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%sigmatot ', Interstitial%sigmatot ) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%snowc ', Interstitial%snowc ) - call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%snowd_ice ', Interstitial%snowd_ice ) - call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%snowd_land ', Interstitial%snowd_land ) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%snohf ', Interstitial%snohf ) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%snowmt ', Interstitial%snowmt ) call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%stress ', Interstitial%stress ) @@ -1535,7 +1547,7 @@ module GFS_checkland !! \htmlinclude GFS_checkland_run.html !! subroutine GFS_checkland_run (me, master, blkno, im, kdt, iter, flag_iter, flag_guess, & - flag_init, flag_restart, frac_grid, isot, ivegsrc, stype,scolor, vtype, slope, & + flag_init, flag_restart, frac_grid, isot, ivegsrc, stype,scolor, vtype, slope, & dry, icy, wet, lake, ocean, oceanfrac, landfrac, lakefrac, slmsk, islmsk, & zorl, zorlw, zorll, zorli, fice, errmsg, errflg ) diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.meta index 10eb43671..0d12b2bbb 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.meta @@ -9,17 +9,73 @@ type = scheme [Model] standard_name = GFS_control_type_instance - long_name = instance of derived type GFS_control_type in FV3 + long_name = instance of derived type GFS_control_type units = DDT dimensions = () type = GFS_control_type intent = in -[Data] - standard_name = GFS_data_type_instance_all_blocks - long_name = instance of derived type GFS_data_type +[Statein] + standard_name = GFS_statein_type_instance + long_name = prognostic state data in from dycore + units = DDT + dimensions = () + type = GFS_statein_type + intent = in +[Stateout] + standard_name = GFS_stateout_type_instance + long_name = prognostic state or tendencies return to dycore + units = DDT + dimensions = () + type = GFS_stateout_type + intent = in +[Sfcprop] + standard_name = GFS_sfcprop_type_instance + long_name = instance of derived type GFS_sfcprop_type + units = DDT + dimensions = () + type = GFS_sfcprop_type + intent = in +[Coupling] + standard_name = GFS_coupling_type_instance + long_name = instance of derived type GFS_coupling_type + units = DDT + dimensions = () + type = GFS_coupling_type + intent = in +[Grid] + standard_name = GFS_grid_type_instance + long_name = instance of derived type GFS_grid_type + units = DDT + dimensions = () + type = GFS_grid_type + intent = in +[Tbd] + standard_name = GFS_tbd_type_instance + long_name = instance of derived type GFS_tbd_type + units = DDT + dimensions = () + type = GFS_tbd_type + intent = in +[Cldprop] + standard_name = GFS_cldprop_type_instance + long_name = instance of derived type GFS_cldprop_type + units = DDT + dimensions = () + type = GFS_cldprop_type + intent = in +[Radtend] + standard_name = GFS_radtend_type_instance + long_name = instance of derived type GFS_radtend_type units = DDT - dimensions = (ccpp_block_count) - type = GFS_data_type + dimensions = () + type = GFS_radtend_type + intent = in +[Diag] + standard_name = GFS_diag_type_instance + long_name = instance of derived type GFS_diag_type + units = DDT + dimensions = () + type = GFS_diag_type intent = in [Interstitial] standard_name = GFS_interstitial_type_instance_all_threads @@ -55,12 +111,68 @@ dimensions = () type = GFS_control_type intent = in -[Data] - standard_name = GFS_data_type_instance_all_blocks - long_name = instance of derived type GFS_data_type +[Statein] + standard_name = GFS_statein_type_instance + long_name = prognostic state data in from dycore + units = DDT + dimensions = () + type = GFS_statein_type + intent = in +[Stateout] + standard_name = GFS_stateout_type_instance + long_name = prognostic state or tendencies return to dycore + units = DDT + dimensions = () + type = GFS_stateout_type + intent = in +[Sfcprop] + standard_name = GFS_sfcprop_type_instance + long_name = instance of derived type GFS_sfcprop_type + units = DDT + dimensions = () + type = GFS_sfcprop_type + intent = in +[Coupling] + standard_name = GFS_coupling_type_instance + long_name = instance of derived type GFS_coupling_type + units = DDT + dimensions = () + type = GFS_coupling_type + intent = in +[Grid] + standard_name = GFS_grid_type_instance + long_name = instance of derived type GFS_grid_type units = DDT - dimensions = (ccpp_block_count) - type = GFS_data_type + dimensions = () + type = GFS_grid_type + intent = in +[Tbd] + standard_name = GFS_tbd_type_instance + long_name = instance of derived type GFS_tbd_type + units = DDT + dimensions = () + type = GFS_tbd_type + intent = in +[Cldprop] + standard_name = GFS_cldprop_type_instance + long_name = instance of derived type GFS_cldprop_type + units = DDT + dimensions = () + type = GFS_cldprop_type + intent = in +[Radtend] + standard_name = GFS_radtend_type_instance + long_name = instance of derived type GFS_radtend_type + units = DDT + dimensions = () + type = GFS_radtend_type + intent = in +[Diag] + standard_name = GFS_diag_type_instance + long_name = instance of derived type GFS_diag_type + units = DDT + dimensions = () + type = GFS_diag_type intent = in [Interstitial] standard_name = GFS_interstitial_type_instance_all_threads @@ -213,12 +325,68 @@ dimensions = () type = GFS_control_type intent = in -[Data] - standard_name = GFS_data_type_instance_all_blocks - long_name = instance of derived type GFS_data_type +[Statein] + standard_name = GFS_statein_type_instance + long_name = prognostic state data in from dycore + units = DDT + dimensions = () + type = GFS_statein_type + intent = in +[Stateout] + standard_name = GFS_stateout_type_instance + long_name = prognostic state or tendencies return to dycore + units = DDT + dimensions = () + type = GFS_stateout_type + intent = in +[Sfcprop] + standard_name = GFS_sfcprop_type_instance + long_name = instance of derived type GFS_sfcprop_type + units = DDT + dimensions = () + type = GFS_sfcprop_type + intent = in +[Coupling] + standard_name = GFS_coupling_type_instance + long_name = instance of derived type GFS_coupling_type + units = DDT + dimensions = () + type = GFS_coupling_type + intent = in +[Grid] + standard_name = GFS_grid_type_instance + long_name = instance of derived type GFS_grid_type + units = DDT + dimensions = () + type = GFS_grid_type + intent = in +[Tbd] + standard_name = GFS_tbd_type_instance + long_name = instance of derived type GFS_tbd_type + units = DDT + dimensions = () + type = GFS_tbd_type + intent = in +[Cldprop] + standard_name = GFS_cldprop_type_instance + long_name = instance of derived type GFS_cldprop_type + units = DDT + dimensions = () + type = GFS_cldprop_type + intent = in +[Radtend] + standard_name = GFS_radtend_type_instance + long_name = instance of derived type GFS_radtend_type units = DDT - dimensions = (ccpp_block_count) - type = GFS_data_type + dimensions = () + type = GFS_radtend_type + intent = in +[Diag] + standard_name = GFS_diag_type_instance + long_name = instance of derived type GFS_diag_type + units = DDT + dimensions = () + type = GFS_diag_type intent = in [Interstitial] standard_name = GFS_interstitial_type_instance_all_threads @@ -254,12 +422,68 @@ dimensions = () type = GFS_control_type intent = in -[Data] - standard_name = GFS_data_type_instance_all_blocks - long_name = instance of derived type GFS_data_type +[Statein] + standard_name = GFS_statein_type_instance + long_name = prognostic state data in from dycore + units = DDT + dimensions = () + type = GFS_statein_type + intent = in +[Stateout] + standard_name = GFS_stateout_type_instance + long_name = prognostic state or tendencies return to dycore + units = DDT + dimensions = () + type = GFS_stateout_type + intent = in +[Sfcprop] + standard_name = GFS_sfcprop_type_instance + long_name = instance of derived type GFS_sfcprop_type units = DDT - dimensions = (ccpp_block_count) - type = GFS_data_type + dimensions = () + type = GFS_sfcprop_type + intent = in +[Coupling] + standard_name = GFS_coupling_type_instance + long_name = instance of derived type GFS_coupling_type + units = DDT + dimensions = () + type = GFS_coupling_type + intent = in +[Grid] + standard_name = GFS_grid_type_instance + long_name = instance of derived type GFS_grid_type + units = DDT + dimensions = () + type = GFS_grid_type + intent = in +[Tbd] + standard_name = GFS_tbd_type_instance + long_name = instance of derived type GFS_tbd_type + units = DDT + dimensions = () + type = GFS_tbd_type + intent = in +[Cldprop] + standard_name = GFS_cldprop_type_instance + long_name = instance of derived type GFS_cldprop_type + units = DDT + dimensions = () + type = GFS_cldprop_type + intent = in +[Radtend] + standard_name = GFS_radtend_type_instance + long_name = instance of derived type GFS_radtend_type + units = DDT + dimensions = () + type = GFS_radtend_type + intent = in +[Diag] + standard_name = GFS_diag_type_instance + long_name = instance of derived type GFS_diag_type + units = DDT + dimensions = () + type = GFS_diag_type intent = in [Interstitial] standard_name = GFS_interstitial_type_instance_all_threads From 300651200d058ae7c779ec2339c78619c08bfbc3 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Sun, 12 May 2024 20:23:05 -0600 Subject: [PATCH 68/80] Update MPI communicator in GFS_debug.F90 --- .../UFS_SCM_NEPTUNE/GFS_debug.F90 | 22 ++++++++----------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.F90 index e4caf708b..cdd3d8e2b 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.F90 @@ -426,7 +426,7 @@ subroutine GFS_diagtoscreen_run (Model, Statein, Stateout, Sfcprop, Coupling, !--- local variables integer :: impi, iomp, ierr, n, idtend, iprocess, itracer - integer :: mpirank, mpisize, mpicomm + integer :: mpirank, mpisize integer :: omprank, ompsize ! Initialize CCPP error handling variables @@ -434,13 +434,11 @@ subroutine GFS_diagtoscreen_run (Model, Statein, Stateout, Sfcprop, Coupling, errflg = 0 #ifdef MPI - mpicomm = Model%communicator mpirank = Model%me mpisize = Model%ntasks #else mpirank = 0 mpisize = 1 - mpicomm = 0 #endif #ifdef _OPENMP omprank = OMP_GET_THREAD_NUM() @@ -454,7 +452,7 @@ subroutine GFS_diagtoscreen_run (Model, Statein, Stateout, Sfcprop, Coupling, !$OMP BARRIER #endif #ifdef MPI -! call MPI_BARRIER(mpicomm,ierr) +! call MPI_BARRIER(Model%communicator,ierr) #endif do impi=0,mpisize-1 @@ -952,7 +950,7 @@ subroutine GFS_diagtoscreen_run (Model, Statein, Stateout, Sfcprop, Coupling, #endif end do #ifdef MPI -! call MPI_BARRIER(mpicomm,ierr) +! call MPI_BARRIER(Model%communicator,ierr) #endif end do @@ -960,7 +958,7 @@ subroutine GFS_diagtoscreen_run (Model, Statein, Stateout, Sfcprop, Coupling, !$OMP BARRIER #endif #ifdef MPI -! call MPI_BARRIER(mpicomm,ierr) +! call MPI_BARRIER(Model%communicator,ierr) #endif end subroutine GFS_diagtoscreen_run @@ -1104,7 +1102,7 @@ subroutine GFS_interstitialtoscreen_run (Model, Statein, Stateout, Sfcprop, Coup !--- local variables integer :: impi, iomp, ierr - integer :: mpirank, mpisize, mpicomm + integer :: mpirank, mpisize integer :: omprank, ompsize integer :: istart, iend, kstart, kend @@ -1113,13 +1111,11 @@ subroutine GFS_interstitialtoscreen_run (Model, Statein, Stateout, Sfcprop, Coup errflg = 0 #ifdef MPI - mpicomm = Model%communicator mpirank = Model%me - call MPI_COMM_SIZE(mpicomm, mpisize, ierr) + call MPI_COMM_SIZE(Model%communicator, mpisize, ierr) #else mpirank = 0 mpisize = 1 - mpicomm = 0 #endif #ifdef _OPENMP omprank = OMP_GET_THREAD_NUM() @@ -1133,7 +1129,7 @@ subroutine GFS_interstitialtoscreen_run (Model, Statein, Stateout, Sfcprop, Coup !$OMP BARRIER #endif #ifdef MPI -! call MPI_BARRIER(mpicomm,ierr) +! call MPI_BARRIER(Model%communicator,ierr) #endif do impi=0,mpisize-1 @@ -1482,7 +1478,7 @@ subroutine GFS_interstitialtoscreen_run (Model, Statein, Stateout, Sfcprop, Coup #endif end do #ifdef MPI -! call MPI_BARRIER(mpicomm,ierr) +! call MPI_BARRIER(Model%communicator,ierr) #endif end do @@ -1490,7 +1486,7 @@ subroutine GFS_interstitialtoscreen_run (Model, Statein, Stateout, Sfcprop, Coup !$OMP BARRIER #endif #ifdef MPI -! call MPI_BARRIER(mpicomm,ierr) +! call MPI_BARRIER(Model%communicator,ierr) #endif end subroutine GFS_interstitialtoscreen_run From 0f1f087e6e4bf04d0ed34d0e33c39aeb925c34b0 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Mon, 3 Jun 2024 16:54:21 -0600 Subject: [PATCH 69/80] Bug fixes in Thompson MP and CLM Lake found by Dusan --- physics/MP/Thompson/module_mp_thompson.F90 | 2 +- physics/MP/Thompson/mp_thompson.F90 | 2 +- physics/SFC_Models/Lake/CLM/clm_lake.f90 | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/physics/MP/Thompson/module_mp_thompson.F90 b/physics/MP/Thompson/module_mp_thompson.F90 index c19df1eaa..27d8a705d 100644 --- a/physics/MP/Thompson/module_mp_thompson.F90 +++ b/physics/MP/Thompson/module_mp_thompson.F90 @@ -1048,7 +1048,7 @@ SUBROUTINE mp_gt_driver(qv, qc, qr, qi, qs, qg, ni, nr, nc, & INTEGER, INTENT(IN) :: rand_perturb_on, kme_stoch, n_var_spp REAL, DIMENSION(:,:), INTENT(IN), OPTIONAL :: rand_pert REAL, DIMENSION(:), INTENT(IN), OPTIONAL :: spp_prt_list - REAL, DIMENSION(:), INTENT(IN) :: spp_stddev_cutoff + REAL, DIMENSION(:), INTENT(IN), OPTIONAL :: spp_stddev_cutoff CHARACTER(len=10), DIMENSION(:), INTENT(IN), OPTIONAL :: spp_var_list INTEGER, INTENT(IN):: has_reqc, has_reqi, has_reqs #if ( WRF_CHEM == 1 ) diff --git a/physics/MP/Thompson/mp_thompson.F90 b/physics/MP/Thompson/mp_thompson.F90 index 6bc6bcb98..4306c1816 100644 --- a/physics/MP/Thompson/mp_thompson.F90 +++ b/physics/MP/Thompson/mp_thompson.F90 @@ -414,7 +414,7 @@ subroutine mp_thompson_run(ncol, nlev, con_g, con_rd, & real(kind_phys), intent(in), optional :: spp_wts_mp(:,:) real(kind_phys), intent(in), optional :: spp_prt_list(:) character(len=10), intent(in), optional :: spp_var_list(:) - real(kind_phys), intent(in) :: spp_stddev_cutoff(:) + real(kind_phys), intent(in), optional :: spp_stddev_cutoff(:) logical, intent (in) :: cplchm ! ice and liquid water 3d precipitation fluxes - only allocated if cplchm is .true. diff --git a/physics/SFC_Models/Lake/CLM/clm_lake.f90 b/physics/SFC_Models/Lake/CLM/clm_lake.f90 index c004e6c32..9f8a57479 100644 --- a/physics/SFC_Models/Lake/CLM/clm_lake.f90 +++ b/physics/SFC_Models/Lake/CLM/clm_lake.f90 @@ -5389,7 +5389,8 @@ SUBROUTINE lakeini(kdt, ISLTYP, gt0, snowd, INTEGER, DIMENSION(IM), INTENT(IN) :: ISLTYP REAL(KIND_PHYS), DIMENSION(IM), INTENT(INOUT) :: snowd,weasd - REAL(kind_phys), DIMENSION(IM,KM), INTENT(IN) :: gt0, prsi + REAL(kind_phys), DIMENSION(IM,KM), INTENT(IN) :: gt0 + REAL(kind_phys), DIMENSION(IM,KM+1), INTENT(IN) :: prsi real(kind_phys), intent(in) :: lakedepth_default real(kind_phys), dimension(IM),intent(inout) :: clm_lakedepth From cc89a9bda6a1da4553d074cb572d903180c06c68 Mon Sep 17 00:00:00 2001 From: Dom Heinzeller Date: Wed, 12 Jun 2024 18:21:54 -0600 Subject: [PATCH 70/80] Use assumed-size arrays in lakeini routine in physics/SFC_Models/Lake/CLM/clm_lake.f90 and remove OPTIONAL keyword from Fortran code to fix intel 19 runtime issues --- physics/SFC_Models/Lake/CLM/clm_lake.f90 | 60 +++++++++++------------- 1 file changed, 28 insertions(+), 32 deletions(-) diff --git a/physics/SFC_Models/Lake/CLM/clm_lake.f90 b/physics/SFC_Models/Lake/CLM/clm_lake.f90 index 9f8a57479..6dd973c8d 100644 --- a/physics/SFC_Models/Lake/CLM/clm_lake.f90 +++ b/physics/SFC_Models/Lake/CLM/clm_lake.f90 @@ -317,7 +317,7 @@ SUBROUTINE clm_lake_run( & REAL(KIND_PHYS), INTENT(IN) :: min_lakeice, lakedepth_default, dtp LOGICAL, INTENT(IN) :: use_lakedepth INTEGER, DIMENSION(:), INTENT(IN) :: use_lake_model - REAL(KIND_PHYS), INTENT(INOUT), OPTIONAL :: clm_lake_initialized(:) + REAL(KIND_PHYS), INTENT(INOUT) :: clm_lake_initialized(:) LOGICAL, INTENT(IN) :: frac_grid, frac_ice ! @@ -327,7 +327,7 @@ SUBROUTINE clm_lake_run( & tg3, pgr, zlvl, qvcurr, xlat_d, xlon_d, ch, cm, & dlwsfci, dswsfci, oro_lakedepth, wind, & t1, qv1, prsl1 - REAL(KIND_PHYS), DIMENSION(:), INTENT(IN), OPTIONAL :: & + REAL(KIND_PHYS), DIMENSION(:), INTENT(IN) :: & rainncprv, raincprv REAL(KIND_PHYS), DIMENSION(:,:), INTENT(in) :: gu0, gv0, prsi, gt0, phii LOGICAL, DIMENSION(:), INTENT(IN) :: flag_iter @@ -344,34 +344,34 @@ SUBROUTINE clm_lake_run( & weasdi, snodi, hice, qss_water, qss_ice, & cmm_water, cmm_ice, chh_water, chh_ice, & uustar_water, uustar_ice, zorlw, zorli, weasd, snowd, fice - REAL(KIND_PHYS), DIMENSION(:), INTENT(INOUT) , OPTIONAL :: & + REAL(KIND_PHYS), DIMENSION(:), INTENT(INOUT) :: & lake_t_snow, albedo, lake_t2m, lake_q2m LOGICAL, INTENT(INOUT) :: icy(:) ! ! Lake model internal state stored by caller: ! - INTEGER, DIMENSION( : ), INTENT(INOUT), OPTIONAL :: salty - INTEGER, DIMENSION( : ), INTENT(INOUT), OPTIONAL :: cannot_freeze + INTEGER, DIMENSION( : ), INTENT(INOUT) :: salty + INTEGER, DIMENSION( : ), INTENT(INOUT) :: cannot_freeze - real(kind_phys), dimension(: ), OPTIONAL ,intent(inout) :: savedtke12d, & + real(kind_phys), dimension(: ) ,intent(inout) :: savedtke12d, & snowdp2d, & h2osno2d, & snl2d, & t_grnd2d - real(kind_phys), dimension( :,: ), OPTIONAL, INTENT(inout) :: t_lake3d, & + real(kind_phys), dimension( :,: ), INTENT(inout) :: t_lake3d, & lake_icefrac3d - real(kind_phys), dimension( :,-nlevsnow+1: ) ,INTENT(inout), OPTIONAL :: t_soisno3d, & + real(kind_phys), dimension( :,-nlevsnow+1: ) ,INTENT(inout) :: t_soisno3d, & h2osoi_ice3d, & h2osoi_liq3d, & h2osoi_vol3d, & z3d, & dz3d - real(kind_phys), dimension( :,-nlevsnow+0: ) ,INTENT(inout), OPTIONAL :: zi3d + real(kind_phys), dimension( :,-nlevsnow+0: ) ,INTENT(inout) :: zi3d - REAL(KIND_PHYS), DIMENSION( : ) ,INTENT(INOUT), OPTIONAL :: clm_lakedepth - REAL(KIND_PHYS), DIMENSION( : ) ,INTENT(INOUT), OPTIONAL :: input_lakedepth + REAL(KIND_PHYS), DIMENSION( : ) ,INTENT(INOUT) :: clm_lakedepth + REAL(KIND_PHYS), DIMENSION( : ) ,INTENT(INOUT) :: input_lakedepth ! ! Error reporting: @@ -5378,43 +5378,39 @@ SUBROUTINE lakeini(kdt, ISLTYP, gt0, snowd, INTEGER , INTENT (IN) :: im, me, master, km, kdt REAL(KIND_PHYS), INTENT(IN) :: min_lakeice, fhour - REAL(KIND_PHYS), DIMENSION(IM), INTENT(INOUT):: FICE, hice - REAL(KIND_PHYS), DIMENSION(IM), INTENT(IN):: TG3, xlat_d, xlon_d - REAL(KIND_PHYS), DIMENSION(IM), INTENT(IN):: tsfc - REAL(KIND_PHYS), DIMENSION(IM) ,INTENT(INOUT) :: clm_lake_initialized - integer, dimension(IM), intent(in) :: use_lake_model - !INTEGER , INTENT (IN) :: lakeflag - !INTEGER , INTENT (INOUT) :: lake_depth_flag + REAL(KIND_PHYS), DIMENSION(:), INTENT(INOUT):: FICE, hice + REAL(KIND_PHYS), DIMENSION(:), INTENT(IN):: TG3, xlat_d, xlon_d + REAL(KIND_PHYS), DIMENSION(:), INTENT(IN):: tsfc + REAL(KIND_PHYS), DIMENSION(:) ,INTENT(INOUT) :: clm_lake_initialized + integer, dimension(:), intent(in) :: use_lake_model LOGICAL, INTENT (IN) :: use_lakedepth - INTEGER, DIMENSION(IM), INTENT(IN) :: ISLTYP - REAL(KIND_PHYS), DIMENSION(IM), INTENT(INOUT) :: snowd,weasd - REAL(kind_phys), DIMENSION(IM,KM), INTENT(IN) :: gt0 - REAL(kind_phys), DIMENSION(IM,KM+1), INTENT(IN) :: prsi + INTEGER, DIMENSION(:), INTENT(IN) :: ISLTYP + REAL(KIND_PHYS), DIMENSION(:), INTENT(INOUT) :: snowd,weasd + REAL(kind_phys), DIMENSION(:,:), INTENT(IN) :: gt0 + REAL(kind_phys), DIMENSION(:,:), INTENT(IN) :: prsi real(kind_phys), intent(in) :: lakedepth_default - real(kind_phys), dimension(IM),intent(inout) :: clm_lakedepth - real(kind_phys), dimension(IM),intent(inout) :: input_lakedepth - real(kind_phys), dimension(IM),intent(in) :: oro_lakedepth - real(kind_phys), dimension(IM),intent(out) :: savedtke12d - real(kind_phys), dimension(IM),intent(out) :: snowdp2d, & + real(kind_phys), dimension(:),intent(inout) :: clm_lakedepth + real(kind_phys), dimension(:),intent(inout) :: input_lakedepth + real(kind_phys), dimension(:),intent(in) :: oro_lakedepth + real(kind_phys), dimension(:),intent(out) :: savedtke12d + real(kind_phys), dimension(:),intent(out) :: snowdp2d, & h2osno2d, & snl2d, & t_grnd2d - real(kind_phys), dimension(IM,nlevlake),INTENT(out) :: t_lake3d, & + real(kind_phys), dimension(:,:),INTENT(out) :: t_lake3d, & lake_icefrac3d - real(kind_phys), dimension(IM,-nlevsnow+1:nlevsoil ),INTENT(out) :: t_soisno3d, & + real(kind_phys), dimension(:,-nlevsnow+1:),INTENT(out) :: t_soisno3d, & h2osoi_ice3d, & h2osoi_liq3d, & h2osoi_vol3d, & z3d, & dz3d - real(kind_phys), dimension( IM,-nlevsnow+0:nlevsoil ),INTENT(out) :: zi3d + real(kind_phys), dimension(:,-nlevsnow+0:),INTENT(out) :: zi3d - !LOGICAL, DIMENSION( : ),intent(out) :: lake - !REAL(KIND_PHYS), OPTIONAL, DIMENSION( : ), INTENT(IN) :: lake_depth ! no separate variable for this in CCPP integer :: n,i,j,k,ib,lev,bottom ! indices real(kind_lake),dimension(1:im ) :: bd2d ! bulk density of dry soil material [kg/m^3] From bbe11c3b60e1c65b9518b8d318534c5cb2728967 Mon Sep 17 00:00:00 2001 From: Grant Firl Date: Thu, 17 Oct 2024 15:06:32 -0400 Subject: [PATCH 71/80] fix formatting for some land variables from real to integer --- physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.F90 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.F90 index cdd3d8e2b..2b5ce1c89 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.F90 @@ -1611,11 +1611,11 @@ subroutine GFS_checkland_run (me, master, blkno, im, kdt, iter, flag_iter, flag_ !if (vegtype(i)==15) then write(0,'(a,2i5,1x,1x,l)') 'YYY: i, blk, flag_iter(i) :', i, blkno, flag_iter(i) write(0,'(a,2i5,1x,1x,l)') 'YYY: i, blk, flag_guess(i) :', i, blkno, flag_guess(i) - write(0,'(a,2i5,1x,e16.7)')'YYY: i, blk, stype(i) :', i, blkno, stype(i) + write(0,'(a,2i5,1x,i5)') 'YYY: i, blk, stype(i) :', i, blkno, stype(i) - write(0,'(a,2i5,1x,e16.7)')'YYY: i, blk, scolor(i) :', i, blkno, scolor(i) - write(0,'(a,2i5,1x,e16.7)')'YYY: i, blk, vtype(i) :', i, blkno, vtype(i) - write(0,'(a,2i5,1x,e16.7)')'YYY: i, blk, slope(i) :', i, blkno, slope(i) + write(0,'(a,2i5,1x,i5)') 'YYY: i, blk, scolor(i) :', i, blkno, scolor(i) + write(0,'(a,2i5,1x,i5)') 'YYY: i, blk, vtype(i) :', i, blkno, vtype(i) + write(0,'(a,2i5,1x,i5)') 'YYY: i, blk, slope(i) :', i, blkno, slope(i) write(0,'(a,2i5,1x,1x,l)') 'YYY: i, blk, dry(i) :', i, blkno, dry(i) write(0,'(a,2i5,1x,1x,l)') 'YYY: i, blk, icy(i) :', i, blkno, icy(i) write(0,'(a,2i5,1x,1x,l)') 'YYY: i, blk, wet(i) :', i, blkno, wet(i) From 69aacf5bb4400b0946c5bd81bf40ab9c6c8b5e27 Mon Sep 17 00:00:00 2001 From: Grant Firl Date: Thu, 17 Oct 2024 16:59:13 -0400 Subject: [PATCH 72/80] fix typo in GFS_phys_time_vary.scm.F90 --- .../Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.scm.F90 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.scm.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.scm.F90 index 9f71788e0..35b46618c 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.scm.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.scm.F90 @@ -245,7 +245,7 @@ subroutine GFS_phys_time_vary_init ( !> - Call setindxh2o() to initialize stratospheric water vapor data if (h2o_phys) then - call h2ophys%setup_h2oprog(xlat_d, jindx1_h, jindx2_h, ddy_h) + call h2ophys%setup(xlat_d, jindx1_h, jindx2_h, ddy_h) endif !> - Call setindxaer() to initialize aerosols data @@ -786,7 +786,7 @@ subroutine GFS_phys_time_vary_timestep_init ( !> - Update stratospheric h2o concentration. if (h2o_phys) then - call h2ophys%update_h2oprog(jindx1_h, jindx2_h, ddy_h, rjday, n1, n2, h2opl) + call h2ophys%update(jindx1_h, jindx2_h, ddy_h, rjday, n1, n2, h2opl) endif !> - Call ciinterpol() to make IN and CCN data interpolation From b0a9f567ab8d05ee38fcae1a068191a081b875e4 Mon Sep 17 00:00:00 2001 From: masih Date: Wed, 18 Oct 2023 15:18:32 -0600 Subject: [PATCH 73/80] add fire behavior tendencies to physics * added hflx_fire and evap_fire to GFS_surface_composite_post * added cpl_fire flag --- .../GFS_surface_composites_post.F90 | 14 +++++++---- .../GFS_surface_composites_post.meta | 23 +++++++++++++++++++ 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.F90 index 01617aa1b..76599d475 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.F90 @@ -23,22 +23,22 @@ module GFS_surface_composites_post !! \htmlinclude GFS_surface_composites_post_run.html !! subroutine GFS_surface_composites_post_run ( & - im, kice, km, rd, rvrdm1, cplflx, cplwav2atm, frac_grid, flag_cice, thsfc_loc, islmsk, dry, wet, icy, wind, t1, q1, prsl1, & + im, kice, km, rd, rvrdm1, cplflx, cplwav2atm, cpl_fire, frac_grid, flag_cice, thsfc_loc, islmsk, dry, wet, icy, wind, t1, q1, prsl1, & landfrac, lakefrac, oceanfrac, zorl, zorlo, zorll, zorli, garea, frac_ice, & cd, cd_wat, cd_lnd, cd_ice, cdq, cdq_wat, cdq_lnd, cdq_ice, rb, rb_wat, rb_lnd, rb_ice, stress, stress_wat, stress_lnd, & stress_ice, ffmm, ffmm_wat, ffmm_lnd, ffmm_ice, ffhh, ffhh_wat, ffhh_lnd, ffhh_ice, uustar, uustar_wat, uustar_lnd, & uustar_ice, fm10, fm10_wat, fm10_lnd, fm10_ice, fh2, fh2_wat, fh2_lnd, fh2_ice, tsurf_wat, tsurf_lnd, tsurf_ice, & cmm, cmm_wat, cmm_lnd, cmm_ice, chh, chh_wat, chh_lnd, chh_ice, gflx, gflx_wat, gflx_lnd, gflx_ice, ep1d, ep1d_wat, & ep1d_lnd, ep1d_ice, weasd, weasd_lnd, weasd_ice, snowd, snowd_lnd, snowd_ice, tprcp, tprcp_wat, & - tprcp_lnd, tprcp_ice, evap, evap_wat, evap_lnd, evap_ice, hflx, hflx_wat, hflx_lnd, hflx_ice, qss, qss_wat, qss_lnd, & - qss_ice, tsfc, tsfco, tsfcl, tsfc_wat, tisfc, hice, cice, tiice, & + tprcp_lnd, tprcp_ice, evap, evap_wat, evap_lnd, evap_ice, hflx, hflx_wat, hflx_lnd, hflx_ice, hflx_fire, evap_fire, & + qss, qss_wat, qss_lnd, qss_ice, tsfc, tsfco, tsfcl, tsfc_wat, tisfc, hice, cice, tiice, & sigmaf, zvfun, lheatstrg, h0facu, h0facs, hflxq, hffac, stc, lkm, iopt_lake, iopt_lake_clm, use_lake_model, & grav, prsik1, prslk1, prslki, z1, ztmax_wat, ztmax_lnd, ztmax_ice, huge, errmsg, errflg) implicit none integer, intent(in) :: im, kice, km, lkm, iopt_lake, iopt_lake_clm - logical, intent(in) :: cplflx, frac_grid, cplwav2atm, frac_ice + logical, intent(in) :: cplflx, frac_grid, cplwav2atm, frac_ice, cpl_fire logical, intent(in) :: lheatstrg logical, dimension(:), intent(in) :: flag_cice, dry, icy logical, dimension(:), intent(in) :: wet @@ -49,7 +49,7 @@ subroutine GFS_surface_composites_post_run ( fm10_wat, fm10_lnd, fm10_ice, fh2_wat, fh2_lnd, fh2_ice, tsurf_wat, tsurf_lnd, tsurf_ice, cmm_wat, cmm_lnd, cmm_ice, & chh_wat, chh_lnd, chh_ice, gflx_wat, gflx_lnd, gflx_ice, ep1d_wat, ep1d_lnd, ep1d_ice, weasd_lnd, weasd_ice, & snowd_lnd, snowd_ice, tprcp_wat, tprcp_lnd, tprcp_ice, evap_wat, evap_lnd, evap_ice, hflx_wat, hflx_lnd, & - hflx_ice, qss_wat, qss_lnd, qss_ice, tsfc_wat, zorlo, zorll, zorli, garea + hflx_ice, hflx_fire, evap_fire, qss_wat, qss_lnd, qss_ice, tsfc_wat, zorlo, zorll, zorli, garea real(kind=kind_phys), dimension(:), intent(inout) :: zorl, cd, cdq, rb, stress, ffmm, ffhh, uustar, fm10, & fh2, cmm, chh, gflx, ep1d, weasd, snowd, tprcp, evap, hflx, qss, tsfc, tsfco, tsfcl, tisfc @@ -275,6 +275,10 @@ subroutine GFS_surface_composites_post_run ( else if (islmsk(i) == 1) then !-- land call composite_land + if (cpl_fire) then + hflx(i) = hflx(i) + hflx_fire(i) + evap(i) = evap(i) + evap_fire(i) + endif elseif (islmsk(i) == 0) then !-- water call composite_wet diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.meta index 7224d7221..e4a364e04 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.meta @@ -816,6 +816,29 @@ type = real kind = kind_phys intent = in +[hflx_fire] + standard_name = kinematic_surface_upward_sensible_heat_flux_of_fire + long_name = kinematic surface upward sensible heat flux of fire + units = K m s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in +[evap_fire] + standard_name = surface_upward_specific_humidity_flux_of_fire + long_name = kinematic surface upward latent heat flux of fire + units = kg kg-1 m s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in +[cpl_fire] + standard_name = do_fire_coupling + long_name = flag controlling fire_behavior collection (default off) + units = flag + dimensions = () + type = logical + intent = in [qss] standard_name = surface_specific_humidity long_name = surface air saturation specific humidity From 6bd60229f92c7b7ece518d8d55a6fe5d0cc5f3d3 Mon Sep 17 00:00:00 2001 From: masih Date: Tue, 2 Jan 2024 15:30:57 -0700 Subject: [PATCH 74/80] fire_behavior smoke coupling * added fsmoke tracer * added surface emissions to fsmoke in rrfs_smoke_wrapper --- physics/smoke_dust/rrfs_smoke_wrapper.F90 | 27 ++++++++++++++++---- physics/smoke_dust/rrfs_smoke_wrapper.meta | 29 ++++++++++++++++++++++ 2 files changed, 51 insertions(+), 5 deletions(-) diff --git a/physics/smoke_dust/rrfs_smoke_wrapper.F90 b/physics/smoke_dust/rrfs_smoke_wrapper.F90 index 5a47f1f72..ebb286ed5 100755 --- a/physics/smoke_dust/rrfs_smoke_wrapper.F90 +++ b/physics/smoke_dust/rrfs_smoke_wrapper.F90 @@ -109,28 +109,30 @@ end subroutine rrfs_smoke_wrapper_init !! !>\section rrfs_smoke_wrapper rrfs-sd Scheme General Algorithm !> @{ - subroutine rrfs_smoke_wrapper_run(im, kte, kme, ktau, dt, garea, land, jdate, & + subroutine rrfs_smoke_wrapper_run(im, flag_init, kte, kme, ktau, dt, garea, land, jdate, & u10m, v10m, ustar, rlat, rlon, tskin, pb2d, t2m, dpt2m, & pr3d, ph3d,phl3d, prl3d, tk3d, us3d, vs3d, spechum, w, & nsoil, smc, tslb, vegtype_dom, vegtype_frac, soiltyp, nlcat, & - dswsfc, zorl, snow, julian,recmol, & + dswsfc, zorl, snow, julian, recmol, & idat, rain_cpl, rainc_cpl, hf2d, g, pi, con_cp, con_rd, con_fv, & dust12m_in, emi_ant_in, smoke_RRFS, smoke2d_RRFS, & ntrac, qgrs, gq0, chem3d, tile_num, & - ntsmoke, ntdust, ntcoarsepm, imp_physics, imp_physics_thompson, & + ntfsmoke, ntsmoke, ntdust, ntcoarsepm, & + imp_physics, imp_physics_thompson, & nwfa, nifa, emanoc, emdust, emseas, drydep_flux_out, wetdpr, & ebb_smoke_in, frp_output, coef_bb, fire_type_out, & ebu_smoke,fhist,min_fplume, & max_fplume, hwp, hwp_ave, wetness, ndvel, ddvel_inout, & + smoke_fire, cpl_fire, & peak_hr_out,lu_nofire_out,lu_qfire_out, & fire_heat_flux_out, frac_grid_burned_out, kpbl,oro, & uspdavg, hpbl_thetav, mpicomm, mpirank, mpiroot, errmsg,errflg ) - implicit none integer, intent(in) :: im,kte,kme,ktau,nsoil,tile_num,jdate(8),idat(8) - integer, intent(in) :: ntrac, ntsmoke, ntdust, ntcoarsepm, ndvel, nlcat + integer, intent(in) :: ntrac, ntfsmoke, ntsmoke, ntdust, ntcoarsepm, ndvel, nlcat + logical, intent(in) :: flag_init real(kind_phys),intent(in) :: dt, julian, g, pi, con_cp, con_rd, con_fv integer, parameter :: ids=1,jds=1,jde=1, kds=1 @@ -165,6 +167,8 @@ subroutine rrfs_smoke_wrapper_run(im, kte, kme, ktau, dt, garea, land, jdate, real(kind_phys), dimension(:), intent(in), optional :: wetness real(kind_phys), dimension(:), intent(out), optional :: lu_nofire_out,lu_qfire_out integer, dimension(:), intent(out), optional :: fire_type_out + real(kind_phys), dimension(:), intent(in), optional :: smoke_fire + logical, intent(in) :: cpl_fire integer, intent(in) :: imp_physics, imp_physics_thompson integer, dimension(:), intent(in) :: kpbl real(kind_phys), dimension(:), intent(in) :: oro @@ -234,6 +238,19 @@ subroutine rrfs_smoke_wrapper_run(im, kte, kme, ktau, dt, garea, land, jdate, errmsg = '' errflg = 0 + if (cpl_fire) then + if (flag_init) then + do i=1,im + do k=kts,kte + qgrs(i,k,ntfsmoke) = 0. + end do + end do + endif + do i=1,im + qgrs(i,kts,ntfsmoke) = qgrs(i,kts,ntfsmoke) + smoke_fire(i) + end do + endif + if (.not. do_rrfs_sd) return ! -- set domain diff --git a/physics/smoke_dust/rrfs_smoke_wrapper.meta b/physics/smoke_dust/rrfs_smoke_wrapper.meta index c7afc1d97..0929c8be3 100755 --- a/physics/smoke_dust/rrfs_smoke_wrapper.meta +++ b/physics/smoke_dust/rrfs_smoke_wrapper.meta @@ -200,6 +200,13 @@ dimensions = () type = integer intent = in +[flag_init] + standard_name = flag_for_first_timestep + long_name = flag signaling first time step for time integration loop + units = flag + dimensions = () + type = logical + intent = in [kte] standard_name = vertical_layer_dimension long_name = vertical layer dimension @@ -642,6 +649,13 @@ dimensions = () type = integer intent = in +[ntfsmoke] + standard_name = index_for_fire_smoke_in_tracer_concentration_array + long_name = tracer index for fire smoke + units = index + dimensions = () + type = integer + intent = in [ntdust] standard_name = index_for_dust_in_tracer_concentration_array long_name = tracer index for dust @@ -946,6 +960,21 @@ type = real kind = kind_phys intent = in +[smoke_fire] + standard_name = smoke_emission_of_fire + long_name = smoke emission of fire + units = kg m-2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in +[cpl_fire] + standard_name = do_fire_coupling + long_name = flag controlling fire_behavior collection (default off) + units = flag + dimensions = () + type = logical + intent = in [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP From ba18577057e0a07012610e015792ea915366592b Mon Sep 17 00:00:00 2001 From: masih Date: Mon, 20 May 2024 10:56:40 -0600 Subject: [PATCH 75/80] added fire flag for t2, q2 and surface pres --- .../GFS_surface_generic_post.F90 | 17 +++++++++++++---- .../GFS_surface_generic_post.meta | 7 +++++++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_generic_post.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_generic_post.F90 index 8e3e0fdbf..648f6bf81 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_generic_post.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_generic_post.F90 @@ -45,7 +45,7 @@ end subroutine GFS_surface_generic_post_init !> \section arg_table_GFS_surface_generic_post_run Argument Table !! \htmlinclude GFS_surface_generic_post_run.html !! - subroutine GFS_surface_generic_post_run (im, cplflx, cplaqm, cplchm, cplwav, cpllnd, lssav, dry, icy, wet, & + subroutine GFS_surface_generic_post_run (im, cplflx, cplaqm, cplchm, cplwav, cpllnd, cpl_fire, lssav, dry, icy, wet, & lsm, lsm_noahmp, dtf, ep1d, gflx, tgrs_1, qgrs_1, ugrs_1, vgrs_1, & adjsfcdlw, adjsfcdsw, adjnirbmd, adjnirdfd, adjvisbmd, adjvisdfd, adjsfculw, adjsfculw_wat, adjnirbmu, adjnirdfu, & adjvisbmu, adjvisdfu, t2m, q2m, u10m, v10m, tsfc, tsfc_wat, pgr, xcosz, evbs, evcw, trans, sbsno, snowc, snohf, pah, pahi, & @@ -59,7 +59,7 @@ subroutine GFS_surface_generic_post_run (im, cplflx, cplaqm, cplchm, cplwav, cpl implicit none integer, intent(in) :: im - logical, intent(in) :: cplflx, cplaqm, cplchm, cplwav, cpllnd, lssav + logical, intent(in) :: cplflx, cplaqm, cplchm, cplwav, cpllnd, cpl_fire, lssav logical, dimension(:), intent(in) :: dry, icy, wet integer, intent(in) :: lsm, lsm_noahmp real(kind=kind_phys), intent(in) :: dtf @@ -136,9 +136,20 @@ subroutine GFS_surface_generic_post_run (im, cplflx, cplaqm, cplchm, cplwav, cpl dswsfci_cpl (i) = adjsfcdsw(i) dlwsfc_cpl (i) = dlwsfc_cpl(i) + adjsfcdlw(i)*dtf dswsfc_cpl (i) = dswsfc_cpl(i) + adjsfcdsw(i)*dtf + enddo + endif + + if (cplflx .or. cpllnd .or. cpl_fire) then + do i=1,im psurfi_cpl (i) = pgr(i) enddo endif + if (cplflx .or. cpl_fire) then + do i=1,im + t2mi_cpl (i) = t2m(i) + q2mi_cpl (i) = q2m(i) + enddo + endif if (cplflx) then do i=1,im @@ -155,8 +166,6 @@ subroutine GFS_surface_generic_post_run (im, cplflx, cplaqm, cplchm, cplwav, cpl nlwsfci_cpl(i) = adjsfcdlw(i) - adjsfculw_wat(i) endif nlwsfc_cpl (i) = nlwsfc_cpl(i) + nlwsfci_cpl(i)*dtf - t2mi_cpl (i) = t2m(i) - q2mi_cpl (i) = q2m(i) enddo endif diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_generic_post.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_generic_post.meta index 2c8ae74c0..5e7949b8f 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_generic_post.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_generic_post.meta @@ -126,6 +126,13 @@ dimensions = () type = logical intent = in +[cpl_fire] + standard_name = do_fire_coupling + long_name = flag controlling fire_behavior collection (default off) + units = flag + dimensions = () + type = logical + intent = in [lssav] standard_name = flag_for_diagnostics long_name = logical flag for storing diagnostics From 882d76cdda74b4d79f04b1c49cd95314c60be1ce Mon Sep 17 00:00:00 2001 From: masih Date: Wed, 17 Jul 2024 12:41:50 -0600 Subject: [PATCH 76/80] Fixed fire variable definition optional --- .../UFS_SCM_NEPTUNE/GFS_surface_composites_post.F90 | 3 ++- .../UFS_SCM_NEPTUNE/GFS_surface_composites_post.meta | 2 ++ physics/smoke_dust/rrfs_smoke_wrapper.meta | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.F90 index 76599d475..7623f23da 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.F90 @@ -49,8 +49,9 @@ subroutine GFS_surface_composites_post_run ( fm10_wat, fm10_lnd, fm10_ice, fh2_wat, fh2_lnd, fh2_ice, tsurf_wat, tsurf_lnd, tsurf_ice, cmm_wat, cmm_lnd, cmm_ice, & chh_wat, chh_lnd, chh_ice, gflx_wat, gflx_lnd, gflx_ice, ep1d_wat, ep1d_lnd, ep1d_ice, weasd_lnd, weasd_ice, & snowd_lnd, snowd_ice, tprcp_wat, tprcp_lnd, tprcp_ice, evap_wat, evap_lnd, evap_ice, hflx_wat, hflx_lnd, & - hflx_ice, hflx_fire, evap_fire, qss_wat, qss_lnd, qss_ice, tsfc_wat, zorlo, zorll, zorli, garea + hflx_ice, qss_wat, qss_lnd, qss_ice, tsfc_wat, zorlo, zorll, zorli, garea + real(kind=kind_phys), dimension(:), intent(in), optional :: hflx_fire, evap_fire real(kind=kind_phys), dimension(:), intent(inout) :: zorl, cd, cdq, rb, stress, ffmm, ffhh, uustar, fm10, & fh2, cmm, chh, gflx, ep1d, weasd, snowd, tprcp, evap, hflx, qss, tsfc, tsfco, tsfcl, tisfc diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.meta b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.meta index e4a364e04..e70eaaa4e 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.meta +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.meta @@ -824,6 +824,7 @@ type = real kind = kind_phys intent = in + optional = True [evap_fire] standard_name = surface_upward_specific_humidity_flux_of_fire long_name = kinematic surface upward latent heat flux of fire @@ -832,6 +833,7 @@ type = real kind = kind_phys intent = in + optional = True [cpl_fire] standard_name = do_fire_coupling long_name = flag controlling fire_behavior collection (default off) diff --git a/physics/smoke_dust/rrfs_smoke_wrapper.meta b/physics/smoke_dust/rrfs_smoke_wrapper.meta index 0929c8be3..739a43d70 100755 --- a/physics/smoke_dust/rrfs_smoke_wrapper.meta +++ b/physics/smoke_dust/rrfs_smoke_wrapper.meta @@ -968,6 +968,7 @@ type = real kind = kind_phys intent = in + optional = True [cpl_fire] standard_name = do_fire_coupling long_name = flag controlling fire_behavior collection (default off) From d70865d46c542764dd0822f018fb1a7c58ac099c Mon Sep 17 00:00:00 2001 From: Dusan Jovic Date: Wed, 3 Apr 2024 09:48:32 -0500 Subject: [PATCH 77/80] Add support for IntelLLVM compiler --- CMakeLists.txt | 7 ++++--- physics/MP/Morrison_Gettelman/aerinterp.F90 | 15 +++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 715af8afe..62b2d06df 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -140,11 +140,12 @@ SET_PROPERTY(SOURCE ${SCHEMES} ${CAPS} APPEND_STRING PROPERTY COMPILE_FLAGS " ${CMAKE_Fortran_FLAGS_PHYSICS} ${OpenMP_Fortran_FLAGS}") # Lower optimization for certain schemes when compiling with Intel in Release mode -if(CMAKE_BUILD_TYPE STREQUAL "Release" AND ${CMAKE_Fortran_COMPILER_ID} STREQUAL "Intel") +if(CMAKE_BUILD_TYPE STREQUAL "Release" AND (${CMAKE_Fortran_COMPILER_ID} STREQUAL "Intel" OR ${CMAKE_Fortran_COMPILER_ID} STREQUAL "IntelLLVM")) # Define a list of schemes that need lower optimization with Intel in Release mode set(SCHEME_NAMES_LOWER_OPTIMIZATION module_sf_mynn.F90 mynnedmf_wrapper.F90 - gcycle.F90) + gcycle.F90 + module_mp_nssl_2mom.F90) foreach(SCHEME_NAME IN LISTS SCHEME_NAMES_LOWER_OPTIMIZATION) set(SCHEMES_TMP ${SCHEMES}) # Need to determine the name of the scheme with its path @@ -156,7 +157,7 @@ if(CMAKE_BUILD_TYPE STREQUAL "Release" AND ${CMAKE_Fortran_COMPILER_ID} STREQUAL endif() # No optimization for certain schemes when compiling with Intel in Release mode -if(CMAKE_BUILD_TYPE STREQUAL "Release" AND ${CMAKE_Fortran_COMPILER_ID} STREQUAL "Intel") +if(CMAKE_BUILD_TYPE STREQUAL "Release" AND (${CMAKE_Fortran_COMPILER_ID} STREQUAL "Intel" OR ${CMAKE_Fortran_COMPILER_ID} STREQUAL "IntelLLVM")) # Define a list of schemes that can't be optimized with Intel in Release mode set(SCHEME_NAMES_NO_OPTIMIZATION GFS_typedefs.F90) foreach(SCHEME_NAME IN LISTS SCHEME_NAMES_NO_OPTIMIZATION) diff --git a/physics/MP/Morrison_Gettelman/aerinterp.F90 b/physics/MP/Morrison_Gettelman/aerinterp.F90 index 174a1a1a1..74ae4726c 100644 --- a/physics/MP/Morrison_Gettelman/aerinterp.F90 +++ b/physics/MP/Morrison_Gettelman/aerinterp.F90 @@ -282,7 +282,7 @@ SUBROUTINE aerinterpol( me,master,nthrds,npts,IDATE,FHOUR,iflip, jindx1,jindx2, character(*), intent(inout) :: errmsg integer, intent(in) :: iflip integer i1,i2, iday,j,j1,j2,l,npts,nc,n1,n2,lev,k,i,ii, klev - real(kind=kind_phys) fhour,temj, tx1, tx2,temi, tem + real(kind=kind_phys) fhour,temj, tx1, tx2,temi, tem, tem1, tem2 real(kind=kind_phys), dimension(npts) :: temij,temiy,temjx,ddxy ! @@ -363,10 +363,9 @@ SUBROUTINE aerinterpol( me,master,nthrds,npts,IDATE,FHOUR,iflip, jindx1,jindx2, !$OMP parallel num_threads(nthrds) default(none) & !$OMP shared(npts,ntrcaer,aerin,aer_pres,prsl) & !$OMP shared(ddx,ddy,jindx1,jindx2,iindx1,iindx2) & -!$OMP shared(aerpm,aerpres,aerout,lev,nthrds) & -!$OMP shared(temij,temiy,temjx,ddxy) & -!$OMP private(l,j,k,ii,i1,i2,j1,j2,tem) & -!$OMP copyin(tx1,tx2) firstprivate(tx1,tx2) +!$OMP shared(aerpm,aerpres,aerout,lev,nthrds) & +!$OMP shared(temij,temiy,temjx,ddxy,tx1,tx2) & +!$OMP private(l,j,k,ii,i1,i2,j1,j2,tem,tem1,tem2) !$OMP do #endif @@ -416,10 +415,10 @@ SUBROUTINE aerinterpol( me,master,nthrds,npts,IDATE,FHOUR,iflip, jindx1,jindx2, ENDIF ENDDO tem = 1.0 / (aerpres(j,i1) - aerpres(j,i2)) - tx1 = (prsl(j,L) - aerpres(j,i2)) * tem - tx2 = (aerpres(j,i1) - prsl(j,L)) * tem + tem1 = (prsl(j,L) - aerpres(j,i2)) * tem + tem2 = (aerpres(j,i1) - prsl(j,L)) * tem DO ii = 1, ntrcaer - aerout(j,L,ii) = aerpm(j,i1,ii)*tx1 + aerpm(j,i2,ii)*tx2 + aerout(j,L,ii) = aerpm(j,i1,ii)*tem1 + aerpm(j,i2,ii)*tem2 ENDDO endif ENDDO !L-loop From 3d03d0b466d82bc4520edbdebe4d915a1914e5dc Mon Sep 17 00:00:00 2001 From: Dusan Jovic Date: Thu, 18 Jul 2024 14:59:14 +0000 Subject: [PATCH 78/80] Declare SIG1T as an array in gcycle.F90 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes Intel LLVM compiler (ifx) error: physics/Interstitials/UFS_SCM_NEPTUNE/gcycle.F90(237): error #8284: If the actual argument is scalar, the dummy argument shall be scalar unless the actual argument is of type character or is an element of an array that is not assumed shape, pointer, or polymorphic.   [SIG1T]      CALL SFCCYCLE (9998, npts, max(lsoil,lsoil_lsm), sig1t, fhcyc, & -----------^ --- physics/Interstitials/UFS_SCM_NEPTUNE/gcycle.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/physics/Interstitials/UFS_SCM_NEPTUNE/gcycle.F90 b/physics/Interstitials/UFS_SCM_NEPTUNE/gcycle.F90 index c2949f9a4..101977960 100644 --- a/physics/Interstitials/UFS_SCM_NEPTUNE/gcycle.F90 +++ b/physics/Interstitials/UFS_SCM_NEPTUNE/gcycle.F90 @@ -107,7 +107,7 @@ subroutine gcycle (me, nthrds, nx, ny, isc, jsc, nsst, tile_num, nlunit, fn_nml, real (kind=kind_io8) :: min_ice(nx*ny) integer :: i_indx(nx*ny), j_indx(nx*ny) character(len=6) :: tile_num_ch - real(kind=kind_phys) :: sig1t + real(kind=kind_phys) :: sig1t(nx*ny) integer :: npts, nb, ix, jx, ls, ios, ll logical :: exists From 9a17b53f1f7cef742863f7179222f3a78e2d6c75 Mon Sep 17 00:00:00 2001 From: Grant Firl Date: Thu, 26 Sep 2024 10:29:02 -0400 Subject: [PATCH 79/80] add Rhae Sung Kim to CODEOWNERS file --- CODEOWNERS | 360 ++++++++++++++++++++++++++--------------------------- 1 file changed, 180 insertions(+), 180 deletions(-) diff --git a/CODEOWNERS b/CODEOWNERS index eccf83758..7b3ddd10b 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -4,192 +4,192 @@ # Default codeowners for files that don't have specific owners: -* @grantfirl @Qingfu-Liu @dustinswales @mzhangw +* @grantfirl @rhaesung @Qingfu-Liu @dustinswales @mzhangw # The following lines are from the CCPP Primary Schemes Points of Contact # https://docs.google.com/spreadsheets/d/14y0Th_sSpCqlssEMNfSZ_Ni9wrpPqfpPY0kRG7jCZB8/edit#gid=0 # (Internal NOAA document.) -physics/CONV/C3/cu_c3* @lisa-bengtsson @haiqinli @grantfirl @Qingfu-Liu @dustinswales -physics/CONV/Chikira_Sugiyama/cs_conv_aw_adj.* @AnningCheng-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/CONV/Chikira_Sugiyama/cs_conv.* @AnningCheng-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/CONV/Grell_Freitas/cu_gf* @haiqinli @grantfirl @Qingfu-Liu @dustinswales -physics/CONV/RAS/rascnv.* @haiqinli @JongilHan66 @grantfirl @Qingfu-Liu @dustinswales -physics/CONV/SAMF/samfdeepcnv.* @JongilHan66 @lisa-bengtsson @grantfirl @Qingfu-Liu @dustinswales -physics/CONV/SAMF/samfshalcnv.* @JongilHan66 @lisa-bengtsson @grantfirl @Qingfu-Liu @dustinswales -physics/CONV/SAMF/samfaerosols.* @JongilHan66 @lisa-bengtsson @grantfirl @Qingfu-Liu @dustinswales -physics/CONV/SAS/sascnvn.* @JongilHan66 @grantfirl @Qingfu-Liu @dustinswales -physics/CONV/SAS/shalcnv.* @JongilHan66 @grantfirl @Qingfu-Liu @dustinswales -physics/CONV/nTiedtke/cu_ntiedtke* @JongilHan66 @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/CONV/progsigma_calc.f90 @lisa-bengtsson @grantfirl @Qingfu-Liu @dustinswales -physics/GWD/cires_orowam2017.f @mdtoyNOAA @grantfirl @Qingfu-Liu @dustinswales -physics/GWD/cires_tauamf_data.F90 @mdtoyNOAA @grantfirl @Qingfu-Liu @dustinswales -physics/GWD/cires_ugwp* @mdtoyNOAA @grantfirl @Qingfu-Liu @dustinswales -physics/GWD/drag_suite.* @mdtoyNOAA @grantfirl @Qingfu-Liu @dustinswales -physics/GWD/gwdc.* @Songyou184 @grantfirl @Qingfu-Liu @dustinswales -physics/GWD/gwdps.* @Songyou184 @grantfirl @Qingfu-Liu @dustinswales -physics/GWD/rayleigh_damp.* @yangfanglin @grantfirl @Qingfu-Liu @dustinswales -physics/GWD/ugwp_driver_v0.F @mdtoyNOAA @grantfirl @Qingfu-Liu @dustinswales -physics/GWD/ugwpv1_gsldrag.* @mdtoyNOAA @BoYang-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/GWD/ugwpv1_gsldrag_post.* @mdtoyNOAA @BoYang-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/GWD/unified_ugwp* @mdtoyNOAA @grantfirl @Qingfu-Liu @dustinswales -physics/MP/Ferrier_Aligo/module_MP_FER_HIRES.* @ericaligo-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/MP/Ferrier_Aligo/mp_fer_hires.* @ericaligo-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/MP/GFDL/GFDL_parse_tracers.F90 @grantfirl @Qingfu-Liu @dustinswales -physics/MP/GFDL/gfdl_cloud_microphys.* @RuiyuSun @grantfirl @Qingfu-Liu @dustinswales -physics/MP/GFDL/module_gfdl_cloud_microphys.* @RuiyuSun @grantfirl @Qingfu-Liu @dustinswales -physics/MP/GFDL/fv_sat_adj.* @RuiyuSun @grantfirl @Qingfu-Liu @dustinswales -physics/MP/GFDL/multi_gases.F90 @RuiyuSun @grantfirl @Qingfu-Liu @dustinswales -physics/MP/Morrison_Gettelman/aer_cloud.F @AnningCheng-NOAA @andrewgettelman @grantfirl @Qingfu-Liu @dustinswales -physics/MP/Morrison_Gettelman/aerclm_def.F @AnningCheng-NOAA @andrewgettelman @grantfirl @Qingfu-Liu @dustinswales -physics/MP/Morrison_Gettelman/aerinterp.F90 @AnningCheng-NOAA @andrewgettelman @grantfirl @Qingfu-Liu @dustinswales -physics/MP/Morrison_Gettelman/cldmacro.F @AnningCheng-NOAA @andrewgettelman @grantfirl @Qingfu-Liu @dustinswales -physics/MP/Morrison_Gettelman/cldwat2m_micro.F @AnningCheng-NOAA @andrewgettelman @grantfirl @Qingfu-Liu @dustinswales -physics/MP/Morrison_Gettelman/micro_mg* @AnningCheng-NOAA @andrewgettelman @grantfirl @Qingfu-Liu @dustinswales -physics/MP/Morrison_Gettelman/m_micro* @AnningCheng-NOAA @andrewgettelman @grantfirl @Qingfu-Liu @dustinswales -physics/MP/Morrison_Gettelman/wv_saturation.F @AnningCheng-NOAA @andrewgettelman @grantfirl @Qingfu-Liu @dustinswales -physics/MP/NSSL/module_mp_nssl_2mom.F90 @MicroTed @grantfirl @Qingfu-Liu @dustinswales -physics/MP/NSSL/mp_nssl.* @MicroTed @grantfirl @Qingfu-Liu @dustinswales -physics/MP/Thompson/module_mp_thompson* @gthompsnWRF @RuiyuSun @AndersJensen-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/MP/Thompson/mp_thompson* @gthompsnWRF @RuiyuSun @AndersJensen-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/MP/Zhao_Carr/zhaocarr_gscond.* @RuiyuSun @grantfirl @Qingfu-Liu @dustinswales -physics/MP/Zhao_Carr/zhaocarr_precpd.* @RuiyuSun @grantfirl @Qingfu-Liu @dustinswales -physics/MP/calpreciptype.f90 @grantfirl @Qingfu-Liu @dustinswales -physics/MP/module_mp_radar.* @gthompsnWRF @RuiyuSun @grantfirl @Qingfu-Liu @dustinswales -physics/PBL/HEDMF/hedmf.* @JongilHan66 @WeiguoWang-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/PBL/MYJ/module_BL_MYJPBL.* @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/PBL/MYJ/myjpbl_wrapper.* @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/PBL/MYNN_EDMF/bl_mynn_common.f90 @joeolson42 @grantfirl @Qingfu-Liu @dustinswales -physics/PBL/MYNN_EDMF/module_bl_mynn.* @joeolson42 @grantfirl @Qingfu-Liu @dustinswales -physics/PBL/MYNN_EDMF/mynnedmf_wrapper.* @joeolson42 @grantfirl @Qingfu-Liu @dustinswales -physics/PBL/SATMEDMF/satmedmfvdif.* @JongilHan66 @grantfirl @Qingfu-Liu @dustinswales -physics/PBL/SATMEDMF/satmedmfvdifq.* @JongilHan66 @grantfirl @Qingfu-Liu @dustinswales -physics/PBL/SATMEDMF/mfscu.f @JongilHan66 @grantfirl @Qingfu-Liu @dustinswales -physics/PBL/SATMEDMF/mfscuq.f @JongilHan66 @grantfirl @Qingfu-Liu @dustinswales -physics/PBL/SHOC/moninshoc.* @grantfirl @Qingfu-Liu @dustinswales -physics/PBL/SHOC/shoc.* @grantfirl @Qingfu-Liu @dustinswales -physics/PBL/YSU/ysuvdif.* @Qingfu-Liu @WeiguoWang-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/PBL/saYSU/shinhongvdif.* @Qingfu-Liu @WeiguoWang-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/PBL/mfpbl.f @JongilHan66 @grantfirl @Qingfu-Liu @dustinswales -physics/PBL/mfpblt.f @JongilHan66 @grantfirl @Qingfu-Liu @dustinswales -physics/PBL/mfpbltq.f @JongilHan66 @grantfirl @Qingfu-Liu @dustinswales -physics/PBL/tridi.f @JongilHan66 @WeiguoWang-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/RRTMG/iounitdef.f @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/RRTMG/module_bfmicrophysics.f @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/RRTMG/rad_sw_pre* @mjiacono @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/RRTMG/radcons.f90 @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/RRTMG/radlw_* @mjiacono @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/RRTMG/radsw_* @mjiacono @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/RRTMG/rrtmg_lw_cloud_optics.F90 @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/RRTMG/rrtmg_lw_post.* @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/RRTMG/rrtmg_sw_cloud_optics.F90 @dustinswales @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/RRTMG/rrtmg_sw_post.* @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/RRTMGP/rte-rrtmgp @dustinswales @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/RRTMGP/rrtmgp_aerosol_optics.* @dustinswales @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/RRTMGP/rrtmgp_lw_* @dustinswales @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/RRTMGP/rrtmgp_sw_* @dustinswales @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/mersenne_twister.f @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/radiation_aerosols.f @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/radiation_astronomy.f @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/radiation_cloud_overlap.F90 @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/radiation_clouds.f @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/radiation_gases.f @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/radiation_surface.f @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales -physics/Radiation/radiation_tools.F90 @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Layer/GFDL/gfdl_sfc_layer.* @ZhanZhang-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Layer/GFDL/module_sf_exchcoef.f90 @ZhanZhang-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Layer/MYJ/myjsfc_wrapper.* @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Layer/MYJ/module_SF_JSFC.F90 @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Layer/MYNN/mynnsfc_wrapper.* @joeolson42 @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Layer/MYNN/module_sf_mynn.F90 @joeolson42 @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Layer/UFS/date_def.f @XuLi-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Layer/UFS/module_nst* @XuLi-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Layer/UFS/sfc_diag.* @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Layer/UFS/sfc_diag_post.* @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Layer/UFS/sfc_diff.* @JongilHan66 @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Layer/UFS/sfc_nst* @XuLi-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Models/Lake/CLM/clm_lake.* @tanyasmirnova @SamuelTrahanNOAA @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Models/Lake/Flake/flake* @barlage @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Models/Land/Noah/lsm_noah.* @HelinWei-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Models/Land/Noah/namelist_soilveg.* @HelinWei-NOAA @barlage @cenlinhe @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Models/Land/Noah/set_soilveg.* @HelinWei-NOAA @barlage @cenlinhe @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Models/Land/Noah/sflx.f @HelinWei-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Models/Land/Noah/surface_perturbation.* @HelinWei-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Models/Land/Noahmp/*noahmp* @barlage @cenlinhe @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Models/Land/RUC/lsm_ruc.* @tanyasmirnova @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Models/Land/RUC/module_sf_ruclsm.* @tanyasmirnova @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Models/Land/RUC/module_soil_pre.* @tanyasmirnova @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Models/Land/RUC/namelist_soilveg_ruc.* @tanyasmirnova @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Models/Land/RUC/set_soilveg_ruc.* @tanyasmirnova @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Models/Land/sfc_land.* @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Models/Ocean/UFS/sfc_ocean.* @HelinWei-NOAA @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Models/SeaIce/CICE/sfc_cice.* @wd20xw @grantfirl @Qingfu-Liu @dustinswales -physics/SFC_Models/SeaIce/CICE/sfc_sice.* @wd20xw @grantfirl @Qingfu-Liu @dustinswales -physics/hooks/machine.* @grantfirl @Qingfu-Liu @dustinswales -physics/hooks/physcons.F90 @grantfirl @Qingfu-Liu @dustinswales -physics/photochem/module_h2ophys.* @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/photochem/module_ozphys.* @dustinswales @grantfirl @Qingfu-Liu @dustinswales -physics/smoke_dust/* @haiqinli @grantfirl @Qingfu-Liu @dustinswales -physics/tools/funcphys.f90 @grantfirl @Qingfu-Liu @dustinswales -physics/tools/get_phi_fv3.* @grantfirl @Qingfu-Liu @dustinswales -physics/tools/get_prs_fv3.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_cloud_diagnostics.* @dustinswales @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_DCNV_generic_post.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_DCNV_generic_pre.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_GWD_generic_post.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_GWD_generic_pre.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_MP_generic_post.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_MP_generic_pre.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_PBL_generic_common.F90 @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_PBL_generic_post.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_PBL_generic_pre.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.fv3.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.scm.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_physics_post.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_radiation_surface.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rad_time_vary.fv3.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rad_time_vary.scm.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_mp.* @dustinswales @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_overlap.* @dustinswales @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_post.* @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_pre.* @dustinswales @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_pre.* @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_setup.* @dustinswales @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_post.* @dustinswales @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_setup.* @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_SCNV_generic_post.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_SCNV_generic_pre.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_stochastics.* @pjpegion @lisa-bengtsson @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_1.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_2.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_3.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_4.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_5.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_phys_reset.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_rad_reset.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_stateout_reset.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_stateout_update.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_inter.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_pre.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_generic_post.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_generic_pre.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_loop_control_part1.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_loop_control_part2.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_time_vary_pre.fv3.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/GFS_time_vary_pre.scm.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/cnvc90.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/dcyc2t3.* @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/gcycle.F90 @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/iccn_def.F @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/iccninterp.F90 @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/maximum_hourly_diagnostics.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/scm_sfc_flux_spec.* @grantfirl @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/sfcsub.F @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/sgscloud_radpost.* @grantfirl @Qingfu-Liu @dustinswales -physics/Interstitials/UFS_SCM_NEPTUNE/sgscloud_radpre.* @grantfirl @Qingfu-Liu @dustinswales +physics/CONV/C3/cu_c3* @lisa-bengtsson @haiqinli @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/CONV/Chikira_Sugiyama/cs_conv_aw_adj.* @AnningCheng-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/CONV/Chikira_Sugiyama/cs_conv.* @AnningCheng-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/CONV/Grell_Freitas/cu_gf* @haiqinli @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/CONV/RAS/rascnv.* @haiqinli @JongilHan66 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/CONV/SAMF/samfdeepcnv.* @JongilHan66 @lisa-bengtsson @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/CONV/SAMF/samfshalcnv.* @JongilHan66 @lisa-bengtsson @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/CONV/SAMF/samfaerosols.* @JongilHan66 @lisa-bengtsson @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/CONV/SAS/sascnvn.* @JongilHan66 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/CONV/SAS/shalcnv.* @JongilHan66 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/CONV/nTiedtke/cu_ntiedtke* @JongilHan66 @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/CONV/progsigma_calc.f90 @lisa-bengtsson @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/GWD/cires_orowam2017.f @mdtoyNOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/GWD/cires_tauamf_data.F90 @mdtoyNOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/GWD/cires_ugwp* @mdtoyNOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/GWD/drag_suite.* @mdtoyNOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/GWD/gwdc.* @Songyou184 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/GWD/gwdps.* @Songyou184 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/GWD/rayleigh_damp.* @yangfanglin @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/GWD/ugwp_driver_v0.F @mdtoyNOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/GWD/ugwpv1_gsldrag.* @mdtoyNOAA @BoYang-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/GWD/ugwpv1_gsldrag_post.* @mdtoyNOAA @BoYang-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/GWD/unified_ugwp* @mdtoyNOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/Ferrier_Aligo/module_MP_FER_HIRES.* @ericaligo-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/Ferrier_Aligo/mp_fer_hires.* @ericaligo-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/GFDL/GFDL_parse_tracers.F90 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/GFDL/gfdl_cloud_microphys.* @RuiyuSun @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/GFDL/module_gfdl_cloud_microphys.* @RuiyuSun @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/GFDL/fv_sat_adj.* @RuiyuSun @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/GFDL/multi_gases.F90 @RuiyuSun @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/Morrison_Gettelman/aer_cloud.F @AnningCheng-NOAA @andrewgettelman @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/Morrison_Gettelman/aerclm_def.F @AnningCheng-NOAA @andrewgettelman @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/Morrison_Gettelman/aerinterp.F90 @AnningCheng-NOAA @andrewgettelman @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/Morrison_Gettelman/cldmacro.F @AnningCheng-NOAA @andrewgettelman @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/Morrison_Gettelman/cldwat2m_micro.F @AnningCheng-NOAA @andrewgettelman @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/Morrison_Gettelman/micro_mg* @AnningCheng-NOAA @andrewgettelman @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/Morrison_Gettelman/m_micro* @AnningCheng-NOAA @andrewgettelman @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/Morrison_Gettelman/wv_saturation.F @AnningCheng-NOAA @andrewgettelman @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/NSSL/module_mp_nssl_2mom.F90 @MicroTed @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/NSSL/mp_nssl.* @MicroTed @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/Thompson/module_mp_thompson* @gthompsnWRF @RuiyuSun @AndersJensen-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/Thompson/mp_thompson* @gthompsnWRF @RuiyuSun @AndersJensen-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/Zhao_Carr/zhaocarr_gscond.* @RuiyuSun @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/Zhao_Carr/zhaocarr_precpd.* @RuiyuSun @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/calpreciptype.f90 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/MP/module_mp_radar.* @gthompsnWRF @RuiyuSun @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/PBL/HEDMF/hedmf.* @JongilHan66 @WeiguoWang-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/PBL/MYJ/module_BL_MYJPBL.* @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/PBL/MYJ/myjpbl_wrapper.* @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/PBL/MYNN_EDMF/bl_mynn_common.f90 @joeolson42 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/PBL/MYNN_EDMF/module_bl_mynn.* @joeolson42 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/PBL/MYNN_EDMF/mynnedmf_wrapper.* @joeolson42 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/PBL/SATMEDMF/satmedmfvdif.* @JongilHan66 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/PBL/SATMEDMF/satmedmfvdifq.* @JongilHan66 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/PBL/SATMEDMF/mfscu.f @JongilHan66 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/PBL/SATMEDMF/mfscuq.f @JongilHan66 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/PBL/SHOC/moninshoc.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/PBL/SHOC/shoc.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/PBL/YSU/ysuvdif.* @Qingfu-Liu @WeiguoWang-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/PBL/saYSU/shinhongvdif.* @Qingfu-Liu @WeiguoWang-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/PBL/mfpbl.f @JongilHan66 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/PBL/mfpblt.f @JongilHan66 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/PBL/mfpbltq.f @JongilHan66 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/PBL/tridi.f @JongilHan66 @WeiguoWang-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/RRTMG/iounitdef.f @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/RRTMG/module_bfmicrophysics.f @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/RRTMG/rad_sw_pre* @mjiacono @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/RRTMG/radcons.f90 @Qingfu-Liu @dustinswales @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/RRTMG/radlw_* @mjiacono @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/RRTMG/radsw_* @mjiacono @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/RRTMG/rrtmg_lw_cloud_optics.F90 @Qingfu-Liu @dustinswales @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/RRTMG/rrtmg_lw_post.* @Qingfu-Liu @dustinswales @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/RRTMG/rrtmg_sw_cloud_optics.F90 @dustinswales @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/RRTMG/rrtmg_sw_post.* @Qingfu-Liu @dustinswales @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/RRTMGP/rte-rrtmgp @dustinswales @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/RRTMGP/rrtmgp_aerosol_optics.* @dustinswales @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/RRTMGP/rrtmgp_lw_* @dustinswales @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/RRTMGP/rrtmgp_sw_* @dustinswales @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/mersenne_twister.f @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/radiation_aerosols.f @Qingfu-Liu @dustinswales @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/radiation_astronomy.f @Qingfu-Liu @dustinswales @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/radiation_cloud_overlap.F90 @Qingfu-Liu @dustinswales @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/radiation_clouds.f @Qingfu-Liu @dustinswales @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/radiation_gases.f @Qingfu-Liu @dustinswales @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/radiation_surface.f @Qingfu-Liu @dustinswales @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Radiation/radiation_tools.F90 @Qingfu-Liu @dustinswales @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Layer/GFDL/gfdl_sfc_layer.* @ZhanZhang-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Layer/GFDL/module_sf_exchcoef.f90 @ZhanZhang-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Layer/MYJ/myjsfc_wrapper.* @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Layer/MYJ/module_SF_JSFC.F90 @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Layer/MYNN/mynnsfc_wrapper.* @joeolson42 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Layer/MYNN/module_sf_mynn.F90 @joeolson42 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Layer/UFS/date_def.f @XuLi-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Layer/UFS/module_nst* @XuLi-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Layer/UFS/sfc_diag.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Layer/UFS/sfc_diag_post.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Layer/UFS/sfc_diff.* @JongilHan66 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Layer/UFS/sfc_nst* @XuLi-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Models/Lake/CLM/clm_lake.* @tanyasmirnova @SamuelTrahanNOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Models/Lake/Flake/flake* @barlage @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Models/Land/Noah/lsm_noah.* @HelinWei-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Models/Land/Noah/namelist_soilveg.* @HelinWei-NOAA @barlage @cenlinhe @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Models/Land/Noah/set_soilveg.* @HelinWei-NOAA @barlage @cenlinhe @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Models/Land/Noah/sflx.f @HelinWei-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Models/Land/Noah/surface_perturbation.* @HelinWei-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Models/Land/Noahmp/*noahmp* @barlage @cenlinhe @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Models/Land/RUC/lsm_ruc.* @tanyasmirnova @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Models/Land/RUC/module_sf_ruclsm.* @tanyasmirnova @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Models/Land/RUC/module_soil_pre.* @tanyasmirnova @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Models/Land/RUC/namelist_soilveg_ruc.* @tanyasmirnova @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Models/Land/RUC/set_soilveg_ruc.* @tanyasmirnova @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Models/Land/sfc_land.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Models/Ocean/UFS/sfc_ocean.* @HelinWei-NOAA @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Models/SeaIce/CICE/sfc_cice.* @wd20xw @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/SFC_Models/SeaIce/CICE/sfc_sice.* @wd20xw @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/hooks/machine.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/hooks/physcons.F90 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/photochem/module_h2ophys.* @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/photochem/module_ozphys.* @dustinswales @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/smoke_dust/* @haiqinli @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/tools/funcphys.f90 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/tools/get_phi_fv3.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/tools/get_prs_fv3.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_cloud_diagnostics.* @dustinswales @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_DCNV_generic_post.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_DCNV_generic_pre.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_debug.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_GWD_generic_post.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_GWD_generic_pre.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_MP_generic_post.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_MP_generic_pre.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_PBL_generic_common.F90 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_PBL_generic_post.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_PBL_generic_pre.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.fv3.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.scm.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_physics_post.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_radiation_surface.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rad_time_vary.fv3.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rad_time_vary.scm.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_mp.* @dustinswales @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_cloud_overlap.* @dustinswales @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_post.* @Qingfu-Liu @dustinswales @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_pre.* @dustinswales @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_pre.* @Qingfu-Liu @dustinswales @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_setup.* @dustinswales @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmgp_post.* @dustinswales @Qingfu-Liu @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_setup.* @Qingfu-Liu @dustinswales @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_SCNV_generic_post.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_SCNV_generic_pre.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_stochastics.* @pjpegion @lisa-bengtsson @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_1.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_2.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_3.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_4.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_5.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_phys_reset.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_interstitial_rad_reset.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_stateout_reset.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_suite_stateout_update.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_inter.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_post.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_composites_pre.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_generic_post.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_generic_pre.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_loop_control_part1.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_surface_loop_control_part2.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_time_vary_pre.fv3.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/GFS_time_vary_pre.scm.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/cnvc90.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/dcyc2t3.* @Qingfu-Liu @dustinswales @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/gcycle.F90 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/iccn_def.F @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/iccninterp.F90 @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/maximum_hourly_diagnostics.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/scm_sfc_flux_spec.* @grantfirl @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/sfcsub.F @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/sgscloud_radpost.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales +physics/Interstitials/UFS_SCM_NEPTUNE/sgscloud_radpre.* @grantfirl @rhaesung @Qingfu-Liu @dustinswales ######################################################################## From 754e697cf169895dfaad6cf10ce72b84211f62f6 Mon Sep 17 00:00:00 2001 From: Grant Firl Date: Tue, 22 Oct 2024 15:58:11 -0400 Subject: [PATCH 80/80] remove spurious change to CMakeLists.txt --- CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c169d371b..62b2d06df 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -143,7 +143,6 @@ SET_PROPERTY(SOURCE ${SCHEMES} ${CAPS} if(CMAKE_BUILD_TYPE STREQUAL "Release" AND (${CMAKE_Fortran_COMPILER_ID} STREQUAL "Intel" OR ${CMAKE_Fortran_COMPILER_ID} STREQUAL "IntelLLVM")) # Define a list of schemes that need lower optimization with Intel in Release mode set(SCHEME_NAMES_LOWER_OPTIMIZATION module_sf_mynn.F90 - module_mp_nssl_2mom.F90 mynnedmf_wrapper.F90 gcycle.F90 module_mp_nssl_2mom.F90)